Capturando o MAC address do cliente via Apache

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

[ Hits: 15.918 ]

 


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

Identificando os seus discos

Restringindo login com chave USB

Criando e lendo QR-Code pelo shell no CentOS 6

Sed para formatar endereços MAC

Atribuindo número de série da MikroTik Routerboard ao hostname

Leitura recomendada

Senhas criptograficamente seguras com o PWGen

Aprenda usar o melhor firewall do mundo Linux (parte 2)

Controle de acesso Squid + LTSP4.2

Tor + Privoxy + Ubuntu 11.04 ou Debian 6.0 Squeeze

Aplicando Knock sobre Iptables

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts