+ Responder ao Tópico



  1. #1

    Padrão Porque o script não funciona?

    Segue a baixo o firewall que tem como objetivo amarrar ip com mac, mas infelizmente não está funciona.

    Exemplo arquivo mac
    x;MAC;IP;CLENTE

    x=accept
    y=drop
    #!/bin/sh

    IPT=/usr/sbin/iptables
    MACLIST="/etc/mac"
    PROGRAMA=/etc/rc.firewall
    NET_IFACE0=eth0
    NET_IFACE2=eth2
    NET_IFACE3=eth3
    LAN_IFACE=eth1
    CLASSE=192.168.254.0/24

    echo -n "Carregando os modulos..."
    modprobe ipt_REJECT
    modprobe ip_tables
    modprobe ipt_state
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    modprobe iptable_filter
    modprobe iptable_mangle
    modprobe ipt_MASQUERADE
    modprobe ipt_p2p
    modprobe ipt_unclean
    modprobe ipt_LOG
    #modprobe ipt_recent


    echo " [OK]"

    case $1 in
    start)



    $IPT -F
    $IPT -X
    $IPT -F -t nat
    $IPT -X -t nat
    $IPT -F -t filter
    $IPT -X -t filter
    $IPT -t mangle -F
    $IPT -t mangle -X

    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT ACCEPT

    echo -n "Liberando acesso do localhost..."
    $IPT -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
    $IPT -A INPUT -p tcp --dport 2227 -j ACCEPT


    echo -n "Otimizando o roteamento..."
    $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    echo " [OK]"


    for i in `cat $MACLIST`; do
    MACSOURCE=`echo $i | cut -d ';' -f 2`
    IPSOURCE=`echo $i | cut -d ';' -f 3`
    STATUS=`echo $i | cut -d ';' -f 1`


    if [ $STATUS = "x" ]; then
    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j ACCEPT
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE0 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE2 -j MASQUERADE
    #$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE3 -j MASQUERADE
    $IPT -t nat -A PREROUTING -p tcp -s $IPSOURCE -m mac --mac-source $MACSOURCE --dport 80 -j REDIRECT --to-port 3128

    $IPT -t filter -A INPUT -m mac --mac-source $MACSOURCE -s $IPSOURCE -j ACCEPT
    #$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $LAN_IFACE -j MASQUERADE
    $IPT -A INPUT -i $LAN_IFACE -s $IPSOURCE -p tcp --dport 3128 -j ACCEPT

    # Libera todas as portas
    $IPT -A INPUT -p tcp -s $IPSOURCE -j ACCEPT

    else
    $IPT -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
    $IPT -t filter -A INPUT -m mac --mac-source $MACSOURCE -s $IPSOURCE -j DROP
    $IPT -t filter -A OUTPUT -s $IPSOURCE -j DROP
    fi
    done

    echo " [OK]"

    $IPT -A INPUT -s 192.168.254.0/24 -j DROP



    # Abilitando repasse entre as interfaces

    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Protege contra synflood

    echo "1" > /proc/sys/net/ipv4/tcp_syncookies

    # Proteção contra ICMP Broadcasting

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    # Ignora pings

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

    # Bloqueia traceroute
    $IPT -A INPUT -p udp --dport 33435:33525 -j DROP

    # Proteções diversas contra portscanners, ping of death, ataques DoS, etc.

    $IPT -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
    $IPT -A FORWARD -m unclean -j DROP
    $IPT -N VALID_CHECK
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP

    # Regras para saida e entrada

    $IPT -A OUTPUT -p udp --dport 137:139 -j DROP
    $IPT -A OUTPUT -p udp --sport 137:139 -j DROP
    $IPT -A OUTPUT -p udp --dport 445 -j DROP

    # Liberaçao de portas para rede interna
    $IPT -A FORWARD -o $NET_IFACE0 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,20
    00,27030 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030
    -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030
    -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE0 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE0 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE0 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A FORWARD -o $LAN_IFACE -d $IPSOURCE -m state --state ESTABLISHED,RELATED -j ACCEPT

    echo -n "Bloqueando spoofing..."
    $IPT -A INPUT -i $LAN_IFACE -s 10.0.0.0/8 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 172.16.0.0/12 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 192.168.0.0/16 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 224.0.0.0/4 -j DROP

    $IPT -A INPUT -i $LAN_IFACE -s 240.0.0.0/5 -j DROP
    echo " [OK]"

    # Liberando alguns acessos por ping:

    echo -n "Liberando acesso por ping..."
    $IPT -A INPUT -p icmp --icmp-type 8 -i eth1 -j ACCEPT
    $IPT -A INPUT -p icmp --icmp-type 0 -j ACCEPT

    echo " [OK]"

    # Descarta pacotes invalidos:

    echo -n "Descartando pacotes invalidos para reenvio..."
    $IPT -A FORWARD -m state --state INVALID -j DROP
    echo " [OK]"


    ;;
    stop)
    $IPT -F
    $IPT -Z
    $IPT -t nat -F
    $IPT -t filter -P FORWARD ACCEPT

    restart)
    $PROGRAMA stop
    $PROGRAMA start
    ;;
    esac


    O SCRIPT ACIMA NÃO AMARRA IP COM MAC!!!!!

  2. #2

    Padrão

    Citação Postado originalmente por Submundo Ver Post
    Segue a baixo o firewall que tem como objetivo amarrar ip com mac, mas infelizmente não está funciona.

    Exemplo arquivo mac
    x;MAC;IP;CLENTE

    x=accept
    y=drop
    #!/bin/sh

    IPT=/usr/sbin/iptables
    MACLIST="/etc/mac"
    PROGRAMA=/etc/rc.firewall
    NET_IFACE0=eth0
    NET_IFACE2=eth2
    NET_IFACE3=eth3
    LAN_IFACE=eth1
    CLASSE=192.168.254.0/24

    echo -n "Carregando os modulos..."
    modprobe ipt_REJECT
    modprobe ip_tables
    modprobe ipt_state
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    modprobe iptable_filter
    modprobe iptable_mangle
    modprobe ipt_MASQUERADE
    modprobe ipt_p2p
    modprobe ipt_unclean
    modprobe ipt_LOG
    #modprobe ipt_recent


    echo " [OK]"

    case $1 in
    start)



    $IPT -F
    $IPT -X
    $IPT -F -t nat
    $IPT -X -t nat
    $IPT -F -t filter
    $IPT -X -t filter
    $IPT -t mangle -F
    $IPT -t mangle -X

    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT ACCEPT

    echo -n "Liberando acesso do localhost..."
    $IPT -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
    $IPT -A INPUT -p tcp --dport 2227 -j ACCEPT


    echo -n "Otimizando o roteamento..."
    $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    echo " [OK]"


    for i in `cat $MACLIST`; do
    MACSOURCE=`echo $i | cut -d ';' -f 2`
    IPSOURCE=`echo $i | cut -d ';' -f 3`
    STATUS=`echo $i | cut -d ';' -f 1`


    if [ $STATUS = "x" ]; then
    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j ACCEPT
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE0 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE2 -j MASQUERADE
    #$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE3 -j MASQUERADE
    $IPT -t nat -A PREROUTING -p tcp -s $IPSOURCE -m mac --mac-source $MACSOURCE --dport 80 -j REDIRECT --to-port 3128

    $IPT -t filter -A INPUT -m mac --mac-source $MACSOURCE -s $IPSOURCE -j ACCEPT
    #$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $LAN_IFACE -j MASQUERADE
    $IPT -A INPUT -i $LAN_IFACE -s $IPSOURCE -p tcp --dport 3128 -j ACCEPT

    # Libera todas as portas
    $IPT -A INPUT -p tcp -s $IPSOURCE -j ACCEPT

    else
    $IPT -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
    $IPT -t filter -A INPUT -m mac --mac-source $MACSOURCE -s $IPSOURCE -j DROP
    $IPT -t filter -A OUTPUT -s $IPSOURCE -j DROP
    fi
    done

    echo " [OK]"

    $IPT -A INPUT -s 192.168.254.0/24 -j DROP



    # Abilitando repasse entre as interfaces

    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Protege contra synflood

    echo "1" > /proc/sys/net/ipv4/tcp_syncookies

    # Proteção contra ICMP Broadcasting

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    # Ignora pings

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

    # Bloqueia traceroute
    $IPT -A INPUT -p udp --dport 33435:33525 -j DROP

    # Proteções diversas contra portscanners, ping of death, ataques DoS, etc.

    $IPT -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
    $IPT -A FORWARD -m unclean -j DROP
    $IPT -N VALID_CHECK
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP

    # Regras para saida e entrada

    $IPT -A OUTPUT -p udp --dport 137:139 -j DROP
    $IPT -A OUTPUT -p udp --sport 137:139 -j DROP
    $IPT -A OUTPUT -p udp --dport 445 -j DROP

    # Liberaçao de portas para rede interna
    $IPT -A FORWARD -o $NET_IFACE0 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,20
    00,27030 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030
    -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030
    -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE0 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE0 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE0 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE2 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A FORWARD -o $NET_IFACE3 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A FORWARD -o $LAN_IFACE -d $IPSOURCE -m state --state ESTABLISHED,RELATED -j ACCEPT

    echo -n "Bloqueando spoofing..."
    $IPT -A INPUT -i $LAN_IFACE -s 10.0.0.0/8 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 172.16.0.0/12 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 192.168.0.0/16 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 224.0.0.0/4 -j DROP

    $IPT -A INPUT -i $LAN_IFACE -s 240.0.0.0/5 -j DROP
    echo " [OK]"

    # Liberando alguns acessos por ping:

    echo -n "Liberando acesso por ping..."
    $IPT -A INPUT -p icmp --icmp-type 8 -i eth1 -j ACCEPT
    $IPT -A INPUT -p icmp --icmp-type 0 -j ACCEPT

    echo " [OK]"

    # Descarta pacotes invalidos:

    echo -n "Descartando pacotes invalidos para reenvio..."
    $IPT -A FORWARD -m state --state INVALID -j DROP
    echo " [OK]"


    ;;
    stop)
    $IPT -F
    $IPT -Z
    $IPT -t nat -F
    $IPT -t filter -P FORWARD ACCEPT

    restart)
    $PROGRAMA stop
    $PROGRAMA start
    ;;
    esac


    O SCRIPT ACIMA NÃO AMARRA IP COM MAC!!!!!

    Olá, essa parte de libera portas de rede interna, é justamente as maquinas que voce quer liberar?

    Acredito que esteja com um BUG de fluxo...
    Nessa parte de "# Liberaçao de portas para rede interna" cria uma "CHAIN" ao inves de add na FORWARD
    Ex:
    $IPT -N PORTAS_DO_FORWARD
    $IPT -A PORTAS_DO_FORWARD SEU_CODIGO_DE_FIREWALL_AQUI -j ACCEPT

    E quando você fazer o loop na hora de liberar os macs da lista.. Redirecione para essa nova chain criada acima.

    ex: No lugar de "-j ACCEPT" coloque "-j PORTAS_DO_FORWARD"
    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j PORTAS_DO_FORWARD
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j PORTAS_DO_FORWARD


    acredito que resolva esse seu problema...


  3. #3

    Padrão Olá

    Citação Postado originalmente por japaeye4u Ver Post
    Olá, essa parte de libera portas de rede interna, é justamente as maquinas que voce quer liberar?

    Acredito que esteja com um BUG de fluxo...
    Nessa parte de "# Liberaçao de portas para rede interna" cria uma "CHAIN" ao inves de add na FORWARD
    Ex:
    $IPT -N PORTAS_DO_FORWARD
    $IPT -A PORTAS_DO_FORWARD SEU_CODIGO_DE_FIREWALL_AQUI -j ACCEPT

    E quando você fazer o loop na hora de liberar os macs da lista.. Redirecione para essa nova chain criada acima.

    ex: No lugar de "-j ACCEPT" coloque "-j PORTAS_DO_FORWARD"
    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j PORTAS_DO_FORWARD
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j PORTAS_DO_FORWARD


    acredito que resolva esse seu problema...

    Eu quero liberar os ip´s e mac quee stão cadastrados no arquivo mac, porém o bloqueio não está funcionando. Se um cliente mudar o ip dele por outro que esteja liberado o mesmo navegará livremente. As portas no forward é para dar acesso aos serviços essenciais como: jogos, navegação etc..

    caro colega, você fez uma observação importante, ao afirmar que poderia está com problema de fluxo. Na verdade estou sem instabilidade no servidor e acho que você matou a charada.

    O QUE DEVO FAZER PARA RESOLVER O PROBLEMA DE FLUXO?

    E isso aqui, que você disse que eu devo fazer:

    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j PORT
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j PORT

    # Liberaçao de portas para rede interna

    $IPT -N PORT
    $IPT -A PORT -o $NET_IFACE0 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE0 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE0 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE0 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -p udp --dport 27000:27030 -j ACCEPT

    A regras estão corretas?????????

  4. #4

    Padrão

    Citação Postado originalmente por Submundo Ver Post
    Eu quero liberar os ip´s e mac quee stão cadastrados no arquivo mac, porém o bloqueio não está funcionando. Se um cliente mudar o ip dele por outro que esteja liberado o mesmo navegará livremente. As portas no forward é para dar acesso aos serviços essenciais como: jogos, navegação etc..

    caro colega, você fez uma observação importante, ao afirmar que poderia está com problema de fluxo. Na verdade estou sem instabilidade no servidor e acho que você matou a charada.

    O QUE DEVO FAZER PARA RESOLVER O PROBLEMA DE FLUXO?

    E isso aqui, que você disse que eu devo fazer:

    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j PORT
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j PORT

    # Liberaçao de portas para rede interna

    $IPT -N PORT
    $IPT -A PORT -o $NET_IFACE0 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE0 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE0 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE0 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A PORT -o $NET_IFACE2 -p udp --dport 27000:27030 -j ACCEPT

    A regras estão corretas?????????
    Isso,

    Digita no terminal,

    "iptables -nvL"

    E cola aqui o resultado todo.

  5. #5

    Padrão

    Citação Postado originalmente por japaeye4u Ver Post
    Isso,

    Digita no terminal,

    "iptables -nvL"

    E cola aqui o resultado todo.
    Veja se está correta. Caso consiga melhorá-la eu agradeco.

    #!/bin/sh

    IPT=/usr/sbin/iptables
    MACLIST="/usr/mac"
    PROGRAMA=/rc.firewall
    NET_IFACE0=eth0
    NET_IFACE2=eth2
    NET_IFACE3=eth3
    LAN_IFACE=eth1
    CLASSE=192.168.1.0/24

    case $1 in
    start)

    # Zera regras

    $IPT -F
    $IPT -X
    $IPT -F -t nat
    $IPT -X -t nat
    $IPT -F -t filter
    $IPT -X -t filter
    $IPT -t mangle -F
    $IPT -t mangle -X

    $IPT -P INPUT DROP
    $IPT -P FORWARD DROP
    $IPT -P OUTPUT ACCEPT

    #Bloqueio p2p

    $IPT -A FORWARD -s $CLASSE -m p2p -j DROP
    $IPT -A INPUT -s $CLASSE -m p2p -j DROP

    echo -n "Liberando acesso do localhost..."
    $IPT -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
    $IPT -A INPUT -p tcp -s ! 192.168.1.0/24 --dport 3128 -j REJECT
    $IPT -A INPUT -p ALL -s 10.0.0.0 -i lo -j ACCEPT
    $IPT -A INPUT -p ALL -s 192.168.87.0 -i lo -j ACCEPT
    $IPT -A INPUT -p ALL -s 192.168.254.0 -i lo -j ACCEPT
    $IPT -A INPUT -p tcp --dport 2227 -j ACCEPT
    $IPT -A INPUT -p tcp --dport 10000 -j ACCEPT

    echo -n "Otimizando o roteamento..."
    $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

    $IPT -t nat -A POSTROUTING -s $CLASSE -d 200.201.174.0/255.255.255.0 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLASSE -d 200.201.173.0/255.255.255.0 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLASSE -d 161.148.185.130 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLASSE -d 200.111.159.13 -j MASQUERADE
    $IPT -t nat -A PREROUTING -s 0/0 -d 200.201.174.0/24 -p tcp --dport 80 -j ACCEPT
    $IPT -t nat -A PREROUTING -s 0/0 -d 161.148.185.130 -p tcp --dport 80 -j ACCEPT
    $IPT -t nat -A PREROUTING -s 0/0 -d 200.111.159.13 -p tcp --dport 80 -j ACCEPT
    $IPT -A FORWARD -d 200.201.174.207 -p tcp --dport 2631 -j ACCEPT
    $IPT -A FORWARD -d 200.201.174.204 -p tcp --dport 2631 -j ACCEPT
    $IPT -A FORWARD -d 200.201.173.68 -p tcp --dport 2631 -j ACCEPT
    $IPT -A FORWARD -d 161.148.185.130 -p tcp --dport 3456 -j ACCEPT


    $IPT -t mangle -A POSTROUTING -o eth0 -p tcp --dport 1863 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth2 -p tcp --dport 1863 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth3 -p tcp --dport 1863 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth0 -p tcp --dport 443 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth2 -p tcp --dport 443 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth3 -p tcp --dport 443 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth0 -p tcp --dport 110 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth2 -p tcp --dport 110 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth3 -p tcp --dport 110 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth0 -p tcp --dport 25 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth2 -p tcp --dport 25 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth3 -p tcp --dport 25 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth0 -p tcp --dport 2227 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth2 -p tcp --dport 2227 -j TOS --set-tos 16
    $IPT -t mangle -A POSTROUTING -o eth3 -p tcp --dport 2227 -j TOS --set-tos 16


    # Liberaçao de portas para rede interna
    $IPT -t filter -N PORTAS
    $IPT -A PORTAS -o $NET_IFACE0 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE2 -m multiport -p tcp --dport 80,8080,53,25,110,119,1863,443,2631,7171,6900,44405,3742,2000,27030 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE0 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE2 -m multiport -p tcp --dport 55901,6112,7456,3456 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE0 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE2 -m multiport -p udp --dport 53,1036,1032,1140,1151,2857 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE0 -p udp --dport 27000:27030 -j ACCEPT
    $IPT -A PORTAS -o $NET_IFACE2 -p udp --dport 27000:27030 -j ACCEPT



    for i in `cat $MACLIST`; do
    MACSOURCE=`echo $i | cut -d ';' -f 2`
    IPSOURCE=`echo $i | cut -d ';' -f 3`
    STATUS=`echo $i | cut -d ';' -f 1`


    if [ $STATUS = "x" ]; then
    $IPT -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j PORTAS
    $IPT -t filter -A FORWARD -d $IPSOURCE -s 0/0 -j PORTAS
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE0 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE2 -j MASQUERADE
    #$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $NET_IFACE3 -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o eth0 -j SNAT --to $link1
    $IPT -t nat -A POSTROUTING -s $IPSOURCE -o eth2 -j SNAT --to $link2
    $IPT -t nat -A PREROUTING -p tcp -s $IPSOURCE -m mac --mac-source $MACSOURCE --dport 80 -j REDIRECT --to-port 3128

    $IPT -t filter -A INPUT -m mac --mac-source $MACSOURCE -s $IPSOURCE -j ACCEPT
    #$IPT -t nat -A POSTROUTING -s $IPSOURCE -o $LAN_IFACE -j MASQUERADE
    $IPT -A INPUT -i $LAN_IFACE -s $IPSOURCE -p tcp --dport 3128 -j ACCEPT

    # Libera todas as portas
    $IPT -A INPUT -p tcp -s $IPSOURCE -j ACCEPT

    else
    $IPT -t filter -A FORWARD -m mac --mac-source $MACSOURCE -j DROP
    $IPT -t filter -A INPUT -m mac --mac-source $MACSOURCE -s $IPSOURCE -j DROP
    $IPT -t filter -A OUTPUT -s $IPSOURCE -j DROP
    fi
    done

    echo " [OK]"

    $IPT -A INPUT -s 192.168.1.0/24 -j DROP

    # Abilitando repasse entre as interfaces

    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Protege contra synflood

    echo "1" > /proc/sys/net/ipv4/tcp_syncookies

    # Proteção contra ICMP Broadcasting

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    # Ignora pings

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

    # Bloqueia traceroute
    $IPT -A INPUT -p udp --dport 33435:33525 -j DROP

    # Proteções diversas contra portscanners, ping of death, ataques DoS, etc.

    $IPT -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    $IPT -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
    $IPT -A FORWARD -m unclean -j DROP
    $IPT -N VALID_CHECK
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
    $IPT -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP

    # Regras para saida e entrada

    $IPT -A OUTPUT -p udp --dport 137:139 -j DROP
    $IPT -A OUTPUT -p udp --sport 137:139 -j DROP
    $IPT -A OUTPUT -p udp --dport 445 -j DROP
    $IPT -A OUTPUT -p udp --sport 445 -j DROP

    $IPT -A FORWARD -o $LAN_IFACE -d $IPSOURCE -m state --state ESTABLISHED,RELATED -j ACCEPT

    echo -n "Bloqueando spoofing..."
    $IPT -A INPUT -i $LAN_IFACE -s 10.0.0.0/8 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 172.16.0.0/12 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 192.168.0.0/16 -j DROP
    $IPT -A INPUT -i $LAN_IFACE -s 224.0.0.0/4 -j DROP

    $IPT -A INPUT -i $LAN_IFACE -s 240.0.0.0/5 -j DROP
    echo " [OK]"

    # Liberando alguns acessos por ping:

    echo -n "Liberando acesso por ping..."
    $IPT -A INPUT -p icmp --icmp-type 8 -i eth1 -j ACCEPT
    $IPT -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    $IPT -A INPUT -p icmp -s 192.168.1.254/24 -d 0/0 -j ACCEPT
    echo " [OK]"


    # Descarta pacotes invalidos:

    echo -n "Descartando pacotes invalidos para reenvio..."
    $IPT -A FORWARD -m state --state INVALID -j DROP
    echo " [OK]"


    $IPT -A FORWARD -p udp -s $CLASSE -d $DNS1 --dport 53 -j ACCEPT
    $IPT -A FORWARD -p udp -s $CLASSE -d $DNS2 --dport 53 -j ACCEPT
    $IPT -A FORWARD -p udp -s $CLASSE -d $DNS3 --dport 53 -j ACCEPT
    $IPT -A FORWARD -p udp -s $CLASSE -d $DNS4 --dport 53 -j ACCEPT
    $IPT -A FORWARD -p udp -s $DNS1 --sport 53 -d $CLASSE -j ACCEPT
    $IPT -A FORWARD -p udp -s $DNS2 --sport 53 -d $CLASSE -j ACCEPT
    $IPT -A FORWARD -p udp -s $DNS3 --sport 53 -d $CLASSE -j ACCEPT
    $IPT -A FORWARD -p udp -s $DNS4 --sport 53 -d $CLASSE -j ACCEPT
    echo " [OK]"


    ;;
    stop)
    $IPT -F
    $IPT -Z
    $IPT -t nat -F
    $IPT -t filter -P FORWARD ACCEPT
    ;;
    restart)
    $PROGRAMA stop
    $PROGRAMA start
    ;;
    esac


    Não está criando a chain PORTAS!!

  6. #6

    Padrão

    se voce quer amarrar ip com mac, esqueça tudo isso, e veja como é simples arp -f ethers

  7. #7

    Padrão

    Citação Postado originalmente por rogeriobenvindo Ver Post
    se voce quer amarrar ip com mac, esqueça tudo isso, e veja como é simples arp -f ethers
    Agradeço, mas meu problema não é apenas mac e ip, e sim fluxo..

    Sobre sua solução, se possível detalhe.