Pagina de erro personalizada do Squid - Com direito a MySQL

Publicado por Marcos Carraro em 20/04/2012

[ Hits: 10.802 ]

 


Pagina de erro personalizada do Squid - Com direito a MySQL



Tive a ilustre ideia de desenvolver uma página totalmente diferente, com os meus dotes em programação, que são iguais aos de culinária (hahaha!).

Fiz uma página em PHP que tem a seguinte função:
  • Pegar IP do usuário;
  • Pegar URL do site;
  • Mostrar dia hora do acesso;
  • Gravar automaticamente esta entrada no MySQL, para ter um relatório de sites acessados bloqueados.

Não sei se conseguiram entender, mas a ideia ficou muito 'massa'. A página é uma cópia do layout do 'Avast! 7', sim do 'Avast!' (já falei que programei essa página como faço comida!!!!).

Na página de erro do Squid (ERR_ACCESS_DENIED)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL requisitada não pôde ser recuperada</title> </head> <body> <form name="bloquear" action="http://proxy_erro_page.php" method="post"> <input type="hidden" name="url" value="%U"> <input name="grava" type="submit" value="grava"> </form> <script language="javascript"> document.bloquear.submit(); </script> </body> </html>


Código da página PHP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content="text/html; charset=utf-8" http-equiv=Content-Type> <STYLE>BODY { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 30px } H1 { MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; COLOR: #808080; FONT-SIZE: 8pt; FONT-WEIGHT: normal } H2 { TEXT-TRANSFORM: uppercase; MARGIN: 0cm 0cm 5pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; COLOR: #ffa500; FONT-SIZE: 19pt; FONT- WEIGHT: normal } H3 { PADDING-BOTTOM: 5.4pt; TEXT-TRANSFORM: uppercase; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-SIZE: 10pt; FONT-WEIGHT: normal; PADDING-TOP: 30pt } A:link { COLOR: #ffa500; TEXT-DECORATION: underline; text-underline: single } A:visited { COLOR: purple; TEXT-DECORATION: underline; text-underline: single } .text { MARGIN: 0px 0px 1pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-SIZE: 8pt; PADDING-TOP: 10pt } .footer { MARGIN-TOP: 60pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; COLOR: gray; FONT-SIZE: 8pt } TD { PADDING-BOTTOM: 0cm; LINE-HEIGHT: 14pt; PADDING-LEFT: 5.4pt; PADDING-RIGHT: 5.4pt; FONT-SIZE: 8pt; PADDING-TOP: 0cm } TD.header { WIDTH: 75pt; FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-WEIGHT: bold } TD.value { FONT-FAMILY: "Segoe UI", Calibri, Arial, Verdana; FONT-WEIGHT: normal } </STYLE> <META name=GENERATOR content="MSHTML 9.00.8112.16421"></HEAD> <BODY> <TABLE> <TBODY> <TR> <TD><IMG src="gfx/erro_proxy.png"> </TD> <TD> <H1>Alerta de proteção!</H1> <H2>Site bloqueado</H2></TD></TR> <TR> <TD> <TD> <P class=text>O site a seguir foi bloqueado devido a politica da empresa.</P> <H3>Detalhes</H3> <TABLE> <TBODY> <TR> <TD class=header>URL:</TD> <TD class=value><?php $urlatual=$_POST['url']; echo $urlatual; ?></TD></TR> <TR> <TD class=header>Acessado em:</TD> <TD class=value><?php date_default_timezone_set('America/Sao_Paulo'); echo date('d/m/Y - h:i'); ? ></TD></TR></TBODY></TABLE> <P class=footer>Se você não concorda com esse bloqueio entre em contado com o suporte: suporte@escolainfoserv.com.br.</P></TD></TR> </TBODY></TABLE></BODY></HTML> <?php include ('inc/conf.inc.php'); //Fazendo a conexão com o servidor MySQL para pegar resultado $conexao = mysql_connect($servidor,$usuario,$senha) or die($msg[0]); mysql_select_db($banco,$conexao) or die($msg[1]); $ip_cliente=$_SERVER["REMOTE_ADDR"]; $dia_hora=date('d/m/Y - h:i'); // Inserindo a url no banco $string_sql = "INSERT INTO proxy_bloqueados (`id` ,`url` ,`ip` ,`hora`)VALUES ('null', '$urlatual', '$ip_cliente', '$dia_hora')"; mysql_query($string_sql,$conexao); if(mysql_affected_rows() == 1){ } else { echo "Erro, não possível inserir no banco de dados"; } ?> <?php /* /usr/share/squid/errors/pt-br/ERR_ACCESS_DENIED <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ERRO: A URL requisitada não pôde ser recuperada</title> </head> <body> <iframe scrolling="no" frameborder="0" width=800px height=800px src="http://172.16.1.252/infoweb/projetos/desenvolvimento/A/magneto_admin/proxy_erro_page.php? url=%U"></iframe> </body> </html> */ ?>


Estrutura MySQL

-- phpMyAdmin SQL Dump -- version 3.4.6 -- http://www.phpmyadmin.net -- -- Servidor: 172.16.1.251:3306 -- Tempo de Geração: 15/03/2012 às 04h02min -- Versão do Servidor: 5.5.18 -- Versão do PHP: 5.3.8 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Banco de Dados: `painel` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `proxy_bloqueados` -- CREATE TABLE IF NOT EXISTS `proxy_bloqueados` ( `id` int(11) NOT NULL, `url` text NOT NULL, `ip` text NOT NULL, `hora` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `proxy_bloqueados` -- INSERT INTO `proxy_bloqueados` (`id`, `url`, `ip`, `hora`) VALUES (0, 'http://terra.com.br', '172.16.1.1', '15/03/2012 - 03:14'), (0, 'http://172.16.1.252/......................................../proxy_erro_page.php', '172.16.1.209', '15/03/2012 - 03:55'), (0, 'http://172.16.1.252//........................................//proxy_erro_page.php', '172.16.1.209', '15/03/2012 - 03:56'), (0, 'http://172.16.1.252//........................................//proxy_erro_page.php', '172.16.1.102', '15/03/2012 - 03:57'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Depois disso, é so largar no Squid, como página de erro padrão.

- deny_info: http://IPDOSERVIDOR/proxy_error_page.php (MINHAS ACL)


Se alguém tiver mais dicas, ou ideais mirabolantes, estou aberto a novos projetos.

Abraços,
Marcos Carraro

Outras dicas deste autor

Exploits - Site com vários

Segmentando rede (VLANs) + DHCP por VLAN - CentOS

Lixeira no Samba

Melhorando a segurança do Linux

Trocar senha do webmin via console

Leitura recomendada

Liberando memória RAM ociosa

Salvando fotos no Orkut mesmo bloqueada

Criando grupo de programas personalizado no desktop LXDE

Executar scripts com o botão direito do mouse no Gnome

qPDF - Salvando cópia de arquivos PDF protegidos com senha

  

Comentários
[1] Comentário enviado por danniel-lara em 20/04/2012 - 13:06h

Boa dica , já add nos meu Favoritos



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts