Criptografia e Segurança das Comunicações Firewalls

Propaganda
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
Download