Portal de autenticação wireless (HotSpot)
Autor: Marcos Antonio RosaData: 30/11/2007
Introdução
Com este artigo mostrarei uma das possibilidades de se disponibilizar uma rede wireless
de fácil acesso, ou seja, sem a intervenção do administrador para
permitir que usuários se conectem a mesma, porém mantendo o controle
sobre seu uso. Este é basicamente o conceito usado em HotSpot de aeroportos, terminais, etc.
Então em termos operacionais a rede teria a seguinte característica, rede aberta para a conexão de qualquer usuário, porém com todas as conexões controladas e filtradas de modo que nenhum acesso é garantido ao usuário, a menos que ele abra um navegador web, a partir do qual será redirecionado para uma página de autenticação, e a partir desta página o usuário poderá cadastrar-se ou usar suas credenciais caso já possua.
O uso desta estrutura é bem flexível e pode se adaptar a diversas situações.
Então em termos operacionais a rede teria a seguinte característica, rede aberta para a conexão de qualquer usuário, porém com todas as conexões controladas e filtradas de modo que nenhum acesso é garantido ao usuário, a menos que ele abra um navegador web, a partir do qual será redirecionado para uma página de autenticação, e a partir desta página o usuário poderá cadastrar-se ou usar suas credenciais caso já possua.
O uso desta estrutura é bem flexível e pode se adaptar a diversas situações.
Diagrama lógico
Instalação de pré-requisitos
Será necessário:
Para o perfeito funcionamento de nosso gateway será necessário a instalação de alguns serviços e configurações adicionais, conforme segue:
OBS: No caso do Bind acho interessante remover qualquer instalação anterior para evitar complicações, mas se souber o que esta fazendo apenas o configure.
# system-config-network
# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/
(sujeito a atualizações, caso não encontre este diretório verifique a ver)
# mv /etc/dhcp.conf.sample /etc/dhcpd.conf # vi /etc/dhcpd.conf (edite o arquivo conforme segue)
Iniciando o serviço, o mesmo pode ser feito com o script (rc.d"n") conforme comentado anteriormente:
# /etc/init.d/dhcpd start
OBS: A instalação do Bind proposta é basicamente para encaminhar as requisições para o servidor DNS1 / DNS2, de sua escolha.
# yum install system-config-bind
# chmod 755 /var/named/
# chmod 775 /var/named/chroot/
# chmod 775 /var/named/chroot/var/
# chmod 775 /var/named/chroot/var/named/
# chmod 775 /var/named/chroot/var/run/
# chmod 777 /var/named/chroot/var/run/named/
# cd /var/named/chroot/var/named/
# ln -s ../../ chroot
# chkconfig --levels 235 named on
# system-config-bind (só iniciar para criar as configurações padrões e depois fechar)
Edite o named.conf conforme segue:
# vi /var/named/chroot/etc/named.conf
Incluir as seguintes linhas:
Inicie o servidor:
# /etc/init.d/named start
OBS: Para se tornar mais prático você pode criar um script de inicialização e colocar no runlevel adequado 3 ou 5, conforme sua definição.
- Fedora Core 6, instalado sem DNS;
- Micro com 2 interfaces LAN;
- 01 AP (access point);
- 01 cartão de acesso wireless.
Instalação Nocat
O projeto NoCat (http://nocat.net) transforma um gateway de acesso em uma ferramenta de "Captive portal", esta tecnologia é baseada em um firewall (iptables) que bloqueia toda conexão TCP/UDP a partir da rede local, capturando toda sessão http e redirecionado para um portal de login, este portal é protegido por uma sessão SSL, a partir do login no portal o NoCat aplica regras ao firewall liberando acesso ao usuário conforme definições de uso.Para o perfeito funcionamento de nosso gateway será necessário a instalação de alguns serviços e configurações adicionais, conforme segue:
OBS: No caso do Bind acho interessante remover qualquer instalação anterior para evitar complicações, mas se souber o que esta fazendo apenas o configure.
Configuração das placas de rede
Use o utilitário do FC6 ou "ifconfig":# system-config-network
- eth0 = internet (configure com ip dinâmico ou fixo de modo a ter acesso à internet);
- eth1 = LAN (configure com ip fixo e sem gateway, no nosso caso ip = 10.34.122.1/24, se for alterado este endereço deve também ser alterado no dhcpd.conf)
Servidor DHCP
# yum install dhcp# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/
(sujeito a atualizações, caso não encontre este diretório verifique a ver)
# mv /etc/dhcp.conf.sample /etc/dhcpd.conf # vi /etc/dhcpd.conf (edite o arquivo conforme segue)
ddns-update-style interim;
ignore client-updates;
subnet 10.34.122.0 netmask 255.255.255.0 {
# --- default gateway
option routers 10.34.122.1;
option subnet-mask 255.255.255.0;
option nis-domain "suarede.com.br";
option domain-name "suarede.com.br";
option domain-name-servers 10.34.122.1;
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 10.34.122.10 10.34.122.20;
default-lease-time 21600;
max-lease-time 43200;
}
ignore client-updates;
subnet 10.34.122.0 netmask 255.255.255.0 {
# --- default gateway
option routers 10.34.122.1;
option subnet-mask 255.255.255.0;
option nis-domain "suarede.com.br";
option domain-name "suarede.com.br";
option domain-name-servers 10.34.122.1;
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 10.34.122.10 10.34.122.20;
default-lease-time 21600;
max-lease-time 43200;
}
Iniciando o serviço, o mesmo pode ser feito com o script (rc.d"n") conforme comentado anteriormente:
# /etc/init.d/dhcpd start
OBS: A instalação do Bind proposta é basicamente para encaminhar as requisições para o servidor DNS1 / DNS2, de sua escolha.
Instalação servidor DNS (BIND)
# yum install bind-chroot# yum install system-config-bind
# chmod 755 /var/named/
# chmod 775 /var/named/chroot/
# chmod 775 /var/named/chroot/var/
# chmod 775 /var/named/chroot/var/named/
# chmod 775 /var/named/chroot/var/run/
# chmod 777 /var/named/chroot/var/run/named/
# cd /var/named/chroot/var/named/
# ln -s ../../ chroot
# chkconfig --levels 235 named on
# system-config-bind (só iniciar para criar as configurações padrões e depois fechar)
Edite o named.conf conforme segue:
# vi /var/named/chroot/etc/named.conf
Incluir as seguintes linhas:
options{
//outras opções//
forward only;
forwarders{serverDNS1; serverDNS2;};
};
//outras opções//
forward only;
forwarders{serverDNS1; serverDNS2;};
};
Inicie o servidor:
# /etc/init.d/named start
OBS: Para se tornar mais prático você pode criar um script de inicialização e colocar no runlevel adequado 3 ou 5, conforme sua definição.
Configuração do gateway
Configurar o gateway para encaminhar os pacotes para a interface eth0,
de modo a se tornar uma ponte de rede, sendo possível o acesso à
internet de qualquer máquina conectada a interface eth1 configurada para
ip dinâmico.
OBS: ** comentários
# vi /etc/sysctl.conf
Alterar a linha:
"net.ipv4.ip_forward = 0"
Para:
Salve.
# vi /etc/rc.d/rc.local
Acrescentar a linha abaixo ao final do arquivo:
Isso fará o nat para eth0.
Desabilite as funções de segurança, execute:
# system-config-securitylevel
Desabilite o firewall e o SELinux.
Remova as configurações do iptables:
# rm -r /etc/sysconfig/iptables*
Reinicie o iptables:
# /etc/init.d/iptables restart
# yum install gnupg2
(ferramenta usada para criptografar)
# perl -MCPAN -e 'install Digest::MD5'
(mecanismo de autenticação)
# perl -MCPAN -e 'install Net::Netmask'
Com as configurações realizadas até este momento já será possível acessar a internet tendo como gateway nosso servidor, para isso confira inicialmente se os serviços estão marcados para arranque automático:
# system-config-services
Verifique se estão marcados o http, bind (named) e dhcpd.
# ping localhost
Verifique se retorna ping, se não retornar configure o /etc/hosts acrescentando a linha:
Reinicie o servidor, conecte um micro na interface eth1, configure para obter o endereço ip/dns dinâmico, teste se os clientes da interface LAN podem acessar a internet, só passe para os próximos passos depois de concluir esta etapa.
OBS: ** comentários
# vi /etc/sysctl.conf
Alterar a linha:
"net.ipv4.ip_forward = 0"
Para:
net.ipv4.ip_forward = 1
Salve.
# vi /etc/rc.d/rc.local
Acrescentar a linha abaixo ao final do arquivo:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE"
Isso fará o nat para eth0.
Desabilite as funções de segurança, execute:
# system-config-securitylevel
Desabilite o firewall e o SELinux.
Remova as configurações do iptables:
# rm -r /etc/sysconfig/iptables*
Reinicie o iptables:
# /etc/init.d/iptables restart
# yum install gnupg2
(ferramenta usada para criptografar)
# perl -MCPAN -e 'install Digest::MD5'
(mecanismo de autenticação)
# perl -MCPAN -e 'install Net::Netmask'
Instalação de pacotes adicionais
É bem provável que o Digest-MD5 já esteja instalado, de qualquer forma será retornada a mensagem de que já está instalado "UP", caso seja a primeira vez que esteja executando o instalador "perl MCPAN", serão feitas várias perguntas, deixe todas como padrão, observando que quando for questionado sua localização responda de acordo, ainda que se utilizar Proxy para web e FTP, no momento em que for requisitado entre com o(s) Proxy.Com as configurações realizadas até este momento já será possível acessar a internet tendo como gateway nosso servidor, para isso confira inicialmente se os serviços estão marcados para arranque automático:
# system-config-services
Verifique se estão marcados o http, bind (named) e dhcpd.
# ping localhost
Verifique se retorna ping, se não retornar configure o /etc/hosts acrescentando a linha:
127.0.0.1 localhost loopback
Reinicie o servidor, conecte um micro na interface eth1, configure para obter o endereço ip/dns dinâmico, teste se os clientes da interface LAN podem acessar a internet, só passe para os próximos passos depois de concluir esta etapa.
Instalação do NOCAT
# mkdir /home/root/src
(crie uma pasta para baixar as fontes, pode ser em qualquer lugar)
# cd /home/root/src
# wget http://nocat.net/downloads/NoCatAuth/NoCatAuth-nightly.tgz
# tar zxvf NoCatAuth-nightly.tgz
# cd NoCatAuth-nightly
IMPORTANTE: O Nocat não vem configurado para detectar firewall para kernel 2.6, portanto é preciso alterar manualmente este parâmetro, conforme segue.
# cd bin/
# vi detect-fw.sh
Substitua:
test X"`uname -sr | cut -d. -f-2`" = X"Linux 2.4"; then
Por:
Salve.
# cd .. (retorne para diretório principal dos fontes do Nocat)
Crie o diretório principal para o Nocat e execute a instalação conforme segue.
# mkdir /usr/local/nocat
(cria diretório padrão)
# make PREFIX=/usr/local/nocat/gw gateway
(instala o gateway)
# make PREFIX=/usr/local/nocat/authserv authserv
(instala o módulo autenticador)
O Nocat já vem por padrão com uma chave para assinatura digital, vamos apagar e criar uma nova:
# rm -rf /usr/local/nocat/gw/pgp/trustedkeys.pgp
# rm -rf /usr/local/nocat/authserv/pgp/trustedkeys.pgp
E agora criar uma chave nova:
# make PREFIX=/usr/local/nocat/authserv pgpkey
Algumas perguntas serão feitas, responda conforme segue.
Agora será solicitada uma senha, importante, não coloque nada, tecle apenas enter e novamente será solicitado para confirmar, tecle enter novamente.
Sua chave será gerada em alguns instantes, procure usar o micro normalmente, como por exemplo acessar alguma página e etc, para que sejam coletados dados aleatórios para a geração da chave.
Depois de concluído a geração da chave copie-a para:
# cp /usr/local/nocat/authserv/trustedkeys.pgp /usr/local/nocat/gw/pgp/
# cp /usr/local/nocat/authserv/trustedkeys.pgp /usr/local/nocat/authserv/pgp/
Para que o servidor Apache possa utilizar, altere o dono destes arquivos:
# chown -R apache:apache /usr/local/nocat/authserv/pgp
# chown -R apache:apache /usr/local/nocat/gw/pgp
Mude as permissões:
# chmod 755 /usr/local/nocat/authserv/pgp
# chmod 755 /usr/local/nocat/gw/pgp
Esta instalação do Nocat está utilizando o MySQL para armazenar os usuários e senhas, posteriormente pode-se utilizar outras bases para a autenticação, como servidor radius, ldap, arquivo texto e etc, para tanto iremos agora iniciar o MySQL, em services (system-config-services) marque para que o mysql seja iniciado no boot.
Inicie o mysql:
# /etc/init.d/mysqld start
Crie uma senha para o mysql:
# mysqladmin password senha
Criar o banco Nocat:
# mysqladmin create nocat -p
Ainda de dentro da pasta principal dos fontes do mysql, copie a base padrão do Nocat, conforme segue:
# mysql nocat < etc/nocat.schema -p
Entre com a senha definida anteriormente.
Entre no modo root no mysql:
# mysql -u root -p
(entre com a senha)
Dê privilégios para o usuário nocat, com senha nocatauth:
mysql> grant all on nocat.* to nocat@localhost identified by 'nocatauth';
mysql> flush privileges;
mysql> quit;
Acesse o mysql com o usuário nocat e senha nocatauth, configurados anteriormente para conferir se as tabelas foram criadas.
# mysql -u nocat -pnocatauth
mysql> use nocat
mysql> show tables;
Você deve ver as tabelas do nocat:
mysql> quit
Pronto, o nocat está instalado, vamos às configurações.
(crie uma pasta para baixar as fontes, pode ser em qualquer lugar)
# cd /home/root/src
# wget http://nocat.net/downloads/NoCatAuth/NoCatAuth-nightly.tgz
# tar zxvf NoCatAuth-nightly.tgz
# cd NoCatAuth-nightly
IMPORTANTE: O Nocat não vem configurado para detectar firewall para kernel 2.6, portanto é preciso alterar manualmente este parâmetro, conforme segue.
# cd bin/
# vi detect-fw.sh
Substitua:
test X"`uname -sr | cut -d. -f-2`" = X"Linux 2.4"; then
Por:
test X"`uname -sr | cut -d. -f-2`" = X"Linux 2.6"; then
Salve.
# cd .. (retorne para diretório principal dos fontes do Nocat)
Crie o diretório principal para o Nocat e execute a instalação conforme segue.
# mkdir /usr/local/nocat
(cria diretório padrão)
# make PREFIX=/usr/local/nocat/gw gateway
(instala o gateway)
# make PREFIX=/usr/local/nocat/authserv authserv
(instala o módulo autenticador)
O Nocat já vem por padrão com uma chave para assinatura digital, vamos apagar e criar uma nova:
# rm -rf /usr/local/nocat/gw/pgp/trustedkeys.pgp
# rm -rf /usr/local/nocat/authserv/pgp/trustedkeys.pgp
E agora criar uma chave nova:
# make PREFIX=/usr/local/nocat/authserv pgpkey
Algumas perguntas serão feitas, responda conforme segue.
- Escolha DSA (opção 1);
- Escolha chave com 1024;
- Expira deixe com 0 , confirme nunca expira;
- Responda as perguntas de nome, e-mail, conforme necessários;
- Confirme suas opções.
Agora será solicitada uma senha, importante, não coloque nada, tecle apenas enter e novamente será solicitado para confirmar, tecle enter novamente.
Sua chave será gerada em alguns instantes, procure usar o micro normalmente, como por exemplo acessar alguma página e etc, para que sejam coletados dados aleatórios para a geração da chave.
Depois de concluído a geração da chave copie-a para:
# cp /usr/local/nocat/authserv/trustedkeys.pgp /usr/local/nocat/gw/pgp/
# cp /usr/local/nocat/authserv/trustedkeys.pgp /usr/local/nocat/authserv/pgp/
Para que o servidor Apache possa utilizar, altere o dono destes arquivos:
# chown -R apache:apache /usr/local/nocat/authserv/pgp
# chown -R apache:apache /usr/local/nocat/gw/pgp
Mude as permissões:
# chmod 755 /usr/local/nocat/authserv/pgp
# chmod 755 /usr/local/nocat/gw/pgp
Esta instalação do Nocat está utilizando o MySQL para armazenar os usuários e senhas, posteriormente pode-se utilizar outras bases para a autenticação, como servidor radius, ldap, arquivo texto e etc, para tanto iremos agora iniciar o MySQL, em services (system-config-services) marque para que o mysql seja iniciado no boot.
Inicie o mysql:
# /etc/init.d/mysqld start
Crie uma senha para o mysql:
# mysqladmin password senha
Criar o banco Nocat:
# mysqladmin create nocat -p
Ainda de dentro da pasta principal dos fontes do mysql, copie a base padrão do Nocat, conforme segue:
# mysql nocat < etc/nocat.schema -p
Entre com a senha definida anteriormente.
Entre no modo root no mysql:
# mysql -u root -p
(entre com a senha)
Dê privilégios para o usuário nocat, com senha nocatauth:
mysql> grant all on nocat.* to nocat@localhost identified by 'nocatauth';
mysql> flush privileges;
mysql> quit;
Acesse o mysql com o usuário nocat e senha nocatauth, configurados anteriormente para conferir se as tabelas foram criadas.
# mysql -u nocat -pnocatauth
mysql> use nocat
mysql> show tables;
Você deve ver as tabelas do nocat:
mysql> quit
Pronto, o nocat está instalado, vamos às configurações.
Configurações do NOCAT
O nocat possui dois arquivos de configuração, um em /usr/local/nocat/gw/
e outro em /usr/local/nocat/authserv/, ambos com o mesmo nome
"nocat.conf", portanto cuidar para não confundí-los.
Em /usr/local/nocat/authserv/nocat.conf, altere as seguintes linhas:
No final do arquivo existe uma série de mensagens, podem ser traduzidas conforme necessário:
Em /usr/local/nocat/gw/nocat.conf altere as seguintes linhas:
Em /usr/local/nocat/authserv/nocat.conf, altere as seguintes linhas:
HomePage // coloque a sua pagina inicial
LocalGateway 10.34.122.1 // endereço da interface da rede interna eth1
LocalNetwork 10.34.122.0 // endereço de rede da interface da rede interna eth1, observe que LocalNetwork não aparece como opção você deve acrescentar.
DataSource DBI // marca a fonte para banco de dados ... nosso caso mysql
DataBase dbi:mysql:database=nocat // conector para mysql base de dados nocat
DB_User nocat // usuário do banco nocat, você deve alterar a gosto
DB_Passwd nocatauth // senha do banco nocat, você deve alterar a gosto
PGPKeyPath /usr/local/nocat/authserv/pgp // retire o comentário desta linha e confira o endereço
DocumentRoot /usr/local/nocat/authserv/htdocs
LocalGateway 10.34.122.1 // endereço da interface da rede interna eth1
LocalNetwork 10.34.122.0 // endereço de rede da interface da rede interna eth1, observe que LocalNetwork não aparece como opção você deve acrescentar.
DataSource DBI // marca a fonte para banco de dados ... nosso caso mysql
DataBase dbi:mysql:database=nocat // conector para mysql base de dados nocat
DB_User nocat // usuário do banco nocat, você deve alterar a gosto
DB_Passwd nocatauth // senha do banco nocat, você deve alterar a gosto
PGPKeyPath /usr/local/nocat/authserv/pgp // retire o comentário desta linha e confira o endereço
DocumentRoot /usr/local/nocat/authserv/htdocs
No final do arquivo existe uma série de mensagens, podem ser traduzidas conforme necessário:
Em /usr/local/nocat/gw/nocat.conf altere as seguintes linhas:
GatewayName Nome Gateway // entre com um nome para seu nocat
GatewayMode Passive // no nosso caso como precisamos de nat somente o modo Passive.
AuthServiceAddr 10.34.122.1
ExternalDevice eth0 // pode ficar comentado, ele detecta sozinho
InternalDevice eth1 // pode ficar comentado, ele detecta sozinho
LocalNetwork 10.34.122.0/24
DNSAddr 10.34.122.1 // importante é preciso utilizar o DNS no gateway , caso contrário poderá ter sites bloqueados na consulta de dns.
IncludePorts 22 80 443 // são as portas que ele aceitará serviços
#ExcludePorts 25 // não use as duas opções simultaneamente, por isso comente esta linha
PGPKeyPath /usr/local/nocat/gw/pgp
DocumentRoot /usr/local/nocat/authserv/htdocs
GatewayMode Passive // no nosso caso como precisamos de nat somente o modo Passive.
AuthServiceAddr 10.34.122.1
ExternalDevice eth0 // pode ficar comentado, ele detecta sozinho
InternalDevice eth1 // pode ficar comentado, ele detecta sozinho
LocalNetwork 10.34.122.0/24
DNSAddr 10.34.122.1 // importante é preciso utilizar o DNS no gateway , caso contrário poderá ter sites bloqueados na consulta de dns.
IncludePorts 22 80 443 // são as portas que ele aceitará serviços
#ExcludePorts 25 // não use as duas opções simultaneamente, por isso comente esta linha
PGPKeyPath /usr/local/nocat/gw/pgp
DocumentRoot /usr/local/nocat/authserv/htdocs
Configurações do APACHE (web-server)
Primeiramente vamos criar um certificado e chave novos para o "Apache",
evitando usar o certificado padrão. Para isso precisaremos do openSSL,
que já deve ter sido instalado com o Fedora, de qualquer forma caso não
tenha, instale via yum:
# yum -y install openssl
Crie uma pasta ssl, por exemplo. Vá até esta pasta e siga os procedimentos abaixo.
Criando uma nova chave:
# openssl genrsa -out nocat.key 1024
Criando assinatura para certificado:
# openssl req -new -key nocat.key -out nocat.csr
Criando um certificado assinado:
# openssl x509 -days 365 -req -in nocat.csr -signkey nocat.key -out nocat.crt
Vamos mover este certificado e chave para a pasta padrão do apache:
# mv nocat.crt /etc/pki/tls/certs/nocat.crt
# mv nocat.key /etc/pki/tls/private/nocat.key
Desta forma só precisamos alterar o nome do arquivo de certificado e chave no arquivo de configuração em /etc/http/conf.d/ssl.conf, conforme será mostrado abaixo.
Edite:
# vi /etc/httpd/conf/httpd.conf
Edite este arquivo conforme segue.
# vi /etc/httpd/conf.d/ssl.conf
Edite este arquivo conforme segue:
# yum -y install openssl
Crie uma pasta ssl, por exemplo. Vá até esta pasta e siga os procedimentos abaixo.
Criando uma nova chave:
# openssl genrsa -out nocat.key 1024
Criando assinatura para certificado:
# openssl req -new -key nocat.key -out nocat.csr
Criando um certificado assinado:
# openssl x509 -days 365 -req -in nocat.csr -signkey nocat.key -out nocat.crt
Vamos mover este certificado e chave para a pasta padrão do apache:
# mv nocat.crt /etc/pki/tls/certs/nocat.crt
# mv nocat.key /etc/pki/tls/private/nocat.key
Desta forma só precisamos alterar o nome do arquivo de certificado e chave no arquivo de configuração em /etc/http/conf.d/ssl.conf, conforme será mostrado abaixo.
Edite:
# vi /etc/httpd/conf/httpd.conf
Edite este arquivo conforme segue.
Include conf.d/*.conf
Include /usr/local/nocat/authserv/httpd.conf
ServerAdmin admin@admin.br
ServerName 10.34.122.1
DocumentRoot "/usr/local/nocat/authserv/htdocs"
ScriptAlias /cgi-bin/ /usr/local/nocat/authserv/cgi-bin/
SetEnv PERL5LIB /usr/local/nocat/suthserv/lib
SetEnv NOCAT /usr/local/nocat/authserv/nocat.conf
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
Include /usr/local/nocat/authserv/httpd.conf
ServerAdmin admin@admin.br
ServerName 10.34.122.1
DocumentRoot "/usr/local/nocat/authserv/htdocs"
ScriptAlias /cgi-bin/ /usr/local/nocat/authserv/cgi-bin/
SetEnv PERL5LIB /usr/local/nocat/suthserv/lib
SetEnv NOCAT /usr/local/nocat/authserv/nocat.conf
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
# vi /etc/httpd/conf.d/ssl.conf
Edite este arquivo conforme segue:
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec
SSLCertificateFile /etc/pki/tls/certs/nocat.crt
SSLCertificateKeyFile /etc/pki/tls/private/nocat.key
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
#SSLCryptoDevice ubsec
SSLCertificateFile /etc/pki/tls/certs/nocat.crt
SSLCertificateKeyFile /etc/pki/tls/private/nocat.key
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
Instalação do access point (AP)
A instalação do AP deve ser de modo a permitir acesso fácil à rede wireless, para tanto configure-o de forma abera, ou seja, sem restrição de acesso. Em geral é assim que todos os equipamentos vem de fábrica, mas de qualquer forma consulte a documentação do fabricante.
O gateway configurado até este ponto é bastante seguro quanto a liberação de acesso e controle de que tipo de serviços baseado em portas tcp/udp podem passar, porém não há nenhuma preocupação com a segurança entre os clientes desta rede, ou seja, controlar o que um cliente desta rede acesse ou tente acessar outros micros também no mesmo lado da lan. Para isso alguns cuidados básicos devem ser tomados :
- Primeiramente na página inicial deveremos colocar um aviso orientando os usuários a utilizarem VPN caso acessem conteúdos críticos.
- De um modo geral todos os bons AP´s oferecem o recurso de "lan isolation", que impede que um cliente wireless acesse outro (via acl). Caso você esteja usando um access point mais modesto, esse recurso pode ser implementado no NoCat, mostrarei mais adiante.
- Colocar um endereço de IP no AP em rede diferente do que está sendo publicado no DHCP, não que isso irá impedir qualquer acesso mas dificulta bastante.
- Em alguns equipamentos é possível restringir o acesso ao seu gerenciamento via rede wireless e também restringir o IP que pode acessar o gerenciamento.
Esta medidas visam basicamente a segurança do AP e do acesso indevido entre os clientes da rede.
Configurações finais
Para que o Nocat seja iniciado durante o boot na seqüência correta, vamos utilizar um "script" fornecido com ele.
Copie da pasta /etc que está dentro da pasta onde estão os fontes do nocat (NoCatAuth-nightly/etc) o arquivo "nocat.rc" para a pasta /etc/rc.d/, para ficar padrão com os demais arquivos. Mude seu nome para "rc.nocat", edite este arquivo e altere conforme segue.
Edite agora o arquivo /etc/rc.d/rc.local, onde colocamos regra para gateway, vamos agora comentar esta regra e acrescentar uma linha para carregar o script do nocat, o objetivo de termos colocado inicialmente a linha para encaminhamento era para testarmos se a ponte de rede estava ok.
Edite então o arquivo /etc/rc.d/rc.local, conforme segue:
Seu portal de acesso wireless está pronto! Este portal também pode ser usado para redes wired, caso encontre uma aplicação.
O NoCat permite várias configurações adicionais, tipo, caso você queira liberar alguns sites para navegação mesmo que os usuários não tenham sido logados. Tipo em aeroportos você tem acesso aos sites dos possíveis provedores para se cadastrar.
Copie da pasta /etc que está dentro da pasta onde estão os fontes do nocat (NoCatAuth-nightly/etc) o arquivo "nocat.rc" para a pasta /etc/rc.d/, para ficar padrão com os demais arquivos. Mude seu nome para "rc.nocat", edite este arquivo e altere conforme segue.
# Edit the following line if you installed the
# NoCat software somewhere else.
#
NC=/usr/local/nocat/gw/
# NoCat software somewhere else.
#
NC=/usr/local/nocat/gw/
Edite agora o arquivo /etc/rc.d/rc.local, onde colocamos regra para gateway, vamos agora comentar esta regra e acrescentar uma linha para carregar o script do nocat, o objetivo de termos colocado inicialmente a linha para encaminhamento era para testarmos se a ponte de rede estava ok.
Edite então o arquivo /etc/rc.d/rc.local, conforme segue:
touch /var/lock/subsys/local
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/etc/rc.d/rc.nocat start
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/etc/rc.d/rc.nocat start
Seu portal de acesso wireless está pronto! Este portal também pode ser usado para redes wired, caso encontre uma aplicação.
O NoCat permite várias configurações adicionais, tipo, caso você queira liberar alguns sites para navegação mesmo que os usuários não tenham sido logados. Tipo em aeroportos você tem acesso aos sites dos possíveis provedores para se cadastrar.
Login
Tela inicial de Login, nela você também terá um link para a página de
cadastro, estas páginas podem e devem ser totalmente customizadas, onde
você pode inserir links para as páginas que desejar liberar acesso
(estas deverão ser cadastradas em nocat.conf), remover o link para
cadastro, etc.
Após o login com sucesso você é direcionado a página que tentou acessar inicialmente e um popup será aberto informando que você terá acesso durante determinado tempo (este período você pode configurar em nocat.conf), caso feche este pop-up por descuido, nada acontecerá, seu login permanecerá pelo tempo estipulado, logo após será novamente redirecionado à tela de login (você pode definir tempo de validade de um login, assim quando tentar logar-se novamente não terá sucesso, se for o caso).
E tela de cadastro, fornece uma interface para os usuários se cadastrarem automaticamente.
Após o login com sucesso você é direcionado a página que tentou acessar inicialmente e um popup será aberto informando que você terá acesso durante determinado tempo (este período você pode configurar em nocat.conf), caso feche este pop-up por descuido, nada acontecerá, seu login permanecerá pelo tempo estipulado, logo após será novamente redirecionado à tela de login (você pode definir tempo de validade de um login, assim quando tentar logar-se novamente não terá sucesso, se for o caso).
E tela de cadastro, fornece uma interface para os usuários se cadastrarem automaticamente.
Conclusão
O NoCat, como apresentado neste artigo, é direcionado para prover
acesso a internet ou a uma rede especifica, normalmente para rede de
convidados, HotSpot de acesso a internet ou algo do gênero, percebendo
que a segurança ficará da seguinte forma:
Tenho certeza de que o NoCat pode se adequar as necessidades específicas de de cada projeto neste contexto.
Espero que minha contribuição seja útil e fico a disposição para ajudar.
- Página de login protegida com certificado digital, ou seja, usa ssl criptografando toda a sessão de login, contudo após a autenticação a criptografia para e os dados passarão sem criptografia e como no AP também não é usado criptografia, por este motivo se indica que para acesso a conteúdo crítico deva se usar VPN (da mesma forma que na maioria dos HotSpot);
- Não há criptografia de dados na rede wireless;
- Controle de acesso por portas e por domínio rigoroso, ou seja, você pode restringir facilmente quais portas e quais domínios podem ser acessados através do gateway com NoCat.
Tenho certeza de que o NoCat pode se adequar as necessidades específicas de de cada projeto neste contexto.
Espero que minha contribuição seja útil e fico a disposição para ajudar.
fonte: https://www.vivaolinux.com.br/artigo/Portal-de-autenticacao-wireless-(HotSpot)/
nota: tem algo estranho: na tela de autenticação traz a tela de um mikrotik?