endereçamento privado proxy e nat - pucprjamhour/pessoal/...pacotes recebidos na porta 8080 são...

56
2018, Edgard Jamhour Endereçamento Privado Proxy e NAT Redes de Computadores II

Upload: others

Post on 14-Dec-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

2018, Edgard Jamhour

Endereçamento PrivadoProxy e NAT

Redes de Computadores II

Page 2: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 3: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 4: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 5: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 6: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 7: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 8: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 9: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 10: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 11: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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)

Page 12: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 13: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 14: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 15: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 16: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 17: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 18: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 19: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 20: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 21: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 22: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 23: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 24: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 25: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

2018, Edgard Jamhour

FTP Ativo X Passivo

Ativo Passivo

Page 26: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 27: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 28: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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?

Page 29: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 30: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 31: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 32: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 33: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 34: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 35: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 36: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 37: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 38: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 39: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 40: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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";

}

}

Page 41: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 42: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 43: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 44: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 45: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

2018, Edgard Jamhour

Proxy Transparente

NATRoteador

Proxy

IP Público

Cliente

IP Privado

HTTP ou HTTPs

Outros Protocolos

Page 46: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

2018, Edgard Jamhour

HTTP Messages

Page 47: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.

Page 48: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 49: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

2018, Edgard Jamhour

Proxy HTTPS: HTTP Connect

Page 50: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 51: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 52: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 53: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 54: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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

Page 55: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

2018, Edgard Jamhour

Proxy HTTP/COAP

Page 56: Endereçamento Privado Proxy e NAT - PUCPRjamhour/Pessoal/...Pacotes recebidos na porta 8080 são enviados para 192.168.0.3 na porta 80. • iptables -t nat -A PREROUTING -j DNAT-i

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.