Criptografia e Segurança das Comunicações Firewalls Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 1/35 Introdução [Def]: Firewall é um dispositivo (SW, HW, ou ambos) que limita acessos por rede (Internet), a uma outra rede de um ou mais computadores (a proteger). • Não protege contra copia por outros meios (diskette,…), nem contra “tunneling” de aplicações avançadas!!! • Etapas a seguir na configuração de uma “firewall” 1. Determinar quais os servidores dentro da rede interna que podem ser acedidos do exterior e quais os serviços (ssh, WWW, Email ,…) a disponibilizar ao exterior. 2. Configurar a “firewall” de forma o mais restrita possível. Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 2/35 História (1) Curiosidade, não faz parte da avaliação • Linux disponibiliza subsistema de gestão de uma firewall, o netfilter (http://www.netfilter.org). A administração é feita por comandos ao servidor firewall – – – – ipfw adaptado do BSD (1994, Kernel 1.1) ipfwadm (Kernel 2.0.x; RH 5.x) ipchains (1998, Kernel 2.2.x; RH 6.x,7.0) iptables (1999, a partir do Kernel 2.4.x; RH 7.1-9.0) versão mais recente: iptables-1.3.7, dezembro 2006 O iptables está incorporado no núcleo do Linux (“kernel”), ao contrário do ipchains. • Windows XP instala automaticamente uma firewall no SP2 (nota: talvez a melhor contribuição da Microsoft para a segurança). Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 3/35 História (2) Curiosidade, não faz parte da avaliação • Neste módulo descreve-se o iptables – Equipamento: PC de recursos limitados • CPU: 486 ou posterior • RAM: 16MB • placas Internet: 2 (uma para a rede exterior, outro para a rede interior-LAN) – Filtragem pode ser exercida em: • “flags” determinadas do TCP (anteriormente, apenas no SYN) • endereços IP1 ou MAC2 (anteriormente, apenas IP) • em simultâneo a vários portos. 1-32 2-48 bits (IPv4) ou 128 bis (IPv6) bits Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 4/35 História (3) Curiosidade, não faz parte da avaliação • O daemon iptables é manipulado pelo administrador (“root”) através do comando /sbin/service iptables opcao – start (arranque) – stop (paragem) – restart (reinicio) • Para que a firewall seja lançada automaticamente no “boot-up” do sistema operativo Linux, executar /sbin/chkconfig iptables on • Configuração no arranque, no Linux-RH, estabelecida no ficheiro /etc/sysconfig/iptables (se existir). Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 5/35 Arquitectura (1) Servidores DMZ-zona desmilitarizada Internet Firewall exterior Firewall interior Estação de trabalho Impressora Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 6/35 Arquitectura (2) • Os pacotes IP passam, na firewall, por uma estrutura de 5 cadeias (“chains”), denominada “kernelspace structure”. Internet Para conversão de endereços (NAT) FIREWALL Pré-encaminhamento (PREROUTING) Re-encaminhamento (FORWARD) Entrada (INPUT) Pós-encaminhamento (POSTROUTING) Saída (OUTPUT) Processos da rede local Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 7/35 Interligação rede local-Internet (1) • A máquina que faz a interface entre a rede local (LAN) e a Internet possui duas placas de rede, de nomes eth0 (tipicamente na Internet) e eth1 (tipicamente na rede local). • A configuração das placas é feita pelo comando /sbin/ifconfig placa • Para redes locais privadas, o RFC1918 define 256 classes C contíguas 192.168.0.0 – 192.168.255.255. Nota: o endereço privado da firewall constitui o endereço “gateway” da rede local. Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 8/35 Interligação rede local-Internet (2) >ifconfig eth0 Endereço IP eth0 Link encap:Ethernet HWaddr 00:4F:4E:06:CE:0E Protocolo inet addr:193.136.143.74 Bcast:193.136.143.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Activação RX packets:41503800 errors:1 dropped:0 overruns:0 frame:0 Dimensão máxima TX packets:45717229 errors:0 dropped:0 overruns:4 carrier:0 trama IP Estatísticas collisions:0 txqueuelen:1000 RX bytes:354382963 (337.9 MiB) TX bytes:748467788 (713.7 MiB) Interrupt:9 Base address:0xd800 >ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:4F:4E:03:30:C5 inet addr:192.168.2.254 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:46850565 errors:1 dropped:0 overruns:0 frame:0 TX packets:39746212 errors:0 dropped:0 overruns:3 carrier:0 collisions:0 txqueuelen:1000 RX bytes:889743091 (848.5 MiB) TX bytes:264259878 (252.0 MiB) Interrupt:5 Base address:0xd400 Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 9/35 Interligação rede local-Internet (3) • A rede local é interligada à Internet por dois modos: A. Rede local pública A rede local faz parte da Internet, com endereços válidos. As tramas IP podem ser trocadas entre os computadores da rede local e da Internet sem tratamento. B. Rede local privada (a mais usada) Os computadores da rede local possuem endereços especiais. A firwall reescreve os cabeçalhos que por ela passam. Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 10/35 Níveis de filtragem (1) A filtragem de pacotes pode ser exercida a 3 níveis: A. Rede (ou “bridge”): decisão baseada nos endereços fonte/destino e portos • • Combate roubo de endereços IP de fora. Cavalo de tróia, que abre porto não autorizado no “firewall”, não consegue comunicar com o seu controlador. B. Filtragem dinâmica de Rede: alterações bruscas de tráfego levam ao corte do acesso, até retornar a valores aceitáveis. C. Aplicação (ou NAT-“Network Address Translation”): todos os endereços de dentro são convertidos para o endereço da firewall, tornado a rede interna invisível ao exterior. Possibilita igualmente transladação de portos. Nota: o IPv6 torna obrigatório o IPSEC em todos os nós, eliminando a necessidade do NAT. Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 11/35 Níveis de filtragem (2) • A filtragem é guiada por tabelas1 com regras ordenadas. – Cada regra é formada por duas partes: emparelhamento e alvo. – Se o pacote não emparelhar com uma regra, é submetido à regra seguinte. Se não emparelhar na segunda regra, a regra seguinte é indicada pelo alvo: • • • • • ACCEPT: deixa passar DROP: não passa REJECT: não passa, com mensagem de erro DNAT (SNAT): reescreve endereço de destino (fonte) MASQUERADE: reescreve endereço fonte (por omissão, a interface), usado frequentemente para alterar os portos fonte • RETURN: continua na regra seguinte 1 mais precisamente, uma fila (“queue”) Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 12/35 Níveis de filtragem (3) • Existem 3 tipos de tabelas para manipular pacotes, seleccionadas pela opção –table ttt – filter (omissão), com regras para • INPUT (filtragem de pacotes entrados na “firewall”), • FORWARD (filtragem de pacotes redireccionados para servidores protegidos pela “firewall”), • OUTPUT (filtragem de pacotes gerados localmente, para fora) – nat (para criar novas conexões), com regras para • PREROUTING (alterar pacotes à chegada), • OUTPUT (pacotes gerados localmente antes de direccionados), • POSTROUTING (pacotes alterados antes do envio para a Internet) – mangle (para alterações especializadas) Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 13/35 Níveis de filtragem (4) Internet Tabela mange PREROUTING Tabela nat PREROUTING Encaminhamento Sim Tabela nat POSTROUTING Tabela mangle POSTROUTING Prof RG Crespo Tabela mange OUTPUT Não Tabela mange INPUT Tabela mange FORWARD Tabela filter INPUT Tabela filter FORWARD Processamento local Tabela filter OUTPUT Tabela nat OUTPUT Para Firewall? Resposta Firewall Encaminhamento Criptografia e Segurança das Comunicações Tabela mange POSTROUTING Tabela NAT POSTROUTING Internet Firewalls : 14/35 Calibragem de tráfego Curiosidade, não faz parte da avaliação • O comando /sbin/tc permite definir classes, onde são alocadas capacidades de tráfego. A cada classe é atribuída uma disciplina - a mais divulgada é o HTB (“Hierarchy Token Bucket”). # tc qdisc add dev eth0 root handle 1:0 htb default 40 # tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100mbit # tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100kbit ceil 300kbit prio 0 • No iptables, o encaminhamendo dos pacotes pelas classes é configurado com a directiva –-set-class # iptables -t mangle -A FORWARD -p udp -m multiport --ports 53 -j CLASSIFY --set-class 1:10 NOTA: Tema para seminário Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 15/35 Regras (1) Sintaxe das regras iptables [-t tabela] opções alvo/salto Opções mais importantes no iptables • Acção -A -I posição -D -F adicionar regra no fim da cadeia inserir regra numa posição da cadeia remover regra anterior apagar todas as regras, enviadas para um -N nome -P ficheiro (se existir) iniciar nova cadeia, designada nome política por omissão Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 16/35 Regras (2) • Salto (-j) alvo ACCEPT REJECT DROP MASQ RETURN aceita pacote rejeita pacote e envia mensagem de erro ICMP rejeita pacote sem envio de mensagem ICMP mascaramento finaliza cadeia • Interface -i id -o id carta por onde pacote entra carta por onde pacote sai • Protocolo -p prot Prof RG Crespo tcp, udp, icmp ou all Criptografia e Segurança das Comunicações Firewalls : 17/35 Regras (3) • Portos --sport gama --dport gama --syn --icmp tipo request:pedido, porto de origem porto de destino pedido de estabelecimento de conexão eco, os tipos pode ser echoecho-reply:resposta • Endereços -s IPaddr[/máscara] fonte -d IPaddr[/máscara] destino Nota 0/0 significa qualquer endereço Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 18/35 Regras (4) • Estado do pacote (necessário módulo ip_conntrack) – -m --state estado • • • • NEW: pacote iniciou nova conexão, ou associado a conexão que ainda não levou pacotes para os dois lados. ESTABLISHED: pacote associado a conexão que já levou pacotes para os dois lados. INVALID: pacote não é associado a uma conexão. RELATED: pacote está a iniciar nova conexão, mas é associado a uma conexão existente (ex: transferência FTP). Prof RG Crespo Iniciado de dentro NEW ESTABLISHED RELATED Criptografia e Segurança das Comunicações NEW drop Internet Firewalls : 19/35 Endereços (1) Os endereços podem ser expressos em diversas formas: 1. Nome lógico, resolvido por servidor de nomes DNS, ex: comp.ist.utl.pt 2. Numero IP, ex: 193.136.143.1 3. Sequência de endereços, ex: 193.136.143.34193.136.143.58 4. CIDR (“Classless Internet Domain Routing), na forma endereço base/máscara. A máscara (“netmask”) pode ser indicada sob 2 formas – Curta, com o número de bits do prefixo que são fixos. – Completa, indicando o valor de todos os grupos de 8 bits (entre 0 e 255) Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 20/35 Endereços (2) Filtro curto – – Máscara Número de endereços /24 255.255.255.0 255 /25 255.255.255.128 127 /26 255.255.255.192 63 /27 255.255.255.224 31 /28 255.255.255.240 17 /29 255.255.255.248 7 /30 255.255.255.252 3 Ex: 193.136.143.0/24 indica que os 24 bits superiores são fixos, podendo variar os 32-24=8 bits menos significativos: assim é coberta a gama 193.136.143.0 a 193.136.143.255 Ex: 193.136.143.120/29, podem variar 3 bits menos significativos: assim é coberta a gama 193.136.143.120 a 193.136.143.127 Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 21/35 Endereços (3) Os endereços internos, da rede privada LAN (“Local Area Network”), podem ser indicados nas classes reservadas pela IANA – Classe A, bloco 24 bits (máscara 255.0.0.0): por exemplo, 10.0.0.0-10.255.255.255 – Classe B, bloco 20 bits (máscara 255.255.0.0): por exemplo, 172.16.0.0-172.31.255.255 – Classe C, bloco 16 bits (máscara 255.255.255.0): por exemplo, 192.168.0.0-192.168.255.255 • Normalmente, o penúltimo endereço (.254) é destinado ao nó de encaminhamento (“gateway”) e o último (.255) ao nó de difusão (“broadcast”). Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 22/35 Portos • Os portos abrangidos numa regra podem ser indicadas em diversas formas 1. Porto individual, ex 53 2. Gama de portos inferior:superior. Por omissão, o limite inferior e superior são 0 e 65535 :1023 (portos entre 0 e 1023) 1024: (portos de número igual ou superior a 1024) Nota 1: portos 0:1023, designados portos de sistema, são reservados e apenas podem ser abertos pelo root Nota 2: lista das aplicações associadas a portos disponibilizada em http://www.iana.org/assignments/portnumbers Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 23/35 Script (1) Formato típico de um “script” # Carregamento dos módulos apropriados modprobe iptable_nat modprobe ip_conntrack_ftp # Remoção regras existentes e anulação dos contadores iptables -F # ”flush” das regras iptables -X # elimina todas as cadeias na tabela iptables -Z # anula pacotes e contadores em todas as cadeias Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 24/35 Script (2) # insere DROP por omissão iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # definições típicas IFACE="eth0" # interface nível dados (ethernet eth0, ppp0,…) CLASS_C="193.136.143.0/64" # sub-rede/máscara NAMESERVER_1="193.136.128.1" # primeiro servidor de nomes DNS NAMESERVER_2="193.136.143.1" # segundo servidor de nomes DNS EMAILSERVER="193.136.128.8" GATEWAY="193.136.143.254" P_PORTS="0:1023" UP_PORTS= "1024:65535" Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 25/35 Script (3) # protecção SYN; por omissao, limit=3/hora, limit-burst=5 iptables -N syn-flood iptables -A INPUT -i $IFACE -p tcp -syn -j syn-flood iptables -A syn-flood -m limit --limit 1/s \ --limit -burst 4 -j RETURN iptables -A syn-flood -j DROP # Nova conexões são SYN iptables -A INPUT -i $IFACE -p tcp ! --syn -m state\ --state NEW -j DROP ## ! : operador de negação, -m : emparelha (“match”) Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 26/35 Script (4) iptables -N icmp-in iptables -N icmp-out # aceita DNS (de servidores) iptables -A INPUT -i $IFACE --sport 53 -m state iptables -A INPUT -i $IFACE --sport 53 -m state -p udp -s $NAMESERVER_1 \ --state ESTABLISHED -j ACCEPT -p udp -s $NAMESERVER_2 \ --state ESTABLISHED -j ACCEPT # aceita DNS (para servidores) iptables -A OUTPUT --dport 53 ACCEPT iptables -A OUTPUT --dport 53 ACCEPT Prof RG Crespo -o $IFACE -p udp -s $NAMESERVER_1 \ -m state --state NEW,ESTABLISHED -j -o $IFACE -p udp -s $NAMESERVER_2 \ -m state --state NEW,ESTABLISHED -j Criptografia e Segurança das Comunicações Firewalls : 27/35 Script (5) # Aceita WWW iptables -A INPUT -i $IFACE -p tcp --sport 80 -m state \ --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o $IFACE -p tcp --sport 80 -m state \ --state NEW,ESTABLISHED -j ACCEPT # Aceita WWW cifrado iptables -A INPUT -i $IFACE -p tcp --sport 443 -m state \ --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o $IFACE -p tcp --sport 443 -m state \ --state NEW,ESTABLISHED -j ACCEPT Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 28/35 Transladação de endereços (1) Transladação de endereços DNAT • O endereço IP de destino pode ser alterado, por exemplo com servidor WWW protegido. iptables -t nat -A PREROUTING -p tcp -d 193.136.143.6 \ --dport 80 -j DNAT --to-destination \ 128.0.1.0-128.0.1.15 A cada “stream” é atribuído aleatoriamente um número interno 120.0.1.0/28 Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 29/35 Transladação de endereços (2) Transladação de endereços SNAT • O endereço IP de fonte pode ser alterado, por exemplo com vários servidores a partilhar a mesma conexão. iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT \ --to-source 194.236.50.155-194.236.50.160:1024-32000 ## 1024-32000 é a gama de portos Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 30/35 Transladação de endereços (3) Transladação de endereços • Invisibilidade da rede interna determinada por mascaramento, que converte vários endereços internos num único IP (se 24 computadores internos requerem a mesma página WWW, o servidor recebe 24 pedidos com o mesmo endereço) – Há duas redes: externa (eth0) e interna (eth1) – Os pacotes são encaminhados através da cadeia FORWARD # Carregamento do módulo modprobe iptable_nat # Autorização o “forward” dos pacotes echo 1 > /proc/sys/net/ipv4/ip_forward Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 31/35 Transladação de endereços (4) # O endereço NAT IP é o da interface da firewall, sendo necessário apenas indicar os endereços internos iptables -t nat -A POSTROUTING -o eth0 -s 128.0.0.0/27 \ -d 0/0 -j MASQUERADE # endereços internos: 128.0.0.0/27 iptables -A FORWARD -t filter -i eth1 -m state \ --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -t filter -i eth0 -m state \ --state ESTABLISHED,RELATED -j ACCEPT Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 32/35 Listagem das regras (1) iptables –L Apresenta as regras aplicadas nos 3 sentidos (INPUT, FORWARD e OUTPUT). Chain INPUT target bad_packets ACCEPT DROP ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT ACCEPT Filtragem (policy DROP) prot opt source all -- anywhere all -- anywhere all -- anywhere all -- anywhere tcp -- anywhere udp -- 193.136.152.64/27 udp -- 193.136.152.64/27 icmp -- anywhere icmp -- anywhere icmp -- anywhere icmp -- anywhere icmp -- anywhere icmp -- anywhere Protocolo Prof RG Crespo destination anywhere anywhere 127.0.0.0/8 anywhere anywhere anywhere anywhere anywhere anywhere anywhere anywhere anywhere anywhere state RELATED, ESTABLISHED tcp dpt:ssh state NEW udp dpt:snmp state NEW udp dpt:snmp-trap state NEW icmp echo-reply icmp time-exceeded icmp parameter-problem icmp destination-unreachable icmp source-quench icmp echo-request Estado do pacote Criptografia e Segurança das Comunicações Firewalls : 33/35 Listagem das regras (2) • Exemplo: – Admitamos que foi introduzida a regra de bloqueio de Telnet (porto 23) iptables -A INPUT -p tcp --dport 23 -j DROP – O comando iptables –L tem por resultado Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- anywhere anywhere tcp dpt:telnet Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 34/35 Listagem das regras (3) • Para salvaguardar as tabelas actuais, executar comando /sbin/service iptables save que salva configuração no ficheiro /etc/sysconfig/iptables • A configuração pode ser lida directamente pelo comando /sbin/iptables-save e carregada directamente pelo comando /sbin/iptables-restore < fich Prof RG Crespo Criptografia e Segurança das Comunicações Firewalls : 35/35