SEGUE UM TUTORIAL..Pagina de bloqueio personalizada SQUID3 E SQUIDGUARD!



  • Segue um modelo de página de bloqueio personalizada do  SQUID3 e SQUIDGUARD!

    MODELO PARA O SQUID3
    Obs:  Versão do PFSENSE 2.2.6 (amd64)

    Vamos ir até o caminho dos arquivos da página de bloqueio do SQUID3
    click em DIAGNOSTICOS > EDITAR ARQUVOS
    COPIE E COLE O CAMINHO ABAIXO E DEPOIS CLIQUE EM NAVEGAR

    pfsense 2.2.6(i386)  /usr/pbi/squid-i386/local/etc/squid/errors/pt-br
    pfsense 2.2.6(amd64)  /usr/pbi/squid-amd64/local/etc/squid/errors/pt-br
    OBS: Devido as atualizações do pfsense, o caminho pode variar!

    Acessem o arquivo " ERR_ACCESS_DENIED "
    Ele e o responsável por exibir a página de broqueio realizado pelo o SQUID3

    Vc verá este código padrão da pagina de bloqueio do Squid3

    
    <title>ERRO: A URL requisitada não pode ser recuperada</title>
    
    # ERRO
    
    ## A URL requisitada não pôde ser recuperada
    
    * * *
    
    O seguinte erro foi encontrado ao tentar recuperar a URL: [%U](%U)
    
    > **Acesso negado.**
    
    A configuração do controle de acesso impede que sua requisição seja permitida neste momento. Por favor, contate seu provedor de serviço se você acha que isso está incorreto.
    
    Seu administrador do cache é [%w](mailto:%w%W).
    
    * * *
    
    Gerado %T por %h (%s)
    
    Para quem ja conheçe HTML basta modificar os códigos(ou criar outra pagina) ao seu gosto!
    Para quem nao saca de HMTL segue um modelo da pagina personalizada!
    apague todo o código HTML padão do SQUID3 e substitua pelo codigo HTML personalizado!
    
        <title>Proibido o Acesso</title>
    
    # Acesso Negado!
    
    ![geblockt](https://i0.wp.com/cdn1.vaicomtudo.com/wp-content/uploads/2012/03/Sites-bloqueados-1.jpg)
    
    A Tecnologia da Informação e Comunicação, TIC, informa que o acesso ao site/download: **%U**,
    está bloqueado por infringir as regras definidas na Diretriz Geral de Segurança da Informação.
    
    Caso não esteja de acordo, contate o administrador da rede: [%w](mailto:%w%W).
    
    

    Obs: Para quem quizer trocar a imagen de broqueio bastar escolher uma imagen, hospedar em algum servidor web.
    Procure esta linha:```

    geblockt

    e troque esta URL da imagen 
    https://i0.wp.com/cdn1.vaicomtudo.com/wp-content/uploads/2012/03/Sites-bloqueados-1.jpgL
    pela sua nova URL da imagen hospedada por vc!
    
    Clique em **SALVAR** e pronto! sua nova pagina esta pronta!
    
     **MODELO PARA O SQUIDGUARD**
    Obs:  Versão do PFSENSE 2.2.6 (amd64)
    
    1° Vamos ir até o caminho dos arquivos da página de bloqueio do SQUID3
    click em DIAGNOSTICOS > EDITAR ARQUVOS
    COPIE E COLE O CAMINHO ABAIXO E DEPOIS CLIQUE EM NAVEGAR
    
    **/usr/local/www/sgerror.php**
    
    OBS: Devido as atualizações do pfsense, o caminho pode variar!
    Pfsense 2.2.6 (AMD64) 
    
    Acessem o arquivo sgerro.php
    Ele e o responsável por exibir a página de broqueio realizado pelo o SQUIDGUARD
    
    Vc verá o código padrão da pagina de bloqueio do Squidguard
    Obs: O meu ja está mudado, portanto ja nao e mas padrão…rsrsr
    

    include "globals.inc";
    include "config.inc";
    $page_info = <<<eod<br># ----------------------------------------------------------------------------------------------------------------------

    SquidGuard error page generator

    (C)2006-2007 Serg Dvoriancev

    ----------------------------------------------------------------------------------------------------------------------

    This programm processed redirection to specified URL or generated error page for standart HTTP error code.

    Redirection supported http and https protocols.

    ----------------------------------------------------------------------------------------------------------------------

    Format:

    #        sgerror.php?url=[http://myurl]or[https://myurl]or[error_code[space_code]output-message][incoming SquidGuard variables]

    Incoming SquidGuard variables:

    #        a=client_address
    #        n=client_name
    #        i=client_user
    #        s=client_group
    #        t=target_group
    #        u=client_url

    Example:

    #        sgerror.php?url=http://myurl.com&a=..&n=..&i=..&s=..&t=..&u=..
    #        sgerror.php?url=https://myurl.com&a=..&n=..&i=..&s=..&t=..&u=..
    #        sgerror.php?url=404%20output-message&a=..&n=..&i=..&s=..&t=..&u=..

    ----------------------------------------------------------------------------------------------------------------------

    Tags:

    #        myurl and output messages can include Tags
    #                [a] - client address
    #                [n] - client name
    #                [i] - client user
    #                [s] - client group
    #                [t] - target group
    #                [u] - client url

    Example:

    #        sgerror.php?url=401 Unauthorized access to URL [u] for client [n]
    #      sgerror.php?url=http://my_error_page.php?cladr=%5Ba%5D&clname=%5Bn%5D // %5b=[ %d=]

    ----------------------------------------------------------------------------------------------------------------------

    Special Tags:

    #      blank    - get blank page
    #        blank_img - get one-pixel transparent image (for replace banners and etc.)

    Example:

    #        sgerror.php?url=blank
    #        sgerror.php?url=blank_img

    ----------------------------------------------------------------------------------------------------------------------

    EOD;

    define('ACTION_URL', 'url');
    define('ACTION_RES', 'res');
    define('ACTION_MSG', 'msg');

    define('TAG_BLANK',    'blank');
    define('TAG_BLANK_IMG', 'blank_img');

    ----------------------------------------------------------------------------------------------------------------------

    ?url=EMPTY_IMG

    #      Use this options for replace baners/ads to transparent picture. Thisbetter for viewing.

    ----------------------------------------------------------------------------------------------------------------------

    NULL GIF file

    HEX: 47 49 46 38 39 61 - - -

    SYM: G  I  F  8  9  a  01 00 | 01 00 80 00 00 FF FF FF | 00 00 00 2C 00 00 00 00 | 01 00 01 00 00 02 02 44 | 01 00 3B

    ----------------------------------------------------------------------------------------------------------------------

    define(GIF_BODY, "GIF89a\x01\x00\x01\x00\x80\x00\x00\xFF\xFF\xFF\x00\x00\x00\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B");

    $url  = '';
    $msg  = '';
    $cl  = Array(); // squidGuard variables: %a %n %i %s %t %u
    $err_code = array();

    $err_code[301] = "301 Moved Permanently";
    $err_code[302] = "302 Found";
    $err_code[303] = "303 See Other";
    $err_code[305] = "305 Use Proxy";

    $err_code[400] = "400 Bad Request";
    $err_code[401] = "401 Unauthorized";
    $err_code[402] = "402 Payment Required";
    $err_code[403] = "403 Forbidden";
    $err_code[404] = "404 Not Found";
    $err_code[405] = "405 Method Not Allowed";
    $err_code[406] = "406 Not Acceptable";
    $err_code[407] = "407 Proxy Authentication Required";
    $err_code[408] = "408 Request Time-out";
    $err_code[409] = "409 Conflict";
    $err_code[410] = "410 Gone";
    $err_code[411] = "411 Length Required";
    $err_code[412] = "412 Precondition Failed";
    $err_code[413] = "413 Request Entity Too Large";
    $err_code[414] = "414 Request-URI Too Large";
    $err_code[415] = "415 Unsupported Media Type";
    $err_code[416] = "416 Requested range not satisfiable";
    $err_code[417] = "417 Expectation Failed";

    $err_code[500] = "500 Internal Server Error";
    $err_code[501] = "501 Not Implemented";
    $err_code[502] = "502 Bad Gateway";
    $err_code[503] = "503 Service Unavailable";
    $err_code[504] = "504 Gateway Time-out";
    $err_code[505] = "505 HTTP Version not supported";

    ----------------------------------------------------------------------------------------------------------------------

    check arg's

    ----------------------------------------------------------------------------------------------------------------------

    if (count($_POST)) {
        $url  = trim($_POST['url']);
        $msg  = $_POST['msg'];
        $cl['a'] = $_POST['a'];
        $cl['n'] = $_POST['n'];
        $cl['i'] = $_POST['i'];
        $cl['s'] = $_POST['s'];
        $cl['t'] = $_POST['t'];
        $cl['u'] = $_POST['u'];
    }
    elseif (count($_GET)) {
        $url  = trim($_GET['url']);
        $msg  = $_GET['msg'];
        $cl['a'] = $_GET['a'];
        $cl['n'] = $_GET['n'];
        $cl['i'] = $_GET['i'];
        $cl['s'] = $_GET['s'];
        $cl['t'] = $_GET['t'];
        $cl['u'] = $_GET['u'];
    }
    else {
          # Show 'About page'
            echo get_page(get_about());
            exit();
    }

    ----------------------------------------------------------------------------------------------------------------------

    url's

    ----------------------------------------------------------------------------------------------------------------------

    if ($url) {
        $err_id = 0;

    // check error code
        foreach ($err_code as $key => $val) {
                if (strpos(strtolower($url), strval($key)) === 0) {
                  $err_id = $key;
                  break;
                }
        }

    # blank page
        if ($url === TAG_BLANK) {
                echo get_page('');
        }
        # blank image
        elseif ($url === TAG_BLANK_IMG) {
              $msg = trim($msg);
              if(strpos($msg, "maxlen_") !== false) {
                  $maxlen = intval(trim(str_replace("maxlen_", "", $url)));
                  filter_by_image_size($cl['u'], $maxlen);
                  exit();
              }
              else {
                  # --------------------------------------------------------------
                  # return blank image
                  # --------------------------------------------------------------
                  header("Content-Type: image/gif;"); //  charset=windows-1251");
                  echo GIF_BODY;
              }
        }
        # error code
        elseif ($err_id !== 0) {
                $er_msg = strstr($_GET['url'], ' ');
                echo get_error_page($err_id, $er_msg);
        }
        # redirect url
        elseif ((strpos(strtolower($url), "http://") === 0) or (strpos(strtolower($url), "https://") === 0)) {
                # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                # redirect to specified url
                # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                header("HTTP/1.0");
                header("Location: $url", '', 302);
        }
        // error arguments
        else {
            echo get_page("sgerror: error arguments $url");
        }
    }
    else {
            echo get_page($_SERVER['QUERY_STRING']); //$url . implode(" ", $_GET));
    #        echo get_error_page(500);
    }

    ~~~~~~~~~~

    Exit

    ~~~~~~~~~~

    exit();

    ----------------------------------------------------------------------------------------------------------------------

    functions

    ----------------------------------------------------------------------------------------------------------------------

    function get_page($body) {
            $str = Array();
            $str[] = '';
            $str[] = "\n$body\n";
            $str[] = '';
            return implode("\n", $str);
    }

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    IE displayed self-page, if them size > 1024

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function get_error_page($er_code_id, $err_msg='') {
        global $err_code;
        global $cl;
        global $g;
        global $config;
        $str = Array();

    header("HTTP/1.1 " . $err_code[$er_code_id]);
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';

    if ($cl['n'])        $str[] = "Nombre: {$cl['n']} | ";
        if ($cl['a'])        $str[] = "IP: {$cl['a']} | ";
        if ($cl['i'])        $str[] = "Usuario: {$cl['i']} | ";
        if ($cl['s'])        $str[] = "Grupo: {$cl['s']} | ";
        if ($cl['t'])        $str[] = "Categoria: {$cl['t']} ";
        if ($cl['u'])        $str[] = "URL: {$cl['u']} ";

    $str[] = '';
        $str[] = 'Acesso Negado!';
        $str[] = '';
        $str[] = '

    ![geblockt](http://'. $_SERVER['HTTP_HOST'] .'/logo-bloqueio.jpg)

    ';

    if ($cl['u'])        $str[] = "

    Site Acessado: {$cl['u']}

    ";
        $str[] = '';
        $str[] = '

    O site que você tentou acessar foi bloqueado pela nossa política de filtragem Web.

    ';

    $str[] = '

    O acesso foi bloqueado por uma das seguintes razões:

    ';
        $str[] = '

    • Este produto contém ou é rotulado material impróprio.

    • Seu usuário está sob uma política que não permite o acesso a sites desta categoria.

    • Por favor, click aqui para ser retornado para a página inicial.

    • Por favor, caso não concorde não concorde com a nossa política de segurança entre em contato com o administrador da rede: [informatica@cachoeirametais.com.br](mailto:informatica@cachoeirametais.com.br?Subject=Sitio web bloqueado por squidguard)

    Observação.

    • O site foi amarzenado em nosso banco de dados para possíveis analises de conteúdo.

    ';

    $str[] = 'Cachoeira Metais Ltda

    Admin: Gydeon M.Silva

    ';
        $str[] = "";
        $str[] = "";

    return implode("\n", $str);
    }?>

    Para ficar mais fácil e não ter erro de apagar no local errado, então sugiro que  apague todo o seu  código e substitua pelo código personalizado acima, que não qual eu estou usando no momento!

    Agora precisamos carregar a imagem usada na pagina de bloqueio pro servidor apache do pfsense, isso e bem simples!
    Podemos fazer via comando, mas por opção prefiro através do software.

    Antes precisamos escolher qual imagem usar na pagina de bloqueio.
    Baixe na internet ou use o logo da sua empresa, fica a seu critério
    eu baixei esta imagem da internet e estou usando ela na pagina de bloqueio.

    https://i0.wp.com/cdn1.vaicomtudo.com/wp-content/uploads/2012/03/Sites-bloqueados-1.jpg

    Baixe e salve em [b]JPG[/b] com o nome "[b] logo-bloqueio[/b] "

    Agora fassa o download do Software WINSCP, que usaremos para carregar a imagem pro pfsense
    https://winscp.net/download/winscp576setup.exe
    Instalem ...
    Abra o programa
    Em HOST NAME: coloque o seu ip do servidor pfsense
    Em USER NAME: não coloque o nome de usuário da interface web, como vamos trabalhar internamente
    no pfsense, então vamos utilizar o usuário " root ".
    Em Password: coloque a senha que vc usa para acessar a interface web do pfsense
    E click em Login

    Vc vera que do lado esquerdo e o diretório de arquivos do seu computador
    e do lado direito o diretório de arquivos do pfsnse.

    Nos diretórios de arquivos do pfsense(Lado direito) click na pasta..
    E segue o caminho...
    [b]/usr/local/www[/b]
    deixe a pasta "[b]www[/b]" aberta.

    Nos diretórios de arquivo do seu computador navegue até aonde vc baixou a imagen.
    click na imagem e arraste a imagem para dentro da pasta "[b]www[/b]" que vc deixou aberta.

    O software [b]WINSCP[/b] vai exibir um aviso de uploud de arquivo para o diretório " [b]/usr/local/www[/b] "  apenas click em [b]OK[/b]

    [b]1° DETALHE IMPORTANTE[/b]
    Preste atenção no nome da imagem de bloqueio que vc salvou, pq esse mesmo nome sera usado no codigo da pagina de bloqueio do [b]SQUIDGUARD[/b]
    Eu dexei configurado no codigo da pagina com o nome da imagen de " [b]logo-bloqueio[/b] "(.jpg)
    Portanto se deseja trocar a imagem, salve a imagem em [b].jpg[/b] com o nome " [b]logo-bloqueio[/b] "

    [b]2° DETALHE[/b]
    Será nessesario alterar as linhas de [b]EMAIL[/b], [b]NOME DA EMPRESA[/b] e [b]ADMIN[/b]! para os dados corretos da empresa de vcs!

    [b]3° DETALHE[/b]
    Caso queira modificar alguma coisa  na pagina
    Role o codigo para baixo até chegar nessas linhas
    e fassas as alterações que desejar e clicar em salvar e pronto, VC tem uma nova pagina de bloqueio!

    [code]# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    IE displayed self-page, if them size > 1024

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function get_error_page($er_code_id, $err_msg='') {
        global $err_code;
        global $cl;
        global $g;
        global $config;
        $str = Array();

    header("HTTP/1.1 " . $err_code[$er_code_id]);
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';
        $str[] = '';

    if ($cl['n'])        $str[] = "Nombre: {$cl['n']} | ";
        if ($cl['a'])        $str[] = "IP: {$cl['a']} | ";
        if ($cl['i'])        $str[] = "Usuario: {$cl['i']} | ";
        if ($cl['s'])        $str[] = "Grupo: {$cl['s']} | ";
        if ($cl['t'])        $str[] = "Categoria: {$cl['t']} ";
        if ($cl['u'])        $str[] = "URL: {$cl['u']} ";

    $str[] = '';
        $str[] = 'Acesso Negado!';
        $str[] = '';
        $str[] = '

    ![geblockt](http://'. $_SERVER['HTTP_HOST'] .'/logo-bloqueio.jpg)

    ';

    if ($cl['u'])        $str[] = "

    Site Acessado: {$cl['u']}

    ";
        $str[] = '';
        $str[] = '

    O site que você tentou acessar foi bloqueado pela nossa política de filtragem Web.

    ';

    $str[] = '

    O acesso foi bloqueado por uma das seguintes razões:

    ';
        $str[] = '

    • Este produto contém ou é rotulado material impróprio.

    • Seu usuário está sob uma política que não permite o acesso a sites desta categoria.

    • Por favor, click aqui para ser retornado para a página inicial.

    • Por favor, caso não concorde não concorde com a nossa política de segurança entre em contato com o administrador da rede: [informatica@cachoeirametais.com.br](mailto:informatica@cachoeirametais.com.br?Subject=Sitio web bloqueado por squidguard)

    Observação.

    • O site foi amarzenado em nosso banco de dados para possíveis analises de conteúdo.

    ';

    $str[] = 'Cachoeira Metais Ltda

    Admin: Gydeon M.Silva

    ';
        $str[] = "";
        $str[] = "";

    return implode("\n", $str);
    }?>[/code]

    Boom! e isso galera!....qualquer duvida, oque eu puder ajudar eu ajudo! Abraços

    [/u][/u][/s][/i]</eod<br>


Log in to reply