Linux e Unix
Firewall iptables - parte 01 - Linux
Configurar de forma conveniente um firewall é de extrema importância para a segurança de qualquer sistema operacional moderno. No caso das distribuições Linux, a grande maioria possui um subsistema de filtragem de pacotes e ferramentas para gerenciamento de firewall. Falaremos neste artigo sobre o firewall iptables.
O subsistema de processamento de pacotes de rede do Linux chama-se Netfilter, e o iptables é a ferramental usada para configurá-lo. Site oficial: www.netfilter.org
O iptables opera na camada 3 do modelo OSI; é possível operar na camada 2 também utilizando-se pacotes como o ebtables (Ethernet Bridge Tables - http://ebtables.sourceforge.net/).
O iptables é o firewal padrão incluído na maioria das distribuições Linux - há uma variante chamada nftables que pode vir a substituí-lo no futuro - e ele é na verdade um front end para o netfilter, que pode manipular a pilha de rede do Linux.
O iptables funciona, basicamente, verificando cada pacotes que atravessa as interfaces de rede e comparando-os com um conjunto de regras pré-definidas para descobrir o que fazer com esses pacotes.
O pacote iptables também inclui o ip6tables, o qual é usado para configurar o fitro de pacotes para IPv6.
Algumas aplicações do iptables:
Construir firewalls de Internet baseados em filtragem de pacotes "stateless" e "stateful"
Usar NAT e masquerading para compartilhamento de Internet com uma rede local
Usar NAT para implementar proxies transparentes
Realizar manipulação de pacotes adicional (mangling), como alterar bits no cabeçalho IP
Monitorar o volume de tráfego de rede
Realizar Encaminhamento de Portas (que é um tipo de DNAT)
Balanceamento de carga de rede.
Entre outras aplicações.
Funcionamento do iptables:
O firewall iptables trabalha comparando o tráfego de rede que a máquina recebe com um conjunto de regras pré-especificadas, as quais definem as características que os pacotes devem possuir para corresponderem às regras, e as ações que serão tomadas para esses pacotes.
Podemos criar regras que verifiquem a correspondência de uma pacote com uma regra específica de várias formas, como por exemplo por tipo de protocolo, portas de origem ou destino, endereços IP de origem ou destino, interfaces em uso, tipos de mensagens, entre muitas outras.
Quando ocorre uma correspondência entre um pacote e uma regra, uma ação será tomada, e a essa ação dá-se o nome de target. O target (“objetivo”) pode determinar se um pacote será aceito ou descartado, movido para outra cadeia para processamento, logado, ou ainda outras opções.
A arquitetura do iptables agrupa o processamento dos pacotes de rede em tabelas por função (filtro de pacotes, tradução de endereços de rede e outras formas de configuração de pacotes), cada qual possui cadeias (chains) de regras de processamento. As regras consistem em correspondências (matches) usadas para determinar a quais pacotes cada regra será aplicada, e objetivos (targets), que determinam o que será feito com os pacotes que correspondam às regras.
Tabelas
O iptables organiza suas regras em uma estrutura que contém tabelas e cadeias. As tabelas são um agrupamento de cadeias em um nível mais alto, e determinam grosso modo o escopo das regras que serão criadas. O iptables possui três tabelas ou listas de regras:
filter - Tabela padrão para manipular pacotes de rede, usada para configurar políticas para o tráfego uqe entra, atravessa ou sai do computador.
nat - Usada para alterar pacotes que criam uma nova conexão, e para redirecionar conexões para NAT..
mangle - Usada para tipos específicos de alteração de pacotes, como a modificação de opções do cabeçalho IP de um pacote..
raw - Marca pacotes que não devem ser manipulados pelo sistema de rastreamento de conexões.
Uma tabela contém cadeias, e as cadeias contém regras, como podemos ver na figura a seguir:
As tabelas possuem as cadeias a seguir:
Tabela FIlter: Cadeias INPUT, OUTPUT e FORWARD
Tabela NAT: Cadeias PREROUTING, OUTPUT, POSTROUTING
Tabela Mangle: Cadeias PREROUTING, OUTPUT, POSTROUTING, INPUT e FORWARD
Tabela raw: Cadeias PREROUTING e OUTPUT
Tabela security - Usada para regras de rede MAC (Mandatory Access Control)
Cadeias
As regras são organizadas em grupos denominados cadeias (chains), que por sua vez ficam contidas nas tabelas. Uma cadeia é então um conjunto de regras usadas para verificar a correspondência com um pacote - de forma sequencial. Um pacote é verificado junto às regras na chain, e se não há correspondência, a próxima regra na ordem é verificada. Quando um pacote corresponde a uma regra na cadeia, a ação associada a essa regra é executada e as regras restantes não são verificadas contra esse pacote. Caso nenhuma regra corresponda ao pacote, a regra padrão (policy) será aplicada.
Podemos criar nossas próprias cadeias se for necessário, mas no geral utilizamos as cadeias já existentes e definidas por padrão. São elas:
INPUT - aplica regras aos pacotes de rede que chegam ao servidor.
OUTPUT - aplica regras aos pacotes de rede originados e que partem do servidor.
FORWARD - aplica regras aos pacotes de rede roteados através do servidor (para outro servidor ou outra interface de rede no mesmo servidor)
PREROUTING - Altera pacotes de rede quando eles chegam e antes do roteamento. Usado para DNAT (Destination NAT)
POSTROUTING - Altera pacotes de rede após o roteamento. Usado para SNAT (Source NAT)
As cadeias podem ter zero ou mais regras, e possuem uma política padrão. A política (policy) determina o que acontece com um pacote caso nenhuma das regras da cadeia corresponda a ele, e somente pode ser ACCEPT ou DROP (RETURN para cadeias definidas pelo usuário).
Por meio de módulos que podem ser carregados via regras, o iptables também pode rastrear conexões. Assim, podemos criar regras que definem o que acontece com um pacote baseado em sua relação com pacotes anteriores. Chamamos essa técnica de “rastreamento de estado” ou “rastreamento de conexão”.
Veja nas figuras a seguir a relação entre as cadeias apresentadas e as tabelas filter, nat e mangle:
Fluxo de pacotes de rede e pontos de hook da tabela filter
2. Fluxo de pacotes de rede e pontos de hook da tabela NAT
3. Fluxo de pacotes de rede e pontos de hook da tabela mangle
Regras (Rules)
Uma regra do iptables consiste em um ou mais critérios de correspondência que determinam quais pacotes de rede serão afetados, e uma especificação de objetivo (“target”) que determina como o pacote de rede será afetado. Para que a regra seja aplicada a um pacote todas as opções de correspondência listadas na regra devem ser satisfeitas. Se não houver um critério de correspondência especificado na regra, então todos os pacotes serão considerados como correspondentes.
Há muitas correspondências (“matches”) disponíveis para uso com o iptables. Além das correspondências genéricas, como tipo de protocolo, IP de origem e destino, portas de comunicação, entre outras, também é possível utilizar correspondências (parâmetros) disponibilizados por meio de extensões carregadas dinamicamente, e informadas na regra com o uso da opção -m ou --match.
Já as ações (targets / objetivos) são usadas para especificar a ação que será tomada quando uma regra corresponder a um pacote e também para especificar a regra padrão da cadeia. Há quatro targets disponíveis no iptables, e podemos acrescentar outros por meio de módulos de extensão. Os targets padrão são ACCEPT, DROP, QUEUE e RETURN, descritos à frente no texto.
A estrutura geral de uma regra é a seguinte:
iptables subcomando chain parâmetro_1 valor_1 parâmetro_n valor_n ação
Os subcomandos principais que podem ser usados são os seguintes:
-A anexa a regra no final da cadeia especificada -F apaga todas as regras na cadeia especificada -L lista todas as regras da cadeia -N cria uma nova cadeia com o nome desejado -P configura a regra padrão da cadeia -D apaga uma regra em uma posição na cadeia -X exclui uma cadeia vazia -I insere uma regra em uma posição na cadeia |
Já as ações (targets) possíveis estão listadas na tabela a seguir:
Ações embutidas no iptables: ACCEPT - pacote permitido DROP - Descartar o pacote QUEUE - Enviar o pacote ao userspace (código fora do kernel) RETURN - Descontinuar o processamento do pacote e aplicar a regra padrão a ele. Ações adicionais: REJECT - Descarta o pacote e envia feedback ao remetente. DNAT - reescreve endereço de destino (NAT) SNAT - reescreve endereço de origem (NAT) LOG - coloca no log informações sobre o pacote |
Com relação aos parâmetros, existem dezenas deles para que possamos criar regras dos mais variados tipos. Na tabela a seguir listamos alguns dos parâmetros mais comuns:
Parâmetro | Significado |
-t tabela | Especificar a tabela (filter é a padrão) |
-j ação | Realiza a ação especificada |
-p protocolo | Especifica o protocolo (icmp, tcp, udp, all) |
-s IP | IP de origem do pacote |
-d IP | IP de destino do pacote |
-i interface | Nome da interface de rede de entrada do pacote |
-o interface | Nome da interface de rede de saída do pacote |
--sport portas | Portas de origem |
--dport portas | Portas de destino |
--syn | Identifica nova requisição de conexão |
--icmp-type | tipo de mensagem ICMP |
A seguir aprenderemos a visualizar as regras atuais do firewall configuradas no sistema, a anatomia de uma regra comum e como criar regras simples.
loading...
-
Firewall Iptables Parte 07 - Encaminhamento De Portas (port Forwarding) - Linux
Em nosso sétimo artigo sobre o Firewall Iptables no Linux, vamos aprender a realizar Encaminhamento de Portas (Port Forwarding), o que permitirá o acesso a serviços em servidores da rede interna a partir da rede externa, atravessando nosso gateway...
-
Firewall Iptables Parte 06 - Compartilhamento De Internet Com A Rede Local - Linux
Neste artigo vamos aprender a compartilhar a Internet em uma rede local usando o firewall iptables. O que vamos precisar:Uma máquina Linux com duas interfaces de rede, uma pública que pode ser configurada via DHCP e outra privada, com IP estático....
-
Firewall Iptables - Parte 05 - Trabalhando Com O Target Reject - Linux
Vejamos agora alguns exemplo do uso do target REJECT. Para isso usaremos algumas mensagens ICMP para visualizar a resposta do firewall ao remetente dos pacores que serão bloqueados.O target REJECT só é válido nas cadeias INPUT, OUTPUT e FORWARD,...
-
Firewall Iptables - Parte 04 - Salvando As Regras Criadas - Linux
Salvando as regras do iptables em arquivoApós criarmos as regras do firewall, é possível salvá-las em um arquivo com o comando:# iptables-save > arquivo E podemos recuperá-las com:# iptables-restore < arquivo Tornando as regras do firewall...
-
Firewall Iptables- Parte 03 - Linux
Alguns exemplos de regras do iptables1. Vamos começar configurando as regras-padrão da tabela FILTER. Vamos descartar todos os pacotes que chegam ao servidor por meio da cadeia INPUT e liberar todos os pacotes originados no servidor por meio da cadeia...
Linux e Unix