Hotspot rápido com Coovachilli

Este é meu segundo artigo, talvez esteja mais para dica, mas quero deixar aqui uma situação inusitada que aconteceu comigo quando eu precisei montar um sistema autenticado para um cliente aqui, passei dias estudando até chegar neste ponto. É simples e bem personalizável.

[ Hits: 100.462 ]

Por: André Santos em 07/08/2010


Coovachilli - Configuração



Bom, agora vamos instalar o protagonista do nosso filme, comece fazendo o download do mesmo para uma pasta de sua preferencia:

# wget http://ap.coova.org/chilli/coova-chilli_1.0.13-1_i386.deb

Instale desta forma:

# dpkg -i coova-chilli_1.0.13-1_i386.deb

Agora vamos configurar o chilli:

# cd /etc/chilli/
# cp defaults config
# mkdir /var/www/auth
# cp www/* /var/www/auth/
# mkdir /var/www/auth/images
# cp www/coova.jpg /var/www/auth/images/
# mkdir /var/www/auth/uam
# cd /var/www/auth/uam
# wget
http://ap.coova.org/uam/
# wget http://ap.coova.org/js/chilli.js

Edite o arquivo "/var/www/auth/uam/index.html" e altere a seguinte linha:

<script id='chillijs' src='http://ip.para.chilli.atuar/js/chilli.js'></script>

Salve!

Obs.: O "ip.para.chilli.atuar" é uma faixa diferente da faixa atribuída na interface onde chilli irá escutar.

Edite agora "/etc/chilli/www/ChilliLibrary.js" e altere a linha:

var chilliController = { interval:30 , host:"ip.para.chilli.atuar" , port:3990 , ident:'00' , ssl:false , uamService: '' };

Salve!

Rode o seguinte comando:

# cat /etc/chilli/www/ChilliLibrary.js > /var/www/auth/ChilliLibrary.js

Vamos agora setar o chilli para iniciar com o boot, edite o arquivo "/etc/default/chilli" e mude:

START_CHILLI=0 para START_CHILLI=1

Salve.

Vamos configurar o Chilli.

Edite o arquivo "/etc/chilli/config" e altere as seguintes opções:

HS_LANIF=eth1
HS_NETWORK=faixa.chilli ### ex: 192.168.0.0
HS_NETMASK=255.255.255.0
HS_UAMLISTEN=ip.para.chilli.atuar ### ex: 192.168.0.1
HS_UAMPORT=3990

HS_STATIP=faixa.chilli/24
HS_STATIP_MASK=255.255.255.0
#HS_DNS_DOMAIN=
HS_DNS1=servidor.dns.01
HS_DNS2=servidor.dns.02


HS_NASID=nas01
HS_UAMSECRET=palavra.secreta.chilli
HS_RADIUS=127.0.0.1
HS_RADIUS2=127.0.0.1
HS_RADSECRET=notshow
HS_UAMALLOW=faixa.chilli/24

HS_UAMSERVER=ip.para.chilli.atuar
HS_UAMFORMAT=https://\$HS_UAMSERVER/cgi-bin/hotspotlogin.cgi
HS_UAMHOMEPAGE=http://\$HS_UAMLISTEN:\$HS_UAMPORT/www/coova.html
HS_UAMSERVICE=https://ip.para.chilli.atuar/cgi-bin/hotspotlogin.cgi

Crie a página de login desta forma:

# zcat -c /usr/share/doc/coova-chilli/hotspotlogin.cgi.gz > /usr/lib/cgi-bin/hotspotlogin.cgi

Edite a página de login:

# joe /usr/lib/cgi-bin/hotspotlogin.cgi

E altere as linhas:

$uamsecret = "palavra.secreta.chilli";
$uamsecret = "palavra.secreta.chilli";

Agora vamos configurar o VirtualHost para aceitar as conexões:

# touch /etc/apache2/sites-available/hotspot

Cole o conteúdo abaixo no arquivo criado acima:

