Geração de regras de iptables usando mac address e marcação de pacotes

De Wiki Hackstore

Validação de Mac Address

Caso deseje verificar se um mac address é válido, use a lógica abaixo:

MAC="00:11:24:3e:a5:78"
if [ $(echo ${MAC} | egrep "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$") ]; then
echo -e "\nMac address ok"
else
echo -e "\nMac address invalido"
fi


Bloqueio usando Mac Address

É possível gerar bloqueios usando listas pre definidas:

LISTA_MAC_ORIGEM=/root/lista-mac-drop.txt

while read MAC;do
        if [ -n "${MAC}" ];then
                macaddr="`echo ${MAC} | sed s/.*=//`";
                macdesc="`echo ${MAC} | sed s/=.*//`";
                iptables -A FORWARD -m mac --mac-source $macaddr -m comment --comment "drop de MAC ADDRESS " -j MARK --set-mark 0x1234
        fi
done < ${LISTA_MAC_ORIGEM}

# DROPA pacotes marcados como 0x1234
iptables -A FORWARD -m mark --mark 0x1234 -j DROP


Liberação MASQUERADE usando Mac Address

LISTA_MAC_ORIGEM=/root/lista-mac-masquerade.txt

while read MAC;do
        if [ -n "${MAC}" ];then
                macaddr="`echo ${MAC} | sed s/.*=//`";
                macdesc="`echo ${MAC} | sed s/=.*//`";
                iptables -t nat -A PREROUTING -m mac --mac-source $macaddr -m comment --comment "Regra inclusa pelo usuario via lista de MAC ADDRESS como origem - $macdesc" -j MARK --set-mark 0x1234
        fi
done < ${LISTA_MAC_ORIGEM}

# Libera pacotes marcados como 0x1234 via MASQUERADE
iptables -t nat -A POSTROUTING -m mark --mark 0x1234 -j MASQUERADE