Pesquisa de site

Como explorar a configuração do firewall Shorewall no Linux


Em meu artigo anterior, aprendemos a instalação do Shorewall, a configuração do arquivo de configuração e a configuração do encaminhamento de porta por NAT. Neste artigo, iremos nos aprofundar nos erros comuns associados ao Shorewall, fornecer soluções e apresentar suas opções de linha de comando.

Shorewall oferece uma ampla variedade de comandos que podem ser executados na linha de comando. Dando uma olhada no man shorewall você deve ter muito o que ver, mas a primeira tarefa que vamos realizar é verificar nossos arquivos de configuração.

sudo shorewall check

Shorewall imprimirá uma verificação de todos os seus arquivos de configuração e das opções contidas neles.

A saída será semelhante a esta.

Determining Hosts in Zones...
Locating Actions Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/shrae/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn..
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding Anti-smurf Rules
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking Accept Source Routing...
Checking MAC Filtration -- Phase 1...
Checking /etc/shorewall/rules...
Checking /usr/share/shorewall/action.Invalid for chain %Invalid...
Checking MAC Filtration -- Phase 2...
Applying Policies...
Checking /etc/shorewall/routestopped...
Shorewall configuration verified

A linha mágica que procuramos é aquela na parte inferior que diz: “Configuração do Shorewall verificada ”. Se você receber algum erro, provavelmente é devido à falta de módulos na configuração do kernel.

Mostrarei como resolver dois dos erros mais comuns, mas cabe a você recompilar seu kernel com todos os módulos necessários se planeja usar sua máquina como firewall.

O primeiro erro, e mais comum, é o erro sobre NAT.

Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Checking /etc/shorewall/zones...
Checking /etc/shorewall/interfaces...
Determining Hosts in Zones...
Locating Actions Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/shrae/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn..
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding Anti-smurf Rules
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking Accept Source Routing...
Checking /etc/shorewall/masq...
    ERROR: a non-empty masq file requires NAT in your kernel and iptables /etc/shorewall/masq (line 15)

Se você está vendo algo parecido com isto, é provável que seu Kernel atual não esteja compilado com suporte para NAT. Isso é comum com a maioria dos Kernels prontos para uso. Por favor, leia meu tutorial sobre “Como compilar um kernel Debian” para começar.

Outro erro comum produzido pela verificação é o erro sobre iptables e logging.

shorewall check
Checking...
Processing /etc/shorewall/params...
Processing /etc/shorewall/shorewall.conf
Loading Modules..
   ERROR: Log level INFO requires LOG Target in your kernel and iptables

Isso também é algo que você pode compilar em um novo Kernel, mas há uma solução rápida para isso se você quiser usar o ULOG. ULOG é um mecanismo de registro diferente do syslog. É muito fácil de usar.

Para definir isso, você deve alterar todas as instâncias de “info” para “ULOG” em todos os seus arquivos de configuração em /etc/shorewall. . O comando a seguir pode fazer isso por você.

cd /etc/shorewall
sudo sed –i ‘s/info/ULOG/g’ *

Depois disso, edite o arquivo /etc/shorewall/shorewall.conf e defina a linha.

LOGFILE=

Para onde você gostaria que seu log fosse armazenado. O meu está em /var/log/shorewall.log.

LOGFILE=/var/log/shorewall.log

Executar o comando a seguir novamente deve fornecer um atestado de saúde.

shorewall check

A interface de linha de comando do Shorewall vem com muitas linhas úteis para administradores de sistemas. Um comando usado com frequência, especialmente quando diversas alterações estão sendo feitas no firewall, é salvar o estado atual da configuração para que você possa reverter se houver alguma complicação.

A sintaxe para isso é simples.

sudo shorewall save <filename>

Reverter é igualmente fácil:

sudo shorewall restore <filename>

O Shorewall também pode ser iniciado e configurado para usar um diretório de configuração alternativo. Você pode especificar que este é o comando de início, mas você vai querer verificá-lo primeiro.

sudo shorewall check <config-directory>

Se você deseja simplesmente testar a configuração e, se estiver funcionando, inicializá-la, você pode especificar a opção try.

sudo shorewall try <config-directory> [  ]

Shorewall é apenas uma das muitas soluções robustas de firewall disponíveis em sistemas Linux. Não importa em que extremo do espectro de rede você se encontre, muitos consideram-no simples e útil.

Este é apenas um pequeno começo e pode ajudá-lo no seu caminho sem se aprofundar muito nos conceitos de rede. Como sempre, pesquise e dê uma olhada nas páginas de manual e outros recursos. A lista de discussão de Shorewall é um lugar incrível, atualizada e bem mantida.