quinta-feira, novembro 18, 2010

Configuração SSH Firewall H3C SECPATH F1000-S

Introdução


A firewall SECPATH funciona como um servidor SSH 1.5 e 2.0 e como um cliente SSH 2.0. Por motivos de segurança exige-se utilizar, tanto para o servidor como para o cliente, a versão 2.0.

Existem duas formas de autenticação:
  • Autenticação por senha.
  • Autenticação por chave RSA.

Por padrão, o IP de origem de cada pacote enviado pelo Servidor SSH é o IP da interface por onde o pacote saiu (ou foi originado).

Configurações do Servidor SSH


1) Criar as chaves públicas e privadas da firewall.

[H3C] rsa local-key-pair-create

2) Habilitar o protocolo SSH nas interfaces VTY

[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] authentication-mode scheme
[H3C-ui-vty0-4] protocol inbound ssh
[H3C-ui-vty0-4] quit

3) Habilitar o SSH como serviço de login de um usuário

[H3C] local-user joao
[H3C-luser-joao] password simple <my-secret>
[H3C-luser-joao] service-type ssh
[H3C-luser-joao] quit
[H3C] ssh user joao authentication-type password

4) A forma padrão de autenticação será password

[H3C] ssh authentication-type default password

5) O tempo de espera durante a autenticação será de 40 segundos

[H3C] ssh server timeout 40

6) O número de tentativas de login será de 2 vezes.

[H3C] ssh server authentication-retries 2

7) O tempo de renovação da chave do servidor (utilizada na negociação) é de 1 hora

[H3C] ssh server rekey-interval 1

8) Desabilitar a compatibilidade com clientes versão 1.5

[H3C] undo ssh server compatible-ssh1x

Utilizando o Cliente SSH


Antes de utilizar o cliente SSH é necessário estabelecer o parâmetro:

[H3C] ssh client first-time enable

Este parâmetro permite que o cliente procure ter acesso ao servidor e obter a chave pública através de negociação. Essa chave será armazenada na firewall para utilização em outros acessos SSH.

Para conectar-se em um servidor SSH ativo no IP 200.14.64.24 e na porta 4788 é necessário utilizar o comando:

[H3C] ssh2 200.14.64.24 4788

No arquivo de configuração aparecerá a chave pública do servidor contactado pelo cliente.

Modelo de configurações


#
 rsa peer-public-key 200.14.64.14
  public-key-code begin                   
      [ ... chave omitida ... ]               
  public-key-code end                     
 peer-public-key end                      
#
 rsa peer-public-key 200.14.64.24
  public-key-code begin
      [ ... chave omitida ... ]
  public-key-code end
 peer-public-key end
#                                
local-user joao                       
 password cipher <a-secret> 
 service-type ssh                         
 level 3                                            
#
 ssh authentication-type default password
 ssh server timeout 40                    
 ssh server authentication-retries 2
 ssh server rekey-interval 1
 undo ssh server compatible-ssh1x
 ssh client 200.14.64.14 assign rsa-key 200.14.64.14
 ssh client 200.14.64.24 assign rsa-key 200.14.64.24
#
user-interface con 0
user-interface aux 0
user-interface vty 0 4
 authentication-mode scheme
 protocol inbound ssh
#

segunda-feira, novembro 15, 2010

Configurações e Comandos Cisco

Comandos para diagnóstico geral
Switch# show running-config
Switch# show startup-config
Switch# show version
Switch# dir flash:
Switch# show flash

Comandos para diagnóstico de interface

Switch# show interface fastethernet 0/4

Comandos para diagnóstico de VLANs

Switch# show interface vlan 1
Switch# show ip interface vlan 1
Switch# show vlan
Switch# show vlan id 2
Switch# show vlan name VLAN2

Comandos para diagnóstico de tabela CAM (mac-address)

Switch# show mac-address-table

Comandos para diagnóstico de características da interface

Switch# show port-security

Comandos para diagnóstico de STP

Switch# show spanning-tree brief

Comandos para configurações gerais de um switch

Switch# copy running-config startup-config
Switch# hostname Meu-Cisco
Switch# clear mac-address-table dynamic

Tarefa - Excluir todas as configurações de um switch e colocá-lo nos padrões de fábrica

Switch# erase startup-config
Switch# delete flash:vlan.dat
Switch# reload

Tarefa - Configurar Usuário e Senha na Console e para Acesso Telnet

Switch(config)# line console 0
Switch(config-line)# password cisco
Switch(config-line)# login

Switch(config)# line vty 0 15
Switch(config-line)# password cisco
Switch(config-line)# login

Tarefa - Configurar senhas para acesso ao modo privilegiado

Switch(config)# enable password cisco
Switch(config)# enable secret cisco

Tarefa - Configurar parâmetros de uma porta ethernet de swich

Switch(config)# interface gigabitethernet 0/5
Switch(config-if)# speed 100
Switch(config-if)# duplex full

Tarefa - Configurar Acesso Camada 3 do Switch através da VLAN 1

Switch(config)# interface vlan 1
Switch(config-if)# ip address 192.168.1.2 255.255.255.0
Switch(config-if)# no shutdown
Switch(config-if)# exit
Switch(config)# ip default-gateway 192.168.1.1

Tarefa - Configurar um endereço MAC estático

Switch(config)# mac-address-table static 00e0.2917.1884 vlan 1 interface fastethernet 0/4

Tarefa - Configurar aprendizagem fixa de endereços MAC (sticky)

Switch# configure terminal
Switch(config)# interface fastethernet 0/4
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security mac-address sticky
Switch(config-if)# switchport port-security maximum 1
Switch(config-if)# switchport port-security violation shutdown
Switch(config-if)# exit

Tarefa - Criar vlans em um Switch

Switch# vlan database
Switch(vlan)# vlan 2 name VLAN2
Switch(vlan)# vlan 3 name VLAN3
Switch(vlan)# exit

Tarefa - Excluir VLANs configuradas em um switch

Switch# vlan database
Switch(vlan)# no vlan 2
Switch(vlan)# exit

Atenção: a VLAN 1 (default) não pode ser excluída.

Tarefa - Alocar portas de um switch em uma determinada VLAN

Switch# configure terminal
Switch(config)# interface fastethernet 0/2
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 2
Switch(config-if)# end

Tarefa - Configurar um enlace trunk entre dois switches 2960 (encapsulamento 802.1Q padrão)

Switch_A# configure terminal
Switch_A(config)# interface fastethernet 0/1
Switch_A(config-if)# switchport mode trunk
Switch_A(config-if)# exit

Switch_B# configure terminal
Switch_B(config)# interface fastethernet 0/1
Switch_B(config-if)# switchport mode trunk
Switch_B(config-if)# exit

Caso seja necessário configurar o tipo de encapsulamento utilizar o comando:

Switch(config-if)# switchport trunk encapsulation dot1q

Tarefa - Configurar um switch no modo VTP SERVER

Switch# vlan database
Switch(vlan)# vtp server
Switch(vlan)# vtp domain group1
Switch(vlan)# exit

Tarefa - Configurar um switch no modo VTP CLIENT

Switch# vlan database
Switch(vlan)# vtp client
Switch(vlan)# vtp domain group1
Switch(vlan)# exit

Tarefa - Redefinindo o root bridge

Switch# configure terminal
Switch(config)# spanning-tree priority 1
ou
Switch(config)# spanning-tree vlan 1 priority 4096

quarta-feira, outubro 13, 2010

Segurança na Camada 2 - Parte 1

Introdução

Normalmente a preocupação de todo gestor de segurança de tecnologia da informação está focado em equipamentos como roteadores e firewalls. Devido a isso, o trabalho de proteção dos recursos de TI fica restrito apenas na Camada 3 e nas suas peculiaridades. Portanto, equipamentos e peculiaridades da Camada 2 são totalmente negligenciados.

Essa tendência de extremo cuidado com firewalls e roteadores deve-se ao fato de que são esses os equipamentos que separam a intranet corporativa das outras redes externas (ou Internet). Como a tendência é imaginar que a absoluta maioria das ameaças provem da Internet, a intranet e seus principais equipamentos (Switches) são totalmente esquecidos no planejamento da segurança de TI.

Descuidar a possibilidade da intranet tornar-se um alvo de ataques digitais é um grande erro que precisa ser corrigido no momento de estabelecer o Plano de Segurança da TI.

A Grande Esquecida pela Segurança: A Intranet

A intranet é uma fonte de vulnerabilidades na segurança da TI pelos seguintes motivos:

  • Equipamentos de Camada 2 (switches) não são configurados pensando na segurança.
  • Equipamentos de Camada 3 (roteadores e switches) não possuem regras (ou são muito abertas) para estações e pacotes de dados originados na intranet.
  • Quase nunca se pensa que uma ataque ou ameaça digital possa ser originada internamente.

Principais Ataques de Camada 2

Sem esgotar todos os tipos de ataques que podem acontecer na Camada 2 existem dois deles muito utilizados:

  • CAM Table Overflow
  • Man-in-the-Middle Attack

1) CAM TABLE OVERFLOW

Este tipo de ataque acontece quando um cracker, utilizando uma estação conectada em um switch de uma intranet, começa a gerar uma série de quadros com endereços MAC falsificados ou aleatórios. O objetivo é esgotar a capacidade de armazenamento da tabela CAM (Content Addressable Memory), a qual armazena os endereços MAC (para realizar o mapeamento entre endereço MAC e porta do switch). Desse modo, com a tabela CAM completamente cheia, o switch passa a comportar-se como um hub, replicando todos os quadros por todas as portas. Assim, e utilizando um programa de captura de quadros/pacotes (como Wireshark) o cracker poderá obter uma cópia de todo o tráfego que está atravessando o switch atacado, realizando assim captura de informações ou até senhas através de protocolos que não são criptografados. 

Para mitigar essa vulnerabilidade é importante verificar as seguintes considerações:

  • Verificar qual o comportamento do switch quando a tabela CAM está completamente cheia.
  • Configurar as portas do switch para apenas suportar um único endereço MAC por porta.

2) MAN-IN-THE-MIDDLE ATTACK

Este tipo de ataque é realizado da seguinte maneira: um cracker, utlizando uma estação conectada em um switch de uma intranet, descobre o endereço MAC do default gateway local (executando um ping, por exemplo). Com esse endereço, realiza um Gratuitous ARP anunciando que o endereço MAC do default gateway local possui o endereço IP da estação comprometida. Caso essa técnica tenha efeito, ocorrerão dois problemas: as estações vão enviar os pacotes para o IP da estação comprometida e o switch irá mapear o endereço MAC original do default gateway local para a porta onde a estação comprometida está conectada.

Dessa forma, todos os pacotes destinados para o default gateway local serão enviados para a estação comprometida, a qual pode, após copiar ou analizar os pacotes, rotear para o default gateway local verdadeiro para não interromper a comunicação e assim passar desapercebido.

Para mitigar essa vulnerabilidade é importante verificar se o switch possui filtros para a o Gratuitous ARP, assim como mapear estaticamente em qual porta do switch o default gateway local está conectado.

quinta-feira, setembro 23, 2010

Simples Programa de Backup de MySQL

#!/bin/bash
#
# ===========================
# Programa de Backup de MySQL
# ===========================
#
#
#
# Objetivos
# =========
#
#  Executar um backup de todas as tabelas de cada servidor MySQL em produção da UFCSPA
#
#
# Responsáveis 
# ============
#
#  - Klaus Engelmann (programação)
#  - Anderson Domingues (validação de dados)
#
# Histórico
# =========
#
#  - (Klaus Engelmann - 21/09/2010)
#      - Início do desenvolvimento. 
#        - Habilitar programa para o moodle.ufcspa.edu.br e anubis.ufcspa.edu.br.
#        - Desenvolver parte "1" do algoritmo.
#        - Desenvolver parte "2" do algoritmo.
#        - Execução de Testes de Mesa.
#        - A variável hostname do mysqldump deve ser declarada durante a execução do laço.
#        - Mudar o formato da data para contabilizar minutos e segundos.
#        - A variável DATA deve ser declarada durante a execução do laço.
#        - Configuração da CRON para executar o programa.
#
# - (Klaus Engelmann - 22/09/2010)
#        - Correção de erro de redirecionamento por causa do formato da data. 
#        - Teste da Cron
#
# - (Klaus Engelmann - 23/09/2010)
#        - Desenvolvimento da Etapa 3 do algoritmo.
#        - Formatação da mensagem do relatório.
#        - Configuração do sistema de email da dracula.ufcspa.lan
#        - Teste e Validação do relatório.
#              
#
# Funcionamento do Programa de Backups
# ====================================
#
# Será realizado um Full Backup toda madrugada às 04:00 hs.
# Cada execução da rotina de backup verificará o seguinte algoritmo:
#
# 1- Criação do arquivo de backup.
# 2- Exclusão dos arquivos que são 5 dias mais antigos.
# 3- Envio de relatório de arquivos por email
#
#
# Parâmetros do comando mysqldump
# ===============================
#
# O comando mysqldump realiza o dump dos bancos de dados e tabelas. Ele é o principal artífice do backup. 
# Os parâmetros utilizados estão comentados abaixo conforme o "man mysqldump".
#
#
#  --add-drop-table
#
#          Add a DROP TABLE statement before each CREATE TABLE statement.
#
#  --add-locks 
#
#          Surround each table dump with LOCK TABLES and UNLOCK TABLES statements. This results in faster inserts when the dump file is reloaded.
#
#  --comments, -i 
#
#          Write additional information in the dump file such as program version, server version, and host. This option is enabled by default. To
#          suppress this additional information, use --skip-comments.
#
#  --extended-insert, -e 
#
#          Use multiple-row INSERT syntax that include several VALUES lists. This results in a smaller dump file and speeds up inserts when the file is
#          reloaded.
#
#  --flush-privileges 
#
#          Emit a FLUSH PRIVILEGES statement after dumping the mysql database. This option should be used any time the dump contains the mysql database
#          and any other database that depends on the data in the mysql database for proper restoration. This option was added in MySQL 5.0.26.
#
#  --force, -f 
#
#          Continue even if an SQL error occurs during a table dump.
#
#          One use for this option is to cause mysqldump to continue executing even when it encounters a view that has become invalid because the
#          definition refers to a table that has been dropped. Without --force, mysqldump exits with an error message. With --force, mysqldump prints
#          the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing.
#
#  --host=host_name, -h host_name 
#
#          Dump data from the MySQL server on the given host. The default host is localhost.
#
#  --lock-all-tables, -x 
#
#          Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option
#          automatically turns off --single-transaction and --lock-tables.
#
#  --log-error=file_name 
#
#          Append warnings and errors to the named file. This option was added in MySQL 5.0.42.
#
#  --password[=password], -p[password] 
#
#          The password to use when connecting to the server. If you use the short option form (-p), you cannot have a space between the option and the
#          password. If you omit the password value following the --password or -p option on the command line, you are prompted for one.
#
#          Specifying a password on the command line should be considered insecure. See Section 5.6, “Keeping Passwords Secure”.
#
#  --user=user_name, -u user_name 
#
#          The MySQL user name to use when connecting to the server.
#
#



# -------------------------------
# Variáveis Estáticas do Programa
# -------------------------------

# Lista de servidores MySQL para executar backup
declare -a HOSTS=( 'teste1.teste.com' 'teste2.teste.com' 'teste3.teste.com' ) 

# Senha do usuário backup
PASS="put-your-own"

# Configuração do comando mysqldump
MYSQLDUMP="/usr/bin/mysqldump --all-databases \
                              --add-drop-table \
                              --add-locks \
                              --log-error=/var/log/bkp-mysql-error.log \
                              --comments \
                              --extended-insert \
                              --flush-privileges \
                              --force \
                              --lock-all-tables \
                              -u backup \
                              -p$PASS"
                              


# ---------------------
# Execução do mysqldump
# ---------------------

# Criação dos DUMPS do mysql
for I in "${HOSTS[@]}"
do
   {
      # Formato de data: dia-mes-ano-hora-minuto-segundo
      DATA=$( /bin/date +%d-%m-%Y-%H-%M-%S )
      $MYSQLDUMP -h $I > /backup3/bkp-$I-$DATA.sql
   }
done


# -----------------------------------------
# Exclusão de Arquivos criados 5 dias atrás 
# -----------------------------------------

/usr/bin/find /backup3 -atime +5 -exec rm -f {} \;


# ----------------------------------------
# Geração e envio do relatório de execução
# ----------------------------------------

LISTAGEM=$(ls -lha /backup3/)
OCUPACAO=$(du -sh /backup3/)
DISCO=$(df -h) 

RELATORIO="\nResultado do Backup de Sevidores MYSQL\n\n\nOs arquivos armazenados são:\n$LISTAGEM\n\nTotal Uso:\n$OCUPACAO\n\nOcupação do Filesystem:\n$DISCO\n\n"

echo -e "$RELATORIO" | mail -s"Relatorio de Backup MySQL" root


exit 0

terça-feira, julho 13, 2010

Capítulo 3 - OSPF

Revisão do OSPF


OSPF (Open Shortest Path First) é um protocolo de roteamento de padrão aberto, do tipo classless (sem classe), com rápida convergência e que utiliza o custo como métrica.

O OSPF é um protocolo de estado de enlace e utiliza o algoritmo SPF (Dijkstra para determinar o melhor caminho para cada rede. Cria uma base de dados que representa a estrutura da rede.

Primeiramente o OSPF troca HELLOS com seus vizinhos roteadores, aprendendo os RIDs e os custos. As informações sobre vizinhos são armazenados na base de dados de adjacência. 

Posteriormente, o roteador gera LSAs (aviso de estado de enlace) incluindo os RIDs e os custos de cada roteador. Estes LSAs são distribuidos entre todos os roteadores de um mesmo domínio. Cada roteador guarda o conjunto completo de LSAs na base de dados de LSAs. Através do algoritmo SPF os roteadores computam os melhores caminhos, os quais são colocados na tabela de roteamento (ou na tabela / base de dados de encaminhamento).

Estrutura da Rede OSPF


Um domínio OSPF é dividido em áreas. Uma rede OSPF deve conter uma área 0 e poderá conter outras áreas além dessa.

Todas as demais áreas configuradas devem estar diretamente ligadas com a área zero. Por isso a área zero pode ser conhecida como área de trânsito. Entre as áreas serão passadas rotas inter-áreas.

A divisão de uma rede OSPF em áreas deve-se pelos seguintes motivos:

  • minimiza o número de rotas/registros na tabela de roteamento.
  • reduz o flooding de LSAs dentro de uma área.
  • minimiza os impactos de mudanças na topologia.
  • reforça a necessidade de um design hierárquico nas redes.

Os roteadores de uma rede OSPF assumem diversas funções / papéis, sendo que um mesmo roteador pode ter várias funções simultaneamente.

  1. Roteador Interno: possui todas as suas interfaces em uma área.
  2. Roteador Backbone: possui pelo menos uma interface configurada na área zero.
  3. ABR: possui interfaces em duas ou mais áreas.
  4. ASBR: possui interfaces dentro e fora do domínio de roteamento OSPF.

segunda-feira, julho 05, 2010

Aula 1 - Gestão de Segurança da Informação

Segurança da Informação


É importante saber estabelecer a diferença entre:
 
  • Segurança da Informação
  • Segurança de TI (Tecnologia da Informação)
 
A Segurança da Informação é muito mais abrangente que a Segurança de TI. Envolve o estudo e planejamento sobre os processos relativos ao negócio da instituição / empresa. A segurança de TI é um conjunto de procedimentos técnicos objetivando ativos de redes, servidores, aplicativos, estações clientes, etc.
 
O planejamento e execução da política de segurança da informação depende do tipo de negócio da instituição.

Aspectos importantes da Segurança da Informação contemplam as seguintes questões:
  • tempo de retenção da informação
  • modalidades/classes de acesso da informação


Necessidade da Auditoria


Diretrizes e normas são implementadas através de procedimentos técnicos. Uma vez que esses procedimentos foram planejados e executados é necessário gerenciar uma auditoria dos registros de sucesso ou insucesso. A auditoria precisa mostrar se os procedimentos são aplicados e qual o retorno que estão gerando.


Integração com os usuários    

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

A integração dos usuários no processo de planejamento de segurança da informação é crítico. É importante diferenciar treinamento de concientização.
 
  • Treinamento: habilidades técnicas
  • Concientização: visão da importância e do valor 


Plano de Contingência


Os planos de contingência devem abranger não somente a reposição de ativos físicos mas também os recursos humanos. Um funcionário doente ou com problemas familiares deve ser considerado como um problema que precisa de um plano de contingência.
 

Determinação da Realidade de Segurança da Informação


Para determinar a realidade de segurança da informação em uma empresa é necessário:
 
  1. Entendimento do Negócio
  2. Análise de Aderência: esta análise é baseada na ISO 27002.
  3. Análise de Risco
 

Caso de Controle de Segurança da Informação - Gerência de Usuários Centralizada


  • Controle de acesso através de Single Signon
  • Enquadramento do RH junto com o NTI
  • Controle e configuração de usuários centralizado, jamais usuários locais. Para isso existe um usuário administrador local único.

Comunicação de Incidentes


A comunicação de incidentes também precisa ser planejada de tal forma que as informações corretas possam ser transmitidas e os danos minimizados.

Propriedades dos Serviços de Segurança


  • Confidencialidade
  • Autenticidade
  • Integridade

A partir dessas propriedades fundamentais temos outras derivadas:

  • Não repúdio
  • Conformidade
  • Controle de Acesso
  • Disponibilidade

Histórico de Incidentes


O histórico de incidentes é importante na Análise/Avaliação de Riscos. Permite determinar a incidência de um risco e assim melhor avaliar seu impacto.

Análise e Avaliação de Riscos


A análise e avaliação de riscos deve nortear a consolidação de uma gestão de segurança da informação. Esta avaliação apresentará quais os custos para cada operação e se é possível ou não assumir determinados riscos.

Descrição de Normas de Gestão de Segurança da Informação






 

Questões para Discussão


  1. Como é gerenciado os incidentes de segurança na minha instituição ?
  2. O que é considerado confidencial na minha instituição ?
  3. Como deve ser conformado o Comitê Gestor de Segurança da Informação na minha instituição ?

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

domingo, maio 23, 2010

Revisão Básica de IPv6 - CCNA

Revisão Básica de IPv6 - CCNA



Introdução

O IPv6 não é um mero upgrade de funcionalidades do IPv4. Ele é um protocolo novo, dinâmico, mais seguro e escalável.

Motivação para o Surgimento do IPv6

  • Esgotamento do espaço de endereçamento do IPv4. Na teoria o IPv4 possui um espaço de endereçamento aproximado de 232 = 4 bilhões.
  • Problemas causados pelo NAT. A tecnologia do NAT surgiu para enfrentar o problema de falta de espaço de endereçamento do IPv4. Porém trouxe outras consequências como a quebra do paradigma ponto-a-ponto na comunicação pela Internet.
  • Necessidade de incorporar dentro do datagrama IPv6 atributos de QoS.
  • Necessidade de recursos de mobilidade (usuários de celular com conectividade na Internet).
  • Novas funcionalidades de segurança e fragmentação, assim como a possibilidade de adicionar novos campos AD-HOC (sob demanda).

Novas Funcionalidades do IPv6

  • Maior espaço de endereçamento.
  • Auto-configuração: o próprio protocolo possui recursos para "stateless autoconfiguration", isto é, configura um endereço sem a necessidade de um servidor DHCPDv6.
  • Novo cabeçalho, com possibilidades de adicionar novos campos AD-HOC (sob demanda).
  • Suporte a QoS (classes de serviço).
  • Suporte de segurança por criptografia IPSEC.

Novo Cabeçalho IPv6

  • Tamanho de 40 bytes.
  • Novos campos: Traffic Class e Next Header.

Endereçamento IPv6

Basicamente o IPv6 possui uma estrutura formada por:
  • prefixo de rede.
  • sufixo de host.

O IPv6 não possui classes, todos os endereços seguem o conceito de CIDR (Classes InterDomain Routing).

A escrita de endereços IPv6 pode ter um modo comprimido:
  • zeros a esquerda podem ser suprimidos.
  • blocos de zeros encadeados (apenas um bloco pode ser encadeado).

Um exemplo de escrita de endereços em modo comprimido:
  • Endereço original - 0FFE:6A88:0000:0000:00A3:0000:0000:0721
    • supressão de zeros a esquerda - FFE:6A88:0000:0000:A3:0:0:721
    • blocos de zeros encadeados - FFE:6A88::A3:0:0:721


Estrutra do Endereço IPv6

O endereço padrão do IPv6 é composto por 3 seções (formando um total de 8 blocos de 4 dígitos hexadecimais):
  • Global Routing Prefix: 48 bits
  • Subnet Prefix: 16 bits
  • Interface ID: 64 bits

A seção Interface ID, através do modo de autoconfiguração, utiliza o endereço MAC da interface para compôr um endereço válido.

Tipos de Endereço IPv6

No IPv6 existem 3 tipos principais de endereços:
  • UNICAST: pacotes de dados são enviados a um único destinatário.
    • Global Unicast: endereço público roteável.
    • Link Local: endereços privados não roteáveis.
    • Unique Local: não roteáveis na Internet porém são únicos.
  • MULTICAST: pacotes de dados são enviados a todos os participantes do grupo.
  • ANYCAST: pacotes de dados são enviados ao mais próximo participante do grupo.

Transição de IPv4 para IPv6

A transição do IPv4 para o IPv6 é realizada utilizando as seguintes estratégias:

  • Dual Stacking: ambas versões do protocolo rodam em routers e estações.
  • Tunelamento 6to4: encapsulamento do IPv6 com um cabeçalho IPv4.
  • Mapeamento: endereços IPv4 são reescritos como endereços IPv6 (::200.18.67.24)

Reconhecendo Endereços IPv6


DescriçãoEndereço
Loopback::1
Intervalo Global Unicast2000::/3
Intervalo Unique LocalFC00::/7
Intervalo Link LocalFE80::/10
Intervalo MulticastFF00::/8
Intervalo Modo 6to4 (para tunelamento)2002::/16