Gerenciando regras paralelas para iptables ipv4 e ipv6?

10

Recentemente, começamos a experimentar com o IPv6, e um dos primeiros problemas que temos de enfrentar é lidar com um conjunto completamente separado de regras de firewall (Linux iptables / ip6ables) para as duas pilhas de protocolo. Nossa lógica de firewall é baseada em grande parte em torno de um número de redes específicas (por exemplo, 10.0.0.0/24 é a rede da estação de trabalho da equipe, 10.1.0.0/24 é a rede do banco de dados, 10.2.0.0/24 é a rede do servidor web, etc. ), e a lógica para IPv6 e IPv4 será basicamente o mesmo, modulo diferentes prefixos de rede.

O que as pessoas estão fazendo conseguem lidar com esse tipo de situação? Idealmente, eu gostaria de poder gerar os conjuntos de regras iptables e ip6table a partir do (s) mesmo (s) arquivo (s) de origem. Eu já juntei algo usando o bash, mas não é necessariamente bonito e eu suspeito que uma solução melhor deve existir em algum lugar lá fora.

Eu estaria particularmente interessado em uma solução baseada em fantoches que faça bom uso dos mecanismos de dependência do Puppet para implementar a ordem relativa de regras (ou grupos de regras).

    
por larsks 30.01.2012 / 17:41

5 respostas

2

Respondendo a minha pergunta aqui, mas achei que essa informação poderia ser de interesse geral:

Enquanto observava essa questão, deparei-me com ufw (Uncomplicated FireWall) do pessoal do Ubuntu. Com o IPV6 habilitado na configuração do ufw, o ufw irá gerenciar as regras do iptables e ip6tables em paralelo. Isso significa que você pode fazer algo assim:

# ufw allow ssh/tcp

E termine com:

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere (v6)

O que resulta em regras iptables / ip6tables que se parecem com isso:

# iptables-save | grep 'dport 22'
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
# ip6tables-save | grep 'dport 22'
-A ufw6-user-input -p tcp -m tcp --dport 22 -j ACCEPT

O Ufw também suporta perfis de aplicativos, que permitem criar grupos nomeados de portas. Você pode fazer isso:

# ufw allow 'WWW Full'

E acabamos abrindo as duas portas, 80 e 443 (para IPv4 e IPv6).

Eu só comecei a olhar para ele, mas parece que está bem colocado.

    
por 02.02.2012 / 16:54
5

O Firewall Builder tem exatamente o que você precisa. Você pode criar um conjunto de regras, marcá-lo como "combinado ipv4 + ipv6" e colocar suas redes ipv4 e ipv6 atribuídas ao mesmo segmento (como "database network" etC) na mesma regra. O programa então gera duas configurações separadas do iptables, uma para o ipv4 e outra para o ipv6. Este capítulo do Guia do Usuário ilustra isso, embora ele use listas de acesso de roteadores Cisco como exemplo. Funciona exatamente da mesma maneira para o iptables.

link

    
por 30.01.2012 / 19:00
4

Recentemente também fui confrontado com a criação de regras iptables para IPv4 e IPv6. Depois de algumas pesquisas, acabei usando a ramificação IPv6 FireHOL de Phil Whineray .

FireHOL is an iptables firewall generator producing stateful iptables packet filtering firewalls, on Linux hosts and routers with any number of network interfaces, any number of routes, any number of services served, any number of complexity between variations of the services (including positive and negative expressions). (Source: FireHOL website)

Infelizmente, a versão oficial não tem suporte para o IPv6. Mas Phil Whineray adicionou suporte em um ramo não-oficial.

Alguns exemplos de como a configuração se parece:

# allowing outgoing http and https requests for ipv4 and ipv6 (default setting when nothing is specified):
client "http https" accept

# allow incoming ssh only on ipv4
ipv4 server ssh accept

# allow incoming IMAP requests only for ipv6
ipv6 server imap accept

Você pode conferir este ramo de fogo em:

git clone git://repo.or.cz/fireholvi.git

Documentação adicional pode ser encontrada na documentação oficial do FireHOL ou no Leia-me adicional sobre IPv6 .

Pessoalmente, provavelmente seria cauteloso ao usá-lo em uma máquina de produção em que ter um firewall 100% confiável é importante. Mas vale a pena dar uma olhada.

    
por 30.01.2012 / 18:02
3
No interesse do evangelismo contínuo da causa, sugiro alavancar o Puppet para fazer o seu levantamento. Atualmente, não há um bom roteiro para lidar com as regras do iptables 4 e 6, mas não seria um grande desafio escrever um, assim que você se ajustar ao idioma.

git público da Mediawiki O repositório é uma mina fantástica de padrões de configuração e inclui um classe iptables que fornecerá uma boa base para começar. Você poderia editá-lo para aplicar regras a ambas as pilhas de uma vez por padrão e ter sinalizadores para regras diferentes ao basear as coisas em regras IPv4 ou IPv6.

O bônus final no final é que as regras de firewall para um serviço podem ser gravadas na definição de serviço e automaticamente implantadas e removidas quando um serviço é implantado ou removido.

    
por 30.01.2012 / 18:08
0

Como ainda está faltando na lista: O Shorewall é uma ferramenta de configuração de filtro de pacote rica em recursos amplamente adotada e atualizada regularmente. Ele tinha suporte a IPv6 há algum tempo.

    
por 30.01.2012 / 18:30