Capturando o MAC address do cliente via Apache

Publicado por Carlos Affonso Henriques. em 01/06/2007

[ Hits: 14.516 ]

 


Capturando o MAC address do cliente via Apache



Esta dica é muito útil quando você precisa estabelecer controles de acesso por "casamento" MAC x IP usando o servidor http Apache para rodar scripts CGI em shell.

O Apache tem uma variável chamada REMOTE_ADDR, que é igual ao endereço IP da máquina cliente que o está acessando. Em meu projeto de gateway para provedores wireless precisei de uma variável que fizesse o mesmo com os endereços MAC, mas após procurar e não achar na documentação do Apache precisei criar o recurso.

1 - Primeiramente devemos informar ao sudoers que o Apache deverá ter permissão para executar o utilitário arping. O arquivo /etc/sudoers ficaria assim:

apache ALL=NOPASSWD:/usr/sbin/iptables,/sbin/ip,/usr/sbin/dhcpd,/sbin/arping

2 - Agora criamos a linha de comando no script CGI (shell) responsável pela tarefa em que será necessária a captura do endereço MAC e chamaremos este resultado de REMOTE_LLADDR:

REMOTE_LLADDR=`sudo arping -c1 -D $REMOTE_ADDR | fgrep [ | cut -f2 -d"[" | cut -f1 -d"]"`

Pronto! Coloque agora um echo $REMOTE_LLADDR e veja! O Apache irá exibir o endereço MAC da interface de rede do cliente.

Outras dicas deste autor

Estendendo, à quase eternidade, a vida útil do SD card no Raspberry Pi

Manipulando o MySQL diretamente pelo shell

Conhecendo o printf

Otimizando o desempenho do Squid

Comando seq com saída em hexadecimal

Leitura recomendada

Arduino e iptables

Novo recurso com o nmap

Criptografando diretórios com eCryptfs

KeePassX - Proteção para suas senhas

Carteira do KDE (kwallet)

  

Comentários
[1] Comentário enviado por PeacePrince em 01/06/2007 - 08:22h

Ótima dica! Eu pensava que não existia a possibilidade de capturar endereços MAC em servidores web.

[2] Comentário enviado por capitainkurn em 01/06/2007 - 12:20h

E nao ha! Foi uma "gambiarra elegante" que apliquei.

[3] Comentário enviado por macielfs em 04/04/2008 - 09:08h

Tentei, mas não funcionou o apache continua sem permissão de executar o comando arping.

[4] Comentário enviado por edison_filho em 10/09/2010 - 17:17h

Olá, estou com um problema parecido. Preciso que o usuário apache execute o comando: brasero --immediately /home/edison/Programas/ubuntu10.iso

Mas ele não tem permissão pra isso. Como devo proceder?

[5] Comentário enviado por vinigeremia em 15/09/2010 - 10:27h

Olá, não entendi o passo 2, eu devo criar um script CGI?
não conheço essa técnica, e então como associo ao apache?
abraço

[6] Comentário enviado por tiago_es em 31/05/2011 - 17:48h

Eu também não entendi essa parte di script CGI....



Contribuir com comentário




Patrocínio

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

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts