Avaliação do Usuário

Estrela ativaEstrela ativaEstrela inativaEstrela inativaEstrela inativa
 

Firewall Linux com IPTABLES

1- Introdução

O kernel (núcleo) do Linux possui um subsistema de firewall nativo, que funciona como um esquema de tabelas de permissões, conhecidas como FILTER, NAT e MANGLE. Cada tabela opera sobre algumas situações ou conjuntos de regras específicas (CHAIN).

Cada uma das tabelas é responsável por algum tipo de tarefa, sobre algumas CHAIN's, conforme descrição a seguir:


-> FILTER: Realiza filtro de pacotes, tanto de entrada como de saída ou encaminhamento. CHAIN's: INPUT (entrada), OUTPUT (saída) e FORWARD (encaminhamento).

-> NAT: Realiza traduções, ou seja, alterações nos endereços dos pacotes, geralmente com a finalidade de mascaramento. CHAIN's: PREROUTING (antes do roteamento), OUTPUT (saída) e POSTROUTING (após roteamento).

-> MANGLE: Realiza filtros e/ou alterações em pacotes em um nível mais complexo do que as anteriores. Esta tabela pode, por exemplo, filtrar pacotes pelo trechos de texto no conteúdo do mesmo ou então alterar a sua prioridade pelo tipo de serviço a que se destina. CHAIN's: PREROUTING e OUTPUT.

Para organizar melhor, além de diminuir a carga de trabalho de uma CHAIN padrão, podemos criar CHAIN's personalizadas, incluir regras, e posteriormente transferir pacotes a partir das CHAIN's padrão. Entretanto não podemos acessar diretamente a estrutura das tabelas de controle de pacotes no kernel. Para isso utilizamos um programa que funciona como uma interface de configuração entre o usuário e as tabelas. Este programa chama-se IPTABLES. Para utilizá-lo basta colocar o comando "iptables" seguido das chaves de configuração, tudo isso na linha de comando do terminal.

Como a estrutura de configuração das tabelas é perdida assim que ocorre a baixa do sistema, é interessante armazenarmos os scripts das regras em um arquivo para que não precisemos digitar tudo novamente toda vez que o sistema for reiniciado, ou quando for preciso baixar apenas o firewall.

2- Sintaxe Básica

# iptables [tabela] [comando] [ação] [alvo]

-> iptables: Comando principal, nome do módulo que aciona o gerenciamento do firewall.

-> tabela: Define sobre qual tabela o comando deve ser aplicado. Para indicarmos a tabela utilizamos a chave "-t". Caso não seja informada a tabela a ser utilizada o IPTABLES assume por default a tabela FILTER.

# iptables -t filter (informamos que será utilizada a tabela FILTER)
# iptables -t nat (informamos que será utilizada a tabela NAT)
# iptables -t mangle (informamos que será utilizada a tabela MANGLE)

-> comando: Define o objetivo principal do comando.

-A (adicionar uma nova entrada no final da lista de regras)
-D (apagar um regra específica)
-L (listar as regras existentes)
-P (alterar a política padrão do sistema)
-F (remover todas as regras sem alterar a política padrão)
-I (insere uma nova regra no início da lista de regras)
-R (substitui uma regra existente)
-N (inserir/criar uma nova CHAIN)
-E (renomeia uma CHAIN criada pelo usuário)
-X (apaga uma CHAIN criada pelo usuário)

-> ação: Especifica sobre quais recursos a regra será aplicada.

-p (indica o protocolo [tcp/icpm/udp/...])
-i (interface de entrada [eth0/eth1/...])
-o (interface de saída [eth0/eth1/...])
-s (endereço IP do host/rede de origem do pacote)
-d (endereço IP do host/rede de destino do pacote)
! (negação do recurso, exceção)
-j (define o ALVO do pacote, ou seja, o que fazer com ele)
--sport (define as portas de origem para protocolos udp e tcp)
--dport (define as portas de destino para protocolos udp e tcp)

-> alvo: Define a atitude a ser tomada quando o pacote se encaixa na regra.

ACCEPT (aceita o pacote)
DROP (descarta o pacote sem emitir mensagem de resposta)
REJECT(rejeita o pacote emitindo mensagem de resposta)
LOG (cria entrada de log em /var/log/messages relativo aos outros alvos)
RETURN (retorna o processamento da CHAIN anterior imediatamente)
QUEUE (atribui um processo a um programa em nível de usuário)
SNAT (altera o endereço de origem do pacote)
DNAT (altera o endereço de destino do pacote)
REDIRECT (redireciona para uma porta específica "--to-port")
TOS (altera a prioridade do pacote baseado no tipo de serviço)

3- O que proteger?

Para a construção do firewall devem ser analisados os seguintes pontos:

-> Quais serviços devem ser protegidos, serviços que devem ter acesso garantido a usuários externos e quais serão bloqueados a todas/determinadas máquinas. É recomendável bloquear o acesso a todas portas menores que 1024 por executarem serviços que rodam com privilégio de root, autorizar somente o acesso às portas que realmente deseja (configuração restritiva nesta faixa de portas);

-> Que tipo de conexões posso deixar passar e quais bloquear. Serviços com autenticação em texto plano e potencialmente inseguros tais como rlogin, telnet, ftp, NFS, DNS, LDAP, SMTP RCP, X-Window são serviços que devem ter acesso garantido somente para máquinas/redes que você confia. Estes serviços podem não ser só usados para tentativa de acesso ao sistema, mas também como forma de atacar outras pessoas aproveitando-se de problemas de configuração;

-> A configuração do firewall ajuda a prevenir isso, mesmo se um serviço #estiver mal configurado e tentando enviar seus pacotes para fora, ele será impedido. Da mesma forma se uma máquina Windows de sua rede for infectada por um trojan não haverá razão para pânico: o firewall poderá estar configurado para bloquear qualquer tentativa de conexão vinda da internet (cracker) para as máquinas de sua rede;

-> Para cópia de arquivos via rede insegura (como através da Internet), é recomendado o uso de serviços que utilizam criptografia tanto para login como para transferência de arquivos, ou a configuração de uma VPN;

-> Que máquinas terão acesso livre e quais serão restritas;

-> Que serviços deverão ter prioridade no processamento;

-> Que máquinas/redes NUNCA deverão ter acesso a certas/todas máquinas;

-> O volume de tráfego que o servidor manipulará. Através disso você pode ter que balancear tráfego entre outras máquinas, configurar proteções contra DoS, syn flood, etc;

-> O que tem permissão de passar de uma rede para outra (em máquinas que atuam como roteadores/gateways de uma rede interna).

4- Observação

Este guia básico destina-se apenas a produzir um conhecimento mínimo na utilização e configuração do firewall IPTABLES. Cada chave acima pode possuir várias outras subchaves, além de permitir a combinação entre chaves.

Para obter uma compreensão ideal dos recursos, e a consequente utilização correta deste sistema é imprescindível consultar um manual/guia de referência completa do IPTABLES.

Uma excelente referência é o guia foca linux, no seguinte endereço:
http://focalinux.cipsga.org.br/guia/avancado/index.html

Seja social. Compartilhe!