sábado, junho 26, 2010

Polêmica: NAT e a Segurança

Contexto


    Durante a minha experiência de 3 anos como estagiário no POP-RS da RNP estive envolvido no suporte de redes de computadores das universidades federais do Brasil. Uma das situações que mais me surpreenderam e interessaram trata sobre a polêmica do NAT.

    Esta polêmica não é apenas particular às universidades federais, mas está presente em todo o contexto de redes corporativas no Brasil e no mundo. Ao final, a grande polêmica é: o NAT é uma técnica de segurança de redes de computadores ? Uma rede com NAT é mais segura que uma rede sem NAT ?

    Existem muitas fontes de informação sobre este assunto. De certa forma, acabei utilizando este site como referência técnica: http://fishbowl.pastiche.org/2003/09/22/nat_and_security/. As explicaçõs apresentadas pelo autor são bastante equilibradas e vão de encontro com as minhas próprias.

O que é o NAT ?


    Sem entrar em explicações completas sobre o que é o NAT, seus diversos tipos e modificações ao longo do tempo podemos dizer:

    "NAT é o processo de modificar o endereço de rede (Camada 3) no cabeçalho do datagrama IP durante seu trânsito por um gateway ou roteador com o propósito de mapear um espaço de endereçamento por um outro distinto".

    Desta forma o NAT é utilizado com os endereços de rede privados (RFC 1918), criando uma rede privada separada da rede pública (tipicamente a INTERNET). Todo o espaço de endereçamento privado permanece invisível perante a rede pública.

O NAT e a Segurança de Redes


    Uma grande maioria de profissionais de redes de computadores defendem que o NAT é um recurso de segurança. Sobre isso gostaria de pontuar algumas considerações:

  • Técnicamente falando, NAT não é uma técnica de firewalling, apenas mapeamento de endereços de rede por um outro tipo de endereço.
  • Na prática, todo roteador com funcionalidades de NAT já possui funcionalidades de firewalling ou acls que acompanham o uso do NAT.

    Agora, conforme outras leituras realizadas é possível dizer que um "gateway NAT" acaba funcionando como um caso especial de "stateful firewall" (mesmo sem firewall ativa). Isso acontece pelas seguintes situações criadas pelo NAT:
  • As máquinas de dentro da rede privada podem enviar pacotes para fora e estabelecer conexões.
  • As máquinas na rede pública não podem realizar conexões com as máquinas da rede interna, a menos que seja estabelecido explicitamente um tunel ou redirecionamento pelo administrador do NAT.

    Certamente estas funcionalidades de segurança fornecidas pelo NAT podem ser facilmente implementadas por qualquer firewall decente. Portanto, do meu ponto de vista, o NAT é uma solução para falta de endereçamento IP e não para fortalecer a segurança de uma rede.

sexta-feira, junho 18, 2010

Instalação da Firewall APF no CentOS

Introdução


A firewall APF é uma ótima escolha para servidores conhecidos como BASTION HOST, isto é, servidores em uma rede pública aberta e sem maiores filtros (exemplo, uma DMZ).


Os recursos do APF passam desde a clássica configuração de regras INBOUND e OUTBOUND até recursos avançados de blacklists dinâmicas, testes de integridade de pacotes e muito mais.


A página oficial do projeto é:


http://www.rfxn.com/projects/advanced-policy-firewall/


Instalação

O pacote pode ser instalado de duas formas:
  • Utilizando o pacote com instalador do site do projeto.
  • Utilizando o repositório rpmforge.

Utilizando o pacote com instalador do site do projeto

O pacote com instalador disponibilizado pelo site do projeto é moldado especificamente para a distribuição CentOS. Já ativa os scripts de inicialização e de manutenção do logrotate.


O pacote está disponível em:


http://www.rfxn.com/downloads/apf-current.tar.gz


[root@baco ~]# wget http://www.rfxn.com/downloads/apf-current.tar.gz
--2010-06-14 10:57:10--  http://www.rfxn.com/downloads/apf-current.tar.gz
Resolving www.rfxn.com... 208.76.83.136
Connecting to www.rfxn.com|208.76.83.136|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 106373 (104K) [application/x-gzip]
Saving to: `apf-current.tar.gz'

100%[=================================>] 106,373     98.1K/s   in 1.1s    

2010-06-14 10:57:12 (98.1 KB/s) - `apf-current.tar.gz' saved [106373/106373]

[root@baco ~]# gunzip apf-current.tar.gz 
[root@baco ~]# tar -xvf apf-current.tar 
[root@baco ~]# cd apf-9.7-1/
[root@baco apf-9.7-1]# ls
apf.init  CHANGELOG  COPYING.GPL  cron.daily  files  importconf  install.sh  logrotate.d.apf  README.apf

[root@baco apf-9.7-1]# ./install.sh 
Installing APF 9.7-1: Completed.

Installation Details:
 Install path:         /etc/apf/
 Config path:          /etc/apf/conf.apf
 Executable path:      /usr/local/sbin/apf

Other Details:
 Listening TCP ports: 8080
 Listening UDP ports: 47592
 Note: These ports are not auto-configured; they are simply presented for information purposes.
You must manually configure all port options.



Utilizando o repositório rpmforge

O repositório RPMFORGE disponibiliza um pacote RPM para a firewall APF.


Para adicionar o repositório RPMFORGE consultar o site:


http://rpmrepo.org/RPMforge/Using


Baixar o pacote correspondente a versão do CentOS procurada:


http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm



[root@baco ~]# rpm -Uvh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[root@baco ~]# rpm --import /etc/pki/rpm-gpg/*
[root@baco ~]# yum install apf

Utilizando o comando NETCAT (nc) no GNU/Linux

Objetivos

O NETCAT é uma ferramenta muito utilizada em testes de penetração, segurança de servidores GNU/Linux assim como validação da configuração de firewalls. 

O NETCAT funciona com uma arquitetura cliente/servidor. É possível configurar em uma máquina para que escute em determinadas portas TCP ou UDP para poder realizar diversos testes de conectividade.

Para fins de testes foram utilizadas duas máquinas, marte e omicron, com o comando nc instalado. Em ambas, a firewall IPTABLES estava desabilitada. A máquina omicron representa o servidor no qual deseja-se testar a abertura de certas portas, enquanto que a máquina marte é a que realiza os testes.

Principais opções do comando


[root@omicron ~]# nc -h
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
 [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
 [-x proxy_address[:port]] [hostname] [port[s]]
Command Summary:
    -4          Use IPv4
    -6          Use IPv6
    -D          Enable the debug socket option
    -d          Detach from stdin
    -h          This help text
    -i           secs Delay interval for lines sent, ports scanned
    -k         Keep inbound sockets open for multiple connects
    -l          Listen mode, for inbound connects
    -n         Suppress name/port resolutions
    -p         port Specify local port for remote connects
    -r         Randomize remote ports
    -s         addr Local source address
    -T         ToS Set IP Type of Service
    -C        Send CRLF as line-ending
    -t         Answer TELNET negotiation
    -U        Use UNIX domain socket
    -u        UDP mode
    -v        Verbose
    -w       secs Timeout for connects and final net reads
    -X        proto Proxy protocol: "4", "5" (SOCKS) or "connect"
    -x        addr[:port] Specify proxy address and port
    -z        Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]




Testando Portas TCP

Abrindo no servidor omicron a porta TCP 1111 e colocando ela no modo LISTEN (-l)


[root@omicron ~]# nc -4 -l 172.16.1.125 1111



Abrindo no servidor marte uma conexão cliente e realizando uma digitação de texto para verificar


[root@marte:/home/klaus]# nc 172.16.1.125 1111
Teste da marte
oi aqui é da marte


Logo aparecerá o mesmo texto digitado no servidor omicron.


Testando Portas UDP

Os testes com o protocolo UDP possuem algumas considerações para fazer.

No servidor omicron foi executado o seguinte comando:


[root@omicron nc-1.84]# nc -l -u 172.16.1.125 2525



No cliente marte foi executado o seguinte comando:


[root@marte:/home/klaus]# echo "teste UDP" | nc -w 1 -u 172.16.1.125 2525


Desta maneira aparecerá no servidor omicron o texto "teste UDP" apenas uma vez. Não é possível digitar interativamente um texto para enviar entre o cliente e o servidor como no caso do UDP.



quinta-feira, junho 03, 2010

Resumo das Características Básicas do IPv6

Resumo das Características Básicas do IPv6


IPv6 é a nova versão do Protocolo de Internet (Internet Protocol version 6). Ela deverá substituir progressivamente o protocolo atual da Internet, o IPv4 (Internet Protocol version 4), estendendo o espaço de endereçamento corrente, que se tornou insuficiente para acomodar a atual taxa de crescimento da rede.

Os novos endereços têm 128 bits de comprimento (contra os atuais 32 do IPv4), possibilitando um aumento significativo no número de hosts. As caracterí sticas IPv6 são, dentre outras:

  • 128 bits de espaço de endereçamento;
  • arquitetura de endereçamento melhor estruturada;
  • suporte para "datagramas jumbo" (o IPv4 suporta somente 64 Kbytes no tamanho do pacote);
  • mobilidade;
  • configuração plug-and-play (stateless address config);
  • mecanismos de segurança, incluindo encriptação e autenticação;
  • suporte para multicasting e anycasting;
  • suporte a aplicações multimídia em tempo real.

Embora pilhas IPv6 nativas não possam interoperar diretamente com pilhas IPv4, mecanismos de compatibilidade IPv4 foram introduzidos no IPv6 para assegurar uma transição mais fácil.


Fonte: http://www.rnp.br/ipv6/ipv6-sobre.html