HowTo Instalación Squid Dansguardian

De Tutoriales de Informatica
Saltar a: navegación, buscar

Repositorios utilizados

deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
deb http://download.webmin.com/download/repository sarge contrib
deb http://ftp.us.debian.org/debian/ lenny main
deb-src http://ftp.us.debian.org/debian/ lenny main
deb http://ftp.ccc.uba.ar/pub/linux/debian/debian/ lenny main
deb-src http://ftp.ccc.uba.ar/pub/linux/debian/debian/ lenny main

Squid

Instalación

apt-get install squid3

Configuración

Edito el archivo /etc/squid3/squid.conf con las siguientes opciónes

El puerto por donde escuchará el servidor proxy es el 3128

              # TAG: http_port
              http_port 3128 transparent

Cuanto desea almacenar de Internet en el disco duro?, Este parámetro se utiliza para establecer que tamaño se desea que tenga el caché en el disco duro para squid, la siguiente línea establece un caché de 1024 MB.

              # TAG: cache_dir
              cache_dir ufs /var/spool/squid3 1024 16 256

El parámetro cache_mem establece la cantidad de memoria para los objetos en transito, objetos frecuentemente utilizados y objetos negativamente utilizados en la caché, este parámetro está limitado por la memoria RAM del sistema.

              # TAG: cache_mem
              cache_mem 32 MB

Agregar el nombre del host

              # TAG: visible_hostname
              visible_hostname <nombre de host>

Configurar squid para que muestre los mensajes de error en español

              # TAG: error_directory
              error_directory /usr/share/squid3/errors/Spanish

Configurar la red local

              # TAG: acl
              acl localhost src 127.0.0.1/32
              acl to_localhost dst 127.0.0.0/8
              acl my_lan src 192.168.0.0/24 

Acceso a la red local

              # TAG: http_access
              http_access allow localhost
              http_access allow my_lan
              http_access deny all

Reinicio el servicio

/etc/init.d/squid3 restart

Dansguardian

Instalación

apt-get install dansguardian

Configuración

Link simbolicos

Dentro de Dansguardian1 y Dansguardian2 se crearon los siguiente link simbólicos.

authplugins -> /etc/dansguardian/authplugins
contentscanners -> /etc/dansguardian/contentscanners
downloadmanagers -> /etc/dansguardian/downloadmanagers
languages -> /etc/dansguardian/languages
lists -> /etc/dansguardian/lists

Dansguardian1

Editar el archivo /etc/dansguardian1/dansguardian.conf

