Bloqueando programas P2P com iptables

Com este firewall garanto pra você que a banda da sua rede ficará bem melhor, não tendo os chamados "P2P come- banda", fazendo com que aquele funcionário da sua empresa que vivia atacando a rede com os seus downloads no Kazaa agora passe a trabalhar mais.

[ Hits: 43.441 ]

Por: Bruno Farias em 21/02/2007 | Blog: http://bfmano.dbconf.com.br


Introdução



Todo administrador de rede que se preze tem um bom firewall implementado no seu servidor, não é?? Espero que sim, mas se não tiver, aqui vai o exemplo de um simples e bom firewall.

Vou começar explicando algumas regras que deverão ser seguidas na configuração do seu firewall. Quando começar a colocar as regras, você deverá começar pelas que habilitam as conexões desejadas e por final bloquear as conexões indesejáveis.

ACCEPT, REJECT e DROP: quando colocar um, e quando colocar o outro?
Você colocará ACCEPT quando quiser aceitar a conexão. REJECT quando quiser rejeitar a conexão, e DROP você estará rejeitando a conexão.

Em seguida coloquei um modelo de um firewall no qual você poderá escolher as regras que mais se adaptam com o que você precisa.

Compartilhamento via modem ou ADSL

Para compartilhar a conexão do modem com a rede local:

# modprobe iptable_nat
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


Para compartilhar uma conexão via ADSL ou cabo instalada na eth0:

# modprobe iptable_nat
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Habilitando localhost:

# iptables -A INPUT -p tcp --syn -s 127.0.0.1 -j ACCEPT

Habilitando conexões vindas da rede local (usando a seguinte faixa de IP e máscara de rede):

# iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT

Habilitando outras conexões na seguinte porta do micro (adicionei estas linhas como exemplo para habilitar outras conexões):

# iptables -A INPUT -p tcp --destination-port XXX -j ACCEPT
# iptables -A INPUT -p tcp --destination-port XXX -j ACCEPT
# iptables -A INPUT -p tcp --destination-port XXX -j ACCEPT
# iptables -A INPUT -p tcp --destination-port XXX -j ACCEPT


Bloqueando conexão via SSH:

# iptables -A INPUT -p tcp --destination-port 22 -j DROP

Evitando scans do tipo "porta origem=porta destino":

# iptables -A INPUT -p tcp --sport $i --dport $i -j DROP

Bloqueando AIM:

# iptables -A FORWARD -d login.oscar.aol.com -j REJECT

Bloqueando ICQ:

# iptables -A FORWARD -p TCP --dport 5190 -j REJECT
# iptables -A FORWARD -d login.icq.com -j REJECT


Bloqueando MSN:

# iptables -A FORWARD -p TCP --dport 1863 -j REJECT
# iptables -A FORWARD -d 64.4.13.0/24 -j REJECT


Bloqueando Yahoo Messenger:

# iptables -A FORWARD -d cs.yahoo.com -j REJECT
# iptables -A FORWARD -d scsa.yahoo.com -j REJECT


