Firewall – Introdução ao Netfilter Segurança de Rede Firewall – Introdução ao Netfilter (iptables) Prof. Sales Filho <salesfilho@cefetrn.br>
Objetivos Apresentar um firewall de filtro de pacotes NetFilter Iptables Estrutura Modelo de funcionamento Tratamento de filtro stateful Exercício prático Montagem de firewall básico Montagem de firewall intermediário
Introdução Os kernels Linux têm tido filtros de pacotes desde a série 1.1 Ipfw (Migrado do BSD) Linux 2.0 Ipfwadm Linux 2.2 Ipchains Linux 2.4 iptables 1ª Geração 2ª Geração 3ª Geração 4ª Geração
iptables O iptables, assim como a maioria (ou todos) dos filtros de pacotes, baseia-se em ACL´s (Access Control List), que servem para representar a política de segurança desejada As ACL´s do iptables possuem várias peculiaridades, porque vários elementos sofisticados são utilizados para formar uma regra dentro do contexto da política desejada O iptables utiliza os conceitos de Cadeias (chains) Tabelas (Tables) Regras (rules)
iptables Cadeias (Chains) Regras (Rules) Tabelas Podem ser classificadas como estruturas para comportar regras (rules) Regras (Rules) São as regras aplicadas/configuradas nas cadeias Tabelas Selecionam os níveis/tipos de atuação das regras Chain 1 Rule 1 Rule 2 Rule 3 Table 1 Table 2
iptables Cadeias padrão (Chains) PREROUTING INPUT FORWARD OUTPUT Tráfego ingressante na máquina (incluindo tráfego gerado localmente com destino local) INPUT Tráfego que tem como destino a própria máquina FORWARD Tráfego passante pela máquina OUTPUT Tráfego gerado localmente (tanto com destino local como remoto) POSTROUTING Todo tráfego que "sai" da máquina (incluindo tráfego gerado localmente com destino local)
iptables
iptables Criação de cadeias (user-chain) iptables –N <OP> -N Create a new chain -X Delete an EMPTY chain -P Change the Policy for a built-in chain -L Lists the chain rules -F Flushes the rules of a chain -Z Sets the counters to zero on all the rules in a chain iptables –N allow iptables –L allow
iptables Tabelas padrão Raw Filter Nat Mangle onde são feitas algumas alterações em mais baixo nível nos pacotes Filter nesta tabela cabem as regras responsáveis pela filtragem de pacotes Nat mudanças nos cabeçalhos dos pacotes (incluindo NAT e IP Masquerade) Mangle usada para alterações específicas nos pacotes
iptables Tabela filter
iptables Tabela nat Mascaramento (masquerading) SNAT Redirecionamento de portas (port forwarding ou PAT) Redirecionamento de servidores (forwarding) As chains PREROUTING e OUTPUT fazem DNAT. O redirecionamento de porta O redirecionamento de servidor
iptables Tabela nat
iptables Tabela nat Mascaramento 1º Cliente solicita 2º Servidor responde SNAT: alterar o endereço de origem do pacote (Somente a chain POSTROUTING) Mascaramento é um exemplo de SNAT
iptables Criação de cadeias (user-chain) iptables –N <OP> -N Create a new chain -X Delete an EMPTY chain -P Change the Policy for a built-in chain -L Lists the chain rules -F Flushes the rules of a chain -Z Sets the counters to zero on all the rules in a chain iptables –N allow iptables –L allow
iptables Target (Alvo) São os destinos dados ao pacote quando o pacote coincide com a regra Target padrão ACCEPT DROP REJECT LOG Target personalizada Implementado com chains personalizadas
iptables Rules (regras) Implementam, na prática, as ACL´s Opções iptables -t TABLE -A CADEIA REGRAS -j ALVO Opções -j Specify the target (--jump) -i Specify the input interface (--in-interface) -o Specify the output interface (--out-interface) -p Specify the protocol (--proto) -s Specify the source (--source) -d Specify the destination (--destination) ! Specifies an inversion (match addresses NOT equal to)
iptables Exemplos de configuração Bloqueando a entrada para a porta 80 iptables -A INPUT --dport 80 -j DROP Liberando o acesso a internet iptables -t nat -A POSTROUTING –o eth0 -j MASQUERADE Redirecionando a porta 666 para a porta 80 iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp --dport 666 -j REDIRECT --to-port 80
iptables Ordem de aplicação das regras São avaliadas na ordem em que são inseridas, seqüencialmente Após avaliadas todas as regras, sem ocorrência de ‘match’, a política padrão será aplicada
iptables -P INPUT DROP iptables -A INPUT -s 10.0.0.1 -j DROP iptables -A INPUT -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 172.20.0.0/16 -j ACCEPT
iptables -P INPUT DROP iptables -A INPUT -s 10.0.0.1 -j DROP iptables -A INPUT -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 172.20.0.0/16 -j ACCEPT
iptables Stateful filtering (TCP) Estados reconhecidos pelo iptables New ESTABLISHED RELATED CLOSE
iptables Stateful filtering (TCP) Estados reconhecidos pelo iptables State New / ESTABLISHED
iptables Stateful filtering (TCP) Estados reconhecidos pelo iptables ESTABLISHED / CLOSED
iptables Stateful filtering (TCP/UDP) Estados reconhecidos pelo iptables NEW/ RELATED
iptables Stateful filtering (TCP/UDP) Exemplos de configuração iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Bibliografias [Stallings 2008] Stallings, William. Criptografia e segurança de redes, 4. Ed. São Paulo: Pearson Prentice Hall, 2008. [Minasi 2003] Minasi, Mark et al. Dominando o Windows Server 2003 - a bíblia. Pearson, 2003. [ESR] Segurança de Redes e Sistemas http://www.eriberto.pro.br/iptables/