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: 108.910 ]

Por: André Santos em 07/08/2010


Topologia do projeto



Este tutorial foi adaptado por mim, inicialmente retirado de:
Então os créditos são para cem.beyaz, criador primário dos passos. Mas vamos lá, sempre é um mistério o "como é que faz", vou ser objetivo e sugiro as seguintes leituras antes de prosseguir com o artigo:
Linux: Hotspot rápido com Coovachilli

Versões usadas neste artigo:
  • L - Linux Debian Lenny 5.0.5
  • A - Apache/2.2.9
  • M - MySQL Distrib 5.0.51a
  • P - PHP Version 5.2.6-1
  • FreeRADIUS Version 2.0.4
  • Coova-chilli 1.0.13

Instalando LAMP

Instale seu Debian Lenny como preferir e configure a rede da forma que a internet fique conectada em uma placa de rede (ex: eth0) e a rede com o chilli em outra placa (ex: eth1).

A seguir adicione seus repositórios e:

# apt-get update && apt-get upgrade

Logo depois:

# apt-get install apache2 apache2-doc apache2-utils ssl-cert libapache2-mod-php5 php5 php5-common php5-mysql mysql-server mysql-client libmysqlclient15-dev freeradius freeradius-mysql phpmyadmin

Em seguida altere o seguinte arquivo /etc/apache2/mods-available/dir.conf para:

DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

Execute o seguinte comando para ativar os módulos do Apache:

# a2enmod ssl && a2enmod rewrite && a2enmod suexec && a2enmod include && a2enmod php5

Crie um link simbólico desta forma para podermos testar o suporte à https:

# ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

Vamos criar um certificado a nível de testes:

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

Alteramos o arquivo /etc/apache2/sites-available/default-ssl para remover as linhas comentadas (sugiro, que para quem esta iniciando, ler as linhas comentadas para saber o porque elas estão lá):

# cp /etc/apache2/sites-available/default-ssl /srv/
# cat /srv/default-ssl | grep -v '#' > /etc/apache2/sites-available/default-ssl


Altere o arquivo /etc/apache2/sites-available/default-ssl e mude a linha:

SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem

Para:

SSLCertificateFile    /etc/apache2/ssl/apache.pem"

E remova a linha "SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key".

Reinicie o Apache:

# /etc/init.d/apache2 restart

Vamos testar, vá até um navegador e digite:
  • http://seu.ip.local/
  • https://seu.ip.local/

Se nas duas tentativas deu tudo certo, vai aparecer uma mensagem "It works!", lembrando que no acesso seguro confirmar exceção!

Obs.: Muito importante, se até aqui a mensagem não apareceu, sugiro revisar o artigo!

Seguindo, verifique se o mysql esta rodando:

# netstat -tap | grep mysql

Deve retornar algo como:

tcp   0  0 localhost:mysql    *:*       LISTEN    5459/mysqld

se sim, prossiga!

    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

Segurança Física (Parte 1)

Detectando vulnerabilidades com o Nessus

Hardening, se adequando as normas ISO 27000

Cacti - Monitorar é preciso

Uma breve abordagem sobre Criptografia

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts