Endereçamento Privado
Proxy e NAT
2008, Edgard Jamhour
Motivação para o Endereçamento IP Privado
• Crescimento do IPv4
 07/2007
490 milhões de hosts
 01/2008
542 milhões de hosts
 IPv4 permite endereçar 32 bilhões de hosts.
PREVISÃO DE
ESGOTAMENTO
= 1994
2008, Edgard Jamhour
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
Endereços Privados: RFC 1918
Prefixo
Faixa de Endereços
Descrição
10.0.0.0/8
10.0.0.0 a
Uma rede de endereços
classe A.
10.255.255.255
172.16.0.0/12
172.16.0.0 a
172.31.255.255
192.168.0.0/16
192.168.0.0 a
192.168.255.255
16 redes contíguas de
endereços classe B.
256 redes contíguas de
endereços classe C.
Tipos de Hosts (RFC 1918)
categoria III
categoria I
IPv4
categoria II
tradutor de IP
NAT
IPv4
Roteador Interno e Gateway Default
ip publico
gateway
default
(não roteia
IP privado)
ip publico
ip
publico
2
ip
publico
ip privado
ip privado
1
ip
privado
(roteador interno)
roteia IP privado
IPv4
Endereços e Roteamento
200.0.0.2
200.0.0.3
200.0.0.4
2
IPv4
200.0.0.1
192.168.0.2
192.168.0.3
1
192.168.0.1
192.168.0.0/24 via direta
200.0.0.0/24 via direta
0.0.0.0/0 via provedor
200.0.0.0/24 via direta
Hosts Categoria 2
200.0.0.2
roteador com NAT
se ip_origem =
192.168.0.0/24
traduzir para
200.1.0.1
200.0.0.3
200.0.0.4
2
IPv4
200.0.0.1
192.168.0.2
192.168.0.3
200.1.0.1
1
192.168.0.1
192.168.0.0/24 via direta
200.0.0.0/24 via direta
0.0.0.0/0 via provedor
200.0.0.0/24 via direta
Tradutores de Endereço
• Implementados ao nível das funções de Roteamento:
 NAT (Network Address Translation)
 NAPT (Network Address and Port Translation).
• Implementados com servidores:
 Proxy de Aplicação
 Proxy Socks.
2008, Edgard Jamhour
NAT e NAPT
IPprivado1
NAT
IPpúblico
1
IPprivado2
IPpúblico2
IPprivado3
IPpúblico3
IPprivado1
NAPT
IPpúblico1:Porta1
IPprivado2
IPpúblico1:Porta2
IPprivado3
IPpúblico1:Porta3
2008, Edgard Jamhour
Tipos de Mapeamento NAT
• NAT (Network Address Translation)
 Converte apenas endereços IP
 Efetua mapeamentos de um-para-um
 Cada endereço IP privado é mapeado em um endereço
IP público distinto.
• NAPT (Network Address and Port Translation)
 Utiliza informações das porta de transporte (TCP ou
UDP)
 Efetua mapeamentos de um-para-muitos.
 Múltiplos endereços privados podem ser mapeados em
um único endereço IP público.
2008, Edgard Jamhour
Mapeamento Estático e Dinâmico
• Estático:
 Os mapeamentos são definidos previamente, de
maneira que um dado endereço IP privado está
sempre mapeado em um mesmo IP público
• Dinâmico.
 Os mapeamentos são configuradas dinamicamente,
quando um novo fluxo é detectado.
 Os mapeamentos dinâmicos são temporários, sendo
automaticamente desfeitos quando o IP privado deixa
de ser utilizado por muito tempo.
2008, Edgard Jamhour
SNAT e DNAT
Interface de Entrada
Pré-Roteamento
[DNAT]
Interface de Saída
roteamento
Pós-Roteamento
[SNAT]
decisão sobre o
encaminhamento do pacote
2008, Edgard Jamhour
Source NAT e Destination NAT
• Source NAT: SNAT
 Altera o endereço de origem do pacote
 É implementado após a ação de roteamento (pósroteamento).
• Masquerading
• Destination NAT: DNAT
 Altera o endereço de destino do pacote
 É implementado antes do roteamento (préroteamento).
• Redirecionamento de Portas
• Balanceamento de Carga
• Proxies transparentes
2008, Edgard Jamhour
SNAT: Network Address Translation
1
192.168.0.2
4
60.1.2.3
60.1.2.3
192.168.0.2
checksum1
checksum4
2
210.0.0.1
3
60.1.2.3
60.1.2.3
checksum2
210.0.0.1 checksum3
tabela de mapeamento
192.168.0.2
192.168.0.2 = 210.0.0.1
192.168.0.3 = 210.0.0.2
60.1.2.3
192.168.0.1
IPv4 Privado
IPv4 Network
210.0.0.1 to 210.0.0.10
192.168.0.3
2008, Edgard Jamhour
NAT (IPTABLES)
• SNAT para endereço fixo:
 iptables -t nat -A POSTROUTING -o eth0 -j SNAT
--to 210.0.0.1
• SNAT com pool de endereços:
 iptables -t nat -A POSTROUTING -o eth0 -j SNAT
--to 210.0.0.1-210.0.0.10
• Masquerading efetua o mapeamento ao IP atribuído a
interface definida por -o
 iptables -t nat -A POSTROUTING -o eth0
-j MASQUERADE
2008, Edgard Jamhour
SNAPT (Network Address and Port
Translation)
request
clientes
1024
1026
192.168.0.2
IP Privado:Porta
Origem
IP Público:Porta
Origem
192.168.0.2 :1024
192.168.0.2 :1026
192.168.0.3 :1024
192.168.0.4 :1025
210.0.0.1 :1024
210.0.0.1 :1026
210.0.0.1 :1025
210.0.0.1 :1027
reply
1024
1025
1024
1026
IPv4
192.168.0.3
1025
1027
Endereço IP Público
210.0.0.1
servidor
192.168.0.4
2008, Edgard Jamhour
SNAPT
• No Linux, o mapeamento por SNAPT é configurado
através do IP tables, conforme o exemplo a seguir.
• Altera o endereço de origem para 210.0.0.1, usando as
portas 1024-65535
 iptables -t nat -A POSTROUTING -p tcp -o eth0
-j SNAT --to 1024-65535
2008, Edgard Jamhour
Mapeamentos Reversos: DNAT
servidores
reply
IP Privado:Porta
Destino
192.168.0.2 :80
192.168.0.2 :25
192.168.0.3 :80
192.168.0.4 :22
80
25
IP Público:Porta
Destino
request
210.0.0.1 :80
210.0.0.1 :25
210.0.0.1 :8080
210.0.0.1 :8081
192.168.0.2
80
25
80
192.168.0.1
8080
IPv4
192.168.0.3
22
8081
Endereço IP Público
210.0.0.1
espec.ppgia.pucpr.br
cliente
192.168.0.4
2008, Edgard Jamhour
DNAT
• DNAT da porta 8080 para IP 192.168.0.3:80.
 iptables -t nat -A PREROUTING -p tcp --dport 8080
-i eth0 -j DNAT --to 192.168.0.2:80
• Redirect da porta 80 para 3128
 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80
-j REDIRECT --to-port 3128
• DNAT balanceado para 192.168.0.2 até 192.168.0.5.
 iptables -t nat -A PREROUTING -i eth0 -j DNAT
--to 192.168.0.2-192.168.0.5
2008, Edgard Jamhour
Problemas com o NAT
1
192.168.0.2
60.1.2.3
PORT
192.168.0.2:
1025
2
210.0.0.1
3
60.1.2.3
PORT
192.168.0.2:
1025
60.1.2.3
192.168.0.2
payload
tabela de mapeamento
192.168.0.2
192.168.0.2 = 210.0.0.1
60.1.2.3
192.168.0.1
IPv4 Privado
IPv4 Network
210.0.0.1
2008, Edgard Jamhour
Tipos de FTP
• 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 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.
2008, Edgard Jamhour
Servidor Proxy
192.168.0.2
60.1.2.3
1024
80
192.168.0.1
210.0.0.1
IPv4 Privado
IPv4 Network
NAT
192.168.0.2
1024
60.1.2.3
3128
1025
192.168.0.1
IPv4 Privado
80
210.0.0.1
Proxy
IPv4 Network
Proxy de Aplicação e Proxy Socks
• Proxy de Aplicação
 utiliza informações dos protocolos da camada de
aplicação
 precisa “conhecer” as aplicações usadas pelos clientes
a fim de operar
• Proxy SOCKS.
 atua apenas no nível de transporte
 pode suportar virtualmente qualquer tipo de aplicação,
de forma semelhante ao NAT.
2008, Edgard Jamhour
Funcionamento do Proxy
192.168.0.2 192.168.0.1 1024 3128 GET /~jamhour/natproxy.tar.gz HTTP/1.1\r\n
Host: espec.ppgia.pucpr.br\r\n
192.168.0.2
1024
3128
1025
192.168.0.1
IPv4 Privado
210.0.0.1 60.1.2.3
210.0.0.1
Proxy
1025
60.1.2.3
80
IPv4 Network
80 GET /~jamhour/natproxy.tar.gz HTTP/1.1\r\n
Host: espec.ppgia.pucpr.br\r\n
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
HTTP.
 O próprio servidor proxy consulta o servidor DNS para
traduzir o nome do servidor HTTP de destino em um
endereço IP.
• No proxy SOCKS:
 Informações adicionais são incluídas pelo cliente para
facilitar a localização do servidor de destino.
 O proxy não precisa interpretar o protocolo de
aplicação.
2008, Edgard Jamhour
Proxy depende da Aplicação
Seqüência de
empacotamento
aplicação
Protocolo de Aplicação
HTTP, FTP, SMTP, etc
TCP, UDP
segmento TCP
datagrama UDP
pacote
IP
Ethernet
quadro
http
ftp
ssl
O proxy de aplicação precisa interpretar
as informações do protocolo de aplicação
(dispositivo de camada 7)
Proxy de Aplicação
• Cada protocolo de aplicação formata seu cabeçalho de
maneira diferente.
 O HTTP identifica o destino através de um campo do
tipo string, denominado “Host”.
 O SMPT utiliza a mensagem “RCPT TO”
• Um proxy de aplicação é capaz de operar apenas com um
conjunto limitado de protocolos que ele conhece.
 “HTTP”, “FTP”, “SSL” e “Gopher”.
• Inconvenientes:
 O aplicativo do cliente precisa estar preparado.
 É necessário configurar cada um dos aplicativos
informando o endereço e a porta do proxy.
2008, Edgard Jamhour
Exemplo de script de configuração
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") ||
url.substring(0, 4) == "ftp:") {
return "DIRECT";
}
else {
return "PROXY 200.192.112.146:3128";
}
}
2008, Edgard Jamhour
Mapeamento de Conexões pelo Proxy
request
clientes
1024
1026
192.168.0.2
192.168.0.3
IP Público:Porta
Origem
192.168.0.2 :1024
192.168.0.2 :1026
192.168.0.3 :1024
192.168.0.4 :1025
210.0.0.3 :1024
210.0.0.3 :1026
210.0.0.3 :1025
210.0.0.3 :1027
1026
1025
192.168.0.4
IPv4
1027
192.168.0.1
210.0.0.3
1025
reply
1024
3128
1024
IP Privado:Porta
Origem
210.0.0.1
servidor
Mapeamento de Conexões pelo Proxy
• Semelhante ao NAPT.
 Para cada conexão de cliente recebida, o proxy abre uma nova
conexão com o servidor de destino utilizando uma porta ainda não
utilizada.
 Um proxy pode atender a aproximadamente 63K clientes com um
único endereço IP.
• A conexões criadas pelo proxy são dinâmicas.
 O servidor proxy encerra a conexão com o servidor de destino no
momento que o cliente encerrar a conexão correspondente com o
proxy.
 Conexões sem uso por um tempo excessivo podem ser
encerradas de por iniciativa do proxy.
 O HTTP encerra a conexão com o servidor assim que as
