Pagina de erro personalizada do Squid - Com direito a MySQL

Publicado por Marcos Carraro em 20/04/2012

[ Hits: 9.545 ]

 


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: [email protected]</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 @[email protected]@CHARACTER_SET_CLIENT */; /*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; /*!40101 SET @[email protected]@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 [email protected]_CHARACTER_SET_CLIENT */; /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; /*!40101 SET [email protected]_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

Segmentando rede (VLANs) + DHCP por VLAN - CentOS

Exploits - Site com vários

Melhorando a segurança do Linux

Desativar tty extra no Ubuntu 10.04

MySQL + phpMyadmin gerenciando múltiplos domínios

Leitura recomendada

Descobrindo a senha de sua conexão PPP

Frases de Blavatsky no Fortune

Manual rápido do APT

Freecraft, jogo de estratégia estilo Warcraft para Linux

Documentação GNU/Linux da IBM e preparação para a LPI

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts