Gateway autenticado com Apache, Iptables e CGI em shell

Procurando uma solução que fosse ao mesmo tempo simples de ser implementada e de grande eficiência comparados aos gateways mais sofisticados que empregam bancos de dados e etc, cheguei a esta solução ideal para ser usada em provedores wireless ou a cabo. Ela ainda está em desenvolvimento e dada a sua enorme simplicidade de seu conceito pode servir de base para projetos mais elaborados.

[ Hits: 86.815 ]

Por: Carlos Affonso Henriques. em 27/07/2007


A página de autenticação



Trata-se de um pequeno formulário html, em nosso projeto nos scripts CGI eu não implementei traduções de URL encode através do sed, portanto não empreguem caracteres que não sejam alfanuméricos nos logins e senhas pois a autenticação não funcionará.

<html><head><title>Bem vindo ao Gateway Autenticado ver. 1.01</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body bgcolor="#FFFFCC">
<form action="/cgi-bin/mac_accept4.cgi" method="post" name="autthform" target="_self" id="autthform">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="58"><font face="Arial, Helvetica, sans-serif">LOGIN:</font></td>
<td width="137"><font face="Arial, Helvetica, sans-serif">
<input name="login" type="text" id="login" size="20" maxlength="20">
</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">SENHA</font></td>
<td><font face="Arial, Helvetica, sans-serif">
<input name="senha" type="password" id="senha2" size="20" maxlength="20">
</font></td>
</tr>
<tr>
<td><font face="Arial, Helvetica, sans-serif">
<input name="LOGIN" type="submit" id="LOGIN2" value="LOGIN">
</font></td>
<td><font face="Arial, Helvetica, sans-serif">
<input name="LIMPA" type="reset" id="LIMPA2" value="LIMPA">
</font></td>
</tr>
</table></form>

Página anterior     Próxima página

Páginas do artigo
   1. Preparando o Apache
   2. Configurando o SSL no Apache
   3. A topologia da rede
   4. O firewall
   5. A página de autenticação
   6. O arquivo de contas
   7. O script CGI de autenticação
   8. O script para desfazer a autenticação
   9. A tabela ARP estática
   10. O controle de banda
   11. Notas e agradecimentos
Outros artigos deste autor

Docker - Combatento o COVID-19

Filtro de conteúdo autenticado com níveis de privilégio

Sistema de arquivos criptografado

L7-filter (funcionando) no Slackware 10.2

Balanceamento de carga e alta disponibilidade com Bonding Driver e Iproute2

Leitura recomendada

SSH completo (passo a passo)

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

Como recuperar a senha o root

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

Squid 3 - Instalação no Debian/Ubuntu

  
Comentários
[1] Comentário enviado por removido em 27/07/2007 - 15:57h

Olá Amigo,

Bom, para deixar seu artigo ainda mais rico eu gostaria de dar uma opinião! No caso de um hijack bem feito (roubo de seção), quando o cliente cai e em seguida entra o hijack seu arping vai consultar ele tranqüilamente! Concorda!? Espero que sim, pois eu já fiz testes com isso e infelizmente da certo! A solução é simples, ao invés de fazer o servidor consultar quem está de pé ou não, o que dependendo do número de estações tem um tempo elevado, eu sugiro mudar para o comando at. Como já uso o servidor Radius, foi fácil, no comando AT eu agendo uma verificação pra saber se o IP tal é do fulano de tal conectado no radius, aí sim, se não for a regra dele é derrubada! Pra substituir o uso do radius, pode-se pensar em cookie, por exemplo!

T+

[2] Comentário enviado por capitainkurn em 27/07/2007 - 17:50h

Boa! nem havia me ocorrido o at.

Quando elaborei aquele while de arping, pensei em coloca-los isoladamente rodando sob um shell filho do mac_accept4.cgi que seria chamado em background, mas esbarrei em um problema... não entendí ainda o por que de não conseguir rodar um loop em um shell filho a partir de um CGI, mas é uma coisa que estou bolando e a sua idéia do at foi grande.
Obrigado pela dica, e espero que tenha gostado do artigo.

[3] Comentário enviado por fabiorvs em 22/04/2008 - 19:07h

Ola tem como fazer a autenticação só por usuário, sem o MAC e ip, pois trabalho em uma faculdade e preciso cadastrar todos os alunos.

[4] Comentário enviado por capitainkurn em 23/04/2008 - 10:03h

É mais fácil ainda, a única razão para eu atrelar o ip ao mac address é o controle de banda, pois provedores em geral possuem planos de velocidade diferentes e se não houver vínculo entre o IP e o login e senha o usuário poderia configurar um IP manualmente e usar uma velocidade maior do que a contratada.

[5] Comentário enviado por cleibson em 03/05/2009 - 22:57h

Como o cliente será diretionado para autenticação, sendo que não há nenhuma regra redirecionando sua navegação para a porta 443 obrigando-o a autenticar antes de navegar

[6] Comentário enviado por removido em 06/05/2010 - 09:29h

òtima dica para o combate de ataques do TIPO MITM, originados por arpspoof.

[7] Comentário enviado por douglassironi em 28/06/2011 - 18:38h

Sobre a questão de atrelar MAC, podemos fazer isso com PHP, no momento que o cliente se cadastra e cria seu usuario e senha, podemos tranquilamente pegar o MAC dele com a função, abaixo tem um link explicando como fazer.

http://scriptbrasil.com.br/forum/index.php?showtopic=70543

No momento que o usuario/cliente se cadastrar, pode ser gerado o arquivo do DHCP atrelando um ip para o mac capturado.

Recomendo ultilizar um banco de dados para salvar as informações dos clientes/usuarios.
O freeradius tem as tabelas prontas em vários tipos de BD.

Qualquer duvida, estou a disposição.
contato@douglassironi.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts