Sarg + Relatórios Automáticos + Domínio Autenticado + Desbloqueio na Página do Squid

Neste artigo mostro como instalar e configurar o Sarg no Debian 6, com geração e exclusão (crontab) de relatórios automaticamente, relatórios sendo acessados por um domínio (BIND 9) com autenticação (Apache 2) e ainda, a opção do usuário solicitar (Postfix) desbloqueio de sites via formulário (PHP) na página de bloqueio do Squid.

[ Hits: 30.850 ]

Por: dalveson sanches em 31/01/2013 | Blog: http://www.vivaolinux.com.br/~dalveson


Finalizando



Agora criaremos alguns arquivos no diretório do Apache:

# cd /var/www
# touch action.php


Vamos editar esse novo arquivo:

# nano action.php

Deixe-o como mostrado abaixo:

<? // Aqui vai as variaveis
$data = date("d/m/Y"); //Pega a data atual
$ip_proxy = $_SERVER[HTTP_X_FORWARDED_FOR]; // Pega o IP do usuario
$nome = $_POST["nome"]; //trata a variável nome
$site = $_POST["site"]; //trata a variável assunto
$motivo = $_POST["motivo"]; //trata a variável mensagem
global $email; //transforma em variavel global a variável e-mail
$enviou = mail("seu-email@dominiol.com", "Desbloquear o site $site", // Aqui vai o seu e-mail e do lado o assunto do emails que sera enviado!
// Os Parametros do E-mail
"Data: $data

Nome: $nome
IP: $ip_proxy

Site: $site

Motivo: $motivo",

// Comando que envia o E-mail
"From: $email ");

// Se a mensagem for enviada corretamente
if ($enviou){
echo "<div style=\"text-align:center; color:#00FF00; font-weight: bold;\">
    <big><big><big><big><big><big>--[ OK! ]--</big></big></big></big></big></big></font>
    <br><big><big>Sua menssagem foi enviada com sucesso.</big></big></br>
    <br><big>Em até 24 horas a sua solicitação será atendida.</br></big></div>";
}

// Se a mensagem nao for enviada
else {
echo "<div style=\"text-align:center; color:#EE0000; font-weight: bold;\">
    <big><big><big><big><big><big>--[ ERRO! ]--</big></big></big></big></big></big></font>
    <br><big><big>Sua menssagem nao foi enviada.</big></big></br>
    <br><big>Tente novamente mais tarde.</br></big></div>";
}
?>

* Lembrando que é necessário alterar a linha "$enviou", colocando o seu e-mail.

O próximo passo é entrar no diretório das páginas do Squid proxy e editar a página referente ao erro de "Acesso Negado". Como estou usando o Squid 2.7, o diretório é o abaixo, porém, o seu poderá mudar:

# cd /usr/share/squid-lahgpack/pt-br/
# vim ERR_ACCESS_DENIED


Deixe-a assim:

<script type="text/javascript" language="JavaScript"> // <![CDATA[
function abrir(URL) {
var width = 510;
var height = 300;
var left = 99;
var top = 99;
window.open(URL,'janela', 'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=yes, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no');

}

// ]]></script>

</pre>
<style type="text/css">
<!--
#formulario table tbody tr td table tbody tr td .form_campos {
      color: #808080;
}
-->
</style>

<h1><span style="color: red;"><strong>ACESSO PROIBIDO!</strong></span></h1>
<h2>Este site não pode ser acessado!</h2>

<hr noshade="noshade" size="1px" />

<pre>Na tentativa de acessar o site: <strong><a href="%U">%U</a></strong></pre>
O seguinte erro foi encontrado:
<ul>
    <li><strong> Proibido o Acesso.
</strong>
O Servidor Firewall impediu seu acesso, pois <strong><em>o conteúdo do link solicitado</em></strong> pode prejudicar o bom funcionamento da rede e internet ou <strong><em>o administrador do servidor</em></strong> pode não estar de acordo com o seu acesso. Caso você não concorde com isso, por favor preencha o formulário abaixo para solicitar o desbloqueio do site.</li>
</ul>
<form id="formulario" action="http://ip-do-apache/action.php" method="post" name="formulario">
<table style="text-align: left; width: 50px; background-color: red; height: 50px; border:1px solid #EECFA1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="vertical-align: top;">
<table style="width: 700px; height: 168px; background-color: #FFF8DC;" border="0" cellspacing="6" cellpadding="1">
<tbody>
<tr style="font-family: Verdana; color:#333">
<td scope="col" colspan="2"><span class="style1" >Formulário de desbloqueio de sites:</span></td>
</tr>
<tr>
<td style="text-align: left; font-family: Verdana; color:#333;" scope="col">Nome:</td>
<td scope="col" ><input style="border:1px solid #00FFFF" name="nome" value="Digite seu nome." type="text" class="form_campos" onFocus="if(this.value=='Digite seu nome.'){this.value=''}" onBlur="if(this.value==''){this.value='Digite seu nome.'}" size="54"/></td>
</tr>
<tr>
<td style="text-align: left; font-family: Verdana; color:#333;" scope="col">Site:</td>
<td scope="col"><input style="border:1px solid #00FFFF" id="site" class="form_campos" type="text" name="site" value="%U" readonly="readonly" size="80" /></td>
</tr>
<tr>
<td style="text-align: left; font-family: Verdana; color:#333;" scope="col">Motivo:</td>
<td scope="col"><textarea style="border:1px solid #00FFFF" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" class="form_campos" name="motivo" rows="6" cols="99" >Informe aqui por qual motivo que deseja acessar esse site.</textarea>

</td>
</tr>
<tr>
<td style="text-align: center;" scope="col" colspan="2"><input class="form_botao" type="submit" name="Enviar" value="Enviar " />
<input class="form_botao" type="reset" name="Limpar" value="Limpar" /></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</form>

* Lembrando que é necessário alterar a linha: <form id="formulario" action=http://ip-do-apache/action.php, incluindo o IP do seu servidor Apache.

Depois disso, basta reiniciar o Apache:

# /etc/init.d/apache2 restart

E também recarregar as configurações do Squid:

# squid -k reconfigure

Agora, acesse algum site que seja negado pelo proxy e veja o resultado:
Depois de clicar no botão "Enviar", o usuário verá essa mensagem, se a sua mensagem foi enviada com sucesso:
Ou a mensagem abaixo, se a sua mensagem não foi enviada com sucesso:
Exemplo de e-mail recebido:

Fontes


Agradecimentos ao meu amigo Marcelo Pessoa, que me deu algumas dicas na criação do arquivo PHP. E também ao usuário kyetoy do VOL, que me ajudou com alguns contratempos no Apache.

Página anterior    

Páginas do artigo
   1. Requisitos
   2. Instalação
   3. Formulários no Squid
   4. Finalizando
Outros artigos deste autor

VnStat - Monitorando o tráfego de sua rede

Leitura recomendada

Compilando o Apache 2 com PHP e MySQL

Porque segurança importa?

Gerenciamento de conexões

Anon-Proxy no Debian Lenny

Passos essenciais para configurar seu modem 3G no Linux

  
Comentários
[1] Comentário enviado por porongo51 em 31/01/2013 - 11:06h

Muito bom o artigo! Vou implementar aqui na empresa com mais tempo...

Abraço!

[2] Comentário enviado por andrecaleiros em 31/01/2013 - 13:11h

bem legal cara!
parabens

[3] Comentário enviado por Linuxlrt em 31/01/2013 - 16:36h

Muito informativo
Parabéns!

[4] Comentário enviado por cesarufmt em 31/01/2013 - 19:09h

Muito interessante isso.

Valeu demais!!!!


[5] Comentário enviado por thiagocpv em 01/02/2013 - 04:09h

Bacana, bem útil e interessante!
Só uma dúvida, e se por acaso já existir um SMTP Server na rede e quiser usar ele?? Não vi onde altera de localhost para o IP interno do SMTP Server...
Como ficaria??

Abs!!

[6] Comentário enviado por dalveson em 01/02/2013 - 10:18h


[5] Comentário enviado por thiagocpv em 01/02/2013 - 04:09h:

Bacana, bem útil e interessante!
Só uma dúvida, e se por acaso já existir um SMTP Server na rede e quiser usar ele?? Não vi onde altera de localhost para o IP interno do SMTP Server...
Como ficaria??

Abs!!


Bom dia thiagocpv, é que infelizmente nao deixei isso muito claro né, a linha onde voce altera o servidor smtp encontra-se dentro do arquivo de configuração do postfix:
# SMTP relayhost
relayhost = [smtp.gmail.com]:587
Basta incluir seu servidor
att

[7] Comentário enviado por thiagocpv em 01/02/2013 - 19:14h

Hummm entao obrigatoriamente eu preciso ter um postfix rodando nessa maquina, nao há como apontar direto para o IP do smtp server no action.php???

Abs!!

[8] Comentário enviado por dalveson em 01/02/2013 - 20:14h


[7] Comentário enviado por thiagocpv em 01/02/2013 - 19:14h:

Hummm entao obrigatoriamente eu preciso ter um postfix rodando nessa maquina, nao há como apontar direto para o IP do smtp server no action.php???

Abs!!


realmente existe a obrigatoriedade do postfix, mais vc pode tentar da uma ajustada a sua realidade, talvez se vc alterasse o arquivo ERR_ACCESS_DENIED na lunha form id="formulario" action="http://ip-do-apache/action.php" method="post" name="formulario"> e configurasse para ao inves dele chamar o action chamasse alguns script que vc criasse que fosse capaz de enviar email com teu smtp talvez funcionaria, nao tenho certeza mais talvez funcionaria.

[9] Comentário enviado por thiagocpv em 01/02/2013 - 20:34h

Eu fiz e funcionou!!!
Alterei no php.ini chamando um script que envia emails usando meu smtp!!!

Valeuuu!!!

[10] Comentário enviado por dalveson em 01/02/2013 - 21:06h


[9] Comentário enviado por thiagocpv em 01/02/2013 - 20:34h:

Eu fiz e funcionou!!!
Alterei no php.ini chamando um script que envia emails usando meu smtp!!!

Valeuuu!!!


pow legal, porem seria legal se vc detalhase mais como fez, para que outros usuarios tambem tivessem esta outra opção para utilização
att

[11] Comentário enviado por armandomxj em 01/02/2013 - 21:18h

Estou recevendo o seguinte erro:

Na tentativa de recuperar a URL: http://ip-do-apache/action.php

O seguinte erro foi encontrado:

Incapaz de determinar o endereço IP através do nome do host ip-do-apache

O servidor DNS retornou:

Name Error: The domain name does not exist.

Isso significa que:

O cache foi incapaz de resolver o nome do host presente na URL.
Verifique se o endereço está correto.

Seria o dns...meu dns esta funcionado ( eu creio ) amigo teria como me ajudar.

[12] Comentário enviado por dalveson em 01/02/2013 - 21:21h


[11] Comentário enviado por armandomxj em 01/02/2013 - 21:18h:

Estou recevendo o seguinte erro:

Na tentativa de recuperar a URL: http://ip-do-apache/action.php

O seguinte erro foi encontrado:

Incapaz de determinar o endereço IP através do nome do host ip-do-apache

O servidor DNS retornou:

Name Error: The domain name does not exist.

Isso significa que:

O cache foi incapaz de resolver o nome do host presente na URL.
Verifique se o endereço está correto.

Seria o dns...meu dns esta funcionado ( eu creio ) amigo teria como me ajudar.


edite o arquivo action.php e sustitua a linha http://ip-do-apache/action.php no campo ip-do-apache coloque o ip do teu servidor apache onde ta salvo o arquivo action.php

[13] Comentário enviado por EuzebioViana em 04/02/2013 - 09:29h

Muito bom! Parabéns...

[14] Comentário enviado por dalveson em 04/02/2013 - 17:47h

