Iptables
Firewalls, um pouco sobre...
Firewalls Realizam a filtragem de pacotes Baseando-se em: endereço/porta de origem; endereço/porta de destino; protocolo; Efetuam ações: Aceitar Rejeitar Descartar Registrar
Firewalls Realizam o mascaramento (Proxy) Geralmente incorporado ao Firewall Mascarar vários IPs privados em um público
Firewalls Na maioria dos casos possui três tipos de fluxos básicos de pacotes de rede, sendo: Direcionados à máquina onde o firewall está instalado INPUT Direcionados da máquina onde o firewall está instalado à um destino qualquer OUTPUT Encaminhados, repassados, pela máquina onde o firewall está instalado à outras máquinas na rede interna FORWARD Cada fluxo possui suas regras próprias
Vantagens do Firewall Iptables
Desvantagens de outros Firewalls Trabalham na camada de aplicação do TCP/IP, gerando Retardo Travamento Além de poderem ser alvos de antivírus e IDS
Firewall Iptables Implementado diretamente no kernel linux-source/include/linux/netfilter_ipv4/ip_tables.h Trabalha na camada de Rede do TCP/IP Mais rápido Mais eficiente no tratamento de pacotes
IPTables
Tabelas IPTables Possui três tabelas FILTER É a tabela padrão (utilizada mesmo se a opção -t não for fornecida). Contém três cadeias de regras: NAT INPUT para pacotes destinado a serviços locais da máquina FORWARD para pacotes sendo roteados OUTPUT para os pacotes gerados localmente Esta tabela é consultada quando encontra-se um pacote cria uma nova conexão, que deve ser enviado para outro destino. Contém três cadeias de regras: MANGLE PREROUTING para alterar pacotes assim que eles chegarem OUTPUT para alterar pacotes gerados localmente antes de serem roteados POSTROUTING para alterar pacotes momentos antes deles partirem para outros hosts Esta tabela é utilizada para alteração especializada dos pacotes. Possui cinco cadeias de regras: PREROUTING para alterar pacotes que acabaram de chegar, antes de serem roteados OUTPUT para alterar pacotes gerados localmente antes de serem roteados INPUT para pacotes que passam no roteamento FORWARD para alterar os pacotes sendo roteados POSTROUTING para alterar pacotes momentos antes deles partirem para outros hosts
Visão geral da tabela Filter Entrada Decisão de Roteamento FORWARD Saída INPUT Serviços Locais OUTPUT
Destinos dos Pacotes Na tabela Filter, pode-se definir regras que determinam se os pacotes serão: ACCEPT Aceitos Permite que os pacotes passem. DROP Descartados Não permite a passagem dos pacotes e não avisa à origem sobre o descarte. REJECT Rejeitados Rejeita os pacotes e avisam à origem sobre a rejeição LOG Logados (Registrados) Armazena informações do pacote em /var/log/syslog (Obs.: em sistemas tipo Debian)
Exemplo em Filter INPUT iptables -I INPUT -s <ip confiável> -j ACCEPT iptables -I INPUT -s <ip suspeito> -j DROP iptables -I INPUT -s <ip suspeito> -j REJECT
Exemplo em Filter OUTPUT iptables -I OUTPUT -p tcp --dport 80 -j DROP iptables -I OUTPUT -p tcp --dport 25 -j REJECT iptables -I OUTPUT -p tcp --dport 22 -j ACCEPT
Manipulando IPTables
Manipulação de regras Manipulando regras dentro de uma cadeia de regras (chain) -A acrescenta nova regra ao fim da lista -I acrescenta nova regra ao início da lista -D pos remove uma regra da posição pos -D regra remove a primeira regra que coincidir -L lista as regras na tela
Manipulação de cadeia de regras Operações para aplicar em uma cadeia de regras (chain) -N Cria uma nova cadeia de regras (chain) -X Deleta uma cadeia de regras (chain) vazia -P Muda a política padrão de uma cadeia de regras (chain) -F Apaga todas as regras de uma cadeia de regras (chain) -Z Zera os pacotes e os bytes de todas as regras da cadeia de regras (chain)
Mais opções -s IP ou Rede de Origem do pacote Ex: iptables -I INPUT -s 10.10.0.0/16 -j ACCEPT -d IP ou Rede de Destino do pacote Ex: iptables -I OUTPUT -d 10.10.0.0/16 -j ACCEPT -p Protocolo do pacote --dport porta destino Ex: iptables -I INPUT -p tcp --dport 80 -j ACCEPT --sport porta de origem Ex: iptables -D OUTPUT -p tcp --dport -i interface de origem do pacote Ex: iptables -I INPUT -i eth0 -j ACCEPT -o interface de destino do pacote Ex: iptables -O OUTPUT -o eth1 -j ACCEPT! exclusão Ex: iptables -O OUTPUT! -s 10.10.0.1 -j ACCEPT
Visão geral da tabela NAT PREROUTING nat POSTROUTING nat Entrada Decisão de Roteamento FORWARD filter Saída INPUT filter Serviços Locais OUTPUT filter
Exemplo de Mascaramento Liberando acesso ao protocolo http na Internet Internet interface eth0 Rede Interna 10.10.0.0/24 # Habilitando o encaminhamento de pacotes echo 1 > /proc/sys/net/ipv4/ip_forward # Fornecendo a regra para encaminhamento iptables -t nat -I POSTROUTING \ -s 10.10.0.0/24 -o eth0 \ -p tcp --dport 80 -j MASQUERADE
Mais informações http://www.netfilter.org http://focalinux.cipsga.org.br/guia/avancado/ch-fwiptables.htm http://www.zago.eti.br/firewall/dicas-iptables.html http://www.eriberto.pro.br/iptables https://help.ubuntu.com/community/iptableshowto