Vous êtes sur la page 1sur 19

UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DAS CINCIAS EXATAS E TECNOLGICAS CURSO DE ANLISE DE SISTEMAS

Implementando Network Address Translation (NAT) com Linux


Administrao e Gerncia de Redes

Balbino Souza Jr. Karin Magedanz Ndia Borges

Prof. Dr. Luciano Paschoal Gaspary

So Leopoldo, Novembro de 2005.

Sumrio
Introduo ....................................................................................................................... 3 1. O que NAT?.............................................................................................................. 4 1.1. Por que o NAT foi inventado?.............................................................................. 4 1.2. Descrio detalhada da utilizao do NAT........................................................... 5 1.3. Problemas de segurana........................................................................................ 8 1.4. Limitaes............................................................................................................. 9 2. Configurando NAT no Linux .................................................................................. 11 2.1. Configurao do Linux ....................................................................................... 12 2.2. Configurao das estaes Windows XP............................................................ 14 2.3. Testes Utilizando PING ...................................................................................... 15 2.4. Testes Utilizando Remote Desktop do Windows ............................................... 16 Concluso ...................................................................................................................... 18 Bibliografia.................................................................................................................... 19

Introduo
Quando as empresas passaram a utilizar a Internet como uma forma de comunicao, surgiu a necessidade de permitir que as mquinas das redes provadas pudessem ter acesso simultneo grande rede mundial de computadores. Entretanto, o nmero de endereos IP da internet limitado e dessa forma no seria possvel atribuir um endereo vlido a todos os computadores de todas as redes privadas do mundo. Surgiu ento uma forma alternativa de disponibilizar o acesso internet as redes privadas, mesmo que elas utilizem IPs falsos: NAT - Network Address Translation. Esse trabalho elucidar os conceitos que existem por trs do NAT, como ele configurado, assim como as vantagens e as desvantagens de se utilizar essa soluo.

1. O que NAT?
NAT, Network Address Translation, uma tcnica que permite reescrever os endereos IP de origem de um pacote que passam sobre um router ou firewall, de maneira que um computador de uma rede interna tenha acesso a uma rede externa. Essa tcnica normalmente utilizada para liberar acesso a Internet as rede privadas. Em outras palavras, podemos dizer que NAT um tradutor de endereos de rede que visa minimizar a escassez dos endereos IP. O NAT no um protocolo nem um padro, apenas uma srie de tarefas que um roteador (ou equipamento equivalente) deve realizar para converter endereos IPs entre redes distintas. Um equipamento que tenha o recurso de NAT deve ser capaz de analisar todos os pacotes de dados que passam por ele e trocar os endereos desses pacotes de maneira adequada.

1.1. Por que o NAT foi inventado?

O NAT surgiu como uma alternativa real para o problema de falta de endereos IPv4 na Internet. Cada computador que acessa a Internet deve ter o protocolo TCP/IP configurado. Para isso, cada computador da rede interna, precisaria de um endereo IP vlido na Internet. Com o grande aumento dirio de computadores acessando a internet, chegou-se concluso de que no haveria endereos IPv4 suficientes. A criao do NAT veio para solucionar esta questo (ou pelo menos fornecer uma alternativa at que o IP v6 esteja em uso na maioria dos sistemas da Internet). Com o uso do NAT, os computadores da rede interna, utilizam os chamados endereos privados. Os endereos privados no so

vlidos na Internet, isto , pacotes que tenham como origem ou como destino, um endereo na faixa dos endereos privados, no sero encaminhados, sero descartados pelos roteadores. O software dos roteadores est configurado para descartar pacotes com origem ou destino dentro das faixas de endereos IP privados. As faixas de endereos privados so definidas na [RFC 1597] e so indicados a seguir: 10.255.255.255 172.31.255.255 192.168.0.0 192.168.255.255

Logo podemos afirmar que o NAT foi criado com o objetivo de suportar o crescimento das redes de computadores na Internet e a escassez de endereos IP vlidos. Neste contexto, o NAT buscou oferecer um mtodo de criao de redes privativas, com endereos no roteveis, que poderiam passar por um sistema que faria a traduo para um endereo vlido e rotevel, capaz de ser reconhecido em toda a Internet.

1.2. Descrio detalhada da utilizao do NAT

Pelo fato dos endereos privados no poderem ser utilizados diretamente na Internet, isso permite que vrias empresas utilizem a mesma faixa de endereos privados, como esquema de endereamento da sua rede interna. Ou seja, qualquer empresa pode utilizar endereos que estejam nas faixas anteriormente indicadas. Com o uso do NAT, a empresa fornece acesso Internet para um grande nmero de computadores da rede interna, usando um nmero bem menor de endereos IP, vlidos na Internet. Por exemplo, uma rede com 100 computadores, usando um esquema de endereamento 10.10.0.0/255.255.0.0, poder ter acesso Internet, usando o NAT, usando um nico endereo IP vlido: o endereo IP da interface externa do NAT. Observe que com isso temos uma grande economia de endereos IP: No nosso

exemplo temos 100 computadores acessando a Internet (configurados com endereos IP privados), os quais utilizam um nico endereo IP vlido, que o endereo IP da interface externa do servidor configurado como NAT. Se houver mais de um cliente acessando a Internet ao mesmo tempo e o NAT possui apenas um endereo IP vlido (ou em outras situaes, se houver um nmero maior de clientes internos acessando a Internet, do que o nmero de endereos IP disponveis no NAT. E o nmero de endereos IP, disponveis no NAT sempre ser menor do que o nmero de computadores da rede interna, uma vez que um dos principais objetivos do uso do NAT reduzir a quantidade de nmeros IP vlidos), como possvel a comunicao de mais de um cliente, ao mesmo tempo, com a Internet? Quando a resposta retorna, como o NAT sabe para qual cliente da rede interna ela se destina, se houver mais de um cliente acessando a Internet? Inicialmente vamos observar que o esquema de endereamento utilizado pela empresa do nosso exemplo (10.10.0.0/255.255.0.0) est dentro de uma faixa de endereos privados. Aqui est a principal funo do NAT, que o papel de traduzir os endereos privados, os quais no so vlidos na Internet, para o endereo vlido, da interface pblica do servidor com o NAT. Para entender exatamente o funcionamento do NAT, vamos considerar um exemplo prtico. Imagine que voc tem cinco computadores na rede, todos usando o NAT. Os computadores esto utilizando os seguintes endereos: 10.10.0.10 10.10.0.11 10.10.0.12 10.10.0.13 10.10.0.14 O computador com o NAT habilitado tem as seguintes configuraes: IP da interface interna: 10.10.0.1

IP da interface externa: Um ou mais endereos vlidos na Internet, obtidos a partir da conexo com o provedor de Internet, mas sempre em nmero bem menor do que a quantidade de computadores da rede interna. Quando um cliente acessa a Internet, no pacote de informao enviado por este

cliente, est registrado o endereo IP da rede interna, por exemplo: 10.10.0.10. Porm este pacote no pode ser enviado pelo NAT para a Internet, com este endereo IP como endereo de origem, seno no primeiro roteador este pacote ser descartado, j que o endereo 10.10.0.10 no um endereo vlido na Internet (pois um endereo que pertence a uma das faixas de endereos privados, conforme descrito anteriormente). Para que este pacote possa ser enviado para a Internet, o NAT substitui o endereo IP de origem por um dos endereos IP da interface externa do NAT (endereo fornecido pelo provedor de Internet e, portanto, vlido na Internet). Este processo que chamado de traduo de endereos, ou seja, traduzir de um endereo IP interno, no vlido na Internet, para um endereo IP externo, vlido na Internet. Quando a resposta retorna, o NAT repassa a resposta para o cliente que originou o pedido. Mas ainda fica a questo de como o NAT sabe para qual cliente interno a resposta, se os pacotes de dois ou mais clientes podem ter sido traduzidos para o mesmo endereo IP externo. A resposta para estas questo a mesma. O NAT ao executar a funo de traduo de endereos, associa um nmero de porta, que nico, com cada um dos computadores da rede interna. A traduo de endereos funciona assim: 1. Quando um cliente interno tenta se comunicar com a Internet, o NAT substitui o endereo interno do cliente como endereo de origem, por um endereo vlido na Internet. Mas alm do endereo tambm associada uma porta de comunicao. Por exemplo, vamos supor que o computador 10.10.0.12 tenta acessar a Internet. O NAT substitui o endereo 10.10.0.12 por um endereo vlido na Internet, vou chutar um: 144.72.3.21. Mas alm do nmero IP tambm associada uma porta, como por exemplo: 144.72.3.21:6555. O NAT mantm uma tabela interna onde fica registrado que, comunicao atravs da porta tal est relacionada com o cliente tal. Por exemplo, a tabela do NAT, em um determinado momento, poderia ter o seguinte contedo:

144.72.3.21:6555 10.10.0.10 144.72.3.21:6556 10.10.0.11 144.72.3.21:6557 10.10.0.12 144.72.3.21:6558 10.10.0.13 144.72.3.21:6559 10.10.0.14

Observe que todos os endereos da rede interna so traduzidos para o mesmo endereo externo, porm com um nmero diferente de porta para cada cliente da rede interna. 2. Quando a resposta retorna, o NAT consulta a sua tabela interna e, pela identificao da porta, ele sabe para qual computador da rede interna deve ser enviada a referida resposta, uma vez que a porta de identificao est associada com um endereo IP da rede interna. Por exemplo, se chegar um pacote endereado a 144.72.3.21:6557, ele sabe que este pacote deve ser enviado para o seguinte computador da rede interna: 10.10.0.12, conforme exemplo da tabela anterior. O NAT obtm esta informao a partir da tabela interna, descrita anteriormente. Com isso, vrios computadores da rede interna, podem acessar a Internet, ao mesmo tempo, usando um nico endereo IP ou um nmero de endereos IP bem menor do que o nmero de computadores da rede interna. A diferenciao feita atravs de uma atribuio de porta de comunicao diferente, associada com cada IP da rede interna. Este o princpio bsico do NAT Network Address Translation (Traduo de Endereos IP).

1.3. Problemas de segurana


Para muitos usurios o NAT em modo unidirecional causa a impresso de segurana e total proteo contra os hosts externos. Mas na realidade, no caso de abertura de uma nova seo para um host externo, o NAT permite que qualquer pacote desta seo seja repassado para o host interno na mesma porta em que a seo foi aberta. Somente isso j pode tornar a rede vulnervel a ataques. Essa vulnerabilidade se torna ainda mais evidente quando um usurio de um host interno acessa um determinado site com contedo malicioso, pois o NAT no possui nenhum mecanismo que no permita o retorno de pacotes com dados maliciosos. Em alguns pacotes de NAT

no ocultam informaes sobre os hosts internos, permitindo que sejam facilmente descobertos dados como nome do host interno, endereos no roteveis, verso e sistema operacional utilizado, entre outros. Ainda neste modo, possvel que o header de pacotes IP seja forjado, parecendo que este seja originado a partir da rede interna, fazendo com que o NAT permita sua passagem para o host na rede interna. Obviamente, atravs de NAT no existe nenhuma proteo contra vrus. J no modo de converso de portas (Port Address Translation), montada uma tabela com endereos / portas externos para endereos / portas de hosts internos e vice-versa. Nesta situao, estas portas mapeadas podem receber conexes mal intencionadas ou mesmo explorar servios neste host interno, da mesma forma realizada caso fosse utilizado um endereo vlido. As conexes com demais portas no mapeadas so rejeitadas. Isso no acaba incrementando muito a segurana j que a maioria dos ataques so aplicados em portas conhecidas de servios como FTP, Sendmail, SSH, Telnet, DNS, POP e IMAP que so normalmente abertas para o uso desses servios. Uma vez existindo o mapeamento externo -> interno para estas portas, estes servios podem sofrer a ao de exploits e o NAT nada pode fazer para evitar isso. Para tornar a situao ainda mais perigosa, muitos usurios que utilizam NAT acabam deixando de lado a necessidade de utilizao de firewalls e outros sistemas de filtros de servios e hosts, aumentando ainda mais a faixa de origem de ataques.

1.4. Limitaes
Nem todas as aplicaes trabalham de forma transparente com o NAT, visto que em alguns casos as mudanas em pacotes de nvel de Rede e Enlace acabam impossibilitando em alguns protocolos seu funcionamento normal. Isso no quer dizer que seja impossvel torn-los funcionais com NAT, mas algumas vezes necessria a criao de novos mdulos para que o NAT seja de fato transparente. Alguns exemplos de aplicativos e protocolos que apresentam problemas no uso com NAT so os que utilizam criptografia quando utilizadas funes de assinatura digital ou mesmo funo como a "modification-proof function". Em protocolos como RPC so utilizadas 3 portas UDP para o estabelecimento de uma sesso e neste estabelecimento entre o cliente e servidor RPC so passados dados como IP e porta no prprio pacote, tornando a utilizao com NAT falha. Em outros casos, como a utilizao em videoconferncias

