+ Responder ao Tópico



  1. #1

    Padrão Squid amarrando ip+mac

    Fiquei alguns dias procurando alguma solução para amarrar o ip e o mac para que os clientes não ficassem trocando, a maioria das soluções era com iptables e tinha que mudar o meu firewall todo, então comecei a procurar uma forma de fazer isso com o próprio squid, e descobri uma forma, que faz com que o cliente só possa usar o ip fornecido pelo provedor, caso ele troque o ip, quando ele for navegar recebe uma mensagem do próprio squid de acesso bloqueado.

    vamos então ao squid.conf

    Bom baseado que vc ja possua seu squid funcionando e tudo mais estando ok, adiocione as seguintes regras acl no seu squid.conf

    Eu uso a categoria de rede 10.0.0.0 mais nada impede que se use 172.16.0.0 ou 192.168.0.0

    acl cli_ip01 src 10.0.1.2 ## CLIENTE 1
    acl cl_mac01 arp FF:FF:FF:FF:FF:FF

    acl cli_ip02 src 10.0.2.2 ## CLIENTE 2
    acl cli_ip02 src 10.0.2.3
    acl cl_mac02 arp EE:EE:EE:EE:EE:EE
    acl cl_mac02 arp DD:CD:CD:CD:CD:CD

    acl cli_ip03 src 10.0.3.2 ## CLIENTE 3
    acl cli_ip03 src 10.0.3.3
    acl cli_ip03 src 10.0.3.4
    acl cl_mac03 arp CC:CC:CC:CC:CC:CC

    ## no primeiro cliente é criada uma acl para o ip dele e para o mac da placa ou ap
    ## dele.
    ## no segundo caso o cliente possui duas placas ou aps e dois ips, e no terceiro
    ## caso o cliente possui um ap e nesse ap tem 3 computadores ligados nele, nesse
    ## caso só o mac do ap que é fornecido, pois quando o ap esta em modo client,
    ## todos os macs atrás dele não aparecem no servidor, então basta colocar o
    ## mac do ap e liberar os ips.

    ## agora que vem a regra que libera os ips e macs.

    http_access allow cli_ip01 cl_mac01
    http_access allow cli_ip02 cl_mac02
    http_access allow cli_ip03 cl_mac03

    ## como vc criou uma acl para cada cliente, essa acl fica conectada com a outra
    ## acl com o mac, pois vc liberou o acesso para o cliente1 e mac1 e assim
    ## sucessivamente.
    ## No cliente 2 e 3 temos acl´s que repetem o nome, mais não é erro não, o squid
    ## funciona assim : cada acl com o mesmo nome é como se fosse o mesmo arquivo
    ## com varias linhas.
    ## então no caso do cliente 2 ele vai liberar o ip 10.0.2.2 e 10.0.2.3 para somente
    ## os macs EE:EE:EE:EE:EE:EE e o mac DD:CD:CD:CD:CD:CD
    ## e no caso do cliente 3 ele vai liberar 3 ips para o mesmo mac.

    qualquer mac que não esteja cadastrado, não vai navegar pois não vai possuir nenhuma acl direcionando para ele, e se algum cliente que possui mac cadastrado trocar o ip, não vai conseguir navegar pois para isso precisa estar com o mac e o ip na mesma regra do http_access.

    Esse é o meu primeiro post.

    Espero que ajude alguem.
    Última edição por Gbytes; 03-06-2009 às 18:34.

  2. #2
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Padrão

    amigo, parabens pelo post, me ajudara em muito numa pequena rede aqui, portanto em uma grande aplicação o squid.conf ficara enorme, nao teria como amenizar através de um arquivo onde conteria o mac e o ip, vejo problema somente em o squid entender a situação...

    qual sua sujestão?

  3. #3

    Padrão Squid mac+ip

    Então Eder, o problema é justamente esse, o arquivo do squid.conf em uma rede muito grande tbem ficaria enorme, essa solução é boa somente com redes pequenas, no meu caso aqui tenho 100 clientes cadastrados e funciona bem, mais tive de criar uma acl para cada cliente e informar o mac de cada um e criar uma http_access para cada um tbem, fica ai para os colegas do forum a idéia de aperfeiçoar o sistema.


  4. #4

    Padrão

    bom... podera ajudar mtos, eh sempre bom ver quem esta disposto a ajudar...

    porem, o squid eh um dos maiores consumidor de memoria na maquina.
    alem do mais.. o cliente continuaria tendo acesso a msn, skype, ftp, https, e outros que nao passam pelo squid.
    entao, na minha opiniao, nao aconselho a usa-lo para tal fim.

    porem, para nao deixar a comunidade na mao... deixarei aqui minha dica:

    1> CONFIGURACAO DO DHCP
    deixaremos o dhcp configurado para somente enviar ip para as maquinas cadastradas...
    facilitando a administrando de permissao de acesso as maquinas cadastradas...

    o dhcpd ficaria mais ou menos assim:
    #dhcpd conf
    ddns-update-style none;
    default-lease-time 21600;
    max-lease-time 43200;

    authoritative;

    subnet 172.168.0.0 netmask 255.255.0.0 {
    option routers 172.167.0.1;
    option domain-name "bosque.lgmtecnologia.com.br";
    option domain-name-servers seus_servidores_dns;
    }


    #andrio/0001
    host andrio {
    hardware ethernet 00:xx:xx:xx:xx:xx;
    fixed-address 172.167.0.9;
    option subnet-mask 255.255.255.0;
    }

    #cliente2/0002
    host cliente2 {
    hardware ethernet 00:yy:yy:yy:yy:yy;
    fixed-address 172.167.0.10;
    option subnet-mask 255.255.255.0;
    }
    2> CONFIGURACAO DO FIREWALL

    A:Criando tabela de clientes> Crie um arquivo na qual contera os dados para administracao dos clientes:
    #touch /etc/bd
    #vim /etc/bd

    exemplo: IP;MAC;NumeroPacote;0;Cliente
    172.167.0.9;00:xx:xx:xx:xx:xx;0;1721670002;andrio
    172.167.0.10;00:yy:yy:yy:yy:yy;0;1721670002;cliente2
    B:Controlando o acesso(iptables)> No seu firewall, adicione as seguintes linhas:

    (no inicio do firewall)
    # Paramentros de controle de acesso
    MACLIST=/etc/bd
    echo " Controle de acesso.....................[ OK ]"
    (Antes do compartilhamento entre as placas)
    # # Controle de ACESSO##
    # Diretivas do BD IP, MAC e Port
    for i in `cat $MACLIST`; do
    IPSOURCE=`echo $i | cut -d ';' -f 1`
    MACSOURCE=`echo $i | cut -d ';' -f 2`

    # Controle de Acesso IPxMAC
    iptables -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
    iptables -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT

    #Pacote Marcado
    iptables -A PREROUTING -t mangle -i eth1 -s $IPSOURCE -j MARK --set-mark $CBQMARK

    done
    Observacao: nesse caso, o firewall esta bem restritivo... com as politicas padroes INPUT e FORWARD com drop
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    para se bloquear um cliente, basta mudar os "00" (zeros) iniciais do mac do cliente cadastrado na tabela... ou seja, o mac verdadeiro do cliente fica diferente do mac cadastrado no bd, assim sendo, o cliente estara bloqueado...
    Última edição por AndrioPJ; 17-07-2009 às 09:57.

  5. #5
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Thumbs up

    Muito bom mesmo, obrigado pessoal achei minha solução.
    Vou teste primeiramente com o squid.conf sao 40 pc's depois vou implementa no dhcp mesmo como nosso amigo mascaraapj, mais uma vez obrigado pessoal pela atenção..

    abraços a todos...

  6. #6

    Padrão

    desculpa gente... esqueci uma parte do script do firewall
    corrigi a falha ja...
    agora esta completo

  7. #7
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Lightbulb

    Citação Postado originalmente por mascaraapj Ver Post
    desculpa gente... esqueci uma parte do script do firewall
    corrigi a falha ja...
    agora esta completo

    Amigo você comentou no seu post anterior que o msn, skype etc... ficaria passando direto certo.

    eu uso aq authenticação no proxy com grupos de acesso, e amarrando o ip ao mac no squid.conf eu perderia a o controle de authenticação do proxy? ou colocando logo acima do parametro

    auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd

    pela logica ele so deicharia autenticar quem estiver liberado correto?


    abracos...

  8. #8

    Padrão

    bom amigo
    nesse caso, nao sei te responder...
    pois nunca testei...

    mas veja bem... o squid so responde pela porta 80 q redirecionamos para ele...

    vamos supor, q o usuario coloque o ip la manualmente, e tente acessar skype, msn, outros...
    isso nao passa pelo squid... entao... como ele iria bloquear?

    mas faca o teste ai

  9. #9
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Padrão

    na realidade ja tenho ele bloqueando esses protocolos....
    posto resultados...
    abracos...

  10. #10

    Padrão

    Então colega Mascara, aqui eu resolvi o problema de acesso ao msn e outras coisas mais no firewall com simples regras tbem.

    ############ BLOQUEIO DE CLIENTES

    iptables -A FORWARD -s 10.0.0.10/32 -p tcp --dport 80 -j ACCEPT
    iptables -A FORWARD -s 10.0.0.10/32 -p tcp --dport 8080 -j ACCEPT
    iptables -A FORWARD -s 10.0.0.10/32 -p tcp --dport 3128 -j ACCEPT
    iptables -A FORWARD -s 10.0.0.10/32 -p tcp --dport 1:65535 -j DROP
    iptables -A FORWARD -s 10.0.0.10/32 -p udp --dport 1:65535 -j DROP

    para entender as regras : as 3 primeiras linhas eu libero para o ip 10.0.0.10 a porta 80, 8080 e 3128, respectivamente : navegação, apache e squid. E bloqueio todas as outras portas tanto em tcp como udp nas linhas 4 e 5.

    Usando o sistema de amarração de ip e mac do squid, quando vc quizer bloquear o cliente vc modifica o mac no cadastro dele e muda a regra no firewall fazendo com que ele só possa achar a porta do squid e a porta do seu apache, que no meu caso é a porta 8080, assim vc pode criar uma página personalizada de bloqueio informando o cliente.

    Espero ter ajudado.

  11. #11
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Padrão

    ja pra quem quer bloquear o msn no squid.conf e fiz da seguinte forma , mas meu squid e autenticado ok



    #################################################
    ############### BLOQUEIA O MESSENGER ################
    ################################################
    #
    acl bloquear_msn dstdomain "/etc/squid/bloqueio/bloquear_msn"
    acl acesso_msn proxy_auth "/etc/squid/acessos/acesso_msn"
    http_access allow acesso_msn bloquear_msn
    http_access deny bloquear_msn
    deny_info Google bloquear_msn
    ################################################

    depois dentro do arquivo bloquear_msn eu coloquei o seguinte conteudo

    200.177.97.157
    207.46.111.54
    207.46.111.54/gateway
    207.46.113.220
    207.46.108.51
    207.68.178.239
    65.212.92.104
    65.50.10.6
    65.212.92.111
    64.58.88.113
    ADSAdClient31.dll
    passport.com
    sc.msn.com
    rad.msn.com
    c.msn.com
    mymsn.hotmail.com
    ads1.msn.com
    storage.msn.com
    st.msn.com
    stc.msn.com
    msn_messenger
    config.messenger.msn.com
    media.meegos.com
    messenger
    gateway.dll
    messenger.msn.com.br
    http.msg.yahoo.com
    nickname.msn.com.br
    chat.msn.com
    chat.msn.com.br
    msgr.hotmail.com
    gateway.messenger.hotmail.com
    http1.msgr.
    http2.msgr.hotmail.com
    http3.msgr.hotmail.com
    http4.msgr.hotmail.com
    http5.msgr.hotmail.com
    http6.msgr.hotmail.com
    http7.msgr.hotmail.com
    http8.msgr.hotmail.com
    http9.msgr.hotmail.com
    http10.msgr.hotmail.com
    http11.msgr.hotmail.com
    http12.msgr.hotmail.com
    http13.msgr.hotmail.com
    http14.msgr.hotmail.com
    http15.msgr.hotmail.com
    http16.msgr.hotmail.com
    http17.msgr.hotmail.com
    http18.msgr.hotmail.com
    http19.msgr.hotmail.com
    http20.msgr.hotmail.com
    x-msn

    no meu arquivo acesso_msn eu coloquei o nome dos individuos autorizados a acessar o msn, porem com a ideia acima fica facil de implementar um bloqueio de msn mesmo sem autenticação como tenho em uma farmacia municipal....


    dando os creditos a nosso amigo do VOL JOAO PAULO FARIAS DE ARAUJO
    tem um artigo dele de controle de acesso com autenticação muito facil de implementar...
    Última edição por ederamboni; 17-07-2009 às 14:58.

  12. #12

    Padrão

    mas ai nao eh trabalho em dobro?

  13. #13
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Padrão

    Citação Postado originalmente por mascaraapj Ver Post
    mas ai nao eh trabalho em dobro?
    realmente seria em dobro mesmo, mas num proxy com autenticação haveria uma outra forma?

  14. #14

    Padrão

    Citação Postado originalmente por ederamboni Ver Post
    realmente seria em dobro mesmo, mas num proxy com autenticação haveria uma outra forma?
    vc pode colocar a autenticacao pelo squid.. sem precisar amarrar ip ao mac pelo squid..
    e fazer o controle de acesso pelo firewall... com a dica que dei..

  15. #15
    Moderador Avatar de ederamboni
    Ingresso
    Oct 2004
    Localização
    Montes Claros
    Posts
    885
    Posts de Blog
    13

    Padrão

    Citação Postado originalmente por ederamboni Ver Post
    realmente seria em dobro mesmo, mas num proxy com autenticação haveria uma outra forma?

    Desculpe minha ter me espressado mal
    outra forma de bloquear o msn pra alguns users....(um exemplo)

  16. #16

    Padrão

    Pessoal, movi o tópico para área de Proxy/NAT/Firewall!

    Até mais...