NameVirtualHost 192.168.5.1:443
<VirtualHost 192.168.5.1:443>
   ServerAdmin webmaster@domain.org
   DocumentRoot "/var/www/auth/"
   ServerName "192.168.5.1"
   <Directory "/var/www/auth/">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>

   Alias "/dialupadmin/" "/usr/share/freeradius-dialupadmin/htdocs/"
   <Directory "/usr/share/freeradius-dialupadmin/htdocs/">
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
   </Directory>

   ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
   <Directory "/usr/lib/cgi-bin/">
      AllowOverride None
      Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
   </Directory>

   ErrorLog /var/log/apache2/hotspot-error.log

   LogLevel warn

   CustomLog /var/log/apache2/hotspot-access.log combined

   ServerSignature On
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>

Agora vamos ativar este VirtualHost:

# a2ensite hotspot

Reinicie o Apache:

# /etc/init.d/apache2 restart

Mude as permissões desta forma:

# chown -R www-data.www-data /var/www/auth/
# chown -R www-data.www-data /var/www/auth/*
# chown -R www-data.www-data /usr/lib/cgi-bin/hotspotlogin.cgi
# chmod 777 /usr/lib/cgi-bin/hotspotlogin.cgi


Teste ligando um computador na interface onde colocou o Coovachilli para trabalhar deve ser capturado o site inicial e redirecionado para uma pagina segura onde será feita a autenticação mediante login e senha cadastrados no mysql!!!

Obs.: o Coovachilli já possui um servidor próprio de dhcp que irá atuar na mesma eth onde o chilli escutar!

Se até aqui deu tudo certo, parabéns você é mais um feliz administrador de Hotspot! Caso contrário revise sua configuração.

Página anterior     Próxima página

Páginas do artigo
   1. Topologia do projeto
   2. Configurando MySQL e Freeradius
   3. Coovachilli - Configuração
   4. Considerações finais
Outros artigos deste autor

Firewall funcional de fácil manipulação

Hotspot - Atualização - CoovaChilli

Leitura recomendada

Criando VPNs entre servidores Linux sem mistérios (parte I)

Armazenamento de senhas no Linux

HoneyPots em Linux

Elaborando uma política de segurança para a empresa

Servidor de DNS com DNS reverso, DHCP3 e wpad.dat

  
Comentários
[1] Comentário enviado por nps em 07/08/2010 - 21:05h

Perfeito, estava precisando de algo assim...

[2] Comentário enviado por msantoro em 09/08/2010 - 16:58h

Tenho usado o Mikrotik para trabalhar como Hotspot em minha rede... ele tem dado conta do recado muito bem por aqui... mas com ctz vou estar testando esta solução proposta por vc... Parabens pela contribuição...

Abraços.

[3] Comentário enviado por sayrus em 14/08/2010 - 18:01h

André obrigado eu tava mesmo querendo deixar o mikrotik só para envio,agora o meu ta dando erro no comando:

mkdir /etc/apache2/ssl/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem -days 365

Opção invalida
Deixei certificado padrão ate ai tudo bem.


E as linhas que pediu para criar no /etc/apache2/sites-available/hotspot
esta dando esse erro no restart do apache:

Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName


Pesquisei sobre erro e ate achei algo mas não funcionou,porem quando eu coloco as linhas do arquivo default do apache fica normal mas nao aparece pagina de login.Me ajuda por favor.Valeuuu

[4] Comentário enviado por andfeh em 16/08/2010 - 16:49h

Opa, boa tarde!
Seguinte sayrus, coloquei o comando errado, :) ...
faça assim:

mkdir /etc/apache2/ssl

e daí:

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem -days 365
-----------------------------------------------------------------------------------------------------

Cara à respeito do erro do apache, apesar de não influenciar em nada, tem uma linha no arquivo hotspot lá chamada "ServerName 192.168.5.1", ai vc coloca o mesmo IP que você colocar na opção "HS_UAMLISTEN" do arquivo de configuração do chilli.
--------------------------------------------------------------------------------------------------------------------

e sobre não aparecer pagina de login você tem que testar para ver se abre "https://ip.do.servidor" se abrir blz, se não de uma olhada no conteúdo, e também não esqueça disso, a faixa de rede que você usar no chilli tem que ser diferente da faixa usada no ethX onde o chilli ta escutando.

qualquer coisa me add no msn ou gmail.

Até mais.

[5] Comentário enviado por ajsg em 19/08/2010 - 02:10h