10

atravs do protocolo H.323, ocorre a negociao do IP / porta para o estabelecimento de sesses de seus subprotocolos para transmisses de udio e vdeo em tempo real. O problema surge na utilizao de portas randmicas e em grande nmero em alguns casos, impossibilitando que o administrador mapeie todas as portas possveis que podero ser utilizadas e ainda, limitando as conexes para apenas um host nesta rede, pois o NAT no saber se os dados recebidos de requisies anteriores pertencem a um ou outro host da rede interna. Outros protocolos, como SSL, TLS, SET, Kerberos e Radius no apresentam problemas com a utilizao de NAT. Assim como os casos citados acima, outros protocolos tambm necessitam de alguns "ajustes", para permitir o seu funcionamento em conjunto com o NAT,e, como outros apresentados aqui, no necessariamente tornam-se funcionais. Muitos destes ajustes j esto implementados, mas a sua utilizao com ou sem NAT ficaria sob a deciso do administrador, que dependendo de sua rede, necessidades, recursos e tempo, poder tirar suas prprias decises.

11

2. Configurando NAT no Linux


Para realizar uma demonstrao de como funciona e de como se configura um NAT em um Linux, fizemos a simulao de uma rede utilizando o software VMware Workstation. Com ele criamos a seguinte estrutura em rede.

Com essa simulao de NAT, espera-se que: 1. Os pacotes sejam roteados pelo Linux entre as duas redes; 2. Todos os protocolos sejam bloqueados por motivos de segurana. 3. A estao Windows XP da rede interna consiga acessar a estao Windows XP da rede externa; 4. Pacotes que sarem da rede interna sejam mascarados com o endereo IP de sada do roteador (192.168.1.1); 5. O Linux no pode receber conexes destinadas a ele, j que ele no vai ter nenhum servio rodando. Qualquer daemon ativo poderia ser explorado por um atacante que poderia encontrar uma falha no servio e hackear o firewall, por exemplo.

12

2.1. Configurao do Linux


O servidor Linux foi configurado como roteador entre as duas redes e nele, tambm, foi configurado um NAT. Para isso, foram utilizadas duas interfaces ethernet. Essa configurao foi feita atravs do arquivo interfaces existente no diretrio /ect/network, conforme descrito abaixo:
# Interface de loopback auto lo eth0 eth1 iface lo inet loopback # Rede Externa iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 # Rede Interna iface eth1 inet static address 10.0.0.1 netmask 255.0.0.0 network 10.0.0.0 broadcast 10.255.255.255

A configurao do roteador, do NAT e das regras de firewall foram feitas no arquivo kurumin-firewall existente no diretrio /etc/init.d/ .Os comandos descritos abaixo so responsveis por ativar o roteador, o NAT e as regras de firewall.
# Conjunto de Regras 1 iptables -F iptables -X # Conjunto de Regras 2 iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE # Conjunto de Regras 3 iptables -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Conjunto de Regras 4 iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # Conjunto de Regras 5 iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT # Conjunto de Regras 6 iptables -A INPUT -j DROP iptables -A FORWARD -j DROP iptables -A OUTPUT -j DROP # Conjunto de Regras 7 echo 1 > /proc/sys/net/ipv4/ip_forward

13

# Conjunto de Regras 1 Esses comandos limpam todas as regras que estiverem ativas para iniciar do zero (flush). # Conjunto de Regras 2 Faz NAT de qualquer pacote com origem na rede interna (10.0.0.0) saindo pela interface externa. # Conjunto de Regras 3 Permite conexes com origem na interface e rede loopback. Usado pelo KDE e outros programas (padro no Linux Kurumin). # Conjunto de Regras 4 Aceita pacotes externos relacionados s conexes com origem interna (pacotes de retorno) # Conjunto de Regras 5 Permite o encaminhamento dos pacotes com origem na rede interna. # Conjunto de Regras 6 Recusa qualquer pacote no liberado nas regras anteriores. # Conjunto de Regras 7 Depois que todas as demais regras esto configuradas, habilita o forward de pacotes.

14

2.2. Configurao das estaes Windows XP


