Aplicando MASQUERADE por MAC ADDRESS

Buenas!

Neste post vou mostrar como resolver um problema comum dos administradores de rede: Usuários espertinhos que colocam ips privilegiados para acessar a internet.

Primeiramente vamos ao contexto:

1) Você é o administrador dos servidores da empresa;
2) Você tem uma lista de ips que podem acessar tudo livremente;
3) Existem usuários que sabem os ips privilegiados;
4) Normalmente existem conflitos de ips por causa dos usuários espertinhos que usam os ips manualmente;
5) Seu servidor de firewall é linux com iptables ( que não faz um roteamento ninja usando MAC [ camada 2 ] );

E agora para uma das soluções:

Marcação de pacotes!!!!

Isso mesmo!!! Vamos marcar alguns pacotes e fazer o roteamento avançado dos pacotes que vierem de um determinado MAC.

Passo 1 carregar o módulo de MARK

Por padrão algumas distribuições não carregam o módulo de marcação de pacotes do iptables, para confirmar se esta funcionalidade está presente vamos usar o comando lsmod | grep ip e ver a presença do MARK

Como resultado você terá:

...
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  10 xt_CONNMARK,nf_nat_sip,nf_conntrack_sip,xt_state,
ipt_MASQUERADE,nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4
iptable_filter          2624  0
ip_tables              10160  3 iptable_mangle,iptable_nat,iptable_filter
x_tables               13284  11 xt_CONNMARK,xt_MARK,xt_mark,xt_mac,xt_state,
ipt_REDIRECT,ipt_MASQUERADE,
xt_tcpudp,ipt_LOG,iptable_nat,ip_tables
...

Observe que no meu caso o xt_MARK e o xt_CONNMARK já estão carregados. Caso você não tenha eles na listagem ( ou algo com MARK ) tente carregar o módulo necessário com modprobe, dependendo da distro fica: modprobe ipt_MARK.

Bem, agora que sabemos que nosso monstrinho consegue marcar pacotes, vamos iniciar nosso super roteamento!

Marcando um pacote de um MAC com IPTABLES

Vamos marcar o pacote com um código arbitrário, no meu caso vou usar 0x1234.

iptables -t mangle -A PREROUTING -m mac --mac-source 00:11:22:33:44:55 -j MARK --set-mark 0x1234

e como eu faço para dar masquerade nesse cara????

iptables -t nat -A POSTROUTING -m mark --mark 0x1234 -j MASQUERADE

Pronto! agora basta você executar o penúltimo comando para todos os MACs desejados e sua rede será “user-proof” hahaha

Abraço!

Deixe uma resposta