Todos nós temos a noção que é importante dispormos de mecanismos de segurança nos nossos PC’s. Para quem é utilizador do Linux certamente que já ouviu falar do iptables (firewall)…..mas provavelmente nunca o usou devido à sua complexidade. O iptables é uma ferramenta bastante poderosa por si só, que vem por omissão nas distribuições Linux.
No sentido de desmistificar o iptables, vamos produzir alguns artigos, com alguns exemplos práticos.
O IPtables é um mecanismo de segurança que permite controlar tráfego IP ao nível dos pacotes (layer 3). De uma forma geral, com o iptables podemos definir uma sequência de regras que permitem ou bloqueiam determinados serviços/aplicações. Os serviços/aplicações usam normalmente o protocolo UDP ou TCP.
Protocolo TCP, UDP e ICMP
TCP
O TCP é o protocolo mais usado isto porque fornece garantia na entrega de todos os pacotes entre um PC emissor e um PC receptor. No estabelecimento de ligação entre emissor e receptor existe um “pré-acordo” denominado de Three Way Handshake (SYN, SYN-ACK, ACK).
UDP
O UDP é um protocolo mais simples e por si só não fornece garantia na entrega dos pacotes. No entanto, esse processo de garantia de dados pode ser simplesmente realizado pela aplicação em si (que usa o protocolo UDP) e não pelo protocolo. Basicamente, usando UDP, uma máquina emissor envia uma determinada informação e a máquina receptor recebe essa informação, não existindo qualquer confirmação dos pacotes recebidos. Se um pacote se perder não existe normalmente solicitação de reenvio, simplesmente não existe.
Além do TCP e UDP, o IPTables pode também controlar comunicações que usem o protocolo ICMP, utilizado normalmente para testar a conectividade.
NetFilter vs IPTables
Para que o IPTables funcione correctamente, é necessário que que se activem mecanismos no próprio kernel, que permitem avaliar, controlar e manipular tráfego ao nível dos pacotes. O IPtables é a aplicação usada para criar e gerir as regras que iremos usar para filtrar os pacotes com base nos mais diversos critérios.
Funcionamento do NetFilter
Como referido, os pacotes são filtrados com base num conjunto sequencial de regras (cadeia), onde cada regra contem um conjunto de condições. A sequência com que a cadeia de regras é criadas é muito importante, uma vez que são processadas pela ordem com que foram criadas até que uma delas se aplique. Quando uma regra é aplicada, esta indica se uma determinada comunicação é permitida, negada ou alterada de acordo com uma acção previamente definida). Por exemplo, podemos bloquear todo o tráfego vindo de uma determinada rede.
Quando os pacotes não encaixam em nenhum dos critérios das regras definidas, é aplicada a politica implícita dessa cadeia de regras, podendo o tráfego ser aceite ou rejeitado.
As cadeias são agrupadas em 3 tabelas pré-definidas:
- Filter – responsável pela filtragem de pacotes
- Nat – permite a tradução de endereços e portos (mecanismo de NAT)
- Mangle – permite a alteração especial nos pacotes
- Raw – para configurar excepções relativamente ao registo de sessões
No próximo tutorial vamos apresentar as chains (cadeias predefinidas) disponíveis na tabela filter e Nat e exemplos de aplicação. Esperamos que tenham gostado deste primeiro artigo sobre este tema e como sempre esperamos o vosso feedback.