Bloqueando os -:P2P:- (se você deseja utilizar um desses softwares, apenas retire o comentário # e substitua a condição de: REJECT, para ACCEPT).

Bittorrent:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6881:6889 -j DNAT --to-dest 192.168.0.2
# iptables -A FORWARD -p tcp -i eth0 --dport 6881:6889 -d 192.168.0.2 -j REJECT


iMesh:

# iptables -A FORWARD -d 216.35.208.0/24 -j REJECT

BearShare:

# iptables -A FORWARD -p TCP --dport 6346 -j REJECT

ToadNode:

# iptables -A FORWARD -p TCP --dport 6346 -j REJECT

WinMX:

# iptables -A FORWARD -d 209.61.186.0/24 -j REJECT
# iptables -A FORWARD -d 64.49.201.0/24 -j REJECT


Napigator:

# iptables -A FORWARD -d 209.25.178.0/24 -j REJECT

Morpheus:

# iptables -A FORWARD -d 206.142.53.0/24 -j REJECT
# iptables -A FORWARD -p TCP --dport 1214 -j REJECT


KaZaA:

# iptables -A FORWARD -d 213.248.112.0/24 -j REJECT
# iptables -A FORWARD -p TCP --dport 1214 -j REJECT


Limewire:

# iptables -A FORWARD -p TCP --dport 6346 -j REJECT

Audiogalaxy:

# iptables -A FORWARD -d 64.245.58.0/23 -j REJECT

Mais uma linha interessante de se adicionar, que protege contra pacotes danificados (usados em ataques DoS por exemplo) é:

# iptables -A FORWARD -m unclean -j DROP

Bloqueando conexões vindas em qualquer porta tcp do seu micro:

# iptables -A INPUT -p tcp --syn -j DROP

Se você quiser que o PC também não responda a pings, adicione a seguinte linha:

# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Agora chegou a vez das portas UDP (para jogar Unreal Tournament na NET):

# iptables -t nat -A PREROUTING -i eth0 -p udp --dport 7777:7779 -j DNAT --to-dest 192.168.0.2
# iptables -A FORWARD -p udp -i eth0 --dport 7777:7779 -d 192.168.0.2 -j ACCEPT


Bloqueando parte das portas udp:

# iptables -A INPUT -i ppp0 -p udp --dport 0:30000 -j DROP

Com esse exemplo de firewall que fiz, você poderá copiá-lo e salvá-lo dentro de um arquivo de texto, como exemplo /usr/local/bin/firewall.

Em seguida dê permissão de execução para esse arquivo digitando "chmod +x /usr/local/bin/firewall" e com essa "receitinha de bolo" você acaba de criar um shell script, que poderá ser chamado por você a qualquer momento apenas digitando num terminal: firewall.

E para facilitar ainda mais a sua vida aqui vai uma dica:

Coloque uma cópia desse arquivo em um dos diretórios de inicialização do sistema, como /etc/init.d/.

Pronto, agora toda vez que você reinicializar a sua máquina, o seu firewall será iniciado junto com o sistema.

Se quiser limpar as regras estabelecidas por você no firewall, digite no terminal:

# iptables -F

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Trabalhando com CARP nos BSD's

Conexões redundantes e com balanceamento de carga - Ubuntu 9.04

Dominando o iptables (parte 1)

Autenticação no Iptables

Controlando 2 links de internet (roteados) em um gateway Linux com SQUID

  
Comentários
[1] Comentário enviado por damacenoneto em 21/02/2007 - 14:57h

esse script realmente funciona? testei na minha rede, mas os p2p continuam se conectando e funcionando normalmente. Ja tinha visto esse artigo no Guia do Hardware, escrito pelo Morimoto, ja havia testado tbm, mas nada de funcionar. Ate hj nao consegui bloquear os p2p com iptables puro, sem os paths. Alguem tem alguma solucao?

[2] Comentário enviado por monsores em 21/02/2007 - 15:09h

Achei o script interessante para quem quer aprender alguns conceitos do iptables, mas para bloquear estes programas eu prefiro outra forma.
Existem milhares de messengers e programas p2p, e bloquear um a um implicaria numa enorme perda de tempo. Além do mais a maioria destes programas tem mais de uma forma de se conectar, e basta trocar um número de porta para que voltem a funcionar.
Eu prefiro bloquear tudo e liberar apenas o que os usuários realmente precisarem, ou quando isso não é possível eu uso o l7-filter (http://l7-filter.sourceforge.net/).

Abraço.

[3] Comentário enviado por renanvcb em 21/02/2007 - 16:09h

Muito bom, adicionei aqui alguns, principalmente o limewire...
Mas me equivoquei e acabei adicionando em duplicata o bloqueio do limewire. Que comando utilizo pra remover uma linha do iptables?

[4] Comentário enviado por damacenoneto em 21/02/2007 - 16:11h

renanvcb, vc conseguiu bloquear emule, bitcomet, kazaa?? Como fez? Desse jeito citado acima nao consegui, nem com outros scripts pelo google afora.

[5] Comentário enviado por y2h4ck em 21/02/2007 - 19:58h

Amigo pensa comigo,
se vc tiver com a politica do Firewall como DROP,
- FORWARD DROP
- INPUT DROP

Nao ha porque fazer bloqueios uma vez que so vai liberar as portas necessários aos usuarios da rede interna.

Acho que isso aplica-se somente em ambiente inseguros onde não existe politica padrão definida de Firewall, ai ja cai por terra a sua frase de "firewall que se preze" :P . E feito isso acima nada é garantido que vai restringir algo.

Em geral aplicativos p2p atuam na camada 7 então um proxy na DMZ de front END como por exemplo um ISA server bem configurado seria mais util.

Abraços.

[6] Comentário enviado por marceloespindola em 07/07/2007 - 15:35h

Pessoal estou escrevendo um artigo aqui para o viva o linux sobre scrippt de firewall, ele está completo, pois levei muito tempo para desenvolve-lo e tinha objetivo de reunir as principais soluções e dúvidas sobre firewall iptables/netfilter para este artigo, mas como quero construir um bom artigo ainda está em fase de construção para o vivaolinux, entretanto estou disponibilizando no endereço

http://marcelolinux.blogspot.com/2007/07/meu-primeiro-artigo-do-vivaolinux.html

os arquivos e o artigo referente a script de firewall completo.

[7] Comentário enviado por papel em 22/01/2008 - 18:54h

Cara, dá uma olhada no q escrevi nesse link e me diz se resolvo meus problemas com seu tutorial.
Muito obrigado e Viva o Linux!!!

http://www.vivaolinux.com.br/comunidades/verTopico.php?codigo=191&codtopico=13485

[8] Comentário enviado por rdesigner em 30/12/2009 - 18:00h

fico muito grato por sua resposta meu camarada, mas oq acontece que não entendi como trabalhar com IPTables se vc puder de der uma ajuda de tipo como editar ele em que diretorio ele fica pois sou novato no assunto ficaria agradecido ... sou o rdesigner do post que vc respondeu http://www.vivaolinux.com.br/topico/Iniciantes-no-Linux/Como-bloquear-o-msn-messenger-%28programa%29...

obrigado e um otimo fim de ano ...

[9] Comentário enviado por GuilhermeBR em 22/04/2010 - 10:23h

Putz, vc copiou e colou o artigo do Morimoto:

http://www.guiadohardware.net/dicas/bloqueando-programas-p2p-usando-iptables.html

[10] Comentário enviado por mv-mesquita em 15/02/2011 - 17:19h

Valeu pela diga, agora que feio vc copiar tudo de um outro artigo e nem citar ele aqui...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts