Edición de «Servidor proxy con AV»

Saltar a: navegación, buscar

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición en estas condiciones. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual Tu texto
Línea 1: Línea 1:
{| class="wikitable" align="right" cellpadding="4"
+
{{Plantilla:Docs}}
|+ '''Sobre este documento'''
 
|-
 
| bgcolor="#ddf"|'''Tipo''' || Manual (How To)
 
|-
 
| bgcolor="#ddf"|'''Categoria''' || [[:Categoría:Linux|Linux]]
 
|-
 
| bgcolor="#ddf"|'''Plataforma''' || All GNU/Linux
 
|-
 
| bgcolor="#ddf"|'''Versión''' || 0.5
 
|-
 
| bgcolor="#ddf"|'''Dificultad''' || [[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]]
 
|-
 
|}
 
 
 
 
= Introducción =
 
= Introducción =
 
El propósito de este manual es describir la instalación y configuración del squid 2.7 (proxy http) + antivirus (ClamAV) + Dansguard (filtrado de paginas web + integración con ClamAV) en una Ubuntu 8.04.
 
El propósito de este manual es describir la instalación y configuración del squid 2.7 (proxy http) + antivirus (ClamAV) + Dansguard (filtrado de paginas web + integración con ClamAV) en una Ubuntu 8.04.
  
No sé entrará demasiado en explicar cada aplicación que se va a instalar, se deja el tema de profundizar a discreción del lector ;)<br>
+
No sé entrará demasiado en explicar cada aplicación que se va a instalar, se deja el tema de profundizar a discreción del lector ;)
 
Se presuponen ciertos conocimientos sobre administración linux y los componentes que esta guia explica su instalación.
 
Se presuponen ciertos conocimientos sobre administración linux y los componentes que esta guia explica su instalación.
  
Línea 23: Línea 9:
  
 
= Requisitos =
 
= Requisitos =
 +
 +
== Paquetes/programas ==
 +
 
Antes de proceder a la instalación se instalarán algunos requisitos previos para llevar a cabo la instalación de los componentes, teniendo en cuenta que el squid y el dansguardian se instalan desde fuentes y todas las opciones de compilación que se van a usar.
 
Antes de proceder a la instalación se instalarán algunos requisitos previos para llevar a cabo la instalación de los componentes, teniendo en cuenta que el squid y el dansguardian se instalan desde fuentes y todas las opciones de compilación que se van a usar.
  
 
Así pues pasamos a instalar todo lo necesario
 
Así pues pasamos a instalar todo lo necesario
 
== Paquetes/programas ==
 
Primero instalamos los paquetes necesarios
 
  
 
<pre>
 
<pre>
aptitude install gcc make perl build-essential libldap2-dev libsasl2-dev libpam0g-dev \
+
aptitude install gcc make perl build-essential libldap2-dev libsasl2-dev libpam0g-dev zlib-bin zlib1g-dev libpcre3-dev pkg-config
zlib-bin zlib1g-dev libpcre3-dev pkg-config libbz2-dev libncurses5-dev check
 
 
</pre>
 
</pre>
  
 
== Parámetros kernel ==
 
== Parámetros kernel ==
Para un mejor funcionamiento se debe configurar una serie de parámetros en el kernel o comprobar que estén configurados con unos valores correctos.
+
Para un mejor funcionamiento se debe configurar una seria de parámetros en el kernel o comprobar que estén configurados con unos valores correctos.
  
 
Empecemos con los descriptores de ficheros, que por defecto solo se permiten en las sesiones bash 1024 ficheros abiertos, un número muy bajo para un squid con una carga moderada.
 
Empecemos con los descriptores de ficheros, que por defecto solo se permiten en las sesiones bash 1024 ficheros abiertos, un número muy bajo para un squid con una carga moderada.
  
Por tanto se van a subir ese valor a algo más razonable como es 8192. Esto sólo se hará a nivel de sesión bash ya que el kernel el número de descriptores es bastante alto en la ubuntu 8.04:
+
Por tanto se van a subir ese valor a algo más razonable como es 8192. Esto sólo se hará a nivel de sesión bash ya que el kernel el número de descriptores es bastante alto en la ubuntu 8.04
  
 
<pre>
 
<pre>
Línea 50: Línea 35:
  
 
<pre>
 
<pre>
ulimit -n 8192
+
ulimit -HSn 8192
 
</pre>
 
</pre>
  
Línea 65: Línea 50:
 
32768  61000
 
32768  61000
 
</pre>
 
</pre>
 
+
 
= Instalación y configuración =
 
= Instalación y configuración =
  
Línea 100: Línea 85:
 
Hay que tener en cuenta que antes de hacer el configure se debe configurar el número de descriptores de ficheros abiertos a 8192
 
Hay que tener en cuenta que antes de hacer el configure se debe configurar el número de descriptores de ficheros abiertos a 8192
 
<pre>
 
<pre>
ulimit -n 8192
+
ulimit -HSn 8192
./configure --enable-storeio="aufs coss diskd ufs null" --enable-coss-aio-ops --with-aio \
+
./configure --enable-storeio="aufs coss diskd ufs null" --enable-coss-aio-ops --with-aio --enable-removal-policies="heap,lru" \
--enable-removal-policies="heap,lru" --with-large-files --enable-large-cache-files \
+
--with-large-files --enable-large-cache-files --enable-delay-pools --enable-snmp --enable-linux-netfilter \
--enable-delay-pools --enable-snmp --enable-linux-netfilter --enable-auth="basic digest negotiate ntlm" \
+
--enable-auth="basic digest negotiate ntlm" --enable-basic-auth-helpers="DB LDAP MSNT NCSA PAM POP3 SASL SMB squid_radius_auth YP" \  
--enable-basic-auth-helpers="DB LDAP MSNT NCSA PAM POP3 SASL SMB squid_radius_auth YP" \  
 
 
--enable-follow-x-forwarded-for && make && make install
 
--enable-follow-x-forwarded-for && make && make install
 
</pre>
 
</pre>
Línea 111: Línea 95:
 
Se va a usar el método de almacenamiento de cache '''aufs''', ya que el '''coss''' tarda varios minutos en arrancar la cache, provocando prácticamente un DoS de acceso a disco (I/O) en el disco duro del servidor durante ese tiempo.
 
Se va a usar el método de almacenamiento de cache '''aufs''', ya que el '''coss''' tarda varios minutos en arrancar la cache, provocando prácticamente un DoS de acceso a disco (I/O) en el disco duro del servidor durante ese tiempo.
 
<br>Si se quisiera usar el coss se debe tener en cuenta que el tamaño máximo de objeto "cacheable" debe ser menor que el valor  
 
<br>Si se quisiera usar el coss se debe tener en cuenta que el tamaño máximo de objeto "cacheable" debe ser menor que el valor  
del ''coss-membuf'' que se puede configurar en la compilación con la opción ''--enable-coss-membuf-size=COSS_MEMBUF_SIZE''.
+
del ''coss-membuf'' que se puede configurar en la compilación con la opción ''--enable-coss-membuf-size=COSS_MEMBUF_SIZE''
<br>Comentar también que se puede ajustar el número de hilos que use el aufs mediante el parámetro de compilación ''--with-aufs-threads=NUMERO_HILOS''
 
  
 +
Se puede ajustar el número de hilos que use el aufs mediante el parámetro de compilación ''--with-aufs-threads=NUMERO_HILOS''
  
 
A continuacón debemos configurar el fichero /usr/local/squid/etc/squid.conf.<br>El de mi instalación queda así
 
A continuacón debemos configurar el fichero /usr/local/squid/etc/squid.conf.<br>El de mi instalación queda así
Línea 121: Línea 105:
 
# Squid 2.7 configuration #
 
# Squid 2.7 configuration #
 
###########################
 
###########################
 
# POR ACTUALIZAR!
 
 
  
 
# Listen port
 
# Listen port
 
http_port 3128
 
http_port 3128
 
  
  
 
# Cache
 
# Cache
 
cache_mem 512 MB
 
cache_mem 512 MB
 
+
maximun_object_size 1000000 bytes
  
 
cache_dir aufs /opt/squid/squidcache/ 5000 16 256
 
cache_dir aufs /opt/squid/squidcache/ 5000 16 256
maximun_object_size 1000000 bytes
 
  
 
#cache_dir coss /opt/squid/squidcache/coss 4000 max-size=1000000
 
#cache_dir coss /opt/squid/squidcache/coss 4000 max-size=1000000
Línea 152: Línea 131:
  
 
# Auth
 
# Auth
#auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -b "ou=People,dc=empresa,dc=com" -f "uid=%s" -v2 -h 192.168.1.1
+
auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -b "ou=People,dc=empresa,dc=com" -f "uid=%s" -v2 -h 192.168.1.1
#auth_param basic children 5
+
auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
+
auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
+
auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
+
auth_param basic casesensitive off
#authenticate_ip_ttl 1800 seconds
+
authenticate_ip_ttl 1800 seconds
  
#acl Authenticate proxy_auth REQUIRED
+
acl Authenticate proxy_auth REQUIRED
 
acl CONNECT method CONNECT
 
