Schedule Squid Transparente



  • Bom dia a todos!

    Recebi uma solicitação de um cliente e estou com dificuldades para resolver.
    O mesmo quer que realize a liberação da internet em toda a rede em determinados horário. O ambiente atual está configurado com Squid HTTP/HTTPS e certificados instalados nas estações de trabalho (não configurei o SquidGuard pois tive problemas com o bloqueio do SSL).

    Pois bem, como o Scheduler do pfSense trabalha a nivel de regra e o proxy transparente cria um NAT "interno" redirecionando as conexẽs HTTP e HTTPS para localhost, pensei em criar um script desabilitando esse nat "interno" e liberando assim o acesso a internet.

    Queria a opinião de vocês de como resolver esse problema, a solução do script acho que daria certo, porém não consegui fazer isso os comandos do pfctl, alguém poderia me ajudar ?

    Obrigado a todos!



  • Você pode trabalhar com regras e alises.
    Crie uma blacklist  com ips e urls bloqueadas durante o periodo que deseja
    Crei uma regra acima de todas as bloqueando tudo para essa blacklist, dentro desta regra você define a squedule.

    Ou usar custom acl no squid

    
    acl Libera dstdomain  facebook.com
    acl WORKING time MTWHF 11:30-12:30
    http_access allow Libera WORKING
    http_access deny Libera
    
    


  • Amigo, muito obrigado pelo retorno vou fazer aqui e posto o resultado aqui no forum. ;)



  • Amigo, não deu certo não. Adicionei a regra mencionada, alterando o domínio e horário, porém o proxy continuou bloqueando. Lembrando que não estou utilizando autenticação no squid.

    Em relação a regra de filtragem, mesmo eu liberando todo o acesso, o pfSense cria automaticamente o NAT de redirecionamento de porta, pois estou trabalhando com proxy transparente, e encaminha a requisição para o firewall.

    se conseguisse desabilitar as duas regras abaixo, acredito que daria certo

    rdr pass on xl0 inet proto tcp from any to ! (xl0) port = http -> 127.0.0.1 port 3128
                        rdr pass on xl0 inet proto tcp from any to ! (xl0) port = https -> 127.0.0.1 port 3129

    ai eu criaria um script desabilitando tais regras e parando o serviço do squid.

    Só que não sei ainda como desabilitar a regra de NAT via cli.



  • @alexandroinfor:

    Bom dia a todos!

    Recebi uma solicitação de um cliente e estou com dificuldades para resolver.
    O mesmo quer que realize a liberação da internet em toda a rede em determinados horário. O ambiente atual está configurado com Squid HTTP/HTTPS e certificados instalados nas estações de trabalho (não configurei o SquidGuard pois tive problemas com o bloqueio do SSL).

    Pois bem, como o Scheduler do pfSense trabalha a nivel de regra e o proxy transparente cria um NAT "interno" redirecionando as conexẽs HTTP e HTTPS para localhost, pensei em criar um script desabilitando esse nat "interno" e liberando assim o acesso a internet.

    Queria a opinião de vocês de como resolver esse problema, a solução do script acho que daria certo, porém não consegui fazer isso os comandos do pfctl, alguém poderia me ajudar ?

    Obrigado a todos!

    1º crie os hoarios que vc vai utilizar em Regras>>Agendas.
    2º Em Regras do Firewall, crie uma nova regra e coloque o range de IP da sua rede e não esquece de apontar essa regra para sua Agenda criada no item acima.
    Se vc quer abrir a internet apenas para alguns IP, inves de colocar o Range de IP, (cria uma nova Aliases  e dentro dela vc coloca os IP) depois vc aponta esse nova Aliases no lugar do Range de IP.



  • @alexandroinfor:

    Amigo, não deu certo não. Adicionei a regra mencionada, alterando o domínio e horário, porém o proxy continuou bloqueando. Lembrando que não estou utilizando autenticação no squid.

    Se você optou por criar as definições via regra deve remover o site da blacklist do squid e manter apenas nas aliases.



  • Bom dia amigo.

    Muito obrigado pelo retorno!

    Estou trabalhando com proxy transparente, nesse caso, essas regras serão ignoradas pelo proxy, uma vez que ele redireciona automaticamente as conexões da porta 80 e 443 para 3128 e 3129 respectivamente.

    Talvez a solução seja trabalhar com proxy ativo mesmo, oque acha ?



  • Crie uma schedules depois adiciona essa mesma regra nas portas: 80, 443 ou 53 (DNS). Acho melhor você só apontar para a porta DNS que resolve seu problema.



  • Muito obrigado a todos que me auxiliaram com o problema, consegui resolver a situação da seguinte maneira;

    Criei dois arquivos;

    1 /etc/rc.d/agenda_inicio.sh

    #!/bin/sh
    cat /tmp/rules.debug | grep -v "rdr pass on xl0 proto tcp from any to !(xl0) port 80 -> 127.0.0.1 port 3128" | grep -v "rdr pass on xl0 proto tcp from any to !(xl0) port 443 -> 127.0.0.1 port 3129" > /t
    mp/rules.agenda
    /sbin/pfctl -f /tmp/rules.agenda
    
    

    2 /etc/rc.d/agenda_fim.sh

    #!/bin/sh
    /sbin/pfctl -f /tmp/rules.debug
    
    

    O primeiro arquivo faz um cat nas regras atuais do firewall e exclui com o grep -v os dois NATs que redirecionam o trafego HTTP/HTTPS para o squid
    O Segundo arquivo volta as regras salvas do arquivo /tmp/rules.debug

    Por ultimo, agendei uma rotina no cron

    ;) ;)



  • Boa alternativa sem programar.

    Só lembrando que o /tmp/rules.debug é alterado sempre que qualquer regra é aplicada e ainda tem uns agendamentos internos do pfSense que podem gerar o arquivo novamente.