Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Como personalizar error de Squidguard en pfSense paso a paso

DriveMeca personalizando la pagina de error de SquidGuard en pfSense
Un proxy nos ahorra tiempo y dinero ademas de evitar muchos problemas de seguridad al bloquear archivos maliciosos. Sobre proxy ya he escrito varios artículos, varios de ellos con el tema de squid + squidguard sobre pfSense pero no había aun tocado el tema de personalizar la pagina de error cuando se filtra un sitio web y gracias a uno de mis lectores, también fan del opensource, me puse a investigar como hacerlo.

Esto nos puede servir para dar mas información en esta pagina (la que viene por default es muy reducida) o colocar el logo de nuestro negocio o firma, etc. Ahora si, con un poco de html básico hagamos los cambios para tener una pagina de error mucho mas profesional y con mas información a la mano.

Requerimientos para personalizar pagina de error SquidGuard

-Normalmente la estructura de el error por default de Squidguard es así:
DriveMeca personalizando la pagina de error de SquidGuard en pfSense

-Entramos a la interfaz web de pfSense firewall y  nos vamos a el menú Diagnostics - Edit File
DriveMeca personalizando la pagina de error de SquidGuard en pfSense


Personalizamos función de error de SquidGuard en pfSense

-Ya allí editamos el fichero /usr/local/www/sgerror.php escribiendolo en la caja de texto. Damos click al botón Load
DriveMeca personalizando la pagina de error de SquidGuard en pfSense

-Buscamos la función get_error_page y la modificamos de la siguiente forma (aconsejable sacar una copia antes por si algo sale mal, una forma sencilla de hacerle backup es copiarla y pegarla en un archivo txt). Es muy importante tener cuidado con espacios en blanco o tabulaciones.

Reemplazamos email-del-administrador@gmail.com por el email del administrador encargado (al que le escribirán los usuarios reportando paginas bloqueadas que no lo deberían estar, por ejemplo) y drivemeca-squid-cache_logo.jpg por el jpg que queremos colocar al fondo (en este ejemplo es el que muestra la mascota de squid)
DriveMeca personalizando la pagina de error de SquidGuard en pfSense


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[] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">';
$str[] = '<html>';
$str[] = '<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title></title></head>';
$str[] = '<body style="background-color:#FFFFFF; font-family:verdana, arial, sans serif;">';
$str[] = '<div style="width:70%; margin:20px auto;">';
$str[] = '<div style="padding:5px; background-color:#C0C0C0; text-align:center; font-weight:bold; font-family:verdana,arial,sans serif; color:#000000; font-size:60%;">';

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[] = '</div><div style="background-color:#F4F4F4; text-align:center; padding:20px;">';
$str[] = '<div style="letter-spacing:0.5em; word-spacing:1em; padding:20px; background-color:#FF0000; text-align:center; color:#FFFFFF; font-size:200%; font-weight: bold;">Acceso denegado</div>';
$str[] = '<div style="padding:20px; margin-top:20px; background-color:#E2E2E2; text-align:center; color:#000000; font-family:verdana, arial, sans serif; font-size:80%;">';

if ($cl['u'])        $str[] = "<p><b>URL: {$cl['u']}</b></p>";
$str[] = '<div style="text-align:left;">';
$str[] = '<p><b>El website que ud trata de visitar a sido bloqueado por nuestras politicas de filtrado web</b></p>';

$str[] = '<p><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">El acceso ha sido denegado por una de las siguientes razones:</font></p>';
$str[] = '<ul>';
$str[] = '<li><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Esta pagina contiene o esta etiquetada como material inapropiado.</font></li>';
$str[] = '<li><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Su usuario esta bajo una politica que no le permite acceder a sitios en esta categoria.</font></li>';
$str[] = '<li><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Por favor, de click <a href="javascript:history.back()">aqui</a> para devolverse a la pagina anterior.</font></li>';
$str[] = '<li id="list3"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> Por favor contacte al <a href="mailto:email-del-administrador@gmail.com?Subject=Sitio web bloqueado por squidguard">Administrador del proxy</a> si piensa que esto es un error. Por favor, incluya toda la informacion del caso.</font></li>';
$str[] = '</ul>';

$str[] = '<p><img style="padding-top:20px;display: block;margin: 0px auto" src="http://'. $_SERVER['HTTP_HOST'] .'/drivemeca-squid-cache_logo.jpg" alt="geblockt"></p></div></div>';
$str[] = '<div style="padding:5px; background-color:#C0C0C0; text-align:right; color:#FFFFFF; font-size:60%; font-family:verdana,arial,sans serif;">Filtrado Web hecho por <a style="color:#FFFFFF;"><b>PfSense</b></a> y <a style="color:#FFFFFF;"><b>SquidGuard</b></a></div></div>';
$str[] = "</body>";
$str[] = "</html>";

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

-Copiamos el banner gráfico desde el menú Diagnostics - Command Prompt
DriveMeca personalizando la pagina de error de SquidGuard en pfSense

-Copiamos dando click al botón Seleccionar archivo de la sección Upload File y damos click al botón Upload
DriveMeca personalizando la pagina de error de SquidGuard en pfSense

-Ejecutamos el comando mv /tmp/drivemeca-squid-cache_logo.jpg /usr/local/www desde la sección Execute Shell command y damos click al botón Execute. Este comando moverá el banner gráfico al sitio donde lo cargara la función modificada por nosotros
DriveMeca personalizando la pagina de error de SquidGuard en pfSense

-Verificamos haya quedado el banner gráfico ejecutando por medio de Execute Shell Command el comando ls -la /usr/local/www/*.jpg. Damos click al botón Execute y debe mostrarnos el archivo jpg en su sitio
DriveMeca personalizando la pagina de error de SquidGuard en pfSense


Chequeamos funcionamiento de pagina de error SquidGuard en pfSense

-Muy bien, ya tenemos una pagina de error personalizada mas profesional. Verificamos su funcionamiento tratando de navegar a una pagina que debería estar bloqueada en nuestro firewall pfSense con SquidGuard, ejemplo, www.playboy.com
DriveMeca personalizando la pagina de error de SquidGuard en pfSense


Artículos recomendados: Como configurar OpenVPN en pfSense paso a paso
                                           Como actualizar pfSense paso a paso
                                           Que tanto usas tu proxy, Estadísticas de squid en pfsense
                                           Monitorea pfSense por medio de NRPE y Nagios
                                           Como configurar DHCP Server en PFsense 2 paso a paso


Te parece útil este tema? ya tienes tu pagina de error personalizada? Usas SquidGuard? Te gusto el articulo? hazme un favor, compártelo en tus redes sociales (compartir es sexy). Escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.

Sígueme en twitter google+facebook o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark