Firewalls
Artigos Científicos: Firewalls. Pesquise 861.000+ trabalhos acadêmicosPor: welinaldo • 10/5/2013 • 1.081 Palavras (5 Páginas) • 708 Visualizações
FreeBSD
NAT (Network Address Translation)
IPFW2 + NATD
O NAT - Network Address Translation, ou Tradução de Endereço de Rede - é um mecanismo que permite por exemplo que máquinas com endereços IPs de redes privadas se comuniquem com máquinas na Internet, que possuem IPs válidos. O daemon que implementa o NAT no FreeBSD é o natd.
Um gateway rodando o natd irá alterar os pacotes que vão para a rede externa fazendo com que o IP de origem destes pacotes seja o endereço do gateway, e para cada pacote alterado cria uma entrada em uma tabela interna para registrar isso. A porta de origem também é alterada para indicar a entrada relacionada ao pacote na tabela. Todos os pacotes que chegam tendo como destino o gateway são verificados contra a tabela. Caso possua algum registro na tabela, o pacote é encaminhado para o IP interno e a porta correta.
Para fazer o NAT desta forma, é preciso que o daemon natd esteja rodando em uma porta específica. O IPFW filtra o tráfego decidindo o que deve ser encaminhado para NAT, e faz isso através de um socket divert.
Para que o NAT funcione com IPFW2, são necessárias as seguintes opções no kernel:
options IPFIREWALL
options IPFW2
options IPDIVERT
Veja maiores detalhes na seção de configuração do IPFW2, é importante saber como funciona, pois o NATD sozinho não fará nada. O firewall deverá estar configurado e funcionando.
Também é necessário que a máquina atua como Gateway. Para isso, insira a seguinte linha no arquivo /etc/rc.conf:
gateway_enable="YES"
Segue abaixo a descrição dos principais parâmetros do natd:
-log
Faz o log de algumas informações no arquivo /var/log/alias.log. Este arquivo é truncado cada vez que o natd for inicializado.
-deny_incoming
Não permite a passagem de pacotes que não possuam uma entrada na tabela interna de tradução.
-log_denied
Faz um log de cada pacote bloqueado, via syslog. É interessante direcionar este log para um arquivo, via /etc/syslog.conf.
-log_facility daemon
Faz o log com a "facilidade" do syslog especificada.
-use_sockets
Aloca um socket para cada conexão ftp data, permitindo melhor funcionamento do FTP.
-same_ports
Tenta manter a mesma porta quando altera os pacotes de saída. Com isso, protocolos como RPC têm mais chances de funcionar.
-verbose
Não se torna um daemon, fica rodando no console. Útil para debug.
-unregistered_only
Altera apenas os pacotes de saída que pertençam a redes privadas (RFC1918).
-redirect_port proto ipdestino:portadestino [ipalias:]portaalias [ipremoto[:portaremota]]
Redireciona conexões de entrada na porta "portaalias" para o host "ipdestino" na porta "portadestino". O parâmetro "proto" deverá ser tcp ou udp. O parâmetro "ipalias" pode ser utilizado para especificar o endereço da placa de rede onde a máquina deverá esperar este tipo de conexão. Os parâmetros "ipremoto" e "portaremota" podem ser especificados se você deseja determinar que somente as conexões vindas deste ip e porta deverão ser redirecionadas.
-redirect_proto proto iplocal [ippublico [ipremoto]]
Redireciona os pacotes de entrada do protocolo "proto" destinados ao endereço "ippublico" para o endereço "iplocal". Os protocolos se encontram listados em /etc/protocols. Se "ippublico" não for especificado, será utilizada a interface de tradução padrão. Se o parâmetro "ipremoto" for especificado, apenas os pacotes vindos deste endereço serão redirecionados.
-redirect_address iplocal ippublico
Redireciona o tráfego que chega em "ippublico" para o host "iplocal". Esta função é conhecida como SNAT - Static NAT, ou NAT Estático.
-redirect_port proto ipdestino:portadestino[,ipdestino:portadestino[,...]] [ipalias:]portaalias [ipremoto[:portaremota]]
-redirect_address iplocal[,iplocal[,...]] ippublico
Estes formatos de "-redirect_port" e "-redirect_address" são utilizados para distribuir de forma transparente a carga de um servidor entre vários. Essa função é conhecida como LSNAT - Load Sharing NAT - definida pela RFC2391. Cada conexão será direcionada para uma máquina, em ordem round-robin.
-port porta
Utiliza a porta especificada para operação. Note que trata-se de uma porta "divert". Se esta opção não for especificada, é utilizada a porta padrão do natd, que é 8668, conforme especificado em /etc/services.
-alias_address endereço
Utiliza o endereço especificado para fazer a tradução. Este endereço deverá ser de uma interface de rede da máquina local e geralmente é da interface conectada a rede externa. Esta opção ou a opção abaixo (uma das duas) deve ser sempre utilizada.
-interface interface
Especifica a interface de rede em que será feita a tradução. Similar ao "-alias_address endereço", geralmente é a interface que se conecta à rede
...