acl CONNECT method CONNECT
  
Línea 239: Línea 218:
 
Comentar que la cache y los logs "cuelgan" todos debajo del directorio /opt/squid
 
Comentar que la cache y los logs "cuelgan" todos debajo del directorio /opt/squid
  
A continuación se van a crear los directorios y ficheros necesarios
+
A continuación se van a crear los directorio y ficheros necesarios
  
 
<pre>
 
<pre>
Línea 256: Línea 235:
 
/usr/local/squid/sbin/squid -D -N -X
 
/usr/local/squid/sbin/squid -D -N -X
 
</pre>
 
</pre>
 
Ahora se pasa a crear el fichero de arranque del squid y configurar que el squid arranque el inicio del sistema.
 
El fichero squid que se muestra a continuación se ubica en el directorio /etc/init.d
 
<pre>
 
#! /bin/sh
 
 
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
 
 
case "$1" in
 
  start)
 
        ulimit -n 8192
 
        /usr/local/squid/sbin/squid -D
 
        ;;
 
  stop)
 
        /usr/local/squid/sbin/squid -k shutdown
 
        /bin/sleep 15
 
        /usr/local/squid/sbin/squid -k shutdown
 
        ;;
 
  *)
 
        echo "Usage: /etc/init.d/squid {start|stop}"
 
        exit 1
 
esac
 
 
exit 0
 
</pre>
 
 
Que arranque al inicio del sistema
 
<pre>
 
chmod 755 /etc/init.d/squid
 
update-rc.d squid defaults 40
 
</pre>
 
 
Por último comentar que es factible (y aconsejable) dedicar una partición aparte para la cache del squid. Se recomienda que esa partición siempre tenga un espacio libre de aproximadamente un 20-30% para tener un mejor redimiento.
 
 
Si se desea saber cuanta memoria necesita el squid en base a la instalación y configuración de algunos parámetros esta es la sencilla formula proporcionada por uno de los desarrolladores del squid :)
 
<pre>
 
size of cache_mem + (size of cache * 0.05) == RAM needed
 
</pre>
 
 
Solo resta iniciar el squid con el comando
 
<pre>
 
/etc/init.d/squid start
 
</pre>
 
 
A continuación se pasa a explicar la instalación y configuración de la aplicación dansguardian, que permite realizar las tareas de filtrado de webs y bloqueo de virus durante la navegación web de los clientes.
 
 
== Dansguardian ==
 
Ahora se va a instalar y configurar la aplicación que realiza el filtrado de las webs mediante lista de dominios o por ciertas palabras que aparecen en las webs, por ejemplo pornográficas. También se encarga de bloquear los virus mediante el antivirus ClamAV.
 
 
Esta aplicación escuchará en el puerto 8080, pasará las peticiones web al squid que escucha en el puerto 3128 y después envía a los clientes web los objetos que cachea el squid.
 
 
Por tanto en los navegadores se debe configurar la IP del servidor y el puerto 8080.
 
 
 
Primero vamos a crear el directorio dónde se ubicarán los logs del dansguardian
 
<pre>
 
mkdir -p /var/log/dansguardian
 
chown clamav.clamav /var/log/dansguardian
 
</pre>
 
 
A continuación vamos a bajar y compilar el programa, teniendo en cuenta de crear el grupo nobody si no existe
 
<pre>
 
wget http://dansguardian.org/downloads/2/Stable/dansguardian-2.10.1.1.tar.gz
 
tar zxvf dansguardian-2.10.1.1.tar.gz
 
cd dansguardian-2.10.1.1
 
./configure --prefix=/usr/local/dansguardian --enable-clamd && make && make install
 
</pre>
 
 
A continuación se deben realizar algunos ajustes y comprobar que algunas configuraciones esten correctas en el dansguardian y el clamav.
 
 
En el clamav tiene que estar así configurado el ''socket'' en el fichero /etc/clamav/clamd.conf
 
<pre>
 
LocalSocket /var/run/clamav/clamd.ctl
 
User clamav
 
</pre>
 
 
Se configuran los siguientes parámetros en el fichero de configuración de dansguardian (/usr/local/dansguardian/etc/dansguardian/dansguardian.conf)
 
<pre>
 
forwardedfor = on
 
daemonuser = 'clamav'
 
daemongroup = 'clamav'
 
contentscanner = '/usr/local/dansguardian/etc/dansguardian/contentscanners/clamdscan.conf'
 
 
loglocation = '/var/log/dansguardian/access.log'
 
logfileformat = 3
 
</pre>
 
 
A continuación se deja asi el fichero /usr/local/dansguardian/etc/dansguardian/contentscanners/clamdscan.conf
 
