Proxy - Squid - SquidGuard.

Estas AquíServidores Debian Clase Práctica / Proxy - Squid - SquidGuard.

Proxy - Squid - SquidGuard.


By nhomar - Posted on 05 July 2008

1.- Procederemos a instalar el proxy transparente para la web.
Para este fin, instalaremos el paquete squid:
# apt-get install squid
OJO: después de la instalación lo más probable es que squid no levante y muestre un error. Al igual que el caso con el servidor DHCP, no preocuparnos ya que esto es porque necesitamos configurar a squid.
Antes de editar el archivo de configuración de squid: etc/squid/squid.conf hagamos un respaldo de este archivo (por simple prevención).
# tar cvf /home/nhomar/squid.tar.gz /etc/squid/*
A continuación se muestra el contenido del archivo /etc/squid/squid.conf más básico. Las líneas comentadas no importantes se han removido, las que sí se muestren son extras para nuestro proxy: (asumimos los parámetros de red ya citados):

http_port 10.1.1.1:3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
# acl avi urlpath_regex -i \.avi$
# acl mpeg urlpath_regex -i \.m1v$ \.mpeg$ \.mpg$
# acl mpeg2 urlpath_regex -i \.m2v$ \.vob$
# acl mpeg_audio urlpath_regex -i \.mpa$ \.mp2$ \.mp3$ \.aac$
# acl asf urlpath_regex -i \.asf$ \.wma$ \.asx$ \.wmv$
# no_cache deny avi
# no_cache deny mpeg
# no_cache deny mpeg2
# no_cache deny mpeg_audio
# no_cache deny asf
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 8 MB
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
# maximum_object_size 36864 KB # tamano maximo de archivo a cachear
# cache_dir ufs /var/spool/squid 25000 16 256 # 10GB en 16 niveles con 256 subniveles
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# 10.1.1.0/24 significa: 10.1.1.x
# 10.1.1.0/16 significa: 10.1.x.x
acl lan src 10.1.1.1 10.1.0.0/24
# acl arch_bloqueados url_regex -i \.exe$ \.com$ \.bat$ \.pif$
http_access allow localhost
# http_access deny arch_bloqueados
http_access allow lan
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname localhost
cache_effective_group proxy
coredump_dir /var/spool/squid

2.- Instalación del squidGuard para el filtrado del contenido WEB.
Para poner en acción el filtrado de la web y prohibir las visitas a ciertas páginas, utilizaremos el squidGuard, el cual utiliza listas negras (“blacklists”) para identificar explícitamente los sitios que vamos a bloquear. Para instalarlo ejecutamos:
# apt-get install squidguard
Una vez instalado debemos decirle al squid que utilice a squidGuard para los fines del filtrado web. Para eso hay que agregar estas líneas al final del archivo /etc/squid/squid.conf:

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 5
redirector_bypass on

Antes de continuar con el paso siguiente, me gustaría detenerme un momento a hablar de las listas negras. Las listas negras son archivos de texto plano con los sitios que explícitamente se quieren prohibir. Por ejemplo, el contenido de un archivo de lista negra puede ser el siguiente: (los sitios son inventados para evitar cualquier problema)
sitioinventado.com
otrositioinventado.com
otromasinventado.com
Seguidamente se debe convertir el archivo plano de la lista negra en un archivo de base de datos Berkeley (.db) que es el formato que utilizará squidGuard para agilizar las búsquedas de sitios a prohibir. No se preocupe por buscar o instalar el motor de base de datos Berkeley ya que la instalación limpia y fresca de Debian Etch ya la incluye en los paquetes predeterminados del sistema.
Bien, hasta este momento todo esto suena muy tedioso y difícil de hacer. Afortunadamente existen “blacklists” completísimas listas para bajar. Entre las más populares no comerciales están las de shalla y MESD, ambas indicadas en la página de squidGuard. Yo recomiendo que usted visite los sitios de ambas listas negras para que lea los términos y las condiciones de uso de cualquiera de ellas. Viendo el contenido de ambas, me quedo con la de shalla porque es mucho más completa.
Adicionalmente, mostraré un script que automatiza el trabajo de descargar y configurar para su uso las listas negras de shalla además de reiniciar el servicio squid para que los cambios entren en vigencia. Por lo tanto la única tarea que le tocará a usted será editar el archivo de configuración de squidGuard a su gusto.
Para editar el archivo de configuración de squidGuard, cabe destacar que estas listas negras están clasificadas en carpetas según su fin; por ejemplo, en las listas de shalla podremos ver carpetas como: aggressive, gamble, hacking, porn, entre muchas otras. Cada una de las carpetas contiene los archivos domains y urls que son archivos de texto plano con los sitios a prohibir (tal y como se mencionó con anterioridad).
Usted deberá escoger cuáles de esas clasificaciones de listas negras va a utilizar, supeditado obviamente a las clasificaciones disponibles de la lista negra descargada. No es obligatorio que las utilice todas. Para esta guía yo escogí (a manera de ejemplo) utilizar solamente las siguientes clasificaciones: hacking, adv, aggressive, drugs, gamble, spyware y violence.
Con base en las clasificaciones que usted vaya a utilizar, así deberá indicarlo en el archivo de configuración /etc/squid/squidGuard.conf. El siguiente es el archivo de configuración según lo que yo escogí:
#----------------------------------------------------------------
# SquidGuard CONFIGURATION FILE
#----------------------------------------------------------------
# DIRECTORIOS DE CONFIGURACION
dbhome /var/lib/squidguard/db
logdir /var/log/squid
# GRUPOS DE DIRECCIONES
dest hacking {
domainlist hacking/domains
urllist hacking/urls
}
dest adv {
domainlist adv/domains
urllist adv/urls
# la publicidad es reemplazada por una imagen vacia
redirect http://127.0.0.1/nulbanner.png
}
dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
}
dest drugs {
domainlist drugs/domains
urllist drugs/urls
}
dest gamble {
domainlist gamble/domains
urllist gamble/urls
}
dest spyware {
domainlist spyware/domains
urllist spyware/urls
}
dest violence {
domainlist violence/domains
urllist violence/urls
}
# CONTROL DE ACCESO
acl {
# por defecto bloqueamos los grupos de direcciones creados
default {
pass !hacking !adv !aggressive !drugs !gamble !spyware !violence all
# redireccionamos a una pagina web disuasoria
redirect http://127.0.0.1/prohibit.html
}
}
Como pudo observar, este archivo de configuración es muy básico y fácil de entender. El símbolo ! significa NO o NOT. Y también usted puede redireccionar a una página construida por usted (prohibit.html) para mostrar el mensaje de prohibición de acceso al sitio solicitado. Esta es una configuración muy básica; usted podrá investigar más y se encontrará con muchas opciones adicionales que se pueden incluir en este archivo de configuración.
A continuación muestro el contenido del script que automatiza la descarga y configuración de la lista negra de Shalla además del reinicio del servicio squid. Si desea, usted puede programar este script para que se ejecute automáticamente a cada cierto tiempo utilizando el comando “crontab”.
El script se llama shalla_update.sh y a como está programado debe alojarse en la carpeta /root. Si usted desea ubicarlo en otra carpeta, entonces tendrá que modificar el código del script para que se ajuste a la nueva carpeta donde lo vaya a ubicar.
Tome en consideración que este proceso demorará según la velocidad de su conexión a Internet y a la cantidad y tamaño de clasificaciones que vaya a utilizar. Si durante este proceso ocurre un error, significa que hay un error en el archivo de configuración de squidGuard.NOTA: el script fue tomado del propio sitio de “blacklists” de shalla. No obstante, tuve que corregirlo porque tenía algunos errores y para adaptarlo a mi necesidad específica.

##!/bin/sh
#
# squidGuard blacklists - download & install script
# download from Shalla's Blacklists @
# http://squidguard.shalla.de/Downloads/shallalist.tar.gz
#
# created by Steve Olive - oz.ollie(at)gmail.com
# ver 0.3 20070302 10:00 GMT+10
# Creative Commons Attribution-Share Alike 3.0 License
# http://creativecommons.org/licenses/by-sa/3.0/
#
# SCRIPT MODIFICADO POR PISH
# CONFIGURADO POR NHOMAR
cd /root
# download latest file - overwrite any existing file
wget -N http://squidguard.shalla.de/Downloads/shallalist.tar.gz -a /var/log/shalla.log
# removemos la carpeta temporal BL por aquello de las moscas
rm -Rf /root/BL
# extract blacklists
tar -zxf shallalist.tar.gz
# remove old databases
rm -Rf /var/lib/squidguard/db/*
# copy blacklists to db home
cp -R /root/BL/* /var/lib/squidguard/db
# se convierten las listas a formato Berkeley
squidGuard -C all -d
# se convierte al usuario proxy en propietario de la carpeta de las blacklists
chown -R proxy:proxy /var/lib/squidguard/db
# se reinicia el servicio squid
squid -k reconfigure
# se remueve la carpeta temporal BL
rm -Rf /root/BL
Proceso para hacerlo ejecutable

Si queremos, podemos reiniciar el squid con el siguiente comando (OJO: NO es necesario ya que el script
shalla_update.sh ya lo hace automáticamente):
# squid -k reconfigure
Comprobamos que aparecen los procesos SquidGuard, (el número de procesos es el definido en el archivo /etc/squid.conf por la directiva redirect_children ):
# ps -e | grep squidGuard
Comprobamos el log: (al final debe salir el mensaje “squidGuard ready for requests”)
#cat /var/log/squid/squidGuard.log
Tomando en cuenta el archivo de configuración de squidGuard que se muestra más arriba, no hay que olvidar crear la página web prohibit.html y ubicarla en la raíz de su servidor web. También hay poner una imagen vacía nullbanner.png para la prohibición de publicidad.

Nota Importante: En esta guía no estamos considerando instalar el Apache, sin embargo es necesario tenerlo instalado para ver los mensajes de error de forma correcta, y poder enviar a los miembros de nuestra red a los enlaces correspondientes de nuestro helpdesk, correo o el método que utilicemos para dar soporte.
Luego de correr el Script de actualización por primera vez, el servidor necesitará de unos 10 minutos para actualizarlo todo, probaremos luego el funcionamiento con los comandos arriba mostrados.
Vamos a configurar entonces el rerouting para poder formalizar el servidor como un gateway.

Dejame tu comentario

Mantendremos privada esta información privada.
CAPTCHA
Esta pregunta es para estar seguro que eres humano, y no una máquina intentando usar ese site de spam
AYUDO SI NO SABES INGLES ======= FIRST: PRIMERA; SECOND: SEGUNDA; THIRD: TERCERA; FOURTH: CUARTA; FIFTH: QUINTA

Syndicate

Syndicate content

Como Comento

[img_assist|nid=46|title=Como Comento|desc=|link=none|align=left|width=100|height=100]
1.- Click aqui para crear una cuenta.
2.- Abre tu correo electrónico y haz click a confirmar la suscripción.
3.- Logueate con tu usuario y tu password en geronimo.com.ve.
4.- En la parte inferior derecha de cada contenido vas a tener; ahora que estas logueado, un enlace que dice "add new comment" hazle click alli y podrás retroalimentar el contenido de esta página.

¿Quien esta en Línea?

There are currently 0 users and 3 guests online.