vlw galera,
a motivação do artigo surgiu de um necessidade particular, o gerente da empresa onde trabalho me solicitou acesso aos relatorios de que os usuarios da rede acessavam, ae eu pensei vou so passar o caminho do sarg para ele,porem no primeiro dia ele me disse que era muito chato ter que digitar toda vez aquele monte de numero "imagina só um simples ip" ae resolvi instalar o bind e criar o dominio e juntamente com o apache atraves de virtual host diponibilizar um dominio para ele, ae pensei ufa resolvido, demorou mais ou menos uma semana observei que todos os pcs ja estavam acessando os relatorios ae imaginei que algume tinha observado o nome do dominio e propagado para os outors usuarios curiosos "nessa hora nao aparece um culpado" ae entao resolvi colocar senha no dominio com o auxilio do apache, depois de umas 2 semnas ele me raclamou que tinha usuarios que estavam reclamando que alguns sites estavam sendo bloqueados erroneamentes, me perguntou senao tinha como criar algo que os usuarios mesmo podessem solicitar, ae vi no site aprendolinux o lance do formulario, so dei umas ajustadas e pronto, virou essa bananada toda que para mim esta sendo bastante util.
abraços

[15] Comentário enviado por Rafael Oliveira em 09/04/2013 - 11:26h

Alguém também esta tendo problemas com o Firefox 19.0? Ele não exibe mais a página de erro do Squid, e sim uma página de erro própria.

[16] Comentário enviado por amauridell em 25/05/2013 - 17:12h

oi.
estou com uma dificuldade, após tudo pronto é funcionando o e-mail é enviado, mas não chega na caixa de e-mail da minha conta.
já verifique o spam e outro coisa que poderia dar problemas ... mas nada
alguém teve este tipo de problema?

[17] Comentário enviado por cgonzagaskill em 10/07/2013 - 17:55h

Olá dalveson

Parabéns pelo Post... Mas logo na parte inicial no último passo a2ensite squid.dalveson.com.br no meu caso PDCMAHARY-01.mahary.local, ele apresenta a seguinte mensagem
To activate the new configuration, you need to run:
service apache2 reload

e não executar esse comando

Reinicie o Apache:
# /etc/init.d/apache reload

e ao chamar no browser PDCMAHARY-01.mahary.local e aparece a mensagem "IT works " , não fazendo o procedimento abaixo;

Pronto. Agora que os sites/virtual hosts já estão habilitados, vá até um computador na rede e tente acessar o "PDCMAHARY-01.mahary.local". Observe que irá lhe pedir usuário e senha.

Você me ajudar ?

Antecipadamente agradeço,

Carlos

[18] Comentário enviado por joaomartfer em 15/01/2015 - 13:35h


Ola Caro Amigo eu acompanhei seu tutorial
porem na hora que eu vou enviar o email já na tela do squid ele diz que envio eu não recebo nada esta aqui o log do postfix se puder ajudar
Jan 15 13:33:07 srvproxy postfix/pickup[9214]: 1A60ED40F28: uid=33 from=<www-data>
Jan 15 13:33:07 srvproxy postfix/cleanup[9238]: 1A60ED40F28: message-id=<20150115153307.1A60ED40F28@srvproxy.localdomain>
Jan 15 13:33:07 srvproxy postfix/qmgr[9215]: 1A60ED40F28: from=<www-data@srvproxy.localdomain>, size=514, nrcpt=1 (queue active)
Jan 15 13:33:07 srvproxy postfix/smtp[9240]: Untrusted TLS connection established to smtp.martfer.com.br[200.234.210.12]:587: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Jan 15 13:33:07 srvproxy postfix/smtp[9240]: 1A60ED40F28: host smtp.martfer.com.br[200.234.210.12] said: 450 4.1.8 <www-data@srvproxy.localdomain>: Sender address rejected: Domain not found (in reply to RCPT TO command)
Jan 15 13:33:08 srvproxy postfix/smtp[9240]: Untrusted TLS connection established to smtp.martfer.com.br[200.234.210.13]:587: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Jan 15 13:33:08 srvproxy postfix/smtp[9240]: 1A60ED40F28: to=<suporteti@martfer.com.br>, relay=smtp.martfer.com.br[200.234.210.13]:587, delay=1.4, delays=0.1/0/1/0.28, dsn=4.1.8, status=deferred (host smtp.martfer.com.br[200.234.210.13] said: 450 4.1.8 <www-data@srvproxy.localdomain>: Sender address rejected: Domain not found (in reply to RCPT TO command))
^C


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts