endereçamento privado proxy e nat - pucprjamhour/pessoal/...pacotes recebidos na porta 8080 são...
TRANSCRIPT
2018, Edgard Jamhour
Endereçamento PrivadoProxy e NAT
Redes de Computadores II
2018, Edgard Jamhour
Motivação para o Endereçamento IP Privado
• Esgotamento de Endereços IPv4
• Blocos de endereços /8 disponíveisPrevisão inicial
de esgotamento
1994
Autoridades de Registro de Endereço
IANA
ARIN RIPE NCC AfriNIC LACNIC APNIC
América
do Norte
Europa,
Oriente e
Asia
Central
Africa América
Latina e
Caribe
Ásia e
Pacífico
RIR: Autoridade de Registro Regional
Endereços Privados: RFC 1918
Prefixo Faixa de Endereços Descrição
10.0.0.0/8 10.0.0.0 a
10.255.255.255
Uma rede de endereços classe A.
172.16.0.0/12 172.16.0.0 a
172.31.255.255
16 redes contíguas de endereços classe B.
192.168.0.0/16 192.168.0.0 a
192.168.255.255
256 redes contíguas de endereços classe C.
2018, Edgard Jamhour
IP Privado = Não roteável pela internet
66.1.2.3
192.168.0.2
192.168.0.2
192.168.0.2 66.1.2.3
origem destino
Os roteadores divulgam os endereços IPs de sua redeusando o protocolo de roteamento BGP. MAS, é
PROIBIDO divulgar endereços privados
Internet
2018, Edgard Jamhour
Tipos de Hosts (RFC 1918)
• Categoria I: clientes e servidores sem conexão com a Internet
– Clientes acessam apenas servidores internos
– Servidores não são acessíveis pela internet
IP
privado
IP
privado
sw
IP
privado
sw
2018, Edgard Jamhour
Tipos de Hosts (RFC 1918)
• Categoria II: clientes e servidores privados
– Clientes acessam servidores internos e externos
– Servidores internos não são acessíveis pela Internet
– O roteador que conecta a rede a Internet precisa de um tradutor de endereço
IP privado
IP privado
sw NAT
IP público
Internet
IP público
roteador com função de
tradução de IP
IP
privado
IP
público
2018, Edgard Jamhour
Tipos de Hosts (RFC 1918)
• Categoria III: servidores públicos
– Clientes externos podem acessar a servidores Internos
– Roteadores não precisam de tradutor de IP
– Essas redes precisam ser protegidas com firewall
IP público
sw Internet
IP público
NAT
IP privado
Topologia mais usual
IP privado
sw
IP público
sw
IP privado
IP público
NAT
Internet
IP privado IP público
192.168.0.3 192.168.0.2
192.168.0.1 200.192.116.1
200.192.116.2
200.192.116.4
200.192.116.3
REGRA: faz NAT para 200.192.116.4
apenas se o IP de origem pertencer a
rede 192.168.0.0./24
2018, Edgard Jamhour
Tradutores de Endereço
• Implementados em Roteadores:
– NAT (Network Address Translation)
– NAPT (Network Address and Port Translation)
• Implementados em Servidores:
– Proxy de Aplicação
– Proxy Socks.
2018, Edgard Jamhour
Mapeamento Estático e Dinâmico
• Estático:– Mapeamentos configurados pelo administrador
– Um endereço IP privado é sempre mapeado no mesmo IP público
• Dinâmico. – O mapeamento acontece apenas quando o cliente envia o primeiro
pacote através do roteador
– O mapeamento é desfeito quando não for mais usado
• TCP: dura toda a conexão
• UDP: expira por falta de uso (3 a 5 min)
2018, Edgard Jamhour
NAT: Network Address Translation
• Mapeamento 1 para 1: Cada IP privado é mapeado em um único IP público
• Mapeamento estático: Se o número IPs públicos = número de IPs privados
• Mapeamento dinâmico: Se o número IPs públicos < número de IPs privados
IPprivado1
IPprivado2
IPprivado3
IPpúblico2
IPpúblico1
IPpúblico3
NAT
IPprivado1= IPpúblico1
IPprivado2= IPpúblico2
IPprivado3= IPpúblico3
Pool de endereços públicos
TABELA DE MAPEAMENTO
2018, Edgard Jamhour
NAPT: Network Address and PortTranslation
• Mapeamento 1 para muitos: Muitos IP privados no mesmo IP público
• O mapeamento é dinâmico
IPprivado1
IPprivado2
IPprivado3
IPpúblico1:Porta2
IPpúblico1:Porta1
IPpúblico1:Porta3
NAT
IPprivado2 = IPpúblico1:Porta1
IPprivado2 = IPpúblico1:Porta2
IPprivado3 = IPpúblico1:Porta3
Apenas 1 IP público é suficiente
TABELA DE MAPEAMENTO
2018, Edgard Jamhour
Portas
• O NAPT traduz a porta de origem usada pela aplicação cliente• Atualmente a faixa livre de tradução está entre 49152 e 65535.• Sistemas mais antigos ainda consideram que todas as portas acima
de 1024 são dinâmicas.
2018, Edgard Jamhour
Tipos de NATO cliente é mantém o
mesmo IP público e
porta em qualquer
comunicação.
Qualquer computador
externo pode enviar
pacotes para um
mapeamento existente.
Semelhante ao Full Cone,
mas apenas hosts
externos previamente
endereçados
(independente da porta)
podem usar mapeamentos
existentes.
2018, Edgard Jamhour
Tipos de NAT
Semelhante ao Restricted
Cone, mas hosts externos se
comunicam com o cliente
usando apenas a sua porta
contatada pelo cliente interno.
Utiliza mapeamento de porta e
IP diferentes para destinos
diferentes.
Apenas os hosts externos
previamente endereçados
podem enviar pacotes ao
cliente
2018, Edgard Jamhour
SNAT e DNAT
Pré-Roteamento
[DNAT]
Pós-Roteamento
[SNAT]roteamento
Interface de Entrada Interface de Saída
decisão sobre o
encaminhamento do pacote O NAT pode ter efeito sobre regras de Firewall e QoS
2018, Edgard Jamhour
Source NAT e Destination NAT
• Source NAT: SNAT– Altera o endereço de origem do pacote– Mapeamento dinâmico– É implementado após a ação de roteamento (pós-roteamento).
• Masquerading
• Destination NAT: DNAT– Altera o endereço de destino do pacote– Mapeamento estático– É implementado antes do roteamento (pré-roteamento).
• Redirecionamento de Portas • Balanceamento de Carga • Proxies transparentes
2018, Edgard Jamhour
Source NAT
IPv4 Privado
192.168.0.2
210.0.0.1 to
210.0.0.10
8.8.8.8
192.168.0.3
Mapeamento dinâmico
dos endereços de origem
192.168.0.1
interno externo
interno externo
192.168.0.2 210.0.0.1
192.168.0.3 210.0.0.2
IPv4 Público
1 2192.168.0.2 8.8.8.8 checksum1 210.0.0.1 8.8.8.8 checksum2
34 8.8.8.8 210.0.0.1 checksum38.8.8.8 192.168.0.2 checksum4
O checksum precisa ser
recalculado
2018, Edgard Jamhour
NAT (IPTABLES)
SNAT para endereço fixo:
• iptables -t nat-A POSTROUTING -j SNAT -o eth0 --to 210.0.0.1
SNAT com pool de endereços:
• iptables -t nat-A POSTROUTING -j SNAT -o eth0 --to 210.0.0.1-210.0.0.10
Masquerading efetua o mapeamento ao IP atribuído a interface
• iptables -t nat-A POSTROUTING -j MASQUERADE-o eth0
2018, Edgard Jamhour
Source NAPT
IPv4 Privado
192.168.0.2
210.0.0.1
8.8.8.8
192.168.0.3
Mapeamento dinâmico
dos endereços de
origem
192.168.0.1
interno externo
interno externo
192.168.0.2:1024 210.0.0.1:1024
192.168.0.3:1024 210.0.0.1:1025
192.168.0.2:1025 210.0.0.1:1026
IPv4 Público
1 2192.168.0.3 8.8.8.8 1024 80
34
O checksum precisa
ser recalculado
210.0.0.1 8.8.8.8 1025 80
8.8.8.8 210.0.0.1 80 10258.8.8.8 192.168.0.3 80 1024
80
1024
1025
1024
2018, Edgard Jamhour
SNAPT no Linux
• O Linux implementa SNAPT sempre que necessário de forma automática, mas mantém a troca das portas no interior de classes:– Portas abaixo de 512
– Portas entre 512 and 1023
– Portas acima de 1024
• Exemplo: altera o endereço de origem para 210.0.0.1, usando as portas 1024-65535, apenas para TCP– iptables -t nat
-A POSTROUTING -j SNAT -p tcp-o eth0 --to 1024-65535
2018, Edgard Jamhour
Destination NAPT
IPv4 Privado
192.168.0.2
210.0.0.1
8.8.8.8
192.168.0.3
Mapeamento estático
dos endereços de
destino
192.168.0.1
interno externo
interno externo
192.168.0.2:80 210.0.0.1:80
192.168.0.2:22 210.0.0.1:22
192.168.0.3:80 210.0.0.1:8080
IPv4 Público
3 4
8.8.8.8 192.168.0.3 1024 80 12
O domínio é mapeado
no endereço do
roteador
www.meutcc.com =
210.0.0.1
8.8.8.8 210.0.0.1 1024 8080
210.0.0.1 8.8.8.8 8080 1024192.168.0.3 8.8.8.8 80 1024
1024
80
22
80
2018, Edgard Jamhour
DNAT no Linux
Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80.
• iptables -t nat -A PREROUTING -j DNAT-i eth0 -p tcp --dport 8080 --to 192.168.0.2:80
Pacotes recebidos na porta 80 são direcionados para 3128 (Proxy Squid)
• iptables -t nat -A PREROUTING -j REDIRECT-i eth0 -p tcp --dport 80 --to-port 3128
Faz balanceamento de carga de 192.168.0.2 até 192.168.0.5
• iptables -t nat -A PREROUTING -j DNAT -i eth0 --to 192.168.0.2-192.168.0.5
2018, Edgard Jamhour
FTP Ativo X Passivo
Ativo Passivo
2018, Edgard Jamhour
Tipos de FTP: Ativo X Passivo
• O FTP usa uma conexão de comando, e outra para transferência de dados. Duas formas de operação:
– PORT (Ativo) • O cliente conecta-se a porta 21 do servidor FTP pela porta N (>1023) • O cliente envia o comando PORT indicado que aguarda uma conexão
na porta N+1• O servidor se conecta ao cliente pela porta 20.
– PASV (Passivo).• O cliente conecta-se a porta 21 do servidor FTP• O cliente envia um comando PASV indicado que deseja se conectar em
modo passivo. • O servidor abre uma porta aleatória para receber a conexão de dados,
e informa essa porta para o cliente através da conexão de comando.
2018, Edgard Jamhour
FTP Ativo funciona com (S)NAT?
IPv4 Privado
192.168.0.2
210.0.0.1IPv4 Público
8.8.8.8192.168.0.1
1 2
3
1026
1027
21
20
192.168.0.2 8.8.8.8 1026 21 PORT 192.168.0.2:1027
210.0.0.1 8.8.8.8 1026 21 PORT 192.168.0.2:1027
Analisar o protocolo de aplicação requer
Deep Packet Inspection
8.8.8.8 192.168.0.2 20 1027 DATA
cmd cmd
datadata
interno externo
192.168.0.2 210.0.0.1
2018, Edgard Jamhour
Carrier Grade NAT (CGN)• Na abordagem convencional, os usuários residenciais (CPE) precisam de pelo
menos um IP público.
• A abordagem CGN permite atribuir endereços IP privados aos usuários e efetuar a conversão no interior da rede do ISP.
PERGUNTA: É possível fazer DNAT com CGN?
2018, Edgard Jamhour
NAT Traversal
Conjunto de técnicas que procuram resolver problemas causados pelo NAT.
ICE (Interactive Connectivity Establishment): Protocolo de Negociação para NAT traversal
A) NAT hole punching
• Utiliza servidores externos para informar o mapeamento
• Usado pelo Skype
2018, Edgard Jamhour
STUN e TURN
STUN: Session Traversal Utilities for NAT
• Conjunto de métodos padronizados para fazer Hole Punching
• Usado pelo SIP (sinalização do VoIP) e WebRTC (RTC via Javascript)
• Não funciona com Symmetric NAT
TURN: Traversal Using Relays around NAT
• Extensão do STUN para sportar Symetric NAT
2018, Edgard Jamhour
uPnP IGD
• uPnP: Universal Plug and Play
– Mecanismo de descoberta e autoconfiguração de dispositivos e serviços de rede
• uPnP IGD: Internet Gateway Device
– Protocolo que permite efetuar mapeamento de porta automaticamente em roteadores
• Descobre o endereço público
• Descobre mapeamentos existentes
• Cria mapeamentos de porta temporários
– Considerado potencialmente perigoso, especialmente se o protocolo for habilitado na porta externa
• Similares:
– NAT-PMP: NAT Port Mapping Protocol (2005, Apple)
– PCP: Port Control Protocol (2013, IETF)• Importante na Integração IPv4 vs IPv6
2018, Edgard Jamhour
Exemplos
• uPnP IGP define uma API que pode ser usada por aplicações que precisam escutar novas sessões;– GetListOfPortMappings()
– AddPortMapping()
– AddAnyPortMapping()
• Microtorrent– Determina portas externas disponíveis e efetua o mapeamento
• Azureus, Shareazav e Emule– Tenta efetuar o mapeamento em uma porta externa fixa
NAT X Forwarding Proxy
IPv4 Privado
192.168.0.2
210.0.0.1
IPv4 Network
60.1.2.3
192.168.0.1
IPv4 Privado
192.168.0.2
210.0.0.1
IPv4 Network
60.1.2.3
192.168.0.1
NAT
Proxy
1024 80
31281024 1025 80
Uma conexão TCP
Duas conexões TCP
2018, Edgard Jamhour
PROXY DE APLICAÇÃO
NAT X Proxy
Ethernet
IP Privado
Ethernet
IP Público
HTTP
TCP
Ethernet
IP Privado
ROTEAMENTO + NAT
Ethernet
IP Privado
Ethernet
IP Público
TCP TCP
HTTP HTTP
HTTP
TCP
Ethernet
IP Privado
CLIENTE SERVIDOR
HTTP
TCP
Ethernet
IP Privado
HTTP
TCP
Ethernet
IP Privado
CLIENTE SERVIDOR
2018, Edgard Jamhour
Aplicação Proxy
Proxy Aplicação vs Proxy Socks• Proxy de Aplicação
– Utiliza informações dosprotocolos da camada deaplicação
– Suporta apenas protocolos de aplicação conhecidos
• Proxy SOCKS.
– Não usa informações dacamada de transporte
– Pode suportar virtualmente qualquer tipo de aplicação, de forma semelhante ao NAT.
Ethernet
IP Privado
Ethernet
IP Público
TCP TCP
HTTP HTTP
Ethernet
IP Privado
Ethernet
IP Público
TCP/UDP TCP/UDP
Proxy Socks
2018, Edgard Jamhour
Como o proxy determina o endereço do destinatário?
No proxy de aplicação:
O endereço e a porta do destinatário são descobertos analisando as informações contidas no cabeçalho de aplicação (usualmente HTTP).
No proxy SOCKS:
O cliente envia explicitamente uma ordem de redirecionamento antes de submeter o pacote de dados.
IP cliente
IP Proxy
protocolo aplicação... endereço do servidor
clienteProxy servidor
IP Proxy
IP servidor
protocolo aplicação... endereço do servidor
IP cliente
IP Proxy
protocolo de aplicação ... dados
clienteProxy servidor
IP cliente
IP Proxy
Protocolo SOCKS: redirecione ao servidor
IPProxy
IP servidor
protocolo de aplicação ... dados
Proxy de Aplicação
aplicação
segmento TCP
datagrama UDP
pacote
Seqüência de
empacotamento
quadro
HTTP
FTP
SSH
O proxy de aplicação precisa interpretar
as informações do protocolo de aplicação
(dispositivo de camada 7)
HTTP, FTP, SSH, etc.
TCP, UDP
Ethernet, PPP, etc.
IP
Forward Application Proxy
IPv4 Privado
192.168.0.2
210.0.0.1
IPv4 Network
8.8.8.8
192.168.0.1
Proxy
31281024 1025 80
192.168.0.2 192.168.0.1 1024 3128 GET /~jamhour/tde.html HTTP/1.1\r\nHost: espec.ppgia.pucpr.br\r\n
210.0.0.1 8.8.8.8 1025 80 GET /~jamhour/tde.html HTTP/1.1\r\nHost: espec.ppgia.pucpr.br\r\n
2018, Edgard Jamhour
Proxy de Aplicação: Deep Packet Inspection
SMTP
HELO ...MAIL FROM ...RCPT TO ...DATA ...CRLF CRLFQUIT ...
HTTP
GET ...Host ...Accept-Language ...Accept-Encoding ...User-Agent ...Content-Length: ...
Cada protocolo de aplicação possui uma
estrutura diferente, então é impossível fazer
um proxy capaz de interpretar qualquer
aplicação
2018, Edgard Jamhour
Proxy Auto-Configuration (PAC) file
function FindProxyForURL(url,host)
{if(isInNet(host, "127.0.0.0", "255.0.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0") { return "DIRECT";
}
else { return "PROXY 200.192.112.146:3128";
}
}
Mapeamento de Conexões pelo Proxy
IPv4 Privado
192.168.0.2
210.0.0.1
8.8.8.8
192.168.0.3
192.168.0.1
Conexão TCP do cliente ao proxy Conexão TCP do proxy até o destino
192.168.0.2:1024 => 192.168.0.2:3128 210.0.0.1:1024=>8.8.8.8:80
192.168.0.3:1024=> 192.168.0.2:3128 210.0.0.1:1025=>8.8.8.8:80
192.168.0.2:1025=> 192.168.0.2:3128 210.0.0.1:1026=>8.8.8.8:80
IPv4 Público
80
1024
1025
1024
1024
1025
1026
3128
O Proxy move os dados recebidos de um SOCKET para outro
Proxy
2018, Edgard Jamhour
Mapeamento de Conexões pelo Proxy
• Semelhante ao NAPT, permite compartilhar inúmeros IPs privados com um único IP público.
• Proxy recebe conexões dos clientes internos em uma porta fixa
• Proxy abre conexões para servidores externos usando uma porta aleatória
• O HTTP encerra a conexão com o servidor assim que as informações de uma página Web são recebidas por completo.
Função de Cache do Forward Proxy
Proxy de Aplicação
Cache
GET
HTTP/1.1 200 OK\r\n
GET
HTTP/1.1 304 Not Modified\r\n
GET
HTTP/1.1 200 OK\r\n
2018, Edgard Jamhour
Serviços Adicionais do Proxy
• Cache de objetos HTTP: – armazena objetos mais acessados em cache – permite reduzir a banda utilizada do link com a Internet.
• Autenticação: – controla o acesso a Internet através de um pedido de autenticação
para usuário.
• Filtragem de endereços URL: – proíbe o acesso a certos endereços na Internet.
• Filtragem de conteúdo: – proíbe a transferência de objetos com certos tipos MIME (video,
áudio, executáveis, etc.)
• Bloqueio e remoção de virus e malware: – proíbe a entrega de objetos com vírus ou algum tipo de malware.
2018, Edgard Jamhour
Proxy Transparente
NATRoteador
Proxy
IP Público
Cliente
IP Privado
HTTP ou HTTPs
Outros Protocolos
2018, Edgard Jamhour
HTTP Messages
2018, Edgard Jamhour
Absolute URI• URIs absolutas eram usadas em HTTP 1.0, mas não são necessárias no HTTP 1.1,
pois o campo Host foi incluído.
• Mas quando o proxy é configurado no navegador Web a requisição é alterada, e passa a incluir URI absolutas.
2018, Edgard Jamhour
SSL ou TLS
HTTP, FTP, SMTP, etc.
TCP, UDP
Ethernet, PPP, etc.
IP
SSL/TLSHTTP
TLS XXXXX
TCP TLS XXXXX
IP TCP TLS XXXXX
Ether IP TCP TLS XXXXX
HTTPS = HTTP sobre TLS/SSL
HTTP é criptografado pela aplicação
2018, Edgard Jamhour
Proxy HTTPS: HTTP Connect
2018, Edgard Jamhour
Proxy Socks
192.168.0.1
210.0.0.3cliente
servidor192.168.0.3
1024
IPv4
1080
proxy
socks
user jamhour want connect to
8.8.8.8:80
8.8.8.8
request granted
user jamhour want bind to
8.8.8.8:80
bind on 210.0.0.3:4000
4000
2018, Edgard Jamhour
Versões do SOCKS• Versão 4: Suporte apenas ao TCP
• Versão 5: Suporte a TCP e UDP, e suporte a autenticação
2018, Edgard Jamhour
Proxy Socks
cliente
servidor
IPv4UDP modificado
com SOCKS
ou
TCP + SOCKS
biblioteca sockets
modificada
aplicação
TCP UDP
IP
configuração global
para todos os
aplicativos
TCP ou UDP não
modificado
S.O.
proxy
SOCKS
2018, Edgard Jamhour
Proxy Socks6to4
IPv6A
O HOST RECEBE UM
ENDEREÇO IPv6 FALSO
QUE CONTÉM O
ENDEREÇO IPv4
IPv4
REDE IPV6
REDE IPV4
PROXY
IPv6
IPv4R IPv4
DNS
23
Proxy
6to4
1
DNS do domíno
www.pucpr.br = IPv4
DNS da rede IPv6
www.pucpr.br = IPv6
(<PREFIXO>+ IPv4)
IPv4
2018, Edgard Jamhour
Forward Proxy vs Reverse Proxy
Exemplos:
https://www.nginx.com
https://www.haproxy.org/
https://squid-cache.org
Internet
roteador firewall
Servidor web
Servidor web
Servidor web
2018, Edgard Jamhour
Proxy HTTP/COAP
2018, Edgard Jamhour
Conclusão
• IP privado– motivado pelo esgotamento de endereços IPv4 no início dos anos 90– poucas limitações para hosts clientes– muitas limitante para hosts servidores– forma mais segura de se navegar pela Internet
• NATs– uso transparente para os clientes– pouco limitantes em relação as aplicações suportadas– incapazes de prestar serviços dependentes da camada de aplicação, como cache
HTTP
• Proxy– seu uso não é transparente (exige configuração)– quebram o modelo cliente-servidor– menos escaláveis que os NATs– proxies de aplicação podem prestar inúmeros serviços adicionais que melhoram a
segurança e o desempenho da rede.