Usando o Linux IPTables, Como bloquear torrents ou qualquer protocolo P2P?

17

Na nossa instituição, conectamos mais de 300 computadores a LANs diferentes com Internet. Aqui estão incluídos o Office Officies LAN e o Internet Laboratory para estudantes. E nós queremos controlar Torrents ou qualquer protocolo P2P. A solução anterior para o nosso problema é o KerioWinRoute 6.5.x, que satisfaz mais.

O problema é que migramos para o Ubuntu 8.04 LTS usando o Webmin Platform.

    
por Nathaniel Varona 17.06.2009 / 10:12

11 respostas

14

O bloqueio P2P baseado em portas dificilmente é uma solução 100%. O que você pode querer considerar é chamado de filtragem L7 (filtragem de camada 7). Basicamente, o linux tem uma implementação que faz correspondência baseada em regex em todos os pacotes para decidir o que é bom e o que é ruim.

link

Isso pode ajudar você a bloquear todo tipo de coisas, incluindo skype.

link

Por favor, observe: Correspondência de regex para inspecionar e filtrar pacotes é um recurso intensivo, tornando qualquer sistema mais vulnerável a ataques de DDOS, o método preferido seria direcionar o protocolo dentro do iptables.

    
por 17.06.2009 / 10:34
11

A única solução técnica adequada é ter todo o tráfego passando por um proxy que descriptografa o tráfego SSL em tempo real e, em seguida, aplica a filtragem da camada 7 no tráfego de passagem.

Tais produtos são muito caros, já que geralmente há uma grande equipe de engenheiros por trás deles atualizando as regras necessárias para classificar os pacotes.

Você pode se ajudar um pouco com os módulos do iptables sush como o ipp2p ou l7-filter, mas eles não irão capturar o tráfego criptografado.

Em qualquer caso, a tecnologia é muito raramente a solução para problemas sociais, e o mau uso de redes corporativas / públicas / quaisquer redes para o p2p é um problema social. Tente conversar com seus usuários, peça à sua organização para criar políticas apropriadas e aplicá-las com sanções. Isso na minha experiência funciona muito melhor do que uma corrida armamentista de tecnologia constante com seus usuários.

    
por 17.06.2009 / 10:36
2

É uma boa prática bloquear portas comuns de rastreador como: 6881-6889 2710 6969

mas isso não ajudará contra rastreadores vinculados na porta 80 (por exemplo, tpb.tracker.thepiratebay.org). Então, bloqueando tudo, mas 80.443,22 não ajudaria.

ipp2p é a melhor solução que eu conheço. Veja a seção Documentação / Uso

Sobre o filtro l7. No comentário bittorrent.pat diz:

This pattern has been tested and is believed to work well. It will, however, not work on bittorrent streams that are encrypted, since it's impossible to match (well) encrypted data.

Nos sistemas BSD, o pf pode aplicar ações dependendo do número de estados ou conexões por segundo, para que você possa marcar o tráfego de bittotent, pois ele gera conexões rapidamente. Leia o manual do iptables, pode ser que ele também possa fazer isso.

    
por 17.06.2009 / 10:32
1

Existe um módulo chamado IPP2P que pode detectar & bloco protocolos P2P: link

    
por 17.06.2009 / 10:21
1

A solução simples é bloquear todas as portas de saída, exceto aquelas que você deseja permitir.

Como alternativa, você pode encontrar uma lista das portas que provavelmente serão usadas para aplicativos P2P comuns e bloqueá-las. O Bittorrent tende a permitir apenas uma quantidade muito limitada de downloads se você também não estiver carregando, então você também deve se certificar de não aceitar nenhuma conexão de entrada.

Você pode achar útil configurar algum tipo de contabilidade IP em seu roteador com base na porta TCP usada e, em seguida, descobrir qual porta é a mais usada. O IPTraf é uma ferramenta útil para verificar isso.

