Postado originalmente por diegofsousarn
#/bin/bash
#Script de Firewall para bloqueio por MACaddress
#Criado por Carlos Eduardo Langoni
#23/01/2003
#
# Funcionamento: Crie um arquivo no formato (a,b);(mac);(IP Source);(nome)
# Aonde a é aceitar e b é bloquear que serve para o caso de haver necessidade de bloquear algum IP e MAC, caso b não será blo
queado o IP, apenas o MAC
#
IPT=/usr/local/sbin/iptables
PROGRAMA=/bin/firewall
NET_IFACE=eth1
LAN_IFACE=eth0
MACLIST=/etc/init.d/maclist
echo 1 > /proc/sys/net/ipv4/ip_forward
case $1 in
start)
iptables -F
iptables -t nat -F
iptables -t filter -P FORWARD DROP
for i in `cat $MACLIST`; do
STATUS=`echo $i | cut -d ';' -f 1`
IPSOURCE=`echo $i | cut -d ';' -f 3`
MACSOURCE=`echo $i | cut -d ';' -f 2`
#Se status = a então eu libera a conexao
if [ $STATUS = "a" ]; then
iptables -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j ACCEPT
iptables -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE -j MASQUERADE
iptables -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT
iptables -t filter -A OUTPUT -s $IPSOURCE -d 0/0 -j ACCEPT
# Se for = b então bloqueia o MAC
else
iptables -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
iptables -t filter -A INPUT -m mac --mac-source $MACSOURCE -j DROP
iptables -t filter -A OUTPUT -m mac --mac-source $MACSOURCE -j DROP
fi
done
iptables -t nat -A POSTROUTING -s 172.1.1.0/255.255.255.0 -j MASQUERADE
iptables -t filter -A FORWARD -s 172.1.1.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -d 172.1.1.0/255.255.255.0 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 172.1.1.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.1.1.0/255.255.255.0 -d 0/0 -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp -s 0/0 -i eth0 --dport 80 -j DNAT --to 200.165.48.122:3128
echo "FIREWALL ATIVADO SISTEMA PREPARADO"
;;
stop)
iptables -F
iptables -Z
iptables -t nat -F
iptables -t filter -P FORWARD ACCEPT
echo "FIREWALL DESCARREGADO SISTEMA LIBERADO"
;;
restart)
$PROGRAMA stop
$PROGRAMA start
;;
esac