📖Firewalls no Linux

Utilização do Iptables (Firewall no Linux)

O iptables é o atual software de implementação de firewalls em sistemas Linux e está disponível por padrão na maioria das distribuições modernas do Linux.

Para implementar a ferramenta iptables é necessário um kernel que possua a infraestrutura netfilter implementada (disponível por ladrão a partir do kernel 2.3.15).

Caso não esteja instalado, em sistemas Debian, pode-se instalar utilizando o apt (apt-get install iptables).

Tabelas (tables) do Iptables

Para utilizar o iptables é necessário especificar, inicialmente, uma das 'tables':

  • FILTER;

  • NAT;

  • MANGLE; ou

  • RAW

Para indicar a table utiliza-se o parâmetro -t (iptables -t <table>), Porém, se esse parâmetro for omitido, subentende-se que se está utilizando a table filter (Firewall como Filtro de Pacotes) que é a principal funcionalidade do Firewall.

Abordaremos nesta disciplina prioritariamente a table 'FILTER' para filtragem de pacotes e a table 'NAT' para fazer mascaramento (NAT 1:N).

Table Filter: Chains padrões

Por padrão o Iptables tem 3 (três) chains padrões:

  • INPUT: Chain com regras para pacotes 'entrando' (input) no Firewall

  • OUPUT: Chain com regras para pacotes 'saindo' (output) do Firewall

  • FORWARD: Chain com regras para pacotes 'cruzando' (forward) o Firewall

Facilitando a utilização do Firewall com o uso de scripts

O firewall não é um serviço (pois insere as regras diretamente no kernel) e, portanto, o Iptables não funciona como os serviços do Linux com 'start' para iniciar e 'stop' para parar ou 'restart' para reiniciar.

Em função disso, optamos por criar um script shell (fw.sh) e executá-lo sempre que a máquina reiniciar ou que as regras do firewall forem alteradas.

Script Shell fw.sh :: Estrutura padrão

A seguir um script sugerido como sendo um 'padrão' com linhas de comentário para facilitar o entendimento (defina o seu nome como fw.sh por exemplo):

Esse script deve ter permissão de execução:

A execução do script da forma como está bloqueará todos os repasses de pacote (FORWARD) e manterá liberadas as saídas e entradas de pacotes de/para a própria máquina do firewall (INPUT e OUTPUT).

Comandos básicos de manipulação de regras Iptables

Listar as regras de uma ou de todas as tables de uma chain

A execução da linha de comandos a seguir exibirá todas as regras e políticas das tables da chain filter.

Exemplo

Opções mais utilizadas para especificar detalhes de filtragem nas regras Iptables:

  • -s : Origem (source) = Pode ser uma rede (Endereço IP com máscara) ou um host (Endereço IP)

  • -d : Destino (destination) = Pode ser uma rede (Endereço IP com máscara) ou um host (Endereço IP)

  • -p : Protocolo (protocol)

  • --dport : Porta de Destino (destination port)

  • --sport : Porta de Origem (source port)

  • -j : Ação (jump to) = Pode ser ACCEPT, DROP ou LOG (ações padrão)

  • ! : Inverte uma regra = (match NOT equal to)

Exemplos:

Atualizado