[MASOCH-L] Algoritimo para validar MAC

"Edison (Júnior)" edison at coslinux.com.br
Mon May 23 21:46:59 BRT 2005


Olha só:

[root at cosnet root]# iptables -A MACLIST -s 192.168.0.1 -m mac 
--mac-source 00:00:00:00:00:00 -i eth1 -o eth0 -j ACCEPT
[root at cosnet root]#

[root at cosnet root]# iptables -L MACLIST -n
Chain MACLIST (1 references)
target     prot opt source               destination
ACCEPT     all  --  192.168.0.1          0.0.0.0/0           MAC 
00:00:00:00:00:00
[root at cosnet root]#

o iptables não gerou erro algum. Veja o outro exemplo:

[root at cosnet root]# iptables -A MACLIST -s 192.168.0.1 -m mac 
--mac-source 00:00:00:XX:00:00 -i eth1 -o eth0 -j ACCEPT
iptables v1.2.9: Bad mac address `00:00:00:XX:00:00'
Try `iptables -h' or 'iptables --help' for more information.

Agora ele gerou erro. Porém não incluiu a regra. Ou seja, se o MAC for 
inválido, o iptables não aceita a regra. Isso significa que se alguém 
digitar um MAC errado e se o seu controle de acesso for baseado em MAC, 
um host deixará de ter acesso. 

Acredito que o que você não quer é justamente esperar alguém reclamar 
que não tem acesso devido a um erro de digitação. Nesse caso uma solução 
simples seria, em bash mesmo:

if  ( iptables -A MACLIST -s 192.168.0.1 -m mac --mac-source 
00:00:00:XX:00:00 -i eth1 -o eth0 -j ACCEPT ) ; then
    echo "regra incluída"
else
    echo "Erro ao incluir Regra"
    ... sua rotina de tratamento de erro
fi

Concluindo: O próprio iptables valida o MAC.

[ ] 's

Edison Bortolin



scsantos at unigranrio com br escreveu:

> Vamos lá Lao,
>
> se vc digitar uma regra de iptables com o ip 192.168.0.1 e o MAC 
> 00:00:00:00 o iptables irá  gerar um erro e criará a regra somente com 
> o IP ignorando o MAC.
>
> Gostaria que antes de gerar a regra verificar (com uma aplicação) se a 
> sintaxe do MAC está correta.
>
> Foi agora?
>
> Tem como fazer isso com perl como disse um colaborador da lista, eu só 
> quero entender o algoritimo.
>
> Usando perl:
> ifconfig | grep "eth0" | awk '{print $5}' | perl -ne 
> '(/([0-9a-f]{1,2}:){5}[0-9a-f]{1,2}/i && print "OK\n") || print "ERRO\n"'
>
> Um fraterno abraço !!!
>
>       Silvio Cesar L. dos Santos
>   Divisão de Tecnologia da Informação
> Universidade do Grande Rio - UNIGRANRIO
> -----------------------------------------
>  (o_
>  //\            - Software Livre -
>  V_/_    conhecimento ao alcance de todos
>
>
> Lao DanTong escreveu:
>
>> On Mon, 23 May 2005, scsantos at unigranrio com br wrote:
>>
>>> Dado um MAC 00:00:00:00:00 validar ele via aplicação no sentido de 
>>> não ser efetuada a tentativa de gerar uma regra de iptables para ip 
>>> + mac em questão, pois o iptables irá gerar somente a regra por ip 
>>> quebrando o esquema ip e mac.
>>
>>
>>
>> continuo sem entender. validar alguma coisa x consiste em calcular 
>> uma função f(x,p) que se igual a zero implica em x válido. p são 
>> parâmetros externos. um exemplo é uma autenticação por desafio 
>> resposta pode ser f(x,p)=md5(concatenação(x,p)) sendo p o desafio.
>>
>> então, continua minha pergunta, o que devemos entender por "validar o 
>> MAC"? poderia ser verificar se ele está associado a determinado 
>> endereço IP (nesse caso uma consulta ao arp resolve) ou se ele 
>> pertence a um conjunto de MACs autorizados (perigoso, MACs não são 
>> fixos!)?
>> __
>> masoch-l list
>> https://eng.registro.br/mailman/listinfo/masoch-l
>>
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l
>



More information about the masoch-l mailing list