+ Responder ao Tópico



  1. #1

    Padrão Regras Para Agregar Ip Ao End Mac

    Pessoal gostaria de obter ajuda no sentido de escrever umas regras no meu firewall onde o ip de determinada máquina estevisse agredada ao endereço mac da placa de rede da mesma.,
    A intenção que somente as máquinas que constassem nessa regra tivessem acesso a internet., na minha rede rola DHCP pelo windows., e como a instituição recebe muitas pessoas isso seria uma forma de um espertinho chegue em um ponto de rede plugue seu laptop e saia navegando através de meu link.,
    Peço a juda de vez que são eximios conhecedores dos FORWARD,ACCEPT,INPUT,DROP ,OUTPUT

    Obrigado...

  2. #2

    Post

    Saudações Souza,

    Bom acho que uma regra deste tipo pode te ajudar.

    Código :
    iptables -t filter -A FORWARD -i $IFACE -s $ADDR -m mac --mac-source $MAC -j ACCEPT
                            iptables -t filter -A FORWARD -d $ADDR -j ACCEPT
                            iptables -t filter -A INPUT -i $IFACE -s $ADDR -m mac --mac-source $MAC -j ACCEPT
                            iptables -t nat -A POSTROUTING -s $ADDR -o $OFACE -j MASQUERADE

    Cara, isso faz parte de um script que eu fiz pra controle de mac. Eu até postei ele uma vez aqui, mas eu acho que ele deve ser melhorado. Se quiser ele eu posso postar ele inteiro aqui.

    OBS: Aqui a minha regra default para essa tabelas é DROP.

    Abraço
    Última edição por viny_carvalho; 02-05-2007 às 12:05.



  3. #3

  4. #4

    Post

    Seguinte:

    Como esse script eu fiz para mim. Tem algumas coisas que eu devo explicar:
    Para "facilitar" a minha vida eu fiz 2 vetores ("ADDR[i]" e "MAC[i]") para colocar os IPs e MACs, assim para adicionar um mac eu só posto ele na sequencia do script lá. Eu sei que deve ter um jeito melhor, se quiserem melhorar ele está ae...

    Bom, nos meus servidores eu tenho um padrão que é para a rede local que eu sempre coloco na eth0 e a rede do modem que eu sempre coloco na eth1. Por isso algumas partes sem variáveis.

    Existe aquela variável ($IPS) que controla o número de ips. Depois eu jogo ela no "for" para ele varrer os vetores :-) Nesse caso como eu coloquei 1 ip o valor dela é 1 :-)

    Os IPs do servidor e MACs eu deixei fora do "for" e como você pode ver tem uma regra específica pra eles.

    Acho que era isso, aí está o script para controle de MACs. Com certeza ele pode ser melhorado. Se melhorar ele e quiser postar novamente :-)

    Abraço

    Código :
    #!/bin/bash
    # Write by Vinicius Costa Carvalho
     
    # Ips e Mac Address
     
    # cliente - joao
    ADDR[1]=192.168.200.12
    MAC[1]="00:16:EC:21:B5:1E"
     
    # Servidor - ETH0
    SERVER_ETH0=192.168.200.254
    SERVER_MAC0="00:83:08:00:ED:68"
     
    # Servidor - ETH1
    SERVER_ETH1="192.168.0.1"
    SERVER_MAC1="00:15:F2:D6:A4:DE"
     
    IPS=1
     
    case "$1" in
     
            start)
                    echo "Iniciando o filtro";
                    sleep 1
                    iptables -t filter -F
     
                    echo "Alterando regras padroes";
                    iptables -t filter -P INPUT DROP
                    iptables -t filter -P FORWARD DROP
     
                    echo "Ativando regras para o servidor";
                    # Server lo
                    iptables -t filter -A FORWARD -i lo -j ACCEPT
                    iptables -t filter -A INPUT -i lo -j ACCEPT
     
          # Server eth0
                    iptables -t filter -A FORWARD -i eth0 -s $SERVER_ETH0 -m mac --mac-source $SERVER_MAC0 -j ACCEPT
                    iptables -t filter -A FORWARD -i eth0 -d $SERVER_ETH0 -j ACCEPT
                    iptables -t filter -A INPUT -i eth0 -s $SERVER_ETH0 -m mac --mac-source $SERVER_MAC0 -j ACCEPT
                    sleep 1
     
                    # Server eth1
                    iptables -t filter -A FORWARD -i eth1 -s $SERVER_ETH1 -m mac --mac-source $SERVER_MAC1 -j ACCEPT
                    iptables -t filter -A FORWARD -i eth1 -d $SERVER_ETH1 -j ACCEPT
                    iptables -t filter -A INPUT -i eth1 -s $SERVER_ETH1 -m mac --mac-source $SERVER_MAC1 -j ACCEPT
                    sleep 1
     
                    echo "Ativando regras para usuarios";
                    for ((i=1;i<=$IPS;i++))
                            do
                            {
                            iptables -t filter -A FORWARD -i eth0 -s ${ADDR[i]} -m mac --mac-source ${MAC[i]} -j ACCEPT
                            iptables -t filter -A FORWARD -d ${ADDR[i]} -j ACCEPT
                            iptables -t filter -A INPUT -i eth0 -s ${ADDR[i]} -m mac --mac-source ${MAC[i]} -j ACCEPT
                            iptables -t nat -A POSTROUTING -s ${ADDR[i]} -o eth1 -j MASQUERADE
                            echo "Regras de filtro ativadas!";
                            }
                    done
                    ;;
     
            stop)
                    echo "Parando o filtro";
                    iptables -t filter -P INPUT ACCEPT
                    iptables -t filter -P FORWARD ACCEPT
                    # Se voce usa alguma outra regra na table filter cuidado com esta regra abaixo.
                    iptables -t filter -F
                    for ((i=1;i<=$IPS;i++))
                            do
                            {
                            iptables -t nat -D POSTROUTING -s ${ADDR[i]} -o eth1 -j MASQUERADE
                            }
                    done
                    ;;
     
            restart)
                    $0 stop
                    sleep 2
                    $0 start
                    ;;
     
            *)
                    echo "Opcao incorreta!";
                    ;;
    esac



  5. #5

    Padrão

    Cara assim ficaria complicado pra mim., imagina 300 estações para adequar a esse script., o lance seria eu ir adicionando nas regras do meu firewall tipo assim

    # ESTAÇÃO1
    iptables -t filter -A FORWARD -i eth0 -s $SERVER_ETH0 -m mac --mac-source (APENAS UM EXEMPLO Ñ SEI COMO SERIA A REGRA)

    # ESTAÇÃO2
    iptables -t filter -A FORWARD -i eth0 -s $SERVER_ETH0 -m mac --mac-source (APENAS UM EXEMPLO Ñ SEI COMO SERIA A REGRA)

    E assim sucessivamente

    Lembrando que meu micros usam ip falso., e estão atraz de um Firewall fazendo nat com o squid configurado para proxy transparente. Tipo assim:]
    ETH0: IP REAL
    ETH1: IP FALSO

  6. #6

    Padrão

    É como eu disse amigo, pode melhorar o script :-). Essa seria uma melhora boa, otimizar a adição de endereços e macs :-)