amigo, gostei muito do artigo, fiquei implementando ele no ubuntu server, deu tudo certo, com exceção do teste do freeradius que precisa ser com 127.0.0.1 e não localhost que dá erro no ubuntu na função udpfromto.

mas o meu problema maior foi no final, o teste de auntenticação, emulei via virtual box e tá tudo funcionando, se coloco ip na estaçao ela pinga para o server e vice versa, mas ele não mostra a página web de autenticação, poderia me ajudar?

ah, se tirar o ip da estação ele não recebe o ip por dhcp do chilli, tem alguma dica?

obrigado.

[6] Comentário enviado por ajsg em 19/08/2010 - 11:21h

consegui fazer aunteticar, mas na página abre uma mensagem:
Chillipot Login Failed
Login Must be performed through Chillipot daemon.

[7] Comentário enviado por andfeh em 19/08/2010 - 22:47h

Opa, boa noite!

Seguinte ajsg, primeiro, vc conseguiu cadastrar o usuario no mysql e pelo radtest retornou Accpet-Accept??

Segundo, vc alterou as linhas:
$uamsecret = "palavra.secreta.chilli";
$uamsecret = "palavra.secreta.chilli";

do arquivo:

/usr/lib/cgi-bin/hotspotlogin.cgi

???

Qualquer coisa me chama aew...

[8] Comentário enviado por ajsg em 23/08/2010 - 16:58h

ola andfeh, acabei de fazer o teste e tudo na mesma, deu certo o teste do acceept no mysql e a palavra secreta estava na linha do arquivo. Mas mesmo assim continua o erro. Se puder ver mais alguma coisa me avisa, estou pesquisando por aqui também.Abs,

[9] Comentário enviado por andfeh em 23/08/2010 - 21:41h

opa, boa noite,

ajsg, posta teu arquivo config do chilli e teu arquivo interfaces da rede aew...

t+

[10] Comentário enviado por ademirdorneles em 24/08/2010 - 12:51h

Olá!!

Bom, fiz o passo-a-passo e me deparei com a seguinte situação, o pc cliente recebe o ip via dhcp tudo certo, porém não redireciona para a página de login! onde pode estar o erro? revisei e aparentemente não encontrei nada diferente doque vc passou no artigo!

Desde já agradeço pela atenção!


[11] Comentário enviado por ademirdorneles em 25/08/2010 - 10:43h

ajsg, vc deve estar passando pela mesma cituação que passei!

na linha: HS_RADSECRET=notshow

vc deve mudar o notshow pela sua senha de acesso ao freeradius!


espero ter ajudado.


abraço

[12] Comentário enviado por wagner_guitar em 22/10/2010 - 16:04h


alguem pode ajudar???

[13] Comentário enviado por wagner_guitar em 22/10/2010 - 16:49h

