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 ● – Também funciona como NAT ● ● ● Altamente flexível 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 – As regras são processadas na ordem em que são inseridas nos chains -A INPUT -s 123.123.123.1 -j DROP 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 192.168.0.6/24 Host com iptables Acesso a Internet 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