Bom, vamos lá.
Começamos baixando o
Haserl, necessário para montar as páginas do
CoovaChilli em tempo de execução, no caso, como estou usando
Debian Squeeze, peguei o binário do
Testing, não tive problemas.
Antes de instalar o Haserl, instale a dependência
liblua:
# apt-get install liblua5.1-0
E depois:
# wget http://ftp.br.debian.org/debian/pool/main/h/haserl/haserl_0.9.29-3_i386.deb
# dpkg -i haserl_0.9.29-3_i386.deb
Pronto, instalado! Podemos preparar o
Chilli.
Aqui existe um grande impasse, para o nosso artigo peguei a versão 1.3.0 compilada para o
Ubuntu, não tive problemas, mas o interessante é que se você tiver um pouco de conhecimento em compilação de pacotes, pegue o fonte e compile para o Debian (
coova.org/CoovaChilli/DistroBuilding), em meus clientes já fiz de ambos os modos.
Falo isso porque existe uma funcionalidade descontinuada, que é a com o "IE 6", nestas versões mais novas a autenticação não funciona com Internet Explorer 6. Para fazer funcionar, tive que mudar umas linhas no fonte do
Coova. Mas para todos os efeitos, é melhor usar como está.
Vamos lá:
# wget http://ap.coova.org/chilli/coova-chilli_1.2.6_i386.deb
# dpkg -i coova-chilli_1.2.6_i386.deb
Pronto, Coova instalado!
O Coova vem com um pequeno problema, ele não carrega na inicialização por padrão, pelo menos no Debian encontrei este contratempo. Vamos alterar para ficar de acordo com o
LSB (Linux Standard Base).
O script de inicialização do
Coovachilli não vem por padrão com as tags LSB, tive que criar manualmente. Vamos lá.
Edite o arquivo:
/etc/init.d/chilli
E logo após a entrada
#! /bin/sh, dê uma quebra de linha e adicione o seguinte:
### BEGIN INIT INFO
#Provides: coovachilli
# Required-Start: $network firewall freeradius mysql
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Provides Captive Portal using
Tickets
### END INIT INFO
Isso fará com que, quando instalarmos algum novo software que use a rede, o mecanismo que gerencia a ordem de boot saiba como ajustar essa ordem, de tal modo que cada software inicialize após suas dependências!
Logo após, digite:
# insserv -vf chilli
Pronto, instalamos o Coova e já ajustamos sua inicialização.
Agora, o FreeRADIUS e o MySQL!
FreeRADIUS e MySQL
Na sequência, rodamos o seguinte:
# apt-get install freeradius freeradius-mysql mysql-server
Isso instalará o último grupo de aplicativos e dependências que precisamos para o portal cativo. Não vou abordar a instalação do
MySQL, apenas os ajustes que fiz para que o
FreeRADIUS comunique legal com o MySQL.
Após instalar, vamos configurar o FreeRADIUS. Primeiro, vamos criar um banco de dados para o FreeRADIUS:
Acesse o MySQL e digite:
mysql>
create database radius;
mysql>
grant all privileges on radius.* to radiususer@'localhost' identified by 'senhadoradius';
mysql>
flush privileges;
Vamos importar as tabelas do FreeRADIUS:
mysql>
mysql -u radiususer -psenhadoradius radius < /etc/freeradius/sql/mysql/schema.sql
mysql>
mysql -u radiususer -psenhadoradius radius < /etc/freeradius/sql/mysql/nas.sql
mysql>
mysql -u radiususer -psenhadoradius radius < /etc/freeradius/sql/mysql/ippool.sql
Inserir um usuário para testar em seguida:
mysql>
mysql -u radiususer -psenhadoradius radius
mysql>
insert into radcheck (username, attribute, op, value) values ('usuario', 'Password', '==', 'senha') ;
* Importante: Pronto, agora configuramos o FreeRADIUS, edite o arquivo
/etc/freeradius/radiusd.conf e descomente a linha (no meu arquivo aqui, era a linha 683):
$INCLUDE sql.conf
No arquivo
/etc/freeradius/sql.conf, altere os dados conforme criamos no MySQL:
login = "radiususer"
password = "senhadoradius"
# Database table configuration for everything except Oracle
radius_db = "radius"
Agora, no arquivo
/etc/freeradius/sites-enabled/default, altere o seguinte:
- Sessão authorize → descomente a linha: sql
- Sessão accounting → descomente a linha: sql
- Sessão session → descomente a linha: sql
- Sessão post-auth → descomente a linha: sql
Pronto, podemos reiniciar o FreeRADIUS:
# /etc/init.d/freeradius restart
E também testar se o nosso Radius vai comunicar com o MySQL:
# radtest usuario senha localhost 1813 testing123
Se receber algo como:
Sending Access-Request of id 235 to 127.0.0.1 port 1812
User-Name = "usuario"
User-Password = "senha"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1813
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=235, length=20
... quer dizer que funcionou.