Se você vai usar o Shorewall apenas por ser um firewall em máquinas com apenas uma interface, é um pouco exagerado, na minha opinião. Ainda assim, eu gosto de usar o Shorewall para essa tarefa de qualquer maneira. Aqui está uma pequena introdução que pode ajudá-lo a começar.
Portanto, estou assumindo uma configuração somente de IPv4 de interface única aqui. As versões IPv4 e IPv6 do shorewall são pacotes independentes, mas semelhantes.
$ sudo apt-get install shorewall
Após a instalação, tudo ainda está desativado. Primeiro, vamos copiar um exemplo de configuração de interface única.
$ sudo cp /usr/share/doc/shorewall/examples/one-interface/* /etc/shorewall
Então vamos configurar os arquivos um por um.
Dica: use os arquivos *.annotated.gz
para mais anotações em seus arquivos de configuração, se você gosta disso.
-
zones
- sair como padrão. A configuração de zonas é obrigatória, mas como é uma única interface, ela contém apenas uma zona além do próprio firewall (fw
):net
. -
interfaces
- Configure sua interface única lá. A configuração padrão provavelmente ficará bem, e eu só removereidhcp
já que não estou executando o DHCP nos meus servidores. -
policy
- define políticas para o tráfego entre as zonas. Como o seu número de zonas é apenas um, isso também é fácil. Por padrão, toda a entrada de tráfego não é permitida e toda a saída de tráfego é permitida. Deixe esse padrão se você gosta disso. -
rules
- Aqui é onde você configura exceções para as políticas definidas. Um exemplo simples para permitir a entrada da porta TCP 1234 de todo o mundo IPv4 externo seria:ACCEPT net $FW tcp 1234
Considere o uso de algumas macros que ajudam seus arquivos de configuração a serem mais legíveis, como este que você provavelmente deseja definir de qualquer maneira:
SSH(ACCEPT) net:1.2.3.4 $FW
Para permitir o acesso SSH a partir do endereço IP
1.2.3.4
. -
shorewall.conf
- obtenha porgunzip
ping no arquivoshorewall.conf.gz
enviado. Verifique seIP_FORWARDING=Off
se você não fizer nenhum encaminhamento e considere configurarDISABLE_IPV6=Yes
se você não estiver planejando configurar o IPv6 na máquina. Finalmente, definaSTARTUP_ENABLED=Yes
.
Habilite-o para o tempo de inicialização também, em /etc/default/shorewall
, defina startup=1
.
Agora verifique sua configuração atual executando
$ shorewall check
Por favor, faça isso toda vez que você alterar algum arquivo e antes de realmente reiniciar o Shorewall. Isso evita o tempo de inatividade em caso de erro de sintaxe, pois compila reclamações sobre sintaxe incorreta.
Se tudo estiver bem, você pode tentar realmente começar:
$ sudo service shorewall start
E sinta-se à vontade para inspecionar o resultado em iptables
:
$ sudo iptables -L -n -v