+ Responder ao Tópico



  1. #1

    Padrão 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

  2. #2
    nett
    Visitante

    Padrão Mac-ip & Proxy

    Amiguinho, você pode postar o script completo,

    Voce deve estar com problema de precedencia nas regras do seu script.

  3. #3

    Padrão 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

  4. #4
    nett
    Visitante

    Padrão 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.