Iptables O IPTables uma ferramenta de edio da tabela de filtragem de pacotes Com ele voc capaz de analisar o cabealho dos pacotes e tomar decises sobre os seus destinos No a nica soluo existente para controle desta filtragem, temos ainda as antigas ipfwadm e ipchains, dentre outros. A filtragem de pacotes est implementada no ncleo do SO No h instalao O iptables um firewall com estado (stateful). Os anteriores eram stateless. Modo de filtragem Stateless: trata cada pacote roteado pelo firewall como um pacote individual. mais simples de implementar e possui melhor desempenho Modo de filtragem Stateful: cria um poderoso sistema de firewall que se "lembra" das conexes entrantes, tratando de forma mais inteligente as atividades da rede. Processamento de pacotes no Linux Ganchos do iptables Regras do IPTables Tabelas, chains e regras O Iptables trabalha com Tabelas, Chains e Regras Existem 3 tabelas possveis de serem utilizadas: mangle: tem o objetivo de prover QoS (raramente usada) filter: a tabela padro, utilizada nos trfegos de dados comuns nat: usada quando h ocorrncia de NAT Chains: Atravs delas podemos especificar quando os pacotes so processados, seja qual for a tabela utilizada PREROUTING POSTROUTING INPUT OUTPUT FORWARD Entendendo as regras As regras bsicas so formadas por: Tabela (-t) Se nenhuma tabela indicada, utiliza-se a filter Opo (-A, -I, -D, -R, -P) adio, insero, remoo, substituio, poltica Chain Informa a que chain a opo se aplica Dados (-s, -d, -i, -o, -m, -p) Normalmente caracterizam a que pacote a regra se aplica Ao (-j) O que fazer com o pacote que se enquadre na regra Entendendo os argumentos Opes -A <chain> Adiciona ao final das regras de uma certa chain -D <chain> <regra> ou -D <chain> <nmero> Remove uma regra de uma chain especificando a regra completa ou a posio da regra naquela chain (a primeira regra a 1 e a numerao segue crescente) -R <chain> <nmero> <nova_regra> Substitui a regra indicada de uma certa chain pela nova regra fornecida -I <chain> <nmero> <nova_regra> Insere uma nova regra na posio indicada da chain -P <chain> <ao> Define uma ao padro para a chain Caso nenhuma regra sirva para um pacote, a ao padro executada
Entendendo os argumentos Aes -j ACCEPT Aceita o pacote e ele segue o fluxo normal -j DROP Descarta o pacote silenciosamente -j REJECT Descarta o pacote e envia uma mensagem ICMP origem informando sobre o descarte -j LOG Registra a passagem do pacote Trata-se da nica ao que se for executada no interrompe o processamento das regras, ou seja, o pacote continua sendo avaliado pelas regras seguintes Ententendo os argumentos Dados -s <endIP> ou -s <nome> ou -s <endIP>/<mscara> Verifica a origem do pacote (source) Ex: -s 192.168.113.42 -s www.faesa.br -s 192.168.113.0/24 -d <endIP> ou -d <nome> ou -d <endIP>/<mscara> Verifica o destino do pacote Ex: -d 192.168.113.42 -d www.faesa.br -d 192.168.113.0/24 -i <interface> Verifica a interface por onde o pacote chegou (input) Ex: -i eth0 -o <interface> Verifica a interface por onde o pacote sair (output) Ex: -o eth1 -p <protocolo> Verifica o protocolo de transporte utilizado (tcp, udp ou icmp) Ex: -p tcp -m <mdulo> Mdulo utilizado pela regra (state, mac etc) Funcionamento bsico Lista de regras que so interpretadas em seqncia para cada pacote recebido/gerado pela mquina Se a regra atender, aplicada e para-se por a (as regras seguintes no so avaliadas)
Ex: iptables A INPUT s 192.168.1.23 j ACCEPT iptables A INPUT s 192.168.1.0/24 j REJECT
Aceita receber pacotes que venham de 192.168.1.23 e recusa pacotes das demais mquinas da rede 192.168.1.0 Dados adicionais Caso o protocolo seja TCP ou UDP, pode-se indicar a porta de origem ou destino -p tcp --sport 80 -p tcp --sport 80:100 -p udp --dport 53 -p udp --dport 53:65 Para se indicar mltiplas portas em uma regra -p tcp -m multiport --sport 80,90,100,110 Para se indicar o endereo MAC -m mac --mac-source 0A:00:AB:3F:00:0E S pode ser usado em PREROUTING, FORWARD e INPUT Para criar uma regra baseada em estados -m state --state RELATED,ESTABLISHED ESTABLISHED: pacote pertencente a conexo j estabelecida RELATED: pacote de uma nova conexo relacionada com uma j existente INVALID: pacote pertencente a conexo inexistente que deve possuir dados ou cabealho com problemas NEW: estabelecer nova conexo ou pertence a conexo desconhecida Os mdulos de kernel ip_conntrack_* devem ser carregados modprobe ip_conntrack_* Exemplos Regras: iptables -A INPUT -s 200.241.13.0/24 -j DROP Descarta pacotes destinados a esta mquina que venham da rede 200.241.13.0/24 iptables -A FORWARD -d 18.0.0.0/8 -j REJECT Descarta pacotes que sejam encaminhados por esta mquina e cujo destino seja a rede 18.0.0.0/8 e envia ICMP para origem do pacote informando sobre descarte iptables -A OUTPUT -p icmp -j ACCEPT Deixa passar todos os pacotes ICMP gerados pela mquina iptables -A FORWARD -p tcp --dport 80:100 -j ACCEPT Deixa passar todos os pacotes encaminhados por esta mquina que sejam destinados s portas TCP de 80 a 100 iptables -A INPUT -p udp --sport 53 -j DROP Descarta todos os pacotes destinados a esta mquina que tenham vindo de um servidor DNS (porta 53 UDP) Exemplos Regras: iptables -A INPUT -i eth0 -j DROP Descarta todos os pacotes destinados a esta mquina que cheguem pela eth0 iptables A INPUT -i !eth0 -j DROP Descarta todos os pacotes destinados a esta mquina exceto os que cheguem pela eth0 iptables -A FORWARD -i eth0 -s 192.168.113.0/24 -p tcp -m multiport --dports 22,53,80 -j ACCEPT Aceita todos os pacotes que sejam encaminhados por esta mquina e que tenham vindo da rede 192.168.113.0/24, a partir da interface eth0 e que sejam destinados a servidores SSH, DNS ou Web iptables -P FORWARD DROP Caso um pacote que ser encaminhado por esta mquina no se encaixe em nenhuma regra, ser descartado Exemplos Regras: iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT Aceita pacotes que sero encaminhados, que chegaram pela eth0 e que esto relacionados com conexes pr-estabelecidas iptables -A OUTPUT -p tcp -d www.google.com -j DROP Descarta pacotes TCP que esta mquina gere com destino a www.google.com iptables -L -n Lista todas as regras de todas as chains sem resolver nomes iptables -L INPUT -n -v Lista todas as regras da chain INPUT sem resolver nomes com estatsticas de uso das regras iptables -F Remove todas as regras de todas as chains iptables -F OUTPUT Remove todas as regras da chain OUTPUT Para salvar/recuperar as regras Para salvar as regras iptables-save > arquivo_com_regras Para recuperar as regras iptables-restore < arquivo_com_regras Para ativar as regras a cada boot: Editar o arquivo /etc/network/interfaces: auto eth0 iface eth0 inet dhcp pre-up iptables-restore < /etc/iptables.up.rules