- Mac-ip & Proxy
+ Responder ao Tópico
-
Mac-ip & Proxy
Oi pessoal,
Estou usando aqui na minha rede o script mac-ip, pra quem não sabe este script bloqueia ou libera o acesso a rede através do mac, recentemente um funcionário meu descobriu um falha neste script, vou dar um exemplo do problema, eu bloquiei uma determinada maquina na rede, se eu colocar nas configurações do internet explorer o ip do meu proxy ele vai navegar numa boa, assim tb ele estará usando minha banda toda, alguém poderia me ajuda?
SCRIPT MAC-IP
# CONTROLE POR MAC
#$IPT -A INPUT -m mac --mac-source "00:50:bf:16:1c:eb" -j DROP
#$IPT -A FORWARD -m mac --mac-source "00:50:bf:16:1c:eb" -j ACCEPT
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`
IDUSER=`echo $i | cut -d ';' -f 4`
if [ $STATUS = "a" ]; then
#$IPT -A FORWARD -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
$IPT -A FORWARD -m mac --mac-source $MACSOURCE -s $IPSOURCE -j ACCEPT
$IPT -A FORWARD -d $IPSOURCE -j ACCEPT
$IPT -t nat -A PREROUTING -s $IPSOURCE -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $INT_EXT -j MASQUERADE
echo "IP FIXO: - USER="$IDUSER" - IP="$IPSOURCE" - MAC="$MACSOURCE""
fi
if [ $STATUS = "d" ]; then
$IPT -A FORWARD -d $IPSOURCE -j ACCEPT
$IPT -A FORWARD -s $IPSOURCE -j ACCEPT
$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $INT_EXT -j MASQUERADE
$IPT -t nat -A PREROUTING -s $IPSOURCE -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "IP DINAMICO: - IP="$IPSOURCE" "ACESSO LIBERADO""
fi
if [ $STATUS = "b" ]; then
$IPT -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
$IPT -A INPUT -m mac --mac-source $MACSOURCE -j DROP
#$IPT -A OUTPUT -m mac --mac-source $MACSOURCE -j DROP
echo "USUARIO BLOQUEADO: - USER="$IDUSER" - IP="$IPSOURCE" - MAC="$MACSOURCE""
fi
done
-
Mac-ip & Proxy
Amiguinho, você pode postar o script completo,
Voce deve estar com problema de precedencia nas regras do seu script.
-
Script Completo
#/bin/bash
# Script de Firewall para bloqueio por MACaddress
# Adaptado por Carlos Eduardo Langoni
# Melhorado e corrigido por: Mário Luis Ghoneim
# tava cheio de nada ligando a lugar nenhum,
# ae eu vim com a cavalaria e arrumei casa. :-))
# 23/01/2003
#
# Funcionamento: Crie um arquivo no formato (a,b);(mac);(IP Source);(nome_label)
# Onde "a" é aceitar e "b" (sem aspas) é bloquear que serve para o caso de
# haver necessidade de bloquear algum IP e MAC, caso b não será bloqueado o IP, apenas o MAC
# Na realidade qualquer outra letra que não seja "a" bloqueia ;-)
#
IPT=/usr/sbin/iptables
PROGRAMA=/bin/mac-ip
NET_IFACE=eth0
# Exemplo do MACLIST descrito acima
# a;00:21:ab:0d:ef:bb;192.168.0.2;cliente1
# b;21:AD:dc:00:ff:10;192.168.0.3;cliente2
MACLIST=/etc/maclist
echo 1 > /proc/sys/net/ipv4/ip_forward
case $1 in
start)
# Zera todas as regras
iptables -t nat -F
iptables -t nat -Z
iptables -Z
iptables -F
echo "Regras de FIREWALL limpas... ok"
# Implementa segurança
# Impede todos os FORWARD
iptables -A FORWARD -m unclean -j DROP
#iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
#iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
echo "Implementando Segurança de FIREWALL... ok"
# Altera politica do FORWARD
echo "Políticas de FIREWALL alteradas... ok "
# Bloqueia todo FORWARD
$IPT -t filter -P FORWARD DROP
# Libera FORWARD para rede 200.xxx.xxx.xxx/26
iptables -A FORWARD -s 200.xxx.xxx.xxx/26 -j ACCEPT
iptables -A FORWARD -d 200.xxx.xxx.xxx/26 -j ACCEPT
# Redireciona rede 200.xxx.xxx.xxx/26 para squid
iptables -t nat -A PREROUTING -s 200.xxx.xxx.xxx/26 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Acesso DISCADO - LIBERADO - Rede 200.xxx.xxx.xxx/26"
for i in `cat $MACLIST`;
do
STATUS=`echo $i | cut -d ';' -f 1`
MACSOURCE=`echo $i | cut -d ';' -f 2`
IPSOURCE=`echo $i | cut -d ';' -f 3`
IDUSER=`echo $i | cut -d ';' -f 4`
# Se status = a então libera a conexao casando MAC e IP
if [ $STATUS = "a" ]; then
# Essa linha casa MAC e IP.
#Exemplo: iptables -A FORWARD --match mac --mac-source 00:10:4B:34:EAD -s 10.4.7.9 -j ACCEPT
# $IPT -A FORWARD -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
$IPT -A FORWARD -m mac --mac-source $MACSOURCE -s $IPSOURCE -j ACCEPT
# Essa linha libera é o antídoto do DROP geral
$IPT -A FORWARD -d $IPSOURCE -j ACCEPT
# Essa linha aplica o masquerade no IP específico
#$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE -j MASQUERADE
# Essa linha redireciona para o squid.
$IPT -t nat -A PREROUTING -s $IPSOURCE -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "IP Fixo - usuário "$IDUSER " - IP="$IPSOURCE" MAC="$MACSOURCE
# Essa linha aplica o masquerade no IP específico
$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE -j MASQUERADE
fi
# Se for = d então é IP Dinâmico
if [ $STATUS = "d" ]; then
# Essa linha libera é o antídoto do DROP geral
$IPT -A FORWARD -d $IPSOURCE -j ACCEPT
$IPT -A FORWARD -s $IPSOURCE -j ACCEPT
# Essa linha aplica o masquerade no IP específico
$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE -j MASQUERADE
# Essa linha redireciona para o squid.
$IPT -t nat -A PREROUTING -s $IPSOURCE -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "IP DINAMICO " $IPSOURCE " ACESSO LIBERADO"
fi
if [ $STATUS = "b" ]; then
# Se for = b então bloqueia o MAC
$IPT -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
echo "Usuário bloqueado: "$IDUSER "IP="$IPSOURCE" MAC="$MACSOURCE
fi
done
echo "FIREWALL ATIVADO ..."
;;
stop)
$IPT -F
$IPT -Z
$IPT -t nat -F
$IPT -t filter -P FORWARD ACCEPT
echo "FIREWALL DESCARREGADO ..."
;;
restart)
$PROGRAMA stop
$PROGRAMA start
;;
esac
-
Mac-ip & Proxy
Carinha, faça um backup deste script e coloque essas linhas depois das regras que estão bloqueando o MAC.
# Libera FORWARD para rede 200.xxx.xxx.xxx/26
iptables -A FORWARD -s 200.xxx.xxx.xxx/26 -j ACCEPT
iptables -A FORWARD -d 200.xxx.xxx.xxx/26 -j ACCEPT
Como essas regras são as primeiras do seu script e como o acesso que esta tentando fazer é para Internet ou seja: o script segue as precedencias de regras, então se voce está permitindo como 1 regra de FORWARD todo o acesso a rede 200.xxx.xxx.xxx/26 para todos os hosts da sua rede o netfilter encaminha o pacote sem terminar de checar outras regras. Como suas regras de bloqueio de MAC são as ultimas ele vai bloquear tudo que não seja 200.xxx.xxx.xxx.
Agora te aconselho não usar scripts prontos, faça o seu e assim você irá saber o que funciona e o que não funciona.