Eu devo avisar que você nunca vai parar tudo; as pessoas são engenhosas e encontrarão uma maneira de contornar qualquer restrição que você estabeleça. A maioria dos firewalls irá parar o usuário casual, o que pode ser o suficiente.

    
por 17.06.2009 / 10:22
1

Você não pode bloquear o P2P completamente - a menos que você permita apenas as "boas" portas TCP 80, 443, 22 ... E mesmo isso é suficiente para os tipos que pensam no computador tem VPNs e coisas semelhantes.

    
por 17.06.2009 / 10:24
1

O bittorrent e a maioria dos p2p agora são bastante evasivos. Em vez de bloquear o tráfego, use as regras do QOS para privar os clientes que estão usando uma grande quantidade de largura de banda ou diminua o tráfego de p2p lentamente para zero durante o período de tempo. Não vai bloquear o protocolo, mas vai impedir que os p2p sejam tão lentos que não valham a pena.

Lembre-se de que nem todo tráfego de torrent é ruim, e alguns bons! : -)

    
por 16.03.2012 / 22:49
0

Programas populares de tunelamento de SSL, como o Ultrasurf, permitem que os usuários ignorem seus firewalls facilmente. Para bloquear o tráfego de bittornet criptografado, você precisaria de um dispositivo UTM especializado que pudesse inspecionar e bloquear túneis criptografados passando por http (s). Eu sei apenas sobre um que é capaz de fazer isso - Astaro, mas deveria haver mais.

    
por 17.06.2009 / 14:39
0

Você pode usar o ip2p, como mencionado anteriormente. Não vai bloquear as coisas completamente no entanto. Idealmente, você deve ter firewalls em todas as portas que não usa especificamente e usar o ip2p. Não é uma solução perfeita, mas é o melhor que você pode conseguir.

    
por 21.06.2009 / 05:17
0

Você não pode usar o bloqueio direto de porta. Existem algumas alternativas. O filtro Layer7 é lento, não é confiável e, pelo que eu saiba, não é mais mantido.

O IPP2P está ok, mas foi substituído pelo OpenDPI, que agora foi descontinuado pelo patrocinador ipoque (que vende PACE, um equivalente comercial) O nDPI parece ser a conclusão lógica desse pequeno caminho: link

Mais fácil e bastante eficaz é uma extensão da sugestão de David Pashley. Bloqueie todas as portas e apenas permita o que você precisa - e estenda isso fazendo proxy dos serviços que você precisa - por exemplo, com um proxy da web e talvez um servidor de mensagens interno que não seja permitido pela porta25, mas os clientes só conversam com o servidor interno. Desta forma, você pode ter clientes que não precisam de portas abertas no firewall. Isso deve funcionar, mas pode começar a cair em bits se você precisar usar aplicativos complexos e / ou mal escritos que precisam de acesso direto.

    
por 09.06.2012 / 17:55
0

Abaixo está o conjunto de regras do iptables. Isso funciona como um encanto. Eu criei um proxy de interceptação https transparente e enviei todo o tráfego através desse servidor proxy.

Usando essas regras do iptables, posso controlar a rede.

    As portas
  • 2086, 2087, 2095 estão abertas porque usamos o webmail do cpanel e do cpanel WHM.
  • 8080 para servidor da web adicional.
  • 192.168.2.0 é a rede local.

Regra de IPTables:

#Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*nat
:PREROUTING ACCEPT [470:38063]
:POSTROUTING ACCEPT [9:651]
:OUTPUT ACCEPT [1456:91962]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:3127
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
# Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*filter
:INPUT ACCEPT [2106:729397]
:FORWARD ACCEPT [94:13475]
:OUTPUT ACCEPT [3252:998944]
-A INPUT -p tcp -m tcp --dport 3127 -j ACCEPT
-A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "get_peers" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce_peer" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "find_node" --algo bm --to 65535 -j DROP
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 8080 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2086 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2087 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2095 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.2.0/24 -p udp -m udp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
    
por 10.03.2015 / 13:37