A estao Windows XP da rede externa foi configurada da seguinte forma:

15

A estao Windows XP da rede interna foi configurada da seguinte forma:

2.3. Testes Utilizando PING


Para verificar se as estaes esto conseguindo conversar entre si, dentro das regras estabelecidas, foram feitos os seguintes testes utilizando o ping. A partir da estao Windows XP da rede externa: Ping para 192.168.1.1 Ping para 10.0.0.1 Ping para 10.0.0.15 A partir da estao Windows XP da rede interna: Ping para 10.0.0.1 Ping para 192.168.1.1 Ping para 192.168.1.15 Dos testes acima descritos, apenas no ltimo (ping da estao interna para 192.168.1.15) ocorreu com sucesso. Foi instalado o software Ethereal na estao Windows XP da rede externa para monitorar o trfego de rede. Como ela percebemos que os pacotes estavam realmente sendo nateados:

16

Descrio dos pacotes monitorados: 1. Apenas pacotes ICMP. 2. A estao da rede interna (10.0.0.15) solicitou um ping para o endereo 192.168.1.15. 3. O linux identificou que deveria natear o pacote e encaminhou o request para a rede externa, mascarando o pacote como se a origem fosse o IP 192.168.1.1 e o destino continuou sendo o IP 192.168.1.15. 4. A estao da rede externa (192.168.1.15) identificou que o pacote para ela e deu o replay para o endereo 192.168.1.1. 5. O linux identificou que o pacote deveria ser roteado para a rede interna e encaminhou-o. Manteve o endereo de origem (192.168.1.15) mas alterou o destino para 10.0.0.15.

2.4. Testes Utilizando Remote Desktop do Windows


O segundo teste executado foi com o software Remote Desktop que o prprio Windows XP disponibiliza. A partir da estao da rede interna, foi acessada a estao da rede externa e o trfego de rede foi monitorado.

17

Descrio dos pacotes monitorados: 1. Apenas pacotes TCP. 2. A estao origem (10.0.0.15) iniciou o processo de handshake (SYN) do protocolo TCP, destinando o pacote para a mquina destino (192.168.1.15). 3. O pacote foi nateado pelo Linux e teve o seu endereo de origem alterado para 192.168.1.1. 4. A estao destino (192.168.1.15) respondeu (SYN, ACK) para o Linux. 5. O linux identificou que o pacote deveria ser roteado para a rede interna e encaminhou-o. Manteve o endereo de origem (192.168.1.15), mas alterou o destino para 10.0.0.15. 6. A estao origem reconheceu o retorno e enviou o pacote de ACK. 7. Novamente o linux identificou que o pacote deveria ser nateado e alterou o endereo origem dele. 8. A partir da podemos observar que comunicao entre origem e destino sempre ocorreu por intermdio do Linux.

18

Concluso
Tendo em vista o que foi exposto, podemos concluir que o uso de NAT tornouse uma excelente alternativa falta de endereos IPv4 na web, enquanto o seu sucessor o IPv6 no se torna um padro de fato. Levando-se em considerao, que o crescimento das redes privadas tem contribuindo fortemente para a escassez desses endereos na web. Mas devemos ter em mente tambm que o uso do NAT dever ser realizado de forma pensada, pois, os recursos e aplicaes utilizados na rede devero suprir resolver problemas de segurana e algumas limitaes (em relao a alguns protocolos) que o NAT possui, pois a resoluo dos mesmos constitui-se num fator de extrema importncia estratgica para as empresas.

19

Bibliografia
[1] ANDREASSON, Oskar. Iptables Tutorial 1.2.0. Disponvel em < http://iptablestutorial.frozentux.net/iptables-tutorial.html#NATINTRO>. Acesso em: out. 2005. [2] BATTISTI, Jlio. Tutorial de TCP/IP Parte 20 NAT Network Address Translation. Disponvel em <http://www.juliobattisti.com.br/artigos/windows/tcpip_p20.asp Acesso em: nov. 2005. [3] DOS SANTOS, Luiz Carlos. Como funciona o NAT? (Rede). Disponvel em < http://www.clubedasredes.eti.br/rede0005.htm>. Acesso em: nov. 2005. [4] COSTA E SILVA, Rayson Romulo. Como funciona o NAT? (Rede). Disponvel em < http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1633. Acesso em: nov. 2005.