Comentar la siguiente línea asignando el símbolo sharp (#).

      #UNCONFIGURED - Please remove this line after configuration
      #Establecer el idioma de dansguardian.
      language = 'spanish'
      loglocation = '/var/log/dansguardian1/access.log'
      statlocation = '/var/log/dansguardian1/stats'
      #Verificar que las siguientes líneas se encuentren de la siguiente manera, de lo contrario modificarlas como se muestra a
      #continuación.
      filterport = 8081
      filterip = 10.9.0.1
      filterip = 10.9.1.1
      proxyip = 10.9.0.1
      proxyport = 3128
      #Modificar las siguientes líneas de configuración para desactivar antivirus.
      virusscan = off
      #virusengine = 'clamav'
      filtergroupslist = '/etc/dansguardian1/lists/filtergroupslist'
      bannediplist = '/etc/dansguardian1/lists/bannediplist'
      exceptioniplist = '/etc/dansguardian1/lists/exceptioniplist'
      downloadmanager = '/etc/dansguardian1/downloadmanagers/fancy.conf'
      downloadmanager = '/etc/dansguardian1/downloadmanagers/default.conf'
      ipcfilename = '/tmp/.dguardian1ipc'
      urlipcfilename = '/tmp/.dguardianurlipc'
      pidfilename = '/var/run/dansguardian1.pid'


Guardar y salir del fichero dansguardian.conf Reiniciar el servicio dansguardian

/etc/init.d/dansguardian1 restart

Dansguardian2

Editar el archivo /etc/dansguardian2/dansguardian.conf

Comentar la siguiente línea asignando el símbolo sharp (#).

      #UNCONFIGURED - Please remove this line after configuration
      #Establecer el idioma de dansguardian.
      language = 'spanish'
      loglocation = '/var/log/dansguardian2/access.log'
      statlocation = '/var/log/dansguardian2/stats'
      #Verificar que las siguientes líneas se encuentren de la siguiente manera, de lo contrario modificarlas como se muestra a
      #continuación.
      filterport = 8082
      filterip = 10.9.6.1
      filterip = 10.9.2.1
      proxyip = 10.9.6.1
      proxyport = 3128
      #Modificar las siguientes líneas de configuración para desactivar antivirus.
      virusscan = off
      #virusengine = 'clamav'
      filtergroupslist = '/etc/dansguardian2/lists/filtergroupslist'
      bannediplist = '/etc/dansguardian2/lists/bannediplist'
      exceptioniplist = '/etc/dansguardian2/lists/exceptioniplist'
      downloadmanager = '/etc/dansguardian2/downloadmanagers/fancy.conf'
      downloadmanager = '/etc/dansguardian2/downloadmanagers/default.conf'
      ipcfilename = '/tmp/.dguardian2ipc'
      urlipcfilename = '/tmp/.dguardianurlipc'
      pidfilename = '/var/run/dansguardian2.pid'


Guardar y salir del fichero dansguardian.conf Reiniciar el servicio dansguardian

/etc/init.d/dansguardian2 restart

Script de incio

/etc/init.d/dansguardian1

#! /bin/sh
# Startup script for dansguardian
#
# description: A web content filtering plugin for web \
#              proxies, developed to filter using lists of \
#              banned phrases, MIME types, filename \
#              extensions and PICS labling.
# processname: dansguardian1
# pidfile: /var/run/dansguardian1.pid
# config: /etc/dansguardian1/dansguardian.conf
### BEGIN INIT INFO
# Provides:          dansguardian1
# Required-Start:    $network $syslog
# Required-Stop:     $network
# Default-Start:     2 3 5
# Default-Stop:      0 6
# Description: Starts dansguardian1 content proxy
# short-description: dansguardian1 configuration
### END INIT INFO

CONFFILELOCATION=/etc/dansguardian1/
BINARYLOCATION=/usr/sbin/
PIDDIR=/var/run/

# See how we were called

case "$1" in
start)
        if [ -f ${BINARYLOCATION}dansguardian1 ] &&
           [ -f ${CONFFILELOCATION}dansguardian.conf ]; then
                echo " * Starting dansguardian1..."
                if ${BINARYLOCATION}dansguardian1 -c /etc/dansguardian1/dansguardian.conf 2> /dev/null; then
                        echo "                                          [ ok ]"
                        touch /var/lock/dansguardian1
else
                        echo "                                       [ FAILED ]"
                fi
        fi
        ;;
stop)
        echo " * Shutting down dansguardian1..."
        if ${BINARYLOCATION}dansguardian1 -c /etc/dansguardian1/dansguardian.conf -q 2> /dev/null; then
                echo "                                          [ ok ]"
                /bin/rm -f ${PIDDIR}dansguardian1.pid
                /bin/rm -f /tmp/.dguardian1ipc
                /bin/rm -f /var/lock/dansguardian1
        else
                echo "                                      [ FAILED ]"
        fi
        ;;
reload|restart)
$0 stop
        sleep 3
        $0 start
        ;;
status)
        if [ -f ${BINARYLOCATION}dansguardian1 ]; then ${BINARYLOCATION}dansguardian1 -c /etc/dansguardian1/dansguardian.conf -s
        fi
        ;;
*)
        echo "Usage: {start|stop|restart|status}" >&2
        ;;
esac

exit 0

/etc/init.d/dansguardian2

#! /bin/sh
# Startup script for dansguardian
#
# description: A web content filtering plugin for web \
#              proxies, developed to filter using lists of \
#              banned phrases, MIME types, filename \
#              extensions and PICS labling.
# processname: dansguardian2
# pidfile: /var/run/dansguardian2.pid
# config: /etc/dansguardian2/dansguardian.conf
### BEGIN INIT INFO
# Provides:          dansguardian2
# Required-Start:    $network $syslog
# Required-Stop:     $network
# Default-Start:     2 3 5
# Default-Stop:      0 6
# Description: Starts dansguardian2 content proxy
# short-description: dansguardian2 configuration
### END INIT INFO


