Amarrando IP X MAC de maneira simples e funcional
Dica publicada em Linux / Introdução
Amarrando IP X MAC de maneira simples e funcional
Depois de vagar na internet vendo que existem várias informações desencontradas sobre este assunto, resolvi escrever esta dica com o que julgo ser a melhor maneira de implementar está solução e com o intuito de ajudar quem me ajudou a implementar a solução e principalmente ajudar aos mais novos. Por isso vamos direto ao que interessa.
O firewall é a gosto de cada um, este script de firewall é apenas para melhor entendimento da dica, mas funciona corretamente.
É relativamente simples depois que você entende o conceito das regras, por isso resolvi explicar de modo bem simples cada uma delas.
Destrinchando as regras:
1. Esta linha informa à tabela filter que os pacotes de origem 192.168.0.2 com o MAC 00:0B:05:EC:0D:5A podem ser aceitos e redirecionados para qualquer rede:
O firewall é a gosto de cada um, este script de firewall é apenas para melhor entendimento da dica, mas funciona corretamente.
É relativamente simples depois que você entende o conceito das regras, por isso resolvi explicar de modo bem simples cada uma delas.
Destrinchando as regras:
1. Esta linha informa à tabela filter que os pacotes de origem 192.168.0.2 com o MAC 00:0B:05:EC:0D:5A podem ser aceitos e redirecionados para qualquer rede:
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.2 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
2. Esta linha informa à tabela filter que os pacotes com destino ao IP 192.168.0.2 que venham de qualquer rede podem ser aceitos e redirecionados:
iptables -t filter -A FORWARD -d 192.168.0.2 -s 0/0 -j ACCEPT
3. Esta linha autoriza o pacote de origem 192.168.0.2 com o MAC 00:0B:05:EC:0D:5A a serem aceitos pelo firewall:
iptables -t filter -A INPUT -s 192.168.0.2 -d 0/0 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
4. NAT:
iptables -t nat -A POSTROUTING -s 192.168.0.2 -o eth1 -j MASQUERADE
Entendido essa parte, acho que é hora de partirmos para a prática.
Abaixo segue um demonstrativo de como ficam as regras dentro de um firewall básico.
Abraço e espero ter ajudado.
#!/bin/sh
#Internet=eth1
#Rede Interna=eth0
# Ativa módulos
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
# Zera regras
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
# Determina a política padrão
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Aceita os pacotes que realmente devem entrar
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Controle de acesso IP X MAC
# Cliente 1
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.2 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.0.2 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.0.2 -d 0/0 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.2 -o eth1 -j MASQUERADE
# Cliente 2
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.3 -m mac --mac-source 00:0C:86:00:00:00 -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.0.3 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.0.3 -d 0/0 -m mac --mac-source 00:0C:86:00:00:00 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.3 -o eth1 -j MASQUERADE
# Cliente 3
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.4 -m mac --mac-source 00:28:00:35:00:00 -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.0.4 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.0.4 -d 0/0 -m mac --mac-source 00:28:00:35:00:00 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.4 -o eth1 -j MASQUERADE
#Compartilha a conexão
echo 1 > /proc/sys/net/ipv4/ip_forward
#Fecha o resto
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
#Internet=eth1
#Rede Interna=eth0
# Ativa módulos
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
# Zera regras
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
# Determina a política padrão
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Aceita os pacotes que realmente devem entrar
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Controle de acesso IP X MAC
# Cliente 1
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.2 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.0.2 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.0.2 -d 0/0 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.2 -o eth1 -j MASQUERADE
# Cliente 2
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.3 -m mac --mac-source 00:0C:86:00:00:00 -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.0.3 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.0.3 -d 0/0 -m mac --mac-source 00:0C:86:00:00:00 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.3 -o eth1 -j MASQUERADE
# Cliente 3
iptables -t filter -A FORWARD -d 0/0 -s 192.168.0.4 -m mac --mac-source 00:28:00:35:00:00 -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.0.4 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.0.4 -d 0/0 -m mac --mac-source 00:28:00:35:00:00 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.4 -o eth1 -j MASQUERADE
#Compartilha a conexão
echo 1 > /proc/sys/net/ipv4/ip_forward
#Fecha o resto
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
Autor: Lacier Dias
msn: lacierdias@hotmail.com
marcosvargasmt