Configuração da Firewall
Anterior
Próximo

Configuração da Firewall

O kernel (núcleo) do Linux inclui o sub-sistema Netfilter que é utilizado para manipular ou decidir o destino do tráfego de encaminhado para ou de passagem pelo servidor. Todas as modernas soluções de firewall utilizam este sistema para filtragem de pacotes.

Introdução à Firewall

O sistema de filtragem de pacotes do kernel seria de pouca utilidade sem um interface de utilizador para o gerir. Esta é a finalidade das tabelas de ip iptables. Quando um pacote chega ao servidor, será encaminhado para o sub-sistema Netfilter, para aceitação, manipulação ou rejeição baseado nas regras que lhe são fornecidas à área do utilizador através das iptables. Assim, as iptables são tudo o que é necessário para gerir a sua firewall se estiver familiarizado com elas, mas existem muitos interfaces disponíveis para simplificar a tarefa.

Mascaramento de IP

The purpose of IP Masquerading is to allow machines with private, non-routable IP addresses on your network to access the Internet through the machine doing the masquerading. Traffic from your private network destined for the Internet must be manipulated for replies to be routable back to the machine that made the request. To do this, the kernel must modify the source IP address of each packet so that replies will be routed back to it, rather than to the private IP address that made the request, which is impossible over the Internet. Linux uses Connection Tracking (conntrack) to keep track of which connections belong to which machines and reroute each return packet accordingly. Traffic leaving your private network is thus "masqueraded" as having originated from your Ubuntu gateway machine. This process is referred to in Microsoft documentation as Internet Connection Sharing.

Isso pode ser conseguido com uma única regra de iptables, que pode diferir ligeiramente na sua configuração de rede:

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE

O comando anterior assume que o espaço do seu endereço privado é 192.168.0.0/16 e que o seu interface com a internet é o ppp0. A sintaxe explica-se da seguinte forma:

  • -t nat -- a regra deve ser adicionada na tabela de nat

  • -A POSTROUTING -- a regra deve ser adicionada (-A) à cadeia de POSTROUTING

  • -s 192.168.0.0/16 -- a regra aplica-se a tráfego originário do grupo de endereços indicado

  • -o ppp0 -- a regra aplica-se a tráfego definido para ser encaminhado através do dispositivo de rede especificado

  • -j MASQUERADE -- O tráfego coberto por esta regra será "encaminhado - jump" (-j) para o alvo MASCARADO para ser manipulado conforme acima descrito

Cada entrada da tabela de filtragem (a tabela por omissão, e onde a maioria ou mesmo toda a filtragem de pacotes ocorre) tem uma política de ACCEPT por defeito, mas se está a criar uma firewall em adição a um equipamento de gateway, poderá ter alterado esta política para DROP ou REJECT, o que em qualquer dos casos exigirá que o seu tráfego mascarado seja autorizado através do comando FORWARD para que a regra funcione:

sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT

Este comando permitirá o estabelecimento das ligações a partir da sua rede local para a internet e que todo o tráfego relacionado regresse à máquina que o iniciou.

Ferramentas

Existem muitas ferramentas disponíveis que o ajudam a construir uma firewall completa sem ter um conhecimento aprofundado do iptables. Para quem prefere uma interface gráfica, a aplicação Firestarter é bastante popular e fácil de usar, e a fwbuilder é muito poderosa e possui um aspecto bastante semelhante a aplicações comerciais como por exemplo a Checkpoint Firewall-1. Se prefere uma ferramenta de linha de comandos assente em ficheiros de configuração de texto puro, a Shorewall é uma solução muito poderosa que o vai ajudar a configurar uma firewall avançada para qualquer rede. Se a sua rede é relativamente simples, ou se não possui uma rede, a ipkungfu deverá oferecer-lhe uma firewall pronta a funcionar "out-of-the-box" sem necessidade de configuração, e permitirá a criação de uma firewall mais avançada através da edição de ficheiros de configuração simples mas bem documentados. Outra aplicação interessante é a fireflier, desenhada para ser uma aplicação de firewall para o desktop. É constituída por um servidor (fireflier-server) e uma escolha de clientes de interface gráfico (GTK ou QT), comportando-se como as populares aplicações de firewall interactivas para windows.

Registos

Os registos da Firewall são essenciais para o reconhecimento de ataques, compreender os problemas de funcionamento das regras criadas, ou mesmo detectar actividade não habitual na sua rede. Deverá incluir regras de registo na sua firewall para que estes sejam criados, e estas deverão ser colocadas antes de qualquer regra de terminação (uma regra com um alvo que decide o destino do pacote como por exemplo ACCEPT, DROP ou REJECT). Por exemplo:

sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "

Um pedido na porta 80 solicitado a partir da máquina local, gerará um registo no dmesg com este aspecto:

[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00 SYN URGP=0

Este registo aparecerá também no /var/log/messages, /var/log/syslog, e /var/log/kern.log. Este comportamento pode ser modificado editando o /etc/syslog.conf apropriadamente ou instalando e configurando o ulogd e usando-o em vez do LOG. O serviço ulogd é um servidor que escuta ordens de criação de registo originadas no kernel, especificamente de firewalls, e pode criar o registo em qualquer ficheiro, ou mesmo numa base de dados application>PostgreSQL

Anterior
Próximo
Início