informações de uma página Web são recebidas por completo.
2008, Edgard Jamhour
Outras Funções do Proxy de Aplicação
Controle de acesso por login
Filtragem de endereços e conteúdo.
Cache de objetos Web
Filtragem de Virus e Malware
Proxy de Aplicação
Cache
GET
HTTP/1.1 200 OK\r\n
GET
GET
HTTP/1.1 200 OK\r\n
HTTP/1.1 304 Not Modified\r\n
Serviços Adicionais do Proxy
1. Cache de objetos HTTP:
• armazena objetos mais acessados em cache
• permite reduzir a banda utilizada do link com a Internet.
2.
Autenticação:
• controla o acesso a Internet através de um pedido de
autenticação para usuário.
3.
Filtragem de endereços URL:
 proíbe o acesso a certos endereços na Internet.
4.
Filtragem de conteúdo:
• proíbe a transferência de objetos com certos tipos MIME (video,
áudio, executáveis, etc.)
5. Bloqueio e remoção de virus e malware:
• proibe a entrega de objetos com virus ou algum tipo de malware.
2008, Edgard Jamhour
Proxy Socks
user jamhour want connect to
60.1.2.3:80
request granted
user jamhour want bind to
60.1.2.3:80
proxy
socks
bind on
210.0.0.3:4000
1024
4000
1080
IPv4
cliente
192.168.0.3
192.168.0.1
210.0.0.3
servidor
60.1.2.3
2008, Edgard Jamhour
Versões do SOCKS
• Originalmente desenvolvido por David Koblas, e subseqüentemente
modificado e entendido pelo IETF.
 permite que o cliente se identifique e que informe os dados do
servidor que deseja acessar.
 funciona para qualquer tipo de serviço: http, ftp, ssh, etc.
• Atualmente, existem duas versões do protocolo SOCKS:
• versão 4 (v4):
 suporta apenas TCP.
 funciona como um redirecionador de conexões TCP
 permite acesso a qualquer serviço através de firewalls.
• versão 5 (v5):
 suporta ambos os protocolos de transporte: TCP e UDP.
2008, Edgard Jamhour
SOCKv4
• Oferece dois serviços para os clientes: connect e bind.
• connect
 é usado quando o cliente deseja fazer uma conexão com um
servidor externo.
 o cliente fornece seu login, o IP e a porta do servidor que deseja
acessar.
• bind
 é usado para que o cliente possa receber uma conexão de um
host externo.
 o cliente solicita ao Proxy que ele crie uma porta para receber
conexões de um determinado host externo.
 o proxy SOCKS cria a porta, e responde para o cliente informando
em qual porta e endereço IP (caso ele tenha múltiplas interfaces
de rede) o host externo poderá fazer a conexão.
2008, Edgard Jamhour
Proxy Socks
configuração global
para todos os
aplicativos
aplicação
biblioteca sockets
modificada
S.O.
proxy
SOCKS
TCP
UDP
servidor
IP
IPv4
cliente
protocolo
SOCKS
TCP ou UDP não
modificado
2008, Edgard Jamhour
SOCKSv5
• A versão corrente do protocolo SOCKs é 5.0 definido nas
RFCs 1928 e 1929.
 Melhorias: o suporte a aplicações UDP e a vários
métodos de autenticação.
• Além do connect e bind, foi incluido o serviço UDP
Associate.
 O cliente envia o UDP Associate via TCP, informando o
IP e a porta do servidor de destino.
 O cliente transmite dados via datagrams UDP
modificados, que incluem um pequeno cabeçalho com
o endereço IP e porta do servidor de destino.
 O proxy SOCKs só aceita encaminhar datagramas
UDP para UDP Associates previamente criados.
2008, Edgard Jamhour
Formas de Configuração
• Por aplicativo:
 Similar ao proxy de aplicação
 Cada aplicativo precisa ser modificado para gerar as
mensagens connect, bind e UDP Associate
necessárias.
• No sistema operacional
 Cliente proxy SOCKS. Esse cliente modifica a
biblioteca de
 Chamadas TCP e UDP são modificadas para incluir as
mensagens SOCKS
 Funciona com aplicativos legados
 Permite uma única configuração global para todo o
sistema.
2008, Edgard Jamhour
Conclusão
•
•
•
IP privado
 resposta a tendência de esgotamento de endereços IPv4, que se
acelerou no início dos anos 90.
 poucas limitações para hots clientes
 bastante 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
 não transparente para os clientes
 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.
2008, Edgard Jamhour
Download

192.168.0.2