Criando regras simples com IP6Tables

Este artigo demonstra como configurar regras de Firewall, usando o IP6Tables.

[ Hits: 16.137 ]

Por: Alex Vitola em 30/08/2013 | Blog: http://www.vitola.net.br


Nat ou Mangle / Regras



Nat ou Mangle

Demora-se um pouco a se acostumar a trabalhar sem a tabela NAT, e precisa-se de um pouco mais de atenção para fazer redirecionamentos de portas e servidores.

Uma tabela que a maioria não usava, a Mangle, ganha destaque agora (apesar de no momento, eu não ter nenhuma regra usando ela).

O comando:

# ip6tables -L -n -t nat

Retorna:
  ip6tables v1.4.7: can't initialize ip6tables table `nat': 
  Table does not exist (do you need to insmod?)
  Perhaps ip6tables or your kernel needs to be upgraded.


Já o comando:

# ip6tables -L -n -t mangle

Retorna:
  Chain PREROUTING (policy ACCEPT)
  target     prot opt source            destination         

  Chain INPUT (policy ACCEPT)
  target     prot opt source            destination         

  Chain FORWARD (policy ACCEPT)
  target     prot opt source            destination         

  Chain OUTPUT (policy ACCEPT)
  target     prot opt source            destination         

  Chain POSTROUTING (policy ACCEPT)

  target     prot opt source            destination 


As regras propriamente ditas

Para dar stop, start e restart nas regras, usa-se comandos semelhantes ao IPTables:

# service ip6tables [start|stop|restart|status]

# cat /etc/sysconfig/ip6tables


Retorna:
  # Firewall configuration written by system-config-firewall
  *filter

  # Configurando a politica padrao
  :INPUT DROP [0:0]
  :FORWARD DROP [0:0]
  :OUTPUT DROP [0:0]

  # Permitir ICMPv6 de qualquer local
  -A INPUT -p ipv6-icmp -j ACCEPT 

  # Permitir qualquer coisa no loopback
  -A INPUT -i lo -j ACCEPT 

  # Permitir Statefull
  -A INPUT -i sixxs -m state --state RELATED,ESTABLISHED -j ACCEPT 

  # Filtrar todos os pacotes que tem cabeçalhos RH0
  -A INPUT -m rt --rt-type 0 -j DROP 

  # Permitir enderecos Link-Local
  -A INPUT -s fe80::/10 -j ACCEPT 

  # Permitir multicast
  -A INPUT -d ff00::/8 -j ACCEPT 

  # Permitir ICMPv6 de qualquer local
  -A FORWARD -p ipv6-icmp -j ACCEPT 

  # Filtrar todos os pacotes que tem cabeçalhos RH0
  -A FORWARD -m rt --rt-type 0 -j DROP 

  # Permitir o forwarding para minha subrede
  -A FORWARD -s 2001:0000:2d2::/48 -i eth0 -o sixxs -m state --state NEW -j ACCEPT 

  # Permitir Statefull
  -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 

  # Permitir SSH, HTTP e HTTPs
  -A INPUT -d 2001:0000:2d2::254/128 -i eth0 -p tcp -m tcp --dport 22  -j ACCEPT 
  -A INPUT -d 2001:0000:2d2::254/128 -i eth0 -p tcp -m tcp --dport 80  -j ACCEPT 
  -A INPUT -d 2001:0000:2d2::254/128 -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT 

  # Permitir ICMPv6 de qualquer local
  -A OUTPUT -p ipv6-icmp -j ACCEPT 

  # Permitir qualquer coisa no loopback
  -A OUTPUT -o lo -j ACCEPT 

  # Permitindo qualquer saida para a Internet
  -A OUTPUT -o sixxs -j ACCEPT 

  # Filtrar todos os pacotes que tem cabeçalhos RH0
  -A OUTPUT -m rt --rt-type 0 -j DROP 

  # Permitir enderecos Link-Local
  -A OUTPUT -s fe80::/10 -j ACCEPT 

  # Permitir multicast
  -A OUTPUT -d ff00::/8 -j ACCEPT 

  # Permitindo qualquer saida
  -A OUTPUT -o eth0 -j ACCEPT 
  COMMIT


Para listar as regras, você pode usar o ip6tables-save, ou o ip6tables -L -n:

# ip6tables -L -n

  Chain INPUT (policy DROP)
  target     prot opt source               destination         
  ACCEPT     icmpv6    ::/0                 ::/0                
  ACCEPT     all      ::/0                 ::/0                
  ACCEPT     all      ::/0                 ::/0          state RELATED,ESTABLISHED 
  DROP       all      ::/0                 ::/0          rt type:0 
  ACCEPT     all      fe80::/10            ::/0                
  ACCEPT     all      ::/0                 ff00::/8            
  ACCEPT     tcp      ::/0                 2001:0000:2d2::254/128 tcp dpt:22 
  ACCEPT     tcp      ::/0                 2001:0000:2d2::254/128 tcp dpt:80 
  ACCEPT     tcp      ::/0                 2001:0000:2d2::254/128 tcp dpt:443 

  Chain FORWARD (policy DROP)
  target     prot opt source               destination         
  ACCEPT     icmpv6    ::/0                 ::/0                
  DROP       all      ::/0                 ::/0          rt type:0 
  ACCEPT     all      2001:0000:2d2::/48   ::/0          state NEW 
  ACCEPT     all      ::/0                 ::/0          state RELATED,ESTABLISHED 

  Chain OUTPUT (policy DROP)
  target     prot opt source               destination         
  ACCEPT     icmpv6    ::/0                 ::/0                
  ACCEPT     all      ::/0                 ::/0                
  ACCEPT     all      ::/0                 ::/0                
  DROP       all      ::/0                 ::/0           rt type:0 
  ACCEPT     all      fe80::/10            ::/0                
  ACCEPT     all      ::/0                 ff00::/8            

  ACCEPT     all      ::/0                 ::/0   


Página anterior    

Páginas do artigo
   1. Uma pequena introdução
   2. Nat ou Mangle / Regras
Outros artigos deste autor

Observium - Monitoramento de Rede

Leitura recomendada

Utilizando o script vpnautomatica

FAN Nagios - Tela inicial do Nagios

Docker - Containers em Linux

Interface de Rede Virtual no Debian

Importância do gerenciamento de redes e Nagios como ferramenta de gestão

  
Comentários
[1] Comentário enviado por px em 31/08/2013 - 10:19h

Bom artigo, meio superficial para quem começa fazendo uma crítica a terceiros, e ainda acaba no final a mostrar os mesmos scripts mirabolantes usados no ipv4 rsrs, só se muda a tabela de controle e o protocolo, mas valeu a intenção ai abç. e continue crescendo no mundo Gnu/Linux.

[2] Comentário enviado por cROMADO em 31/08/2013 - 19:42h

"ainda acaba no final a mostrar os mesmos scripts mirabolantes usados no ipv4".
Que script?. não estou vendo nenhum shebang ali. ele apenas mostra o arquivo padrão de regras iptables red-hat like.

[3] Comentário enviado por px em 01/09/2013 - 09:59h


[2] Comentário enviado por cROMADO em 31/08/2013 - 19:42h:

"ainda acaba no final a mostrar os mesmos scripts mirabolantes usados no ipv4".
Que script?. não estou vendo nenhum shebang ali. ele apenas mostra o arquivo padrão de regras iptables red-hat like.


Me expressei um pouco mal ali... quis disser que após a critica eu esperava uma "surpresa" no final, algo realmente diferente do que costumo ver neste assunto, entendi? e como você mesmo disse "ele apenas mostra o arquivo de regras iptables red-hat like" mas foi só uma critica construtiva, para ele ir se aperfeiçoando e engajar melhor suas palavras.

[4] Comentário enviado por vitola em 01/09/2013 - 11:16h

Certíssimo "px" ... quem me conhece que sou uma mala mesmo ..

E o objetivo era simsplesmente mostrar uma regra inicial super-básica e inicial. Como estou montando todo um ambiente de cloud atrás deste gateway a tendência é que ele fique bem mais complexo.

Suas atualizações provavelmente irei colocar aqui e seguida. Mas talvés como uma dica e não como um artigo. Que também acho que teria sido melhor, pois num artigo você sempre espera mais coisas e uma dica, como o próprio nome diz é só uma dica.

[5] Comentário enviado por brizao em 22/07/2014 - 11:51h

Sei que já faz um tempo desde que este artigo foi publicado, recentemente comecei a estudar e entender mais sobre ipv6, quebrei bastante a cabeça com essa falta da tabela nat no ip6tables, mas aí fuçando um monte no google, "descobri" que versões mais recentes do kernel do linux suportam a versão mais recente do netfilter, que inclui a tabela nat no ip6tables, então depois de instalar os 2, podemos utilizar o mesmo script do ipv4 para ipv6, algumas regras por exemplo, muito úteis principalmente quando tem que controlar a rede local de uma empresa com dhcpv6 e a rede externa:

# ip6tables -V
ip6tables v1.4.21

ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Para redirecionar pacotes vindo de fora para um IP interno, o ip6tables dá pra utilizar a tabela mangle em conjunto com o target TPROXY --on-ip IPv6 --on-port PORTA, mas sinceramente não consegui fazer esta regra funcionar, já com o a inclusão do nat, volta a ser o que era antes, por exemplo:

ip6tables -t nat -A PREROUTING -i eth0 -p tcp --dport PORTA -j DNAT --to IPv6

http://mirrors.bieringer.de/Linux+IPv6-HOWTO/nat-netfilter6..html


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts