Pesquisa de site

Como migrar do FirewallD para o Iptables no CentOS 7


Introdução

Como a maioria das outras distribuições do Linux, o CentOS 7 usa a estrutura netfilter dentro do kernel do Linux para acessar os pacotes que fluem pela pilha de rede. Isso fornece a interface necessária para inspecionar e manipular pacotes para implementar um sistema de firewall.

A maioria das distribuições usa o firewall iptables, que usa os ganchos netfilter para impor regras de firewall. O CentOS 7 vem com um serviço alternativo chamado firewalld que atende a esse mesmo propósito.

Embora o firewalld seja uma solução de firewall muito capaz com ótimos recursos, pode ser mais fácil para alguns usuários manter o iptables se eles estiverem confortáveis com sua sintaxe e satisfeitos com seu comportamento e desempenho. O iptables comando é realmente usado pelo próprio firewalld, mas o iptables serviço é não instalado no CentOS 7 por padrão. Neste guia, vamos demonstrar como instalar o serviço iptables no CentOS 7 e migrar seu firewall de firewalld para iptables (confira isso guia se você gostaria de aprender como usar o FirewallD).

Salve suas regras de firewall atuais (opcional)

Antes de mudar para iptables como a solução de firewall do seu servidor, é uma boa ideia salvar as regras atuais que o firewalld está impondo. Mencionamos acima que o daemon firewalld realmente aproveita o comando iptables para falar com os hooks do kernel netfilter. Por causa disso, podemos despejar as regras atuais usando o comando iptables.

Despeje o conjunto atual de regras na saída padrão e em um arquivo em seu diretório pessoal chamado firewalld_iptables_rules digitando:

  1. sudo iptables -S | tee ~/firewalld_iptables_rules

Faça o mesmo com ip6tables:

  1. sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

Dependendo das zonas firewalld que estavam ativas, dos serviços que foram ativados e das regras que foram passadas de firewall-cmd diretamente para iptables, o conjunto de regras despejado pode ser bastante extenso.

O serviço firewalld implementa suas políticas de firewall usando regras normais de iptables. Ele faz isso construindo uma estrutura de gerenciamento usando cadeias iptables. A maioria das regras que você provavelmente verá será usada para criar essas cadeias de gerenciamento e direcionar o fluxo de tráfego para dentro e para fora dessas estruturas.

As regras de firewall que você acabou movendo para o serviço iptables não precisarão recriar a estrutura de gerenciamento da qual o firewalld depende. Por causa disso, o conjunto de regras que você acaba implementando provavelmente será muito mais simples. Estamos salvando todo o conjunto aqui para manter o máximo possível de dados brutos intactos.

Você pode ver algumas das linhas mais essenciais para ter uma ideia da política que terá que recriar digitando algo assim:

  1. grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

Isso exibirá principalmente as regras que resultam em uma decisão final. As regras que apenas saltam para cadeias criadas pelo usuário não serão mostradas.

Baixe e instale o serviço Iptables

Para iniciar a transição do seu servidor, você precisa baixar e instalar o pacote iptables-service dos repositórios do CentOS.

Baixe e instale os arquivos de serviço digitando:

  1. sudo yum install iptables-services

Isso fará o download e instalará os scripts systemd usados para gerenciar o serviço iptables. Ele também gravará alguns arquivos de configuração iptables e ip6tables padrão no diretório /etc/sysconfig.

Construa suas regras de firewall Iptables

Em seguida, você precisa construir suas regras de firewall iptables modificando os arquivos /etc/sysconfig/iptables e /etc/sysconfig/ip6tables. Esses arquivos contêm as regras que serão lidas e aplicadas quando iniciarmos o serviço iptables.

A forma como você constrói suas regras de firewall depende se o processo system-config-firewall está instalado e sendo usado para gerenciar esses arquivos. Verifique a parte superior do arquivo /etc/sysconfig/iptables para ver se ele é recomendado contra a edição manual ou não:

  1. sudo head -2 /etc/sysconfig/iptables

Se a saída for semelhante a esta, fique à vontade para editar manualmente os arquivos /etc/sysconfig/iptables e /etc/sysconfig/ip6tables para implementar as políticas para seu iptables firewall:

output
# sample configuration for iptables service # you can edit this manually or use system-config-firewall

Abra e edite os arquivos com privilégios sudo para adicionar suas regras:

  1. sudo nano /etc/sysconfig/iptables
  2. sudo nano /etc/sysconfig/ip6tables

Depois de criar suas regras, você pode testar suas regras IPv4 e IPv6 usando estes comandos:

  1. sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
  2. sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

Se, por outro lado, a saída do exame do arquivo /etc/sysconfig/iptables for semelhante a esta, você não deve editar manualmente o arquivo:

output
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended.

Isso significa que a ferramenta de gerenciamento system-config-firewall está instalada e sendo usada para gerenciar esse arquivo. Quaisquer alterações manuais serão substituídas pela ferramenta. Se você vir isso, faça alterações em seu firewall usando uma das ferramentas associadas. Para a IU de texto, digite:

  1. sudo system-config-firewall-tui

Se você tiver a IU gráfica instalada, poderá iniciá-la digitando:

  1. sudo system-config-firewall

Se você precisar de ajuda para aprender sobre as regras e a sintaxe do iptables, os seguintes guias podem ser úteis, embora sejam voltados principalmente para sistemas Ubuntu:

  • Como configurar um firewall usando Iptables no Ubuntu 14.04
  • Iptables Essentials: regras e comandos comuns de firewall
  • Como implementar um modelo básico de firewall com Iptables no Ubuntu 14.04

Pare o serviço FirewallD e inicie o serviço Iptables

Em seguida, precisamos interromper o firewall firewalld atual e ativar nossos serviços iptables. Usaremos a construção && para iniciar os novos serviços de firewall assim que o serviço firewalld for encerrado com sucesso:

  1. sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

Você pode verificar se o firewalld não está em execução digitando:

  1. sudo firewall-cmd --state

Você também pode ver que as regras configuradas no diretório /etc/sysconfig foram carregadas e aplicadas digitando:

  1. sudo iptables -S
  2. sudo ip6tables -S

Neste ponto, os serviços iptables e ip6tables estão ativos para a sessão atual. No entanto, atualmente, o serviço firewalld ainda é aquele que será iniciado automaticamente quando o servidor for reinicializado.

Este é o melhor momento para testar suas políticas de firewall para garantir que você tenha o nível de acesso necessário, porque você pode reiniciar o servidor para reverter para o firewall antigo se houver algum problema.

Desative o serviço FirewallD e ative os serviços Iptables

Depois de testar suas regras de firewall para garantir que sua política está sendo aplicada corretamente, você pode prosseguir e desativar o serviço firewalld digitando:

  1. sudo systemctl disable firewalld

Isso impedirá que o serviço seja iniciado automaticamente na inicialização. Como o serviço firewalld não deve ser iniciado manualmente enquanto os serviços iptables estiverem em execução, você pode dar um passo extra mascarando o serviço. Isso também impedirá que o serviço firewalld seja iniciado manualmente:

  1. sudo systemctl mask firewalld

Agora, você pode ativar seus serviços iptables e ip6tables para que eles sejam iniciados automaticamente na inicialização:

  1. sudo systemctl enable iptables
  2. sudo systemctl enable ip6tables

Isso deve concluir a transição do firewall.

Conclusão

A implementação de um firewall é uma etapa essencial para manter seus servidores seguros. Embora o firewalld seja uma ótima solução de firewall, às vezes faz mais sentido usar a ferramenta mais conhecida ou os mesmos sistemas em uma infraestrutura mais diversificada.

Artigos relacionados: