domingo, 16 de dezembro de 2007

Freeradius - instalação no Ubuntu


Instalação do Freeradius com suporte a EAP-TLS e PEAP-TTLS MSCHAPv2 no Ubuntu

Introdução

Escrevi o artigo sobre freeradius que pode ser visto em:

A instalação no artigo foi feita com base no Fedora Core 6. Bom, vários tiveram problemas com a instalação no Debian e distros com base neste, tentei ajudar a galera, mas vi que o problema é mais sério, a partir dos binários via apt-get a instalação vai, porém sem suporte a módulos EAP devido a problemas de licença.

Pesquisando na internet vi que o problema se alastra em vários fóruns, resolvi então fazer a instalação no Debian, como a mídia que eu dispunha contendo o Debian deu pau, achei aqui o CD do Ubuntu 6.06, claro que já conhecia a fama de ser uma ótima distro, porém como estou satisfeito com o FC não tinha metido a mão no Ubuntu ainda, fiquei muito surpreso e satisfeito, é ótimo para Desktop, para servidores não vem muitas opções de instalação customizada, mas isso não é problema.

Bom, vamos a instalação do freeradius!

Problema / Solução

A instalação do freeradius no Debian e neste caso no Ubuntu via binários não da suporte a módulos EAP/TLS como comentado anteriormente, este bug pode ser visto em:

A solução é instalar via código fonte, existem algumas propostas de path e binários postados pela net e alguns nestes links que mostrei, mas nenhum deles me proporcionou uma instalação sem problemas, acredito que seguindo este artigo a risca vocês terão sucesso assim como tivemos testes.

A princípio parece ser uma tarefa simples, baixar os fontes e: ./configure; make; make install. É exatamente assim que está indicado no site do Freeradius, mas como de praxe, nunca é tão simples.

Pré-requisitos, cenário e fontes

1. Pré-requisitos

Instalação do Ubuntu 6.06 LTS padrão, pode colocar o LiveCD se dispor de um e depois usar o script de instalação.

2. Cenário

Meu laboratório é em máquina virtual, uma com a instalação do "Ubuntu" para o freeradius e outra com o "Back|Track 2" rodando o JRadius client para testar as autenticações.

3. Fontes

No fórum do Ubuntu achei vários HOWTOs, os quais me auxiliaram. Pra quem quiser aprender um pouco mais segue:

Fora isso, tudo que precisaremos é dos fontes do freeradius, encontrados no site oficial:


Instalação



Partindo do pré-suposto que estão com o Ubuntu 6.06 instalado (padrão com Gnome), vamos para a pasta /usr/local/src, onde baixaremos os fontes:

# cd /usr/local/src
# wget
ftp://ftp.freeradius.org/pub/radius/freeradius-1.1.7.tar.gz
# tar -zxvf freeradius-1.1.7.tar.gz
# cd tar freeradius-1.1.7


A instalação padrão não vem com todas as ferramentas "dpkg" instaladas, então vamos instalar via apt-get:

# apt-get install dpkg*

O OpenSSL já está presente na instalação do Ubuntu, mas com algumas dependências que precisaremos, então:

# apt-get build-dep openssl

Para a construção dos pacotes .deb (neste caso especifico) precisaremos deixar o compilador bala, então rode:

# apt-get build-dep gcc

Também precisaremos desta ferramenta mágica "dpatch" para os patch:

# apt-get install dpatch

O "fakeroot" não pode ficar de fora, heheh:

# apt-get install fakeroot

Agora do diretório fonte do freeradius (/usr/local/src/freeradius-1.1.7/), vamos tentar construir os pacotes .deb, não comentei ainda, mas o objetivo de criar os pacotes .deb é porque com estas ferramentas as dependências são corrigidas mais facilmente, então vamos lá:

# dpkg-buildpackage -rfakeroot

A primeira saída que tive foi essa:

dpkg-buildpackage: source package is freeradius
dpkg-buildpackage: source version is 1.1.7-0
dpkg-buildpackage: source changed by Alan DeKok
dpkg-buildpackage: host architecture i386
dpkg-checkbuilddeps: Unmet build dependencies: dpatch (>= 2) autotools-dev libtool (>= 1.5) libltdl3-dev libpam0g-dev libmysqlclient15-dev | libmysqlclient14-dev | libmysqlclient-dev libgdbm-dev libldap2-dev libsasl2-dev libiodbc2-dev libkrb5-dev libperl-dev snmp libsnmp9-dev | libsnmp5-dev | libsnmp4.2-dev libpq-dev | postgresql-dev libssl-dev
dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: (Use -d flag to override.)

Vocês também devem ter algo parecido, mas nada de pânico, vamos instalar as "bonecas". Temos que instalar tudo, mesmo que não precisemos de suporte a postgre, ldap e etc. Mas acho mais fácil instalar esta lib do que mexer nos arquivos de conf para criar só os .deb que precisaremos. Mão a obra e instalem:

# apt-get install autotools-dev
# apt-get install libtool
# apt-get install libltdl3-dev
# apt-get install libpam0g-dev
# apt-get install libmysqlclient15-dev
# apt-get install libgdbm-dev
# apt-get install libldap2-dev
# apt-get install libsasl2-dev
# apt-get install libiodbc2-dev
# apt-get install libkrb5-dev
# apt-get install libperl-dev
# apt-get install snmp
# apt-get install libsnmp9-dev
# apt-get install libpq-dev


(eu instalo um por um porque minha conexão é uma m$%#$ e se rodar tudo junto não aguento ficar esperando, também quando da pau é mais fácil de resolver)

Vamos agora rodar novamente o:

# dpkg-buildpackage -rfakeroot

"Ohhh" e a construção dos pacotes foi...

Então no diretório acima de /usr/local/src/freeradius-1.1.7 temos os seguintes pacotes .deb criados:

freeradius-krb5_1.1.7-0_i386.deb
freeradius-ldap_1.1.7-0_i386.deb
freeradius-dialupadmin_1.1.7-0_all.deb
freeradius-mysql_1.1.7-0_i386.deb
freeradius_1.1.7-0_i386.deb
freeradius-iodbc_1.1.7-0_i386.deb
freeradius-postgresql_1.1.7-0_i386.deb

Vamos agora a instalação:

# cd ..

Então em /usr/local/src:

# dpkg -i freeradius_1.1.7-0_i386.deb

OK! Instalação com sucesso.

IMPORTANTE: Na instalação através do .deb você tem os arquivos de configuração em /etc/freeradius/ e o script para rodar o radius que é colocado em /etc/init.d não é radiusd e sim freeradius, então para iniciar o radius:

# /etc/init.d/freeradius start

Também será criado um usuário e grupo chamado "freerad".


Configurações

Para configurar o suporte a EAP/TLS e PEAP siga o artigo anterior em:

É isso aí galera, espero ter ajudado.




0 comentários: