This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

sexta-feira, 29 de dezembro de 2006

MRTG - Este é velho!!!

Instalação de MRTG em ambiente Windows


Data: 26/12/2006

Introdução



O MRTG é uma ferramenta livre desenvolvida em Perl, largamente utilizada, embora mais comumente utilizada para monitorar tráfego em interfaces de rede, pode monitorar muitas outras variáveis, tais como utilização de HD, temperatura de hardware, uso de processador, etc, podendo gerar alertas a partir de "thresholds", facilitando assim o gerenciamento da rede.

Além de "free", é relativamente fácil de instalar e configurar, tanto em ambiente Linux como em ambiente Windows.

Este tutorial abordará a instalação e configuração em ambas plataformas, com o objetivo de apresentar de forma simples a instalação e uso do MRTG.

Pré-requisitos

Para a instalação do MRTG no Windows serão necessários os seguintes pacotes:
  • Perl
    OBS: Baixar o "As package (x86)", se sua máquina for 64bits baixe o x86_64.
  • MRTG
    OBS: Procurar arquivo mrtg-2.14.7.zip , ou mais recente (versão superior).


Instalação do Perl



Considerando que os arquivos foram baixados para a pasta c:\temp, entre na pasta que contém os dois arquivos ZIP (Perl e MRTG), descompacte o Perl nesta pasta, acesse a nova pasta (algo como c:\temp\ActivePerl-5.8.8.819-MSWin32-x86-267479\), nela se encontra um arquivo chamado "installer", execute-o.

Na seqüência serão solicitadas algumas informações:

Did you read the LICENSE.txt file? [no] yes
(se já leu responda yes)
Do you agree to the ActivePerl Community License v2.1? [no] yes
(se concorda responda yes)
Enter top level directory for install? [c:\Perl]
(este é o diretório padrão, caso queira instalar em local diferente especifique, se quiser manter so teclar enter)
Proceed? [yes] yes
(o programa ira ser instalado nesta pasta)
Create shortcuts to the HTML documentation? [yes] yes
(documentação sempre é útil)
Add the Perl\bin directory to the PATH? [yes] yes
(adiciona a entrada ao path, para que o perl possa ser encontrado a partir de qualquer diretório)
Create Perl file extension association? [yes] yes
(associa arquivos perl)
Create IIS script mapping for Perl? [yes] yes
Create IIS script mapping for Perl ISAPI? [yes] yes
(mapeamento perl)
Proceed? [yes] yes
(executa a instalação conforme as opções escolhidas)

Se tudo estiver corrido bem, esta será a tela final da instalação do Perl.


Instalação do MRTG



Novamente acesse a pasta onde foram baixados os arquivos, no meu caso c:\temp, descompacte o mrtg-2.14.7.zip em c:\, será criada uma pasta c:\ mrtg-2.14.7\, abra um prompt (iniciar > executar > cmd), entre na pasta > cd c:\ mrtg-2.14.7\bin, digite o seguinte comando:

c:\ mrtg-2.14.7\bin> perl mrgt

Você deverá obter a seguinte saída:


Pronto, o Perl e o MRTG já estão instalados, vamos agora às configurações.


Configuração



A configuração do MRTG para o monitoramento de tráfego se torna relativamente simples utilizando o "cfgmaker", conforme será abordado, porém alguns pré-requisitos são obrigatórios:
  • Você precisa conhecer o "IP address" ou "host name" do dispositivo a ser monitorado;
  • Conhecer a comunidade de leitura do dispositivo a ser monitorado.

Com estas informações básicas você já poderá iniciar o monitoramento do dispositivo, tratando-se do tráfego de entrada e saída das interfaces deste.

OBS: O objetivo nesta primeira etapa é configurar apenas o monitoramento de tráfego nas interfaces do dispositivo, nos próximos capítulos serão abordadas formas de monitorar outras variáveis ou mesmo de customizar estes monitoramentos.

Vamos criar uma pasta para armazenar as imagens e arquivos gerados pelo MRTG: c:\www\mrtg

Para este exemplo estou a monitorar um roteador CISCO 2800, sendo o seu endereço IP 10.2.2.1 e a comunidade (senha) "public". Execute o seguinte comando (de dentro do diretório c:\ mrtg-2.14.7\bin):

c:\ mrtg-2.14.7\bin> perl cfgmaker public@10.2.2.1 --global "WorkDir: c:\www\mrtg" --output mrtg.cfg