<pre>
 
clamdudsfile = '/var/run/clamav/clamd.ctl'
 
</pre>
 
 
Se configuran según convengan las ''weightedphraselist'', ''banedextensionlist'' y ''bannedmimetypelist'' ubicadas en el directorio /usr/local/dansguardian/etc/dansguardian/lists
 
 
Por último sólo queda que se cree el fichero de arranque del dansguardian (/etc/init.d/dansguardian) en el inicio del sistema y se haga que arranque al inicio del sistema
 
<pre>
 
#!/bin/sh
 
# Script startup para Dansguardian
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
DAEMON=/usr/local/dansguardian/sbin/dansguardian
 
NAME=dansguardian
 
DESC="DansGuardian"
 
CONFFILELOCATION=/usr/local/dansguardian/etc/dansguardian/dansguardian.conf
 
set -e
 
case "$1" in
 
start)
 
echo -n "Iniciando $DESC: "
 
$DAEMON -c $CONFFILELOCATION
 
echo "$NAME."
 
;;
 
stop)
 
echo -n "Deteniendo $DESC: "
 
$DAEMON -q
 
echo "$NAME."
 
;;
 
reload)
 
echo "Recargando los archivos de configuracion de $DESC."
 
$DAEMON
 
;;
 
restart|force-reload)
 
echo -n "Reiniciando $DESC: "
 
$DAEMON -Q
 
echo "$NAME."
 
;;
 
*)
 
N=/etc/init.d/$NAME
 
echo "Utilizar: $N {start|stop|restart|force-reload}"
 
exit 1
 
;;
 
esac
 
exit 0
 
</pre>
 
 
<pre>
 
chmod 755 /etc/init.d/dansguardian
 
update-rc.d dansguardian defaults 45
 
</pre>
 
 
Sólo queda iniciar el dansguardian mediante el comando
 
<pre>
 
/etc/init.d/dansguardian start
 
</pre>
 
y después configurar los navegadores web de los clientes que apunten a la IP del servidor proxy al puerto 8080 del dansguardian! :)
 
 
= Comprobaciones =
 
Podemos probar que tal funciona el AV en la navegación web yendo a la página http://www.eicar.org/anti_virus_test_file.htm
 
  
 
= TODO =
 
= TODO =
Aunque la solución descrita en este manual es bastante completa, se podría configurar algo más y/o instalar alguna herramienta más como por ejemplo:
+
Aunque la solución descrita en este manual es bastante completa, se podría instalar alguna herramienta más como por ejemplo:
 
 
- Estadísticas (Sarg)<br>
 
 
 
<pre>
 
language Spanish
 
access_log /var/log/squid/access.log
 
temporary_dir /tmp
 
output_dir /var/www/squid-reports
 
 
 
Editaremos /etc/apache/httpd.conf y añadiremos estas lineas:
 
  
<Directory "/var/www/squid-reports">
+
- Estadísticas (Sarg)
AuthName "Squid Reports"
+
- El gestor de la cache (Cache Manager)
AuthType Basic
+
- Snmp
AuthUserFile /etc/.htpasswdsquidreports
 
require valid-user
 
Options Indexes FollowSymLinks
 
AllowOverride None
 
Order allow,deny
 
Allow from all
 
</Directory>
 
</pre>
 
- Detallar en squid.conf la autenticación contra Openldap y AD w2003<br>
 
- El gestor de la cache (Cache Manager)<br>
 
- Snmp & mrgt <br>
 
- Rotación de logs con logrotate o con "squid -k rotate"<br>
 
- Optimizaciones en el sistema de ficheros de la partición dedicada a la cache del squid??<br>
 
- Uso del WPAD y opción 252 del servidor DHCP<br>
 
- Compilación del clamav para soportar por ejemplo la descompresión de ficheros .rar<br>
 
- Detallar las características de la partición para la cache del squid
 
  
= Referencias =
 
http://www.mey-online.com.ar/blog/index.php/archives/filtrado-web-con-dansguardian-clamav-y-squid<br>
 
http://dansguardian.org/downloads/DG2.9.7.1_Squid_Slackware_10.2.pdf
 
  
  
 
[[Categoría:Linux]]
 
[[Categoría:Linux]]
[[Categoría:Docs]]
 

Ten en cuenta que todas las contribuciones a Wiki de BandaAncha.eu se consideran publicadas bajo la Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 (véase Wiki de BandaAncha.eu:Derechos de autor para más información). Si no deseas que las modifiquen sin limitaciones y las distribuyan libremente, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre. ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar | Ayuda de edición (se abre en una ventana nueva)