11
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

Instalção Free Radius Fedora

Embed Size (px)

Citation preview

Page 1: Instalção Free Radius Fedora

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:

Page 2: Instalção Free Radius Fedora

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

Page 3: Instalção Free Radius Fedora

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 interfacebind_address = 10.34.122.1# indica a porta udp de escuta , pode usar também "*"port = 1812# log para as autenticaçõeslog_auth = yes // log dos de autenticações e tentativas de autenticaçõeslog_auth_badpass = yes // log de login/senha incorretoslog_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 testeteste Auth-Type := Local, User-Password == "teste"

Page 4: Instalção Free Radius Fedora

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 NASshortname = localhost // nome do dispositivo , que também deve ser o mesmo do configurado no dispositivonastype = 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 1812User-Name = "teste"User-Password = "teste"NAS-IP-Address = 255.255.255.255NAS-Port = 1812rad_recv: Access-Accept packet from host 10.34.122.1:1812, id=40, length=20

Ok! Fase 1 concluída.

Page 5: Instalção Free Radius Fedora

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.

Page 6: Instalção Free Radius Fedora

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 APsecret = testing123 // chave secretashortname = DWL-3200AP // nome do APnastype = 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

Page 7: Instalção Free Radius Fedora

      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.confprefix = /usrexec_prefix = /usrsysconfdir = /etclocalstatedir = /varsbindir = /usr/sbinlogdir = ${localstatedir}/log/radiusraddbdir = /etc/freeradiusradacctdir = ${logdir}/radacctconfdir = ${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

Page 8: Instalção Free Radius Fedora

$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 v2authorize {   files   mschap   eap}

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

Page 9: Instalção Free Radius Fedora

                   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.1Porta = 1812Chave secreta = testing123 // altere a chave