Primero - Entramos a la interfaz web de pfSense firewall y nos vamos a el menú Diagnostics - Edit File.
-Ya allí editamos el fichero /usr/local/www/sgerror.php escribiendolo en la caja de texto. Damos click al botón Load.
-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 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. 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).
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:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.?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
-Copiamos dando click al botón Seleccionar archivo de la sección Upload File y damos click al botón Upload
-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
-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
Y listo ya tenemos nuestra pagina de error de SQUIDGUARD personalizada.
Fuente: http://drivemeca.blogspot.com.co/2016/09/como-personalizar-error-de-squidguard.html