Iptables Adailton Saraiva Sérgio Nery Simões
Sumário Histórico Definições Tabelas Chains Opções do Iptables Tabela NAT Outros Módulos
Histórico
Histórico Ipfwadm Ferramenta padrão para o Kernel anterior à versão 2.2.0. Ipchains Atualização feita para o kernel 2.2 do ipfwadm. A idéia do ipchains foi ter o poder do ipfwadm, mas com uma simplicidade e facilidade no que diz respeito à criação de regras.
Histórico Iptables - A nova geração de ferramentas de firewall para o Kernel 2.4 do Linux. Além de possuir as facilidade do ipchains, e implementar a facilidade do NAT e filtragem de pacotes mais flexíveis que o IPchains.
Conceitos
Endereço IP O IP (Internet Protocol) é um protocolo da camada de rede (arquitetura TCP/IP) que tem a função de atribuir um número para cada conexão de rede. Esse número é chamado de endereço IP. Esse número é composto por 4 conjuntos de 8 bits separados por pontos. Ex.: 1100000.10101000.00000000.00000001 (binário) 192.168.0.1 (decimal)
Porta É um número que identifica um processo na camada de transporte permitindo a comunicação, interligação, e troca de dados entre dois ou mais processos distintos. Principais portas: 20 e 21 (FTP), 23 (TELNET), 25 (SMTP), 53 (DNS), 80 (HTTP), 110 (POP3).
Protocolo Protocolo é um padrão que especifica o formato de dados e as regras a serem seguidas no processo de comunicação.
Posição de um firewall na rede
Definições
Definições Tabelas Locais usados para armazenar os chains e conjunto de regras com uma determinada característica em comum Chain Locais onde as regras do firewall definidas pelo usuário são armazenadas para operação do firewall Regras Comandos que são passados ao firewall para que seja tomada alguma ação
Tabelas
Tabelas Filter Usada para aceitar ou rejeitar um pacote Nat Usada para tradução de endereço IP Mangle Usada para manipular alguns campos do cabeçalho IP, como por exemplo o campo TOS e o campo TTL
Chains
Chains Cada tabela tem suas próprias chains. Filter INPUT, OUTPUT, FORWARD Nat PREROUTING, POSTROUTING, OUTPUT Mangle INPUT, OUTPUT, FORWARD, PREROUTING, POSTOURTING
Chains INPUT Utilizada quando o destino final é a própria máquina filtro OUTPUT (filter) Trata pacotes gerados na máquina filtro e que estão saindo para a rede
Chains FORWARD Utilizada para tratar pacotes que atravessam o filtro, oriundo de uma máquina em uma rede e direcionado a uma máquina de outra rede POSTROUTING Consultado quando os pacotes precisam ser modificados após roteamento. É ideal pra realização de SNAT (Source NAT) e IP Masquerading.
Chains PREROUTING Consultado quando os pacotes precisam ser modificados logo que chegam. É o chain ideal para a realização de DNAT (Destination NAT) e redicrecionamento de portas. OUTPUT (nat) Utilizada para analisar pacotes que são gerados na própria máquina e que irão sofrer NAT. O OUTPUT pode fazer ações de NAT com o endereço de destino do pacote. Também é DNAT
Gráfico geral da passagem de pacotes E PREROUTING MANGL, NAT (DNAT) ROTEAMENTO FORWARD MANGLE, FILTER POSTROUTING MANGLE, NAT (SNAT) S INPUT MANGLE, FILTER OUTPUT MANGLE, FILTER PROCESSAMENTO LOCAL
Manipulando chains
Listando regras iptables [-t tabela] -L [chain] [opções] Onde: tabela Uma das tabelas do iptables. Se não for especificada, a tabela filter será usada como padrão chain Uma das chains disponíveis na tabela acima ou criada pelo usuário. Caso a chain não seja especificado, todas serão exibidas.
Listando regras (cont.) Opções -v - Exibe mais detalhes sobre as regras criadas nas chains. -n - Exibe endereços de máquinas/portas como numeros ao invés de tentar a resolução DNS. --line-numbers - Exibe o número da posição da regra na primeira coluna na listagem. Ex.: iptables t filter L INPUT linenumbers
Listando regras (cont.) Chain - nome da chain Policy - política padrão da chain pkts - quantidade de pacotes que atravessaram a regra bytes - quantidade de bytes que atravessaram a regra target - alvo da regra, destino do pacote prot - protocolo especificado pela regra opt - opções extras passadas a regra in - interface de entrada out - interface de saída source - endereço de origem destination - endereço de destino
Adicionando uma regra Adiciona uma regra no final da chain iptables -t [tabela] -A chain regra -j alvo Ex.: iptables t filter A INPUT d 127.0.0.1 p icmp j DROP
Inserindo regras Necessidade que uma regra seja conferida antes de uma outra Ex.: iptables t filter I INPUT 1 s 10.0.0.10 j ACCEPT
Apagando regras Para apagar uma regra, temos duas opções: Especifidando o número da regra iptables t filter -D INPUT 1 Usando a mesma sintaxe para criar a regra, mas trocando -A por -D iptables t filter -D INPUT -s 10.0.0.10 -j DROP
Criando uma chain Facilita a organização em firewalls com grande número de regras. Para criar uma chain internet iptables t filter N internet Todo tráfego vindo da internet é tratado na chain internet iptables t filter A INPUT i ppp0 j internet iptables t filter A internet p tcp dport 23 j DROP
Apagando uma chain criada pelo usuário iptables [-t tabela] [-X chain] Onde: tabela - nome da tabela que contém a chain que desejamos excluir chain - nome da chain que desejamos apagar. Caso não seja especificada, todas as chains criadas pelo usuário serão apagadas. Ex.: iptables t filter X internet
Limpando as regras iptables [-t tabela] [-F chain] Onde: tabela - tabela que contém o chain que desejamos apagar chain - chain que desejamos limpar. Caso não seja especificada, todas as chains da tabela serão limpas. Ex.: iptables t filter F INPUT
Definindo policiamento padrão Comportamento padrão da chain caso o pacote não confira com nenhuma regra. iptables [-t tabela] [-P chain] [ACCEPT/DROP] Onde: tabela - tabela que contém a chain que desejamos modificar o policiamento padrão chain - chain que terá o policiamento modificado. A chain deve ser especificada
Definindo policiamento padrão (cont.) ACCEPT/DROP - ACCEPT: aceita os pacotes caso nenhuma regra confira. DROP: rejeita os pacotes caso nenhuma regra confira. Ex.: iptables t filter P INPUT DROP
Opções do Iptables
Endereços Endereço de origem: -s Endereço de destino: -d Os endereços podem ser um IP, um nome ou um IP/Mascara Ex.: iptables t filter A FORWARD s 10.0.0.0/8 d 172.16.0.6 j DROP iptables t filter A OUTPUT d www.orkut.com j DROP
Interfaces Interface de entrada: -i Interface de saída: -o A interfaces não podem ser especificadas em qualquer chain. Ex.: iptables t filter A INPUT i eth0 j ACCEPT iptables t filter A OUTPUT o eth0 j DROP
Protocolos Especificando protocolo: -p <proto> Especificando porta de origem: --sport Especificando porta de destino: --dport Para especificar a porta, deve-se especificar o protocolo. Ex.: iptables t filter A INPUT i eth0 s 192.168.0.0/24 p tcp sport 23 j DROP
Alvo da regra Destino que o pacote terá quando conferir com a regra. Os principais alvos são: ACCEPT - O pacote é aceito e encaminhado e o processamento das regras é concluído. DROP - O pacote é rejeitado e o processamento das regras é concluído. REJECT - O mesmo que DROP, porém uma mensagem icmp é enviada para máquina de origem. LOG - Envia uma mensagem ao syslog caso a regra confira e o processamento das regras continua.
Tabela NAT
Tabela NAT Controla a tradução de endereços IPs
Tabela NAT Obs.: Para que o iptables faça nat, é necessário ativar o roteamento de pacotes com o seguinte comando: echo 1 > /proc/sys/net/ipv4/ip_forward
SNAT Modificação do endereço de origem iptables t nat A POSTROUTING s 192.168.0.0/24 o eth1 j SNAT to 200.39.124.1 Modificação do endereço de origem para uma faixa de endereços iptables t nat A POSTROUTING s 192.168.0.0/24 o eth1 j SNAT to 200.39.124.1 200.39.124.10
IP Masquerading Tipo de SNAT usado para Ips dinâmicos. Utiliza o endereço da interface de saída iptables t nat A POSTROUTING s 10.0.0.0/24 o eth0 j MASQUERADE
DNAT Modifica o endereço e/ou a porta de destino dos pacotes antes de serem enviados É feito na chain PREROUTING ou OUTPUT Ex.: iptables t nat A PREROUTING d 200.39.124.1 p tcp dport 22 j DNAT to 192.168.0.2:2222
REDIRECT Redireciona conexões de uma porta para outra na mesma máquina É feito na chain PREROUTING Ex.: iptables t nat A PREROUTING i eth1 p tcp dport 80 j REDIRECT to port 3128
Outros Módulos
Outros Módulos Os módulos do iptables são especificados com a opção m módulo ou match modulo e permitem expandir a funcionalidade do firewall através de novas conferências e recursos de filtragem adicionais, como limitar a conferência de regras do firewall.
States (estados) Permite especificar regras de acordo com o estado de conexão do pacote. Opção --state: NEW confere com pacotes que criam novas conexões ESTABLISHED confere com conexões já estabelecidas RELATED confere com pacotes relacionados indiretamente a uma conexão, como mensagens de erro icmp.
States (continuação...) INVALID confere com pacotes que não puderam ser identificados por algum motivo. Como resposta de conexões desconhecidas. Ex.: iptables t filter A INPUT m state state INVALID i ppp0 j DROP
limit Especifica o número de vezes que uma regra conferirá quando todas as outras condições forem satisfeitas --limit num/tempo - Permite espeficicar a taxa de conferência do limit. O parâmetro num escifica um número e tempo pode ser: s - Segundo m - Minuto h - Hora d - Dia
limit A regra abaixo limita a entrada de pings em 10/s (dez por segundo). iptables t filter A INPUT p icmp m limit limit 10/s j ACCEPT
multiport Permite que seja especificado multiplas portas para um alvo. Podem ser especificadas até 15 portas numa regra A comparação é feita usando condições or Ex.: iptables A INPUT p tcp m multiport dport 21,23,25,80,110 j DROP
mac Permite conferir com o endereço Ethernet dos pacotes de origem. Usado nas chains PREROUTING (tabela nat) ou INPUT (tabela filter) Ex.: iptables t filter A INPUT m mac mac source 00:80:AD:B2:60:0B j DROP
string Permite a inspeção de conteúdo da área de dados de um pacote. Chega a ser 3 a 10 vezes mais rápido do que um proxy Não vem compilado por padrão Ex.: iptables t filter A FORWARD m string string X Kazaa j DROP
length Identifica um pacote baseado no tamanho O tamanho é baseado num intervalo Ex.: iptables t filter A INPUT p icmp m length length :84 m limit limit 10/s j ACCEPT
Outros Módulos Outros módulos podem ser encontrados no endereço: http://www.netfilter.org/documentatio n/howto/netfilter-extensions- HOWTO.html Informações sobre o Iptables: http://www.netfilter.org
Bibliografia http://www.eriberto.pro.br/iptables/ Guia Foca GNU/Linux: http://focalinux.cipsga.org.br/guia/ava ncado/ch-fw-iptables.htm