Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Problemas Pacote vHosts

    Scheduled Pinned Locked Moved Portuguese
    18 Posts 2 Posters 3.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      thimoura
      last edited by

      Boa Noite Senhores!

      Estou em um projeto novo, estou construindo um mini portal para alguns gerentes acessarem e fazerem um input direto nas acls do Squid, já criei a pagina simples em PHP e está funcionando muito bem, porem preciso colocar essa pagina no Pfsense, para que eu possa configurar o squid.conf para colher a ACL e aplicar as restrições.

      Vi que existe o pacote vHosts, porem não consigo iniciar o serviço e infelizmente não tenho nenhum log para ver por onde começar.

      Alguem já trabalhou com o pacote?

      Obrigado.

      Atenciosamente.

      Thiago Moura

      1 Reply Last reply Reply Quote 0
      • marcellocM Offline
        marcelloc
        last edited by

        tenta executar o serviço pela console.

        O pacote funciona mas é meio "bugado".

        Pergunta:

        Porque não colocar esta página direto no servidor php do pfsense? (/usr/local/www)

        Treinamentos de Elite: http://sys-squad.com

        Help a community developer! ;D

        1 Reply Last reply Reply Quote 0
        • T Offline
          thimoura
          last edited by

          Marcelão Salvador da Patria!rsrs

          Então…não coloquei a principio no servidor do Pfsense, por não saber se é possivel, eu teria como acessar pela porta 80 ou pela porta da interface WebGUI?

          1 Reply Last reply Reply Quote 0
          • T Offline
            thimoura
            last edited by

            Opa! Progressos, desinstalei o pacote e instalei de novo e ele passou a rodar, ainda que no Widget ele apareça como parado mesmo.

            Agora estou com outro problema e esse tenho certeza que o marcelloc vai saber de cara.

            Eu criei o codigo em PHP, ele está funcionando e tudo mais, ai eu fui verificar no squid.conf o caminho da blacklist.acl pra ver onde vou inputar com meu codigo.
            O problema é que ele aceita o codigo na ACL só que não aplica as restrições e quando reinicio o serviço ele exclui o arquivo (tendo em vista que na interface do squid pela WebGui não tem nada)

            Tem ideia do que seja?

            1 Reply Last reply Reply Quote 0
            • marcellocM Offline
              marcelloc
              last edited by

              Se o que você quer é gerar a acl a partir do seu código usando o pacote do squid para configurar o resto, é melhor fazer o código para editar o xml em vez de criar o arquivo de configuração.

              Se for o caso, é melhor usar a proprio php do pfsense para usar a framework a seu favor.

              Treinamentos de Elite: http://sys-squad.com

              Help a community developer! ;D

              1 Reply Last reply Reply Quote 0
              • T Offline
                thimoura
                last edited by

                Mas como eu editaria o XML diretamente?
                Eu inputei em /var/squid/acl/blacklist.acl

                1 Reply Last reply Reply Quote 0
                • marcellocM Offline
                  marcelloc
                  last edited by

                  Da uma olhada no squid.inc e veja que ele trata o xml como um array php.

                  http://forum.pfsense.org/index.php/topic,41928.msg237822.html#msg237822

                  Este script que habilita e desabilita o ipsec vai te ajudar a fazer um php que altera o conteúdo do xml como você quer.

                  att,
                  Marcello Coutinho

                  Treinamentos de Elite: http://sys-squad.com

                  Help a community developer! ;D

                  1 Reply Last reply Reply Quote 0
                  • T Offline
                    thimoura
                    last edited by

                    Bom Dia!

                    Desculpe a ignorancia, mas onde fica o arquivo squid.inc? Os dados relacionados a bloqueio não são carregados a partir do arquivo blacklist.acl?

                    1 Reply Last reply Reply Quote 0
                    • marcellocM Offline
                      marcelloc
                      last edited by

                      Onde você cadastra normalmente os bloqueios?

                      já pensou em usar as pemissões de acesso do proprio pfsense e liberar para os gerentes somente acesso ao squidguard(ou pacotes que usam xml) por exemplo?

                      Treinamentos de Elite: http://sys-squad.com

                      Help a community developer! ;D

                      1 Reply Last reply Reply Quote 0
                      • T Offline
                        thimoura
                        last edited by

                        Normalmente uso o SquidGuard, mas esse é um caso isolado, se trata de um projeto de laboratório…

                        Os bloqueios eu cadastro via web...Services>Proxy Server>Access Control> Blacklist

                        Ai analisando o squid.conf (/usr/local/etc/squid/squid.conf) eu achei essa linha:

                        acl blacklist dstdom_regex -i "/var/squid/acl/blacklist.acl"

                        Ai coloquei meu script pra alterar esse arquivo "blacklist.alc"
                        porem as restrições que eu coloco la não são lidas pelo squid, tanto que quando vou em

                        Services>Proxy Server>Access Control> Blacklist

                        não muda nada.

                        1 Reply Last reply Reply Quote 0
                        • marcellocM Offline
                          marcelloc
                          last edited by

                          Não muda porque a configuração é gravada no xml.

                          depois de alterar o arquivo, voce precisa reiniciar o serviço.

                          Dependendo da forma com que o pacote foi escrito, cada restart do serviço o daemon executa o procedimento de leitura do xml e gravação em disco.

                          Treinamentos de Elite: http://sys-squad.com

                          Help a community developer! ;D

                          1 Reply Last reply Reply Quote 0
                          • T Offline
                            thimoura
                            last edited by

                            E você sabe informar onde fica o XML?

                            1 Reply Last reply Reply Quote 0
                            • marcellocM Offline
                              marcelloc
                              last edited by

                              @thimoura:

                              E você sabe informar onde fica o XML?

                              O xml fica em /conf/config.xml mas não recomendo editar ele via script.

                              A melhor forma é usar as funções do php para editar o campo que você precisa.

                              Aquele post que te passei esta cheio de comentários e mostra um php que liga e desliga o ipsec.

                              /*
                                  check_mpls.php
                                  Versao 1.1
                                  Este script tem como funcao habilitar ou desabilitar tuneis de VPN para serem usados
                                  como backup em caso de falhas em linhas dedicadas ou links ponto-a-ponto.
                                  Este script deve ser instalado no diretorio /usr/local/www, ter permisao de
                                  execucao e devera ser chamado atraves do cron na peridiocidade desejada.
                                  O script recebe como parametro o IP de origem para determinar a interface pela
                                  qual o teste sera realizado, o IP de destino que sera verificado se esta
                                  on-line ou n## e o nummero da VPN.
                                  No caso o numero da VPN e obtido contando-se apenas os itens de Fase 1 na 
                                  configuracao do IPSec do pfSense de cima para baixo comecando do 0.
                                  Exemplo:
                                  php -q /usr/local/www/check_mpls.php <ip de="" origem=""> <ip a="" ser="" testado=""> <numero da="" vpn="" ipsec="">
                                  php -q /usr/local/www/check_mpls.php 192.168.0.1 192.168.10.3 0
                              */
                              
                              require_once("util.inc");
                              require_once("functions.inc");
                              require_once("pkg-utils.inc");
                              require_once("globals.inc");
                              require_once("filter.inc");
                              require_once("shaper.inc");
                              require_once("ipsec.inc");
                              require_once("vpn.inc");
                              
                              /* Pega o ultimo parametro informado na chamada, e armazena na variavel $VPN_ID */
                              $VPN_ID=array_pop($argv);
                              
                              /* Pega o IP de destino informado e checa se e valido, se sim continua o programa */ 
                              $dsthost=array_pop($argv);
                              if (! is_ipaddr($dsthost)){
                                      print "Invalid Destination IP address!\n";
                                      exit(1);
                              }
                              
                              /* Pega o IP de origem informado e checa se e valido, se sim continua o programa */
                              $srchost=array_pop($argv);
                              if (! is_ipaddr($srchost)){
                                      print "Invalid Source IP address!\n";
                                      exit(1);
                              }
                              
                              /* Verifica se o IPSec esta ligado no pfSense, se sim continua o programa */
                              $ipsec=&$config['ipsec'];
                              if (! isset($ipsec['enable'])) {
                                      exit(1);
                              }
                              
                              /* Armazena as configuracoes das fases 1 e 2 do IPSec nas variaveis e verifica se a VPN informada existe ou nao */
                              $a_phase1 = &$config['ipsec']['phase1'];
                              $a_phase2 = &$config['ipsec']['phase2'];
                              if (isset($a_phase1[$VPN_ID]['ikeid'])) {
                                  $ikeid = $a_phase1[$VPN_ID]['ikeid'];
                              } else {
                                  print "VPN Tunnel didn't exist!\n";
                                  exit(1);
                              }
                              
                              /* Determina a quantidade de pings que serao realizados, o tunel sera ativado se a quantdade de erros for maior ou igual a 50% desse valor */
                              $qtdping=10;
                              
                              $exit=0;
                              for ($i=1; $i<=$qtdping; $i++) {
                                  exec("/sbin/ping -c 1 -t 1 -S $srchost $dsthost",$ret,$exit1);
                                  if ($exit1 <> 0) {
                                     $exit=$exit+1;
                                  }
                              }
                              
                              /* Se a quantidade for menor que 50% o link esta online, se a VPN estiver ativada sera desligada, caso contrario
                              imprime a mensagem informativa e encerra o programa. */
                              if ($exit < ($qtdping/2)) {
                              	#link online
                              	if (! isset($a_phase1[$VPN_ID]['disabled'])) {
                              		print "Link online, Disabling Tunnel!\n";
                              		$a_phase1[$VPN_ID]['disabled']="";
                              		if (is_array($a_phase2) && (count($a_phase2))) {
                              			foreach ($a_phase2 as &$phase2) {
                              				if ($phase2['ikeid'] == $ikeid) {
                              					$phase2['disabled']="";
                              				}
                              			}
                              			unset($phase2);
                              		}
                              		write_config();       
                              
                              		/* flush SPD and SAD */
                              		mwexec("/usr/local/sbin/setkey -F");
                              		mwexec("/usr/local/sbin/setkey -FP");
                              
                              		vpn_ipsec_refresh_policies();
                              		vpn_ipsec_configure();         
                              		filter_configure();
                              		exit(0);
                              	}
                              	else {
                              		print "Link online, Tunnel already Disabled!\n";
                              		exit(0);
                              	}
                              }
                              	/* Se a quantidade de erros for maior ou igual a 50% o link esta offline, então a VPN sera ativada.
                              	Caso ela ja esteja ligada, imprime a mensagem informativa e encerra o programa */
                              else {
                              	if (isset($a_phase1[$VPN_ID]['disabled'])) {
                              		print "Link offline, Enabling Tunnel!\n";
                              		unset ($a_phase1[$VPN_ID]['disabled']);
                              		if (is_array($a_phase2) && (count($a_phase2))) {
                              			foreach ($a_phase2 as &$phase2) {
                              				if ($phase2['ikeid'] == $ikeid) {
                              					unset ($phase2['disabled']);
                                             	}
                              			}
                              			unset($phase2);
                                      }
                              		write_config();
                              
                              		/* flush SPD and SAD */
                              		mwexec("/usr/local/sbin/setkey -F");
                              		mwexec("/usr/local/sbin/setkey -FP");
                              
                              		vpn_ipsec_refresh_policies();
                              		vpn_ipsec_configure();                
                              		filter_configure();
                              		exit(0);
                              	}
                              	else {
                              		print "Link offline, Tunnel already Enabled!\n";
                              		exit(0);
                              	}
                              }
                              ?></numero></ip></ip>
                              

                              No seu caso, a configração deve estar no array $config['installedpackages']['squidnac'][0][config]

                              Treinamentos de Elite: http://sys-squad.com

                              Help a community developer! ;D

                              1 Reply Last reply Reply Quote 0
                              • T Offline
                                thimoura
                                last edited by

                                Quando chegar no escritorio vou testar dessa forma e posta aqui os resultados.

                                Por hora muito obrigado.

                                1 Reply Last reply Reply Quote 0
                                • T Offline
                                  thimoura
                                  last edited by

                                  Acessando um cliente rapidamente eu verifiquei essa estrutura:

                                  <squidnac><config><allowed_subnets><unrestricted_hosts>MTkyLjE2OC4wLjEwNg==</unrestricted_hosts>
                                  <banned_hosts><whitelist><blacklist>eW91dHViZS5jb20NCnd3dy5vcmt1dC5jb20uYnINCnBhc3Nwb3J0LmNvbQ0KbXNuLmNvbS5icg0Kc2MubXNuLmNvbQ0Kd3d3Lm1zbi5iZQ0KMjA3LjQ2LjExMC4xMQ0KNjUuNTUuMjU1LjE4DQo2NS41NS4yNTUuMzgNCm1lc3Nlbmdlci5tc24uY29tLmJyDQpodHRwLm1zZy55YWhvby5jb20NCm5pY2tuYW1lLm1zbi5jb20uYnINCmNoYXQubXNuLmNvbQ0KY2hhdC5tc24uY29tLmJyDQptc2dyLmhvdG1haWwuY29tDQpnYXRld2F5Lm1lc3Nlbmdlci5ob3RtYWlsLmNvbQ0KbWVzc2VuZ2VyLmxpdmUuY29tDQpjb250YWN0cy5tc24uY29tDQptZWViby5jb20NCmh0dHAxLm1zZ3IuaG90bWFpbC5jb20NCmh0dHAyLm1zZ3IuaG90bWFpbC5jb20NCmh0dHAzLm1zZ3IuaG90bWFpbC5jb20NCmh0dHA0Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA1Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA2Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA3Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA4Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHA5Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxMC5tc2dyLmhvdG1haWwuY29tDQpodHRwMTEubXNnci5ob3RtYWlsLmNvbQ0KaHR0cDEyLm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxMy5tc2dyLmhvdG1haWwuY29tDQpodHRwMTQubXNnci5ob3RtYWlsLmNvbQ0KaHR0cDE1Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxNi5tc2dyLmhvdG1haWwuY29tDQpodHRwMTcubXNnci5ob3RtYWlsLmNvbQ0KaHR0cDE4Lm1zZ3IuaG90bWFpbC5jb20NCmh0dHAxOS5tc2dyLmhvdG1haWwuY29tDQpodHRwMjAubXNnci5ob3RtYWlsLmNvbQ0KbWVlYm8uY29tDQo2NS4xOS4xNDAuMjQ2DQplYnVkZHkuY29tDQoxOTMuMjM4LjE2MC42Mg0KbXNuMmdvLmNvbQ0KNjkuNjQuMzguMTI4DQplLW1lc3Nlbmdlci5uZXQNCjgyLjk4LjI1Mi4yMzQNCnBob25lZm94LmNvbQ0KODUuMTg0LjQuMw0KMTkzLjIzOC4xNjIuMjENCm1zbmdlci5jb20NCjIxNi4zMi42Ni4yMzQNCnRvcnBlcmt1dC5jb20NCjY1Ljk5LjIzMi40Mg0KZ28uaWNxLmNvbQ0KNjQuMTIuMTY0LjEyMA0Kd2Jtc24ubmV0DQoyMTIuMjI3LjM0LjMNCmJoaS5jb20uYnINCm1lc3NlbmdlcmZ4LmNvbQ0KZ2F0ZXdheS5tZXNzZW5nZXIuaG90bWFpbC5jb20NCmdhdGV3YXkuZGxs</blacklist> <ext_cachemanager><addtl_ports><addtl_sslports></addtl_sslports></addtl_ports></ext_cachemanager></whitelist></banned_hosts></allowed_subnets></config></squidnac>

                                  Não sei como farei pra mexer na estrutura…Programação não é muito minha praia...rs

                                  1 Reply Last reply Reply Quote 0
                                  • marcellocM Offline
                                    marcelloc
                                    last edited by

                                    Tenta entender o script que eu postei. É a melhor forma de alterar a configuração da blacklist.

                                    Não esqueça de fazer backup da configuração antes de testar seu código.

                                    Treinamentos de Elite: http://sys-squad.com

                                    Help a community developer! ;D

                                    1 Reply Last reply Reply Quote 0
                                    • T Offline
                                      thimoura
                                      last edited by

                                      Estou montando o ambiente para testar, agradeço a força Marcelo!

                                      1 Reply Last reply Reply Quote 0
                                      • marcellocM Offline
                                        marcelloc
                                        last edited by

                                        @thimoura:

                                        Estou montando o ambiente para testar, agradeço a força Marcelo!

                                        o campo da blacklist esta codificado com base64

                                        para ler, use a função base64_decode() do php.

                                        para codificar a função é base64_encode()

                                        att,
                                        Marcello Coutinho

                                        Treinamentos de Elite: http://sys-squad.com

                                        Help a community developer! ;D

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post
                                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.