Projeto de Ensino Grupo de Estudos em Tecnologia de Redes e Processamento Paralelo iptables Prof. Luiz Antonio Unioeste
Introdução Firewall O Firewall é um programa que tem como objetivo proteger a máquina contra acessos indesejados, tráfego indesejado e proteger serviços que estejam rodando na máquina. Tipos de Firewall Nível de Aplicação Nível de Pacotes 2
iptables Aspectos gerais É um firewall em nível de pacotes Baseado em regras Altamente flexível Também funciona como NAT SNAT DNAT Instalação (Debian) apt-get install iptables 3
iptables Pacote iptables - Sistema de controle para ipv4 ip6tables - Sistema de controle para ipv6 iptables-save - Salva as regras atuais iptables-restore - Restaura regras salvas pelo iptables-save Log Padrão é /var/log/kern.log. 4
iptables O que são regras? São como comandos passados ao iptables para que ele realize uma determinada ação Ex.: iptables -A INPUT -s 123.123.123.1 -j DROP As regras são processadas na ordem em que são inseridas nos chains O que são chains? São locais onde as regras são armazenadas Ex.: INPUT, OUTPUT e FORWARD 5
iptables O que são tabelas? São os locais usados para armazenar os chains 3 tabelas: filter nat mangle Tabela tabela1 Chain CHAIN1 Regra1:... Regra2:... RegraN:... Chain CHAIN2 Regra1:... Regra2:... RegraN:... Chain CHAINn Regra1:... Regra2:... RegraN:... 6
Tabela filter Tabela padrão 3 chains: INPUT - para dados que chegam a máquina OUTPUT - para dados que saem da máquina FORWARD - para dados que são redirecionados para outra interface de rede ou outra máquina 7
Tabela nat Usada para dados que geram outra conexão masquerading source nat destination nat proxy transparente 3 chains PREROUTING OUTPUT POSTROUTING 8
Tabela mangle Utilizada para alterações especiais de pacotes Ex.: modificar o tipo de serviço Chains INPUT FORWARD PREROUTING POSTROUTING OUTPUT 9
IP masquerading Conecta sua rede interna a Internet de forma rápida e simples 192.168.0.5/24 Host com iptables Acesso a Internet 192.168.0.6/24 eth0: 192.168.0.1/24 eth1: 200.201.81.130/24 192.168.0.11/24 LAN WAN 10
IP masquerading No host com iptables ( Servidor ) iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE echo "1" >/proc/sys/net/ipv4/ip_forward Nos demais hosts Configurar gateway com ip do servidor 11
Manipulação de Chains Opções para manipular os chains são SEMPRE em maiúsculas Adicionar regras - A Exemplo: bloquear acesso ao localhost iptables -t filter -A INPUT -d 127.0.0.1 -j DROP incluir uma regra no chain INPUT (-A INPUT) que bloqueia (-j DROP) qualquer acesso indo ao endereço 127.0.0.1 (-d 127.0.0.1): 12
Manipulação de Chains Listar regras L iptables [-t tabela] -L [chain] [opções] Exemplo: iptables -t filter -L INPUT iptables -L INPUT -n --line-numbers 13
Manipulação de Chains Apagar uma regra D Por número iptables -t filter -D INPUT 1 Usando a mesma sintaxe da criação iptables -t filter -D INPUT -d 127.0.0.1 -j DROP Inserir uma regra numa posição I iptables -t filter -I INPUT 1 -s 192.168.1.20 -d 127.0.0.1 -j ACCEPT 14
Manipulação de Chains Substituir uma regra R Apagar e incluir a nova Ou, substituir com -R iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP 2 é a indicação da linha da regra que sera substituída 15
Manipulação de Chains Criar um novo chain N iptables [-t tabela] [-N novochain] Exemplo: #criacao do chain iptables -t filter -N INTERNET #regra para o novo chain iptables -t filter -A INTERNET -d 192.168.0.20 -j DROP #jump do chain INPUT para o INTERNET iptables -t filter -A FORWARD -j INTERNET 16
Manipulação de Chains Execução das regras anteriores Ex.: pacote com endereço de origem 200.200.200.200 Tabela filter Chain INPUT Regra1:... Regra2:... Regra3: -j INTERNET Chain INTERNET Regra1: Regra1: -s 200.200.200.200 -j DROP 17
Manipulação de Chains Renomear um chain criado pelo usuário E iptables -t filter -E chain-antigo novochain Limpar as regras de um chain F iptables [-t tabela] [-F chain] Obs.: Caso um chain não seja especificado, todos os chains da tabela serão limpos Apagar um chain criado pelo usuário X iptables [-t tabela] [-X chain] 18
Manipulação de Chains Mudar policiamento padrão de um chain P O policiamento padrão é ACCEPT Policiamento permissivo ou restritivo Sintaxe: iptables [-t tabela] [-P chain] [ACCEPT/DROP] Exemplo: iptables -t filter -P INPUT DROP 19
Opções do iptables Endereços de origem e destino -s (source) e -d (destination) Aceitam: IP completo, rede/mascara, hostname Exemplos: # Bloqueia o tráfego vindo da rede 200.200.200.*: iptables -A INPUT -s 200.200.200.0/24 -j DROP # Bloqueia conexões com o destino 10.1.2.3: iptables -A OUTPUT -d 10.1.2.3 -j DROP # Bloqueia o tráfego da máquina # www.siteproibido.com a maquina 200.201.8.20 iptables -A INPUT -s www.siteproibido.com -d 200.201.8.20 -j DROP 20
Opções do iptables Interfaces de origem e destino -i (in-interface) e -o (out-interface) Exemplos: #bloquear dados de 200.123.123.10 vindos da interface ppp0 iptables -A INPUT -s 200.123.123.10 -i ppp0 -j DROP ou iptables -A INPUT -s 200.123.123.10 -i ppp+ -j DROP #bloquear trafego local para a Internet iptables -A OUTPUT -o ppp+ -j DROP #bloquear internet para eth1 iptables -A FORWARD -i ppp0 -o eth1 -j DROP 21
Opções do iptables Especificar um protocolo -p (protocol) --sport (source-port) e --dport (destination-port) Intervalos (0:1023) ou diversas (21,23,25,6667) Exemplos: #rejeitar todos os pacotes UDP vindos de 200.200.200.200: iptables -A INPUT -s 200.200.200.200 -p udp -j DROP # Bloqueia qualquer pacote indo para 200.200.200.200 na # faixa de portas 0 a 1023 iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport 0:1023 -j DROP iptables -A INPUT -p tcp --syn --dport 23 -i ppp+ -j DROP 22
Opções do iptables Registrar pacotes no syslog # Para registrar o bloqueio de pacotes vindos de # 127.0.0.1 iptables -A INPUT -s 127.0.0.1 -j LOG Salvar e restaurando as regras iptables-save >/dir/iptables-regras iptables-restore </dir/iptables-regras 23
Tabela nat SNAT Source nat DNAT Destination nat 24
SNAT Modifica o endereço de origem das máquinas clientes antes dos pacotes serem enviados Toda operação de SNAT é feita no chain POSTROUTING Exemplo: # Modifica o endereço IP dos pacotes vindos da máquina 192.168.1.2 # da rede interna que tem como destino a interface eth1 para # 200.200.217.40 (que é # o nosso endereço IP da interface ligada # a Internet). iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.201.81.110 25
DNAT Modifica o endereço de destino das máquinas clientes é muito usado para fazer redirecionamento de pacotes, proxyes transparentes e balanceamento de carga Toda operação de DNAT é feita no chain PREROUTING 26
DNAT Exemplo: # Modifica o endereço IP destino dos pacotes de # 200.201.81.110 vindo da interface eth1 para # 192.168.1.2. iptables -t nat -A PREROUTING -s 200.201.81.110 -i eth1 -j DNAT --to 192.168.1.2 Pode-se usar faixas de destino iptables -t nat -A PREROUTING -i eth1 -s 200.201.81.110 -j DNAT --to 192.168.0.2-192.168.0.2 27
DNAT Redirecionamento de portas REDIRECT ideal para proxy transparente iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 28