Nao tou conseguindo fazer aqui estou confuso com esses ip.para.chilli.atuar e faixa.chilli.
Estou fazendo num cenario de teste com virtualbox e a maquina esta com uma placa em modo bridge e outra numa rede interna.
Ate aqui deu tudo certo >>""radtest usertemp senhatemp localhost 1812 "sua.palavra.secreta" ...""
Criei um cliente xp com a placa na rede interna do Vbox e no browser nao consigo ver a pagina de login, e se eu digitar o ip que esta na interface interna do hotspot aparece a pagina do apache (It's work)

alguem pode ajudar???


vlw

[14] Comentário enviado por andfeh em 29/10/2010 - 09:38h

wagner_guitar, o esquema do "ip.para.chilli.atuar" é um ip diferente da faixa que tu setou na eth da rede interna, por ex., se tu colocou o ip 172.16.16.1 na eth onde tem os clientes, vc tem que colocar um ip de outra faixa pro chilli atuar, ex.: 193.193.193.1 e "faixa.chilli"= 193.193.193.0.

ok?

qualquer duvida posta aew.

Deus abençõe.

[15] Comentário enviado por mau_smo em 22/11/2010 - 10:52h

Olá pessoal,

Segui o artigo, mas estou com problema na hora de autenticar na página de autenticação, "ChilliSpot Login Failed".
Na linha de comando consigo autenticar com o comando radtest.

O cliente que coloco na interface de LAN, pega configuração ip do coovachilli, chega na página de autenticação, mas como falei antes, da falha de login.

Tem outro problema também, se no cliente eu coloco no browser por ex.: www.terra.com.br, da timeout (não é redirecionado para a página de login, mas se eu coloco
por exemplo: 200.154.56.80, ai sim é redirecionado para a página de login.

Obrigado pela atenção!
abs


[16] Comentário enviado por andfeh em 07/12/2010 - 10:53h

Opa bom dia mau_smo, da uma olhada no teu firewall, isso pode ser o firewall fechando a porta de DNS (53), o esquema de "Login Failed", da uma olhada no arquivo hotspotlogin.cgi, tem aquelas "$uamsecret" tem que ser as mesmas que ta no conf do chilli.

Deus Abençoe, t+.

[17] Comentário enviado por viniciuspedra em 02/02/2011 - 22:06h

Olá André! Parabéns pelo seu artigo!
É de grande utilidade e com toda certeza o mesmo já está na minha lista de favoritos, inclusive semana que vem farei uns testes com ele.
Na leitura me surgiu as seguintes dúvidas:
- Como fica o acesso ao MSN? O cliente primeiramente precisa se autenticar para liberar acesso utilizar o msn?
- É possível deixar o cliente com proxy e fixar ip?

Uma dica seria na hora de autenticar o comando em php verificar se determinado usuário está conectando pelo equipamento dele (Endereço MAC) pois caso contrário ele poderá ceder o usuário e senha dele a demais usuários que não tem autorização!

[18] Comentário enviado por ebortolin em 20/03/2011 - 18:41h

Caro!
Seguindo seu tutorial, instalei o coovachilli 1.2.6 com freeradius no slackware 13.1. Me deparei com um problema que nao conseguei resolver ainda. Eu consigo logar o usuario, mas, não consigo fazer navegar.
Existe algo a mais a ser adicionado no config ou no up.sh para que quando o usuario autentique consiga navegar?

[19] Comentário enviado por andfeh em 26/03/2011 - 09:35h

Opa, bom dia ebortolin, pra navegar vc tem que ter um script de compartilhamento de internet...

#!/bin/bash

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

#-----------------------------------------------------------------

onde "eth1" é a ether ligada na internet.

Até mais, Deus Abençõe.

[20] Comentário enviado por prgs.linux em 01/05/2011 - 16:39h

Manu otimo tutorial, e so fazendo uma ressalva.... sobre a dica que vc deu...."E não esqueça sempre que tiver dúvidas sobre como funciona consulte o manual do proprietário: Bíblia Sagrada. "
E na palavra que fortaleço meus conhecimentos...

[21] Comentário enviado por atilaws em 14/05/2012 - 09:42h

Daê galera... no meu caso, após completar a configuração, tento navegar pela máquina cliente e aparece o seguinte no navegador

obs.:10.15.0.1 é a minha rede virtual

http://10.15.0.1:3990/www/coova.html?loginurl=http%3a%2f%2f10.15.0.1%3a10.15.0.1%2fcgi-bin%2fhotspot...

então vai para o seguinte endereço na barra de navegação:
http://10.15.0.1:3990/prelogin

e esta mensagem aparece no browser:
Browser error!
Browser does not support redirect!

o script de compartilhamento está devidamente configurado no servidor, a máquina cliente pinga o servidor e vice-versa, o servidor pinga na internet...
alguém conhece o problema? vlw!

[22] Comentário enviado por kleytonhtv em 27/09/2012 - 16:38h

Cara o Meu está dando o seguinte erro:

Quando eu entro com maquina cliente na pagina web ele redireciona, mas da erro na pagina de login diz que esta pagina não pode ser exibida.

PQ?

[23] Comentário enviado por andyblessing em 09/12/2012 - 20:21h

Olá efetuei todo o procedimento e retornou o seguinte erro quando reseto o apache:
Syntax error on line 37 of /etc/apache2/sites-enebled/hotspot:
SSLCertificateFile file '/etc/apache2/ssl/apache.pem' does not exist or empty
Action 'configtest' failed.
The apache erros log may have more information.


e se não bastasse quando digito a senha no gnome pra logar ele começa a carregar pisca a tela e volta pra tela de login, já reinstalei o gnome e n funfou.
Estou usando o Debian Squeeze.
Alguem pode me ajudar please.

[24] Comentário enviado por andfeh em 10/12/2012 - 10:25h

Bom dia a todos, antes de mais nada, lembrem-se esse artigo é velho pacas, as técnicas que ensinei aqui ja estão defassadas. Prometo que assim que tiver um tempo, vou fazer um artigo com a versão nova do coova.

Abraço!

[25] Comentário enviado por andyblessing em 31/12/2012 - 17:59h

OLá estou usando o windows7 com Ubuntu12.04, em virtualbox com 2 placas de rede com dhcp na maquina local e dhcp na virtual, e configurei com bridge e permitir tudo no virtual box, fiz todo procedimento descrito no artigo, apenas troquei (ip.para.chilli.atuar) por 192.168.0.1 em todos os arquivos que pedia no artigo,Preciso de configurar ip na placa que distribui internet pra rede? conectei um note na placa de rede do meu pc, com dhcp e nao recebeu ip nenhum e como faço pra administrar o chili pelo navegador , usuarios senhas, e para compartilhar a internet para outro pc.desde já agradeço

[26] Comentário enviado por victormredes em 27/01/2014 - 12:23h

Bom dia

Estou com um problema, quando faço essas alterações, o freeradius não restarta.

Mesmo apenas adicionando o sql dentro das funções abaixo, ou adicionando as funções + comentado o files do authorize e também fazendo pé da letra( excluindo todo contéudo do arquivo e colando as linhas abaixo).

Edite agora o arquivo /etc/freeradius/sites-enabled/default e altere da seguinte forma:

authorize {
#files
sql
}

accounting {
sql
}

session {
sql
}

[27] Comentário enviado por andfeh em 27/01/2014 - 15:09h

Boa tarde, seguinte, não é para limpar o arquivo ... apenas configure de modo que fique nessa ordem, por exemplo, na sessão authorize você procura a linha "files" e comenta, e procura a linhas sql e descomenta.

Caso esteja fazendo assim, pode rodar o freeradius em modo DEBUG, para poder analizar aonde esta o problema.

$ freeradius -XXX

Para sair: ctrl+c

Abraços!

[28] Comentário enviado por richardaum em 16/08/2015 - 18:50h


Olá, tive um problema na configuração do SSL.

Usei o seguinte comando e resolveu o problema:
sudo a2ensite default-ssl

[29] Comentário enviado por tiagopraz em 28/04/2016 - 03:19h

Olá! Sei que este tópico é meio antigo, mas decidi usa-lo para fins de estudos e porque é o melhorzinho sobre o assunto, já que ninguém fez nenhum mais recente, pelo menos de 2013 pra cá.
Seguinte: O meu fica um tempinho na página de carregamento do coova e quando vai para o cgi-bin aparece a mensagem de que o servidor demorou de responder. Então abri o nmap na máquina cliente (windows 7) e coloquei para escanar por portas tcp (no resultado de tudo (intense scan) não aparece nenhuma porta aberta) no intense scan de portas tcp, apareceram as portas 3990 e 4990 tcp open. Tenho um script de firewall no init.d pois utilizava proxy transparente, desativei a linha de forwarding para a porta do proxy e desativei tambem o squid, a unica linha que ficou foi a de compartilhamento de internet. então adicionei as linhas no firewall:
iptables -A INPUT -s 192.168.100.0/255.255.255.0 -i eth1 -j ACCEPT
iptables -A OUTPUT -s 192.168.100.0/255.255.255.0 -o eth1 -j ACCEPT

Coloquei estas linhas para liberar tudo em entrada e saída na interface da rede lan (a interface de internet é a eth0), mas não adiantou.

Acho que até já colocaram aqui o mesmo que está acontecendo comigo:

http://10.15.0.1:3990/www/coova.html?loginurl=http%3a%2f%2f10.15.0.1%3a10.15.0.1%2fcgi-bin%2fhotspot...

Mas no caso, aparece a imagem do coova e tudo.

[30] Comentário enviado por psydark em 28/12/2017 - 23:47h

Fala galera! Tranquilo?

É o seguinte, estou precisando muito por isso pra funcionar, porém o link pra baixar já não funciona mais, alguém aí consegue criar um outro pra baixar?

# wget http://ap.coova.org/uam/
# wget http://ap.coova.org/js/chilli.js

São os dessa parte :(


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts