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!