Buscar

Slides - Aula 2 e 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais 
Open Source V 
 
Prof. Ricardo Mercês 
ricardo.merces@prof.infnet.edu.br 
Aula 2 - 3 
Controle de Acesso a Rede 
 
Objetivo 
•  Conhecer o processo de roteamento no Linux 
 
•  Compreender a arquitetura Netfilter 
 
•  IPTABLES 
 
•  Compreender a tradução de endereços de rede 
(NAT) no Linux 
Visão geral da arquitetura Netfilter 
• Filtragem via kernel: não há um daemon 
 
• Aplica regras nas camadas OSI 2, 3 e 4 
 
• Só inspeciona os cabeçalhos dos pacotes 
 
• Consiste dos módulos Netfilter no kernel, mais o 
programa iptables 
Netfilter: tabelas e chains 
Fluxo de pacotes Netfilter 
Fluxo de pacotes Netfilter 
Podemos perceber no diagrama anterior que os círculos são as 
chains. Quando um pacote atinge a máquina em questão, o 
KERNEL define o tipo do roteamento interno escolhendo uma 
CHAIN. Ela é examinada para verificar o destino do pacote, a 
CHAIN pode simplesmente rejeitar (DROP) ou aceitar o pacote 
(ACCEPT), se isso acontecer ele continua passeando no 
diagrama. 
 
Para entender melhor este diagrama devemos saber que as 
chains são listas de regras que analisam o cabeçalho do pacote e 
dizem o que deve ser feito com ele. Se uma regra desta CHAIN 
não tem relação com o pacote em questão, então uma próxima 
regra é analisada. Se não houver mais regras a consultar, o 
KERNEL analisa a política da CHAIN para decidir o que fazer. 
Fluxo de pacotes Netfilter 
1. Quando o pacote chega, o KERNEL analisa o destino do pacote: 
isso é chamado roteamento (routing). 
2. Se ele é destinado a própria máquina, o pacote desce no 
diagrama, indo para a CHAIN INPUT. Se ele passar pela CHAIN 
INPUT, então a máquina recebe o pacote. 
3. Se o KERNEL não tem suporte a forwarding, ou não sabe como 
repassar (forward) o pacote, este é descartado. Se há suporte a 
forwarding e o pacote é destinado a outra interface de rede (se 
você possui outra), o pacote vai para a CHAIN FORWARD. Se ele 
for aceito (ACCEPT), ele será enviado. 
4. Finalmente, um programa rodando na máquina firewall pode 
enviar pacotes. Esses pacotes passam pela CHAIN OUTPUT 
imediatamente: se ela aceitar o pacote, ele continua seu caminho, 
caso contrários ele é descartado. 
Tabela filter - Considerada a tabela padrão, contém 3 chains 
básicas: 
l INPUT - Consultada para pacotes que chegam na própria 
máquina; 
l OUTPUT - Consultada para pacotes que saem da própria 
máquina; 
l FORWARD - Consultado para pacotes que são redirecionados 
para outra interface de rede ou outra estação. 
Tabela Filter 
Tabela nat - Usada para passagem de pacotes que pode gerar 
outra conexão. Um exemplo clássico é o mascaramento 
(masquerading), nat, port forwarding e proxy transparente 
são alguns. Possui 3 chains básicas: 
PREROUTING - Consultado quando os pacotes precisam ser 
redirecionados logo que chegam.(chain ideal para realização do 
chamado Destination NAT (DNAT)); 
OUTPUT - Consultado quando os pacotes gerados localmente precisam 
ser redirecionados antes de serem roteados. Este chain somente é 
utilizada para conexões que se originam de IPs de interfaces de rede 
locais; 
POSTROUTING - Consultado quando os pacotes precisam ser 
modificados após o tratamento de roteamento. 
Tabela NAT 
Tabela mangle - Utilizada para alterações especiais de pacotes 
como por exemplo modificar o tipo de serviço (TOS) de um pacote. 
Ideal para produzir informações falsas para scanners Possui 2 
chains padrões: 
PREROUTING - Consultado quando os pacotes precisam ser 
redirecionados logo que chegam; 
OUTPUT - Consultado quando os pacotes gerados localmente 
precisam ser redirecionados antes de serem roteados. 
Tabela mangle 
Checagem de regras (1) 
• Guardadas em uma lista ordenada 
 
• Pacotes testados regra a regra 
 
• Na primeira regra coincidente, o alvo é avaliado 
Checagem de regras (2) 
• Uma regra pode especificar múltiplos critérios 
 
• Todos os critérios de uma especificação devem 
ser atendidos para que sua regra coincida (AND 
lógico) 
 
• A política da chain é aplicada se não houver 
coincidência 
Os “alvos” de nossas regras 
• Built-in: DROP, ACCEPT 
• Extensões: LOG, REJECT, chain personalizada 
• REJECT envia um aviso de bloqueio 
• LOG envia uma mensagem via syslog (facility kernel) 
• Uma regra com alvo LOG NÃO finaliza a avaliação da chain 
• Não é possível especificar mais que um alvo por 
regra 
• São opcionais, ou seja, se você não especificou 
um, a política da chain é aplicada 
Um exemplo simples 
Operações básicas com chains 
•  Listar regras de chain ou tabela (-L ou -vL) 
•  Acrescentar uma regra no fim de uma chain (-
A) 
•  Inserir uma regra em uma chain (-I) 
-I <CHAIN> (insere como primeira regra) 
-I <CHAIN> 3 (insere como a regra de número 3) 
•  Deletar uma regra 
-D <CHAIN> 3 (deleta a regra 3) 
-D <CHAIN> <regra> (deleta a regra específica) 
Critérios de checagem comuns (1) 
Endereço IP ou rede 
 -s 172.31.8.0/24 
 -d 172.31.8.100 
 
Interface de rede 
 -i lo 
 -o eth1 
 
Critérios podem ser invertidos com ‘!’ 
 -i eth0 –s ‘!’ 172.31.8.0/24 
Critérios de checagem comuns (2) 
Protocolo de transporte e porta 
 -p tcp --dport 80 
 -p udp --sport 53 
 Faixas de portas podem ser especificadas com 
 <início>:<fim> 
 
Tipo ICMP 
 -p icmp --icmp-type host-unreachable 
Operações adicionais com chains 
Política default da chain (-P <CHAIN> <alvo>)
 ACCEPT (default, alvo built-in) 
 DROP (também um alvo built-in) 
 REJECT (NÃO PERMITIDO, é uma extensão) 
•  Apagar todas as regras de uma chain (-F 
<CHAIN>) 
 Não muda a política default 
Operações adicionais com chains 
Zerar contadores de bytes e pacotes (-Z <CHAIN>) 
 Útil para monitorar estatísticas de rede 
 
Gerenciar chains personalizadas (-N, -X) 
•  -N <nome_chain> (para criar uma chain) 
•  -X <nome_chain> (para deletar sua chain) 
Regras: considerações gerais 
Quanto mais “restrito” melhor: 
iptables -P INPUT DROP ou 
iptables -A INPUT -j DROP 
iptables -A INPUT -j REJECT 
 
Critérios também se aplicam ao loopback 
Os exemplos acima bloqueariam acessos via loopback! 
 
Regras, assim como as rotas, são armazenadas na 
memória e precisam ser SALVAS 
Connection tracking (1) 
•  Ou “rastreamento de conexões” 
 
•  Permite a análise do “estado” de um pacote 
•  Simplifica a escrita de regras (Evita que tenhamos 
que escrever uma regra de “entrada” e outra de “saída”) 
•  Depende da extensão match 
Connection tracking (2) 
•  Reconhece os estados NEW, ESTABLISHED, 
RELATED e INVALID 
 
•  Requer mais memória (insignificante) 
 
•  Módulos de rastreamento 
•  ip_conntrack_ftp 
•  ip_conntrack_tftp 
•  ip_nat_ftp (e outros) 
 
Exemplo de connection tracking 
Regra para permitir conexões estabelecidas 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
 
Suas regras (uma para cada serviço) 
iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT 
 
Para bloquear todas as outras conexões “entrantes” 
iptables -A INPUT -m state --state NEW -j DROP 
Tradução de endereços (NAT) 
•  Network Address Translation 
•  Traduz um endereço IP em outro 
•  Permite “esconder” endereços privados atrás 
de um único IP público (mascaramento) 
•  Conjunto de regras na tabela nat 
Tradução de endereços (NAT) 
Tipos de NAT 
 
•  NAT de destino (DNAT) – Definido na chain 
PREROUTING, onde a filtragem usa o endereço 
traduzido 
 
•  NAT de origem (SNAT ou MASQUERADE) – Definido na 
chain POSTROUTING, onde a filtragem NUNCA usa o 
endereço traduzido 
SNAT x MASQUERADE 
O IP Masquerading é um tipo especial de SNAT 
usado para conectar a sua rede interna a internet 
quando você recebe um IP dinâmico de seu 
provedor . Todas as operações de IP Masquerading 
são realizadas no chain POSTROUTING. Se você 
tem um IP fixo, deve utilizar o SNAT 
 
IP dinâmico → MASQUERADE 
IP fixo → SNAT 
Exemplos de DNAT 
Entrada 
iptables -t nat -A PREROUTING -p tcp --dport 80 
-j DNAT --to-dest 192.168.0.20 
 
Saída (redirecionando porta, aindapor cima!) 
iptables -t nat -A OUTPUT -p tcp --dport 80 
-j DNAT --to-dest 192.168.0.200:3128 
Exemplos de SNAT 
•  Mascaramento 
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
 
•  SNAT 
iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.45 
Persistência de regras 
•  O iptables não é um daemon, apenas 
manipula regras que estão na memória! 
•  Regras não são persistentes entre reboots 
•  Para salvar as regras (no arquivo /etc/sysconfig/
iptables), usamos o comando service iptables 
save 
•  Necessariamente o arquivo contendo as regras deve 
ser: /etc/sysconfig/iptables 
•  Um script de gerenciamento System V está disponível 
na inicialização e começa a operar antes da própria 
rede 
Exemplos 
Compartilhar a internet com MASQUERADE 
 
•  Habilitar o redirecionamento de pacotes 
echo "1" >/proc/sys/net/ipv4/ip_forward 
 
•  Para fazer o IP Masquerading de todas as máquinas da 
rede 192.168.1.* 
iptables -t nat -A POSTROUTING -s 
192.168.1.0/24 -o eth1 -j MASQUERADE 
Exemplos 
Compartilhar a internet com SNAT 
•  Habilitar o redirecionamento de pacotes 
echo "1" >/proc/sys/net/ipv4/ip_forward 
 
•  Para fazer SNAT de todas as máquinas da rede 
192.168.1.* 
iptables -t nat -A POSTROUTING -s 
192.168.1.0/24 -o eth1 -j SNAT -–to-source 
200.255.108.6 
Exemplos 
Firewall pessoal (com msn liberado) 
 
# Generated by iptables-save v1.4.0 on Tue Mar 24 10:53:12 2009 
*filter 
:INPUT DROP [0:0] 
:FORWARD DROP [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -s 0/0 --dport 1863 -j ACCEPT 
-A INPUT -p udp -s 0/0 --dport 1863 -j ACCEPT 
-A INPUT -j DROP 
COMMIT 
# Completed on Tue Mar 24 10:53:12 2009 
LABS

Outros materiais