CONFFILELOCATION=/etc/dansguardian2/
BINARYLOCATION=/usr/sbin/
PIDDIR=/var/run/

# See how we were called

case "$1" in
start)
        if [ -f ${BINARYLOCATION}dansguardian2 ] &&
           [ -f ${CONFFILELOCATION}dansguardian.conf ]; then
                echo " * Starting dansguardian2..."
                if ${BINARYLOCATION}dansguardian2 -c /etc/dansguardian2/dansguardian.conf 2> /dev/null; then
                        echo "                                          [ ok ]"
                        touch /var/lock/dansguardian2
                else
                        echo "                                       [ FAILED ]"
                fi
        fi
        ;;
stop)
        echo " * Shutting down dansguardian2..."
        if ${BINARYLOCATION}dansguardian2 -c /etc/dansguardian2/dansguardian.conf -q 2> /dev/null; then
                echo "                                          [ ok ]"
                /bin/rm -f ${PIDDIR}dansguardian2.pid
                /bin/rm -f /tmp/.dguardian2ipc
                /bin/rm -f /var/lock/dansguardian2
        else
                echo "                                      [ FAILED ]"
        fi
        ;;
stop)
        echo " * Shutting down dansguardian2..."
        if ${BINARYLOCATION}dansguardian2 -c /etc/dansguardian2/dansguardian.conf -q 2> /dev/null; then
                echo "                                          [ ok ]"
                /bin/rm -f ${PIDDIR}dansguardian2.pid
                /bin/rm -f /tmp/.dguardian2ipc
                /bin/rm -f /var/lock/dansguardian2
        else
                echo "                                      [ FAILED ]"
        fi
        ;;
reload|restart)
        $0 stop
        sleep 3
        $0 start
        ;;
status)
        if [ -f ${BINARYLOCATION}dansguardian2 ]; then ${BINARYLOCATION}dansguardian2 -c /etc/dansguardian2/dansguardian.conf -s
        fi
        ;;
*)
        echo "Usage: {start|stop|restart|status}" >&2
        ;;
esac

exit 0

Archivos adicionales de filtros para DansGuardian

Descargar de la pagina http://urlblacklist.com/ el archivo bigblacklist.tar.gz que contiene archivos con filtros compatibles con DansGuardian organizados por categorías.

Una vez descargado el archivo bigblacklist.tar.gz, lo copiamos a /etc/dansguardian y lo descomprimimos:

tar xvzf bigblacklist.tar.gz

Por último modificamos los archivos de filtros /etc/dansguardian/lists/bannedsitelist y /etc/dansguardian/lists/bannedurllist para activar los filtros que nos interesen.

Ejemplo de modificación de bannedsitelist:

# The squidGuard advert domain/URL lists are now included by default.
# To work with advanced ad blocking & the logadblocks option, advert
# phrase/site/URL lists should have the string "ADs" in their listcategory.
.Include</etc/dansguardian/lists/blacklists/ads/domains>

#.Include</etc/dansguardian/lists/blacklists/forums/domains>
#.Include</etc/dansguardian/lists/blacklists/frencheducation/domains>
.Include</etc/dansguardian/lists/blacklists/gambling/domains>
#.Include</etc/dansguardian/lists/blacklists/government/domains>
.Include</etc/dansguardian/lists/blacklists/hacking/domains>
#.Include</etc/dansguardian/lists/blacklists/homerepair/domains>
#.Include</etc/dansguardian/lists/blacklists/hygiene/domains>
#.Include</etc/dansguardian/lists/blacklists/jewelry/domains>
#.Include</etc/dansguardian/lists/blacklists/jobsearch/domains>
#.Include</etc/dansguardian/lists/blacklists/kidstimewasting/domains>
#.Include</etc/dansguardian/lists/blacklists/mail/domains>
#.Include</etc/dansguardian/lists/blacklists/news/domains>
#.Include</etc/dansguardian/lists/blacklists/onlineauctions/domains>
.Include</etc/dansguardian/lists/blacklists/onlinegames/domains>
.Include</etc/dansguardian/lists/blacklists/onlinepayment/domains>
#.Include</etc/dansguardian/lists/blacklists/personalfinance/domains>
#.Include</etc/dansguardian/lists/blacklists/pets/domains>
.Include</etc/dansguardian/lists/blacklists/porn/domains>
.Include</etc/dansguardian/lists/blacklists/proxy/domains>
#.Include</etc/dansguardian/lists/blacklists/publicite/domains>
#.Include</etc/dansguardian/lists/blacklists/redirector/domains>
#.Include</etc/dansguardian/lists/blacklists/ringtones/domains>
#.Include</etc/dansguardian/lists/blacklists/sportnews/domains>
#.Include</etc/dansguardian/lists/blacklists/sports/domains>
#.Include</etc/dansguardian/lists/blacklists/vacation/domains>
#.Include</etc/dansguardian/lists/blacklists/violence/domains>
.Include</etc/dansguardian/lists/blacklists/virusinfected/domains>
.Include</etc/dansguardian/lists/blacklists/warez/domains>

# You will need to edit to add and remove categories you want

Cada modificación que se realiza en el dansfuardian, necesita reiniciar el servicio para su aplicación

/etc/init.d/dansguardian restart

SARG (No se esta Utilizando)

Instalación

apt-get install sarg

Iptables

Configuración

Se creo el archivo iptables-squid en /etc/init.d

iptables-squid

#!/bin/sh
# Interfaz vinculada a Internet
INET_IF0=eth6
INET_IF1=eth7
#Interfaz vinculada a la red privada
PRVT_IF0=eth1
PRVT_IF1=eth2
PRVT_IF2=eth3
PRVT_IF5=eth5
#Si tenemos IP fija, definamosla aqui y utilicemos la regla de SNAT
#Caso contrario, habilitemos la regla de MASQUERADE
# Limpieza
iptables -t nat -F
iptables -F
iptables -X
iptables -t nat -X
# Politicas (para el hogar, todo sale, nada entra)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# Filtrado de Entrada
iptables -A INPUT -i lo -j ACCEPT
# Podriamos filtrar CIERTOS paquetes del ICMP, dejemoslo para otro articulo
iptables -A INPUT -i $INET_IF0 -p icmp -j ACCEPT
iptables -A INPUT -i $INET_IF1 -p icmp -j ACCEPT
# Dejamos entrar lo que este relacionado con conecciones existentes, y
# tambien las ya establecidas.
iptables -A INPUT -i $INET_IF0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $INET_IF1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $PRVT_IF0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $PRVT_IF1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $PRVT_IF5 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $PRVT_IF0 -p tcp --dport 8110 -j ACCEPT
iptables -A INPUT -i $PRVT_IF0 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i $PRVT_IF0 -p udp --dport 53 -j ACCEPT
# Habilitar Internet para la red interna con SNAT (si tenemos IP publica fija)
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i $PRVT_IF0 -p tcp --dport 80 -j REDIRECT --to-port 8081
iptables -t nat -A PREROUTING -i $PRVT_IF1 -p tcp --dport 80 -j REDIRECT --to-port 8081
iptables -t nat -A PREROUTING -i $PRVT_IF2 -p tcp --dport 80 -j REDIRECT --to-port 8082
iptables -t nat -A PREROUTING -i $PRVT_IF5 -p tcp --dport 80 -j REDIRECT --to-port 8082
# Si tuviesemos IP dinamica de Internet, hariamos MASQUERADE
# y comentariamos la linea de SNAT anterior.
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 443 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8080 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 21 -j MASQUERADE

Luego se ejecuto lo siguiente:

update-rc.d iptables-squid 60

Thunder Cache (No se esta Utilizando)

THUNDER CACHE es un sistema que trabaja en conjunto con Squid, reescribiendo las direcciones URL, haciendo cache de los archivos de video como de youtube, y actualizaciones de antivirus y windows update, esto, para mejorar el rendimiento de un sistema de red local. Nosotros lo vamos a utilizar principalmente para cachear videos de youtube.

instalamos estas dependencia si no las teniamos:

apt-get install libapache2-mod-php5 php5 php-db php5-gd php5-sqlite sqlite3 libsqlite3-dev libstdc++6 unzip bzip2

Configuración

cd /root
wget "http://www.biazus.com/forum/download/file.php?id=179" -O thunder3-32bits.tar.bz2
mkdir thunder3-32bits
tar xjvf thunder3-32bits.tar.bz2 -C thunder3-32bits
cd thunder3-32bits
mkdir /usr/local/sbin
cp -R /root/thunder3-32bits/sbin/* /usr/local/sbin
chmod a+x /usr/local/sbin/thunder
mkdir /var/log/thunder
mkdir /var/tmp/thunder
mkdir /var/run/thunder
chmod a+rwx /var/log/thunder
chmod a+rwx /var/tmp/thunder
chmod a+rwx /var/run/thunder
cp -R /root/thunder3-32bits/etc/init.d/* /etc/init.d
chmod a+x /etc/init.d/thunder
cp -R /root/thunder3-32bits/etc/thunder /etc/thunder
touch /etc/thunder/whitelist
touch /etc/thunder/blacklist
mkdir /thunder
chmod a+rwx /thunder
chown -R www-data:www-data /thunder/
chmod -R 777 /thunder/
umask 000 /thunder/
 
ln -s /etc/thunder/thunder.php /var/www/thunder3.php


Colocamos a thundercache 3 para iniciar automáticamente al iniciar linux

update-rc.d thunder defaults

Luego integramos el thundercache al squid.

vim /etc/squid/squid.conf

y al final del archivo agregamos el módulo de thundercache.

#===================================================================#
#Redirecionamento Thunder 3.x - REGEx
#===================================================================#
acl thunder_lst url_regex -i "/etc/thunder/thunder.lst"
cache deny thunder_lst
cache_peer IPTHUNDER parent 8080 0 proxy-only no-digest
dead_peer_timeout 2 seconds
cache_peer_access IPTHUNDER allow thunder_lst
cache_peer_access IPTHUNDER deny all

Cambiando “ipthunder” por la ip del proxy. y comentamos la linea:

  1. hierarchy_stoplist cgi-bin ?

Finalmente reiniciamos el servidor. Podemos ver una interfaz web, de la cantidad de archivos cacheados hasta el momento, y saber cuantos han sido despachados como caché (hits). http://localhost/thunder3.php

Para borrar los archivos cacheados que no hayan hecho HITS, deberemos de correr el siguiente script:

#!/bin/sh
data=`date +"%Y-%m-%d" -d "2 week ago"`
 
dirs=`find /thunder/ -name domain.db`
 
for d in $dirs
do
        lista="init"
 
        dir=`dirname $d`
        echo "entered in $dir."
 
        while [ -n "$lista" ]
        do
                lista=`sqlite3 $dir/domain.db "select file from thunder where last_request < \"$data\" and requested = 0 limit 100;"`
                for i in $lista
                do
                        sqlite3 $dir/domain.db "delete from thunder where file=\"$i\""
                        if rm "$dir/$i" > /dev/null
                        then
                                echo "removed $i..."
                        fi
                done
        done
done

Con lo anterior, eliminamos todos los que no fueron pedidos o no hicieron “HITS”, por más de 2 semanas desde su creación. Para su ejecución, lo guardamos en cualquier lugar, por ejemplo en “/thunder”:

cd /thunder

luego creamos el archivo clear_thunder.sh, para copiar en el el script anterior.

vim clear_thunder.sh

Guardamos y salimos.

le damos permisos de ejecución:

chmod +x clear_thunder.sh

ahora, si queremos ejecutarlo :

cd /thunder
./clear_thunder.sh

Y veremos en consola, como se empiezan a eliminar los archivos que no hicieron HITS (en 2 semanas atrás).

Configuraciones extras para que trabaje sobre varias redes

thunder cache en Squid

Agregamos lo siguiente en /etc/squid3/squid.conf por cada interfaz sobre la que trabaje

###############################################################
#
#Redireccionamiento Thunder 3.x -REGEX
#
###############################################################
acl thunder_lst url_regex -i "/etc/thunder/thunder.lst"
cache deny thunder_lst
cache_peer 10.9.1.252 parent 8080 0 proxy-only no-digest
dead_peer_timeout 2 seconds
cache_peer_access 10.9.1.252 allow thunder_lst
cache_peer_access 10.9.1.252 deny all
#para permitir cache de videos
#http_access allow proxy
http_access deny all