Será criado no diretório corrente o arquivo mrtg.cfg, este é um arquivo de configuração com base em todas as interfaces do dispositivo, desta forma o MRTG já pode ser rodado, gerando gráficos quanto a utilização da interfaces de rede. Este arquivo pode servir como base para um arquivo customizado, nos próximos capítulos será abordado com detalhes o arquivo gerado e como criar arquivos personalizados.

Após a criação do arquivo mrtg.cfg, vamos colocar para rodar:

c:\ mrtg-2.14.7\bin> perl mrtg mrtg.cfg

Note que o MRTG irá fazer apenas uma coleta e terminará, para fazer com que ele fique coletando os dados e atualizando automaticamente os gráficos, precisaremos editar o arquivo mrtg.cfg incluindo a seguinte linha:

RunAsDaemon: yes

Esta linha pode ser incluída logo no início do arquivo, este pode ser aberto com o Wordpad, mantenha a formatação atual.

Execute novamente:

c:\ mrtg-2.14.7\bin> perl mrtg mrtg.cfg

OBS: Caso sejam apresentadas mensagens de WARNING, não se preocupe, usando as configurações básicas é provável que sejam apresentadas estas mensagens porque os arquivos a serem atualizados ainda não existem, aguarde 6 minutos e execute novamente, você deverá ter a seguinte saída:


Pronto, desta forma o MRTG está rodando no seu Windows e atualizando automaticamente os gráficos, agora você pode acessar a pasta c:\www\mrtg e abrir os arquivos *.html, sendo que é gerado um para cada interface monitorada.

Espero ter contribuído de alguma forma, o objetivo deste artigo é a instalação e configuração básica em ambiente Windows, nas próximas edições serão abordados aspectos de configuração personalizada, monitoramento de variáveis especificas e uso do SNMP.





sábado, 16 de dezembro de 2006

Freeradius - Servidor de autenticação 802.1x


Servidor de autenticação 802.1x com Freeradius

Introdução

Este é o primeiro de 6 artigos que pretendo apresentar sobre autenticação IEEE 802.1x e RADIUS.

Pretendo dividir os arquivos da seguinte forma:
  • 01. Instalação de servidor Radius (FreeRadius) e configurações para autenticação de clientes wireless com PEAP-MSCHAPv2 (usuário e senha);
  • 02. Instalação de um portal de autenticação HotSpot (Captive Portal), utilizando o NoCat.
  • 03. Instalação de ferramenta de gerencia gráfica para o FreeRadius (phpRadmin) e autenticação com base de dados MySQL;
  • 04. Integração do FreeRadius com AD e LDAP.
  • 05. Autenticação 802.1x utilizando certificado Digital;
  • Integração da gerência do FreeRadius, MySQL, DHCP Server, OpenSSL, DNS, Apache e Nocat, com o WebMin.

Neste artigo então trataremos de instalar o servidor e configurá-lo de modo que possamos autenticar clientes de redes wireless, utilizando como credenciais de acesso "usuário e senha", substituiremos o MD5 pelo MS-CHAPv2 por questões de segurança visto que o MD5 não utiliza sessões cifradas entre o suplicante e o server FreeRadius, a MS não disponibiliza em seu cliente XP MD5 para Wireless apenas Wired.

Bom, com este modelo de autenticação já é possível montar uma rede wireless com um bom nível de segurança, permitindo uma base de usuários em arquivo texto, o qual futuramente migraremos para um banco MySQL e depois para AD ou LDAP.

Neste modelo de autenticação é possível configurar SSO (Single sign-on) e também passar como parâmetro a VLan ao qual o Cliente estará associado.

A base de usuários neste primeiro artigo será em arquivo texto para diminuir a complexidade e facilitar o entendimento.

Diagrama lógico:



Pré-requisitos

Instalação do Fedora Core 6, marcando as seguintes opções na instalação inicial:
  • Servidor web;
  • Servidor MySQL;
  • Desenvolvimento KDE;

Obs:
  1. Outras distribuições Linux podem ser utilizadas sem problemas.
  2. Não abordarei a instalação do Fedora Core, mesmo porque este processo está muito fácil nesta distribuição, dê o boot pelo CD e siga os passos do wizard de instalação e quando for solicitado selecione os pacotes acima, a instalação da interface gráfica não é pré-requisito, pois o gerenciamento do servidor Radius pode ser feito via navegador a partir de outra máquina.


Instalação



Primeiro instalaremos o FreeRadius já com suporte a MySQL.

OBS: Todas as linhas precedidas de # devem ser interpretadas como comandos executados diretamente no shell como root.

# yum -y install freeradius-mysql

Serão instalados os seguintes pacotes e dependências:
  • freeradius-mysql;
  • freeradius;
  • net-snmp;
  • net-snmp-utils.

Após a conclusão da instalação todos os arquivos de configuração estarão em /etc/raddb/, sendo que os principais arquivos e os que utilizaremos são:
    radiusd.conf : Principal arquivo de configuração, nele configuram-se todos os parâmetros do servidor e também se habilita os módulos de AAA desejados;
  • clients.conf : Configuração dos dispositivos que farão as consultas ao Radius (NAS), tipo Access Point, switches etc..;
  • users : Base de usuários, neste arquivo pode-se cadastrar as credenciais dos usuários, o uso deste arquivo para cadastrar a base de usuários pode se tornar um sério risco de segurança caso você pense em manter assim, visto que você terá que se preocupar em gerenciar o controle de acesso ao mesmo.


FASE 1



O objetivo desta primeira fase é realizar um teste básico para verificar o funcionamento do servidor, para tanto, será configurado de modo a aceitar pedidos de autenticação da máquina local e consultar o arquivo "users" para autenticar o usuário.

Em /etc/raddb/ -- edite o arquivo radius.conf e altere as seguintes linhas "apenas" (as demais linhas não comentadas aqui deixe como estão, por padrão).

OBS: O # no início de linhas em arquivos de configuração são comentários e // no final de linhas também serão comentários.

# indica a interface que o radius responde, coloque o ip da
# interface desejada ou coloque "*" caso queira que responda
# em qualquer interface
bind_address = 10.34.122.1
# indica a porta udp de escuta , pode usar também "*"
port = 1812
# log para as autenticações
log_auth = yes // log dos de autenticações e tentativas de autenticações
log_auth_badpass = yes // log de login/senha incorretos
log_auth_goodpass = yes // log de login/senha corretos

Em /etc/raddb -- edite users e acrescente o usuário conforme indicado abaixo ao final do arquivo:

# adicionar um usuário simples para teste
teste Auth-Type := Local, User-Password == "teste"

Em /etc/raddb -- edite clients.conf e acrescente o NAS conforme indicado abaixo ao final do arquivo:

# adiciona o localhost (NAS) permitindo que ele consulte o radius, outros
# dispositivos também devem ser adicionados da mesma forma alterando
# apenas os dados

client 10.1.1.2 {
secret = testing123 // chave secreta que deve também ser configurada no NAS
shortname = localhost // nome do dispositivo , que também deve ser o mesmo do configurado no dispositivo
nastype = other // nastype é o tipo de NAS , existe alguns padrões de fabricantes já pré estabelecidos, pode ser consultado neste mesmo arquivo
}

Agora iniciaremos o radius, o arranque padrão deve ser feita com o seguinte comando:

# /etc/init.d/radiusd start

Porém para visualizarmos os logs com maior facilidade iniciaremos no modo "debug" com o comando:

# radiusd -X

Desta forma será exibido neste terminal todas as solicitações e respostas.

OBS: Os logs também podem ser vistos em /var/log/radiusd/radius.log.

Usaremos agora uma ferramenta de testes instalado junto com o pacote do "freeradius", o "radtest". Abra um novo shell e rode:

# radtest teste teste 10.34.122.1:1812 1812 testing123

OBS: O "testing123" é a chave secreta configurada no exemplo esta deve ser alterada conforme sua definição.

O retorno deve ser algo tipo:

Sending Access-Request of id 40 to 10.34.122.1 port 1812
User-Name = "teste"
User-Password = "teste"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1812
rad_recv: Access-Accept packet from host 10.34.122.1:1812, id=40, length=20

Ok! Fase 1 concluída.


Métodos de autenticação



Antes de prosseguirmos para o próxima etapa, precisamos alinhar o entendimento sobre os mecanismos de autenticação mais comuns existentes, segue.

O IEEE 802.1x é um padrão do IEEE (i 3 é), que define mecanismos para autenticação em camada 2, dentre os protocolos que usa esta o RADIUS (Remote Authentication Dial In User Service), que é um protocolo de autenticação AA(A) (a os que descordarão e dirão que AAA é para TACACS+ mas não vou entrar neste mérito). O 802.1x permite que utilizemos o EAP (Extensible Authentication Protocol) o qual nos possibilita uma variedade de métodos de autenticação conforme segue:
  • EAP-TLS - Por padrão em clientes 802.1x Windows (XP por exemplo), utiliza estrutura de certificados digitais para cliente e servidor;
  • EAP-TTLS - Permite a autenticação de usuários baseados em "usuários e senha" e de servidores com certificado digital;
  • PEAP (Protected EAP) - permite o uso do MSCHAPv2. (baseado em password), por exemplo;
  • EAP_MD5 - Baseado em password também porem não a cifragem do campo, portanto para redes wireless, torna-se muito inseguro, a MS (Microsoft) nem disponibiliza em seus clients wireless somente para conexões cabeadas, mas o uso do MS-CHAPv2 é tão simples quanto e mais seguro, talvez seu uso seja necessário em situações de integração com outras plataformas e/ou soluções.
  • PEAP-MSCHAPv2 - Modelo utilizado neste primeiro tutorial, permite a autenticação baseada em password, autenticação múltipla de usuário e computador, integração de autenticação camada 2 com login em rede Windows... Também é suportado em Linux, mas com uma linhas a mais de configuração (normal heheh).

Estes são os principais tipos e os que me interessa apresentar a diferença neste momento, mas existem outras formas como LEAP da cisco e outros.

Para a autenticação dos clientes estou focando no MSCHAPv2 em Windows porque de um modo geral nossos clientes na grande maioria serão Windows.

As boas práticas de segurança devem ser observadas sempre, tais como senhas fortes, período de validade de senhas e certificados, etc.

Não esquecer que estamos apenas provisionando a autenticação, após esta etapa o controle do que cada usuário pode ou não fazer deve ser implementado com cautela, é possível definir praticamente tudo o que o usuário pode ou não fazer após o login, mas não vou abordar nada sobre isso, pelo menos não por enquanto.


FASE 2



Nesta fase configuraremos o radius para autenticar clientes wireless utilizando PEAP-MSCHAPv2 com criptografia WPA.

PEAP-MSCHAPv2 = Mecanismos de credenciais para autenticação, neste projeto piloto utilizando usuário e senha.

WPA = Mecanismos que fornecem criptografia aos dados, utilizando TKIP (ou AES caso seu equipamento suporte WPA2) como algorítimo de criptografia.

Descrição: Rede com criptografia forte para os dados trafegados e com controle de acesso via 802.1x que permite um bom nível de segurança a rede wireless, basicamente com esta rede o usuário será solicitado a fornecer usuário e senha para ter acesso a rede, após a confirmação das credenciais é que o mesmo terá acesso a rede, antes disso fica bloqueado em camada 2 qualquer acesso a rede, após a autenticação os dados são criptografados usando WPA, que é fornecida automaticamente ao cliente.

Configurações: altere os arquivos de configuração localizados em /etc/raddb/ conforme segue.

clients.conf:

client 10.34.122.3 { // endereço do AP
secret = testing123 // chave secreta
shortname = DWL-3200AP // nome do AP
nastype = other // tipo
}

eap.conf:

eap {

   # neste arquivo definimos os mecanismos de EAP suportados e como
   # deve o servidor se comportar para cada requisição, observe que
   # tratamos não apenas da autenticação entre suplicante e servidor,
   # mas também entre o NAS e servidores.
   # especificaremos que por padrão a autenticação será com TTLS
   default_eap_type = ttls
   timer_expire = 60
   ignore_unknown_eap_types = no
   cisco_accounting_username_bug = no
     
   md5 {
   }
    
   mschapv2 {
   }
    
   tls {
      private_key_password = whatever
      private_key_file = ${raddbdir}/certs/cert-srv.pem
      certificate_file = ${raddbdir}/certs/cert-srv.pem
      CA_file = ${raddbdir}/certs/demoCA/cacert.pem
      dh_file = ${raddbdir}/certs/dh
      random_file = ${raddbdir}/certs/random
      fragment_size = 1024
   }

   ttls {
      default_eap_type = md5
      copy_request_to_tunnel = no
      use_tunneled_reply = no
   }

   peap {
      default_eap_type = mschapv2
   }
}

Em radius.conf altere conforme segue:

radiusd.conf
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = /usr/sbin
logdir = ${localstatedir}/log/radius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = ${localstatedir}/run

listen {
   ipaddr = *
   port = 0
   type = auth
}

thread pool {
   start_servers = 1
   max_servers = 4
   min_spare_servers = 1
   max_spare_servers = 3
   max_requests_per_server = 0
}

#Importando o arquivo com os clientes NAS, com permissão de autenticação
$INCLUDE ${confdir}/clients.conf

# abaixo estão os módulos de autenticação, autorização e contabilidade
# que serão suportados.

modules {
   # se utilizado apenas pap, usuário e senha passarão em texto puro, o
   # que não e nosso caso.
   pap {
      encryption_scheme = clear
   }

   chap {
      authtype = CHAP
   }

   # inclui o arquivo de configuração do EAP anterior
   $INCLUDE ${confdir}/eap.conf

   # suporta MS-CHAP para autenticação e também MS-CHAPv2
   mschap {
      authtype = MS-CHAP
      with_ntdomain_hack = yes
   }

   mschapv2 {
   }

   # suporte a autenticação de usuários cadastrados em arquivo no caminho especificado
   files {
      usersfile = ${confdir}/users
      compat = no
   }
}

# autoriza os seguintes módulos, obs MS-CHAP inclui v2
authorize {
   files
   mschap
   eap
}

# mecanismo de autenticação
authenticate {
   Auth-Type MS-CHAP {
   mschap
}
                  
eap

}

Em "users" altere conforme segue:

usuario1 User-Password == "senha1"
# usuário e senha para o PEAP-MS-CHAPv2

Agora basta configurar o AP para autenticação 802.1x com as seguintes informações:

Servidor radius = 10.34.122.1
Porta = 1812
Chave secreta = testing123 // altere a chave


Configuração AP (Access Point)



Utilizarei o AP da TrendNet, porém pode-se utilizar qualquer AP que possua suporte a IEEE 802.1x, seguem os passos para configuração deste equipamento.

Configuração de endereço IP no equipamento:



Configuração de rede wireless (SSID), desabilitando modo 802.11ª, neste caso estou usando somente rede 802.11g, mas pode configurar para 802.11a também.

OBS: A função de "L2 isolation" é de grande importância, principalmente para os usuários da rede "guest", protegendo contra o acesso direto de clientes wireless a outros clientes wireless.



Selecione o modo de autenticação WPA.



Configurações para IEEE 802.1x (Radius).




Configuração cliente (Windows XP)



Segue exemplo de configuração de cliente Windows XP, também é valida para W2K, W2K3.

OBS: Para o Windows 98 é necessário utilizar um cliente, pois o 98 não tem suporte nativo ao 802.1x.

Os requisitos básicos da configuração para Windows XP valem para os demais sistemas operacionais que possuem suplicante 802.1x, ou seja, para outro SO basta configurar os mesmos parâmetros.

Identificando a rede:



Dê dois cliques sobre esta rede, assim o perfil desta rede será adicionado, clique então em "change advanced Settings" e vá em "wireless network" conforme imagem abaixo, selecione a rede e clique em propriedades.



Por padrão o Windows XP ao identificar uma rede wireless com 802.1x habilitado, seleciona como credenciais de autenticação certificado digital (EAP-TLS), que é baseado em certificado digital (uma mensagem de que não pode encontrar o certificado para validar-se na rede deve ser indicado no balão), porém como queremos utilizar usuário e senha, temos que configurar para que seja solicitado este modelo de autenticação (EAP-PEAP-MSCHAPv2).

OBS: Caso este balão não seja exibido, confira se o serviço "configurações zero sem fio" está ativo.



Conforme indicado na imagem acima, você deve selecionar para a associação com o AP, WPA e TKIP como mecanismo de criptografia (AES caso use WPA2), depois na aba autenticação selecione EAP-PEAP, clique então em propriedades e desmarque a opção de validar certificado (como estamos usando TTLS temos a opção de autenticar apenas com usuário e senha, deixaremos as formas de EAP com certificado para os próximos artigos), selecione finalmente EAP-MSCHAPv2 e configure para não utilizar o usuário e senha do Windows (importante, não esqueça destas opções), marque também o Fast Reconnect e evite chateação com o XP.

Espero que minha contribuição seja útil, fico a disposição para ajudar a desenvolver qualquer boa idéia sobre o tema.