Iptables rules

Fonte: wirelesspt.net

Neste artigo estão exemplificadas várias regras de utilização com a firewall iptables a fim de servir de template para qualquer regra necessária. Recomenda-se para quem não esteja familiarizado com iptables que leia sobre a matéria a fim de poder compreender melhor o seu uso.

Diferenças entre INPUT, OUTPUT & FORWARD:

  • INPUT: acesso de entrada
  • OUTPUT: acesso de saída
  • FORWARD: acesso de reenvio de pacotes

Diferenças entre REJECT e DROP:

Em termos práticos ambos os parâmetros impedem o acesso ou ligação a tentar ser estabelecida sendo a única diferença a forma como ambos reagem durante a sua actividade.

  • DROP: Descarta/ignora o pacote/ligação a ser enviado ou recebido silenciosamente
  • REJECT: Normalmente anuncia um erro icmp quando recebe ou envia um pacote/ligação.

Listar regras da firewall

Listar todas as regras:

iptables -L 

Listar todas as regras por número

iptables -vnL --line-numbers

Listar apenas regras de entrada

iptables -L INPUT --line-numbers

Listar apenas regras de saída

iptables -L OUTPUT --line-numbers

A combinar os parâmetros obtemos listagens gerais, de saída ou entrada conforme se pretende

iptables -vnL INPUT --line-numbers
iptables -vnL OUTPUT --line-numbers

Apagar uma regra da firewall

Adicionando uma regra

iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

Apagando a regra adicionada

iptables -D INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

Apagar pelo seu número

iptables -D OUTPUT 5
iptables -D INPUT 22

Bloquear acesso ao exterior

Removemos todas as regras de saída anteriores

iptables -F OUTPUT

De seguida rejeitamos todas as ligações de saída mantendo apenas as que estão actualmente em feito e estabelecidas.

iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -j REJECT

Bloquear acesso proveniente do exterior

Removemos todas as regras de entrada anteriores:

iptables -F INPUT

De seguida rejeitamos todas as ligações de entrada mantendo apenas as que estão actualmente em feito e estabelecidas.

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT

Bloquear o acesso a tudo

Removemos todas as regras de entrada e saída anteriores:

iptables -F

Rejeitamos todas as entradas

iptables -A INPUT -j REJECT

Rejeitamos todas as saídas

iptables -A OUTPUT -j REJECT

Rejeitamos todos os reenvios

iptables -A FORWARD -j REJECT

Bloquear o acesso completo a um ip

iptables -A INPUT -s 95.85.38.144 -j DROP
iptables -A OUTPUT -s 95.85.38.144 -j DROP
iptables -A FORWARD -s 95.85.38.144 -j DROP

Descartar ou ignorar repostas ping

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Bloquear acesso telnet para o exterior

iptables -A OUTPUT -p tcp --dport telnet -j REJECT

Bloquear acesso telnet proveniente do exterior

iptables -A INPUT -p tcp --dport telnet -j REJECT

Bloquear o acesso ssh para o exterior

iptables -A OUTPUT -p tcp --dport ssh -j REJECT

Bloquear o acesso ssh proveniente do exterior

iptables -A INPUT -p tcp --dport ssh -j REJECT

Rejeitar todo acesso vindo do exterior excepto ssh e tráfego local

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j REJECT

Aceitar acesso ssh do exterior proveniente de um ip especifico

Bloqueamos todas as ligações à porta 22 excepto se provenientes do ip 69.196.165.40

Aceitamos em primeiro lugar as ligações do ip que queremos

iptables -A INPUT -p tcp -s 69.196.165.40 --dport ssh -j ACCEPT

Bloqueamos todas as restantes.

iptables -A INPUT -p tcp --dport ssh -j REJECT

Aceitar acesso ssh proveniente de uma mac

Com esta regra permitimos o acesso ao serviço ssh que provenha de um endereço mac específico bloqueando todos os restantes.

iptables -A INPUT -m mac --mac-source 00:b0:3d:e1:21:4c -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j REJECT

Bloquear o acesso completo a uma mac

iptables -A INPUT -m mac --mac-source b0:34:95:a3:68:b1 -j DROP
iptables -A OUTPUT -m mac --mac-source b0:34:95:a3:68:b1 -j DROP
iptables -A forwarding_rule -m mac --mac-source b0:34:95:a3:68:b1 -j DROP

Bloquear acesso proveniente do exterior a uma porta local

Neste exemplo usamos a porta 69. Podemos utilizar qualquer porta que desejamos.

iptables -A INPUT -p tcp --dport 69 -j REJECT

Bloquear todo acesso a um interface de rede

Esta regra bloqueará todo o acesso a um interface de rede numa subnet específica. Bastante útil para descartar endereços ip spoofed/forjados.

iptables -A INPUT -i eth0 -s 192.168.0.0/8 -j DROP

Criar uma mascara de ip

Útil para permitir acesso à internet a todos os hosts na mesma subnet]

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXT_IFACE -j MASQUERADE

Bloquear todo acesso telnet excepto proveniente de determinado ip

iptables -A INPUT -t filter ! -s 69.196.165.40 -p tcp --dport 23 -j REJECT

Bloquear acesso ssh excepto proveniente de determinado ip

Se removermos o ! então rejeitamos o acesso eo netrange especificado. Rejeitar todas as ligações provenientes de um netrange/espaço de [[ip]'s.

iptables -A INPUT -t filter -m iprange ! --src-range 172.2.1.70-172.2.1.200  -p tcp --dport 22 -j REJECT

Bloquear todo acesso externo a um ip

iptables -A OUTPUT -d 141.0.174.37 -j REJECT

Bloquear acesso proveniente de um site numa porta

iptables -A INPUT -s myspace.com -p tcp --sport www -j DROP
iptables -A INPUT -s 95.85.38.144 -p tcp --sport www -j DROP
iptables -A INPUT -s 82.102.24.163 -p  tcp --sport 80 -j DROP

Ver ainda

Editor

--Cmsv (discussão) 04h11min de 12 de maio de 2015 (EDT)