Pesquisa de site

Shorewall – um firewall de alto nível para servidores Linux


Configurar um firewall no Linux pode ser muito assustador para um novato ou para alguém não muito familiarizado com iptables. Felizmente, existe uma solução muito fácil de usar no Shorewall.

Neste tutorial de várias partes, vou apresentar o Shorewall e mostrar alguns tópicos mais avançados sobre esse incrível sistema de firewall.

O que é Shorewall?

Shorewall é essencialmente um front-end para iptables, mas é um front-end de ambiente de linha de comando que utiliza vários arquivos de texto para sua configuração. Embora o Shorewall seja um sistema de firewall robusto que pode ser dimensionado em redes muito grandes atendendo a inúmeras máquinas, começaremos com uma configuração básica de duas interfaces e definiremos o básico.

Uma configuração de duas interfaces consiste em uma máquina com duas portas Ethernet, uma de entrada e outra de saída para a rede local.

Instale o Firewall Shorewall no Linux

Shorewall pode ser instalado usando as ferramentas de gerenciamento de pacotes apt e yum.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Após a instalação, precisamos copiar um exemplo de configuração do diretório “/usr/share/doc/shorewall” para o diretório padrão do Shorewall “/etc/shorewall“.

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Se dermos uma olhada neste diretório, veremos vários arquivos e o arquivo shorewall.conf.

Shorewall vê a rede como um grupo de zonas diferentes, então o primeiro arquivo que queremos dar uma olhada é o arquivo “/etc/shorewall/zones”.

sudo nano /etc/shorewall/zones

Aqui vemos que existem três zonas definidas por padrão: fw, net e loc. É importante observar que o Shorewall trata a própria máquina do firewall como sua própria zona e a armazena em uma variável chamada $fw.

O arquivo “/etc/shorewall/zones” é bastante autoexplicativo. Você tem a net zone (interface voltada para a Internet), a loc zone (interface voltada para LAN) e fw, que é tudo.

Esta configuração fornece o seguinte:

  • Permite todas as solicitações de conexão da zona loc (LAN) para a zona net (Internet).
  • Descarta todas as solicitações de conexão (ignora) da zona de rede para o firewall e a LAN.
  • Rejeita e registra todas as outras solicitações.

O bit LOG LEVEL deve ser familiar para qualquer um que já administrou com Apache, MySQL ou qualquer outro programa FOSS. Neste caso, estamos dizendo ao Shorewall para usar o nível de informação do registro.

Agora que nossas zonas e políticas estão definidas, temos que configurar nossas interfaces. Você faz isso editando o arquivo “/etc/shorewall/interfaces”.

sudo nano /etc/shorewall/interfaces

Aqui, definimos nossa interface voltada para a Internet como eth0 para a zona net. No nosso lado LAN, definimos a outra interface, eth1, para a zona loc. Ajuste este arquivo para se adequar à sua configuração corretamente.

As várias opções que você pode colocar para qualquer uma dessas interfaces são extensas e são melhor explicadas em detalhes na página de manual.

man shorewall-interfaces

Um rápido resumo de alguns deles é o seguinte:

  • nosmurfs – filtra pacotes com um endereço de broadcast como origem.
  • logmartians – registra pacotes com endereço de origem impossível.
  • routefilter – filtragem de rota do kernel para anti-spoofing.

É claro que, agora que nosso sistema está protegido por firewall, precisaremos que certas conexões tenham permissão para realizar o que precisamos fazer. Você os define no arquivo de regras em “/etc/shorewall/rules“.

sudo nano /etc/shorewall/rules

Este arquivo parece confuso no início, principalmente porque as colunas se sobrepõem, mas os cabeçalhos são bastante autoexplicativos. Primeiro, você tem a coluna AÇÃO, que descreve o que você deseja realizar.

Em seguida, você tem um cabeçalho SOURCE onde define a zona de origem do pacote. Então, você tem seu DEST, ou destino, que é a zona ou endereço IP do destino. Vamos usar um exemplo.

Suponha que você queira executar um servidor SSH atrás do seu firewall na máquina com o endereço IP 192.168.1.25. Você não apenas terá que abrir uma porta em seu firewall, mas também informará ao firewall que qualquer tráfego proveniente da porta 22 precisa ser roteado para a máquina em >192.168.1.25.

Isso é conhecido como encaminhamento de porta. É um recurso comum na maioria dos firewalls/roteadores. Em “/etc/shorewall/rules“, você faria isso adicionando uma linha como esta:

SSH(DNAT)	net		loc:192.168.1.25

Acima, definimos que todos os pacotes destinados a SSH provenientes da zona de rede para o firewall devem ser roteados (DNAT) para a porta 22 em uma máquina com endereço 192.168.1.25.

Isso é chamado de Tradução de Endereço de Rede ou NAT. O “D ” simplesmente informa ao Shorewall que este é um NAT para um endereço de destino.

Para que isso funcione, você precisa ter o suporte NAT habilitado em seu kernel. Se você precisa de NAT e não o tem, consulte meu tutorial sobre Recompilando um Kernel Debian.

No próximo artigo, exploraremos várias configurações e opções do Shorewall. No entanto, deve haver muitas informações aqui para ajudá-lo a começar por enquanto. Como sempre, consulte as páginas de manual para uma compreensão mais aprofundada.