jueves, 25 de noviembre de 2010

Mètrica IGRP

IGRP utiliza una métrica de enrutamiento compuesta. La ruta que posea la métrica más baja será considerada la ruta óptima. Las métricas de IGRP están ponderadas mediante constantes desde K0 hasta K5 que convierten los vectores de métrica IGRP en cantidades escalables.
La métrica utilizada por IGRP se compone de:
• Ancho de banda: Valor mínimo de ancho de banda en la ruta.
• Retraso: Retraso de interfaz acumulado a lo largo de la ruta.
• Fiabilidad: Fiabilidad entre el origen y el destino, determinado por el intercambio de mensajes de actividad.
• Carga: Carga de un enlace entre el origen y el destino, medido en bits por segundo.
• MTU: Valor de la unidad máxima de transmisión de la ruta.

La fiabilidad y la carga no tienen unidades propias y pueden tomar valores entre 0 y 255. El ancho de banda puede tomar valores que reflejan velocidades desde 1200 bps hasta 106 bps.
El retraso puede ser cualquier valor entre 1 hasta 2 x 1023
Por defecto IGRP utiliza el ancho de banda y el retraso como metrica pre-establecida

IGRP soporta múltiples rutas entre un origen y un destino, es posible que dos líneas de igual ancho de banda puedan transportar una misma trama de tráfico de forma cooperativa, con conmutación automática a la segunda línea si la primera falla.
El equilibrado de la carga de coste desigual permite distribuir el tráfico entre un máximo de seis rutas de distinto coste, para conseguir un mayor rendimiento y fiabilidad.

AGRADECER NO CUESTA NADA!!!

Sintaxis de la configuracion IGRP

Router(config)#router igrp 100                            
Router(config-router)#network 192.168.1.0
Router(config-router)#network 200.200.1.0
Router(config-router)#variance ?
  <1-128>  Metric variance multiplier
Router(config-router)#variance 2
Router(config-router)#traffic-share ?
  balanced  Share inversely proportional to metric
  min       All traffic shared among min metric paths


router igrp 100  especifica a IGRP como protocolo de enrutamiento para el sistema autónomo 100, este valor varia de 1 a 65535
network específica las redes directamente conectadas al router que serán anunciadas por IGRP
                     
variance (opcional)configura el equilibrado de carga de coste desigual definiendo la diferencia entre la métrica óptima y la peor métrica aceptable.
variance[multiplicador] (opcional)especifica el rango de valores de métrica que serán aceptadas para el equilibrado de la carga.
traffic-share[balanced|min] (opcional)controla la forma en que debe distribuirse el trafico entre rutas de comparación de carga IGRP.
• Balanced = El trafico se distribuye proporcionalmente a las relaciones entre las distintas métricas.
• Min = Especifica que deben usarse las rutas de coste mínimo.
A continuación se copia un show ip protocols, observe el tiempo de actualización (90segundos), las constantes K1 y K3 ancho de banda y retaso usadas por defecto como métrica, la cantidad de saltos por defecto 100, y tres redes asociadas.


Copia de un show ip protocols:
Router#show ip protocols
Routing Protocol is “igrp 100″
  Sending updates every 90 seconds, next due in 49 seconds
  Invalid after 270 seconds, hold down 280, flushed after 630
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  IGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
  IGRP maximum hopcount 100
  IGRP maximum metric variance 1
  Redistributing: igrp 100
  Routing for Networks:
    192.168.1.0
    200.200.10.0
    172.16.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
  Distance: (default is 100)

Se puede observar el tiempo de actualización, el hold down, las constantes que componen la métrica, las redes asociadas y la distancia administrativa entre algunos parámetros.

IGRP y EIGRP se redistribuyen automáticamente si ambos tienen el mismo número de sistema autonomo.

AGRADECER NO CUESTA NADA!!!

Comparacion entre IGRP Y RIP

IGRP utiliza una métrica de enrutamiento compuesta, los valores de la métrica por defecto son el ancho de banda y el retraso. Mientras que RIP solo toma en cuenta la cantidad de saltos.
 La topología siguiente muestra dos rutas diferentes desde el origen al destino con diferentes velocidades y saltos en cada una. RIP no tomara en cuenta la velocidad de los enlaces eligiendo como ruta  la de menor
cantidad de saltos, A-C-F, mientras que IGRP enrutara a través del enlace mas veloz
A-B-D-E-F
IGRP_RIP.bmp


ProtocoloRIPIGRPEIGRPIS-ISOSPF
Vector distanciaXXX
Estado de enlaceXX
Resumen automático  de rutaXXXX
Resumen manual de rutaXXXXX
Soporte VLSMXXX
Propietario de ciscoXX
Convergencia  LentoLentoMuy RapidoMuy RapidoMuy Rapido
Distancia administrativa12010090115110
Tiempo de actualización3090
MétricasaltosCompuestacompuestacostecoste

 AGRADECER NO CUESTA NADA!!!

Configuración de EIGRP

El protocolo de enrutamiento de gateway interior mejorado (Enchaced Interior Gateway Routing Protocol, EIGRP) es una versión mejorada del protocolo IGRP original desarrollado por Cisco Systems. EIGRP combina las ventajas de los protocolos de estado de enlace con las de los protocolos de vector de distancia.
EIGRP mantiene el mismo algoritmo de vector de distancia y la información de métrica original de IGRP; no obstante, se han mejorado apreciablemente el tiempo de convergencia y los aspectos relativos a la capacidad de ampliación. EIGRP e IGRP usan cálculos de métrica diferentes. EIGRP multiplica la métrica de IGRP por un factor de 256. Esto ocurre porque EIGRP usa una métrica que tiene 32 bits de largo, e IGRP usa una métrica de 24 bits. La información EIGRP puede multiplicarse o dividirse por 256 para un intercambio fácil con IGRP. IGRP tiene un número de saltos máximo de 255. El límite máximo para el número de saltos en EIGRP es 224. Esto es más que suficiente para admitir grandes redes.
EIGRP ofrece características que no se encontraban en su antecesor, IGRP como el soporte para VLSM y los resúmenes de ruta arbitrarios. Además, EIGRP ofrece características que se encuentran en protocolos como OSPF, como las actualizaciones increméntales parciales y un tiempo de convergencia reducido. Como en el caso del protocolo IGRP, EIGRP publica la información de la tabla de enrutamiento sólo a los routers vecinos.
EIGRP mantiene las siguientes tres tablas:
• Tabla de vecinos
• Tabla de topología
• Tabla de enrutamiento
Los routers vecinos se descubren por medio de un protocolo Hello sencillo intercambiado por los routers que pertenecen a la misma red física estableciendo adyacencias. Hello utiliza para intercambiar paquetes de saludo una dirección multicast 224.0.0.10. Una vez descubiertos los routers vecinos, EIGRP utiliza un protocolo de transporte fiable para garantizar la entrega correcta y ordenada de la información y las actualizaciones de la tabla de enrutamiento. Un router hace el seguimiento de sus propias rutas conectadas y, además, de todas las rutas publicas de los routers vecinos. Basándose en esta información, EIGRP puede seleccionar eficaz y rápidamente la ruta de menor coste hasta un destino y garantizar que la ruta no forma parte de un bucle de enrutamiento esta ruta escogida como principal será la llamada Sucesor . Al almacenar la información de enrutamiento de los routers vecinos, el algoritmo puede determinar con mayor rapidez una ruta de sustitución o un Sucesor factible en caso de que haya un fallo de enlace o cualquier otro evento de modificación de la topología.
El saludo y la información de enrutamiento EIGRP son transportados mediante el protocolo de transporte EIGRP. El transporte EIGRP define un protocolo fiable de publicación, acuse de recibo y petición para garantizar que el saludo y la información de enrutamiento de distribuyen adecuadamente a todos los routers vecinos.
Cuando existen cambios de topologías EIRP recurre a DUAL (algoritmo de actualización difusa) para conseguir una rápida convergencia entre los routers, estos almacenan sus propias tabas de enrutamiento con rutas alternativas (Sucesor factible), si no existiera alguna ruta alternativa EIGRP recurres a sus routers vecinos para conseguir información acerca de ese camino alternativo.

Sintaxis de la configuración de EIGRP
router(config)#router eigrp 240
router(config-router)#network network-number
router(config-if)#bandwidth kilobits
router(config-router)#eigrp log-neighbor-changes


router eigrp 240 especifica como protocolo de enrutamiento a EIGRP  para el sistema autonomo 240, este valor varia de 1 a 65535
network específica las redes directamente conectadas al router que serán anunciadas por EIGRP
bandwidth  el proceso de enrutamiento utiliza el comando bandwidth para calcular la métrica y es conveniente configurar el comando para que coincida con la velocidad de línea de la interfaz.
log-neighbor-changes habilita el registro de los cambios de adyacencia de vecinos para monitorear la estabilidad del sistema de enrutamiento y para ayudar a detectar problemas.

En versiones actuales de IOS EIGRP agrega al comando network  la correspondiente wilcard  esto permite al protocolo la identificación de subredes,
router(config)#router eigrp 240
router(config-router)#network 192.168.16.0 0.0.0.255


Algunos comandos para la verificación y control EIGRP son:
show ip routeMuestra la tabla de enrutamiento
show ip protocolsMuestra los parámetros del protocolo
show ip eigrp neighbors
Muestra la información de los vecinos EIGRP
show ip eigrp topology
Muestra la tabla de topología EIGRP
debug ip eigrp
Muestra la información de los paquetes

AGRADECER NO CUESTA NADA!!!

Proceso de creación de VLSM

Siguiendo el ejemplo anterior, la red 192.168.1.0/24 será divida en 14 subredes validas:
Se obtienen las siguientes subredes:
192.168.1.0/28192.168.1.16/28192.168.1.32/28192.168.1.48/28192.168.1.64/28192.168.1.80/28192.168.1.96/28192.168.1.112/28192.168.1.128/28192.168.1.144/28192.168.1.160/28192.168.1.176/28192.168.1.192/28192.168.1.208/28192.168.1.224/28192.168.1.240/28
Observe que se tomara en cuenta la 192.168.1.0 al configurar el ip subnet-zero y que se descartara la última quedando un total de 15 subredes validas.
Para el enlace serial entre los router se utilizara una mascara /30 que nos permita el uso de dos host. Elija una de las subredes creadas en el paso anterior, esta subred elegida NO podrá utilizarse con la mascara /28 puesto que se segura dividiendo en mas subredes mas pequeñas.
Paso 1-Piense en binario
Paso 2-la red 192.168.1.0/24 se divide en subredes con una mascara /28, escriba en binario el ultimo octeto
/24      /28
    0000 |  0000 =0
    0001 |  0000 =16
    0010 |  0000 =32
     . . . . | . . .
    1000 | 0000 =128
     . . . . | . . . 

    
Paso 3-Elija una de las subredes para dividirla con una mascara /30, en este caso la 128. Trace una línea que separe los bits con la mascara /28 y otra que separe a los bits con mascara /30. Las subredes se obtienen haciendo las combinaciones correspondientes entre el bits 128 y los contenidos entre las dos paralelas.
                                                                                                                                                                                                                                                                                                                   -                                                                                                                                                                                                                                                                                                                    /24     /28  /30
    1000 | 00 | 00 =128
    1000 | 01 | 00 =132
    1000 | 10 | 00 =136
    1000 |11  | 00 =140

                                                                                                                                                                                                                                                                                                              
Paso 4- Las direcciones de host se obtienen haciendo la combinación con los dos bits libres en cada una de las subredes obtenidas.- Las direcciones de host se obtienen haciendo la combinación con los dos bits libres en cada una de las subredes obtenidas.
Ejemplo con una red clase B
172.16.0.0/16  se divide en subredes con una mascara /21 elijo para seguir el proceso la
172.16.8.0/21  se divide en subredes con una mascara /24 elijo para seguir el proceso la
172.16.10.0/24 se divide en subredes  con una mascara /26 elijo para seguir el proceso la
172.16.10.128/26 se divide en subredes  con una mascara /30 elijo para seguir el proceso la
172.16.10.132/30

VLSM.bmp                                      

AGRADECER NO CUESTA NADA!!!

Proceso de configuración de OSPF en una sola área

Buscando en la red encontre este articulo que trata sobre OSPF, como configurarlo y llevarlo a la practica
espero que sea de su utilidad:


Habilitar OSPF  por medio del comando:
Router(config)#router ospf process-id
Router(config-router)#network address wildcard-mask area area-id


Donde:
process-id es el numero que se usa internamente para identificar si existen múltiples procesos OSPF en ejecución dentro del router.
network identifica las redes directamente conectadas, identificadas por medio de su correspondiente mascara de wildcard
area  para cada red, deberá identificar además a que área pertenece. El área principal o de Backbone es el área 0.
                         
La modificación del ID de router OSPF en una dirección loopback implica definirla de la siguiente manera:
Router(config)#interface loopback number
Router(config-if)#ip address ip-address subnet-mask

La modificación de la prioridad de router implica cambiar la prioridad OSPF de una interfaz por medio del siguiente comando:
Router(config-if)#ip ospf priority number
Router#show ip ospf interface type number


Calculo del coste del enlace
El coste se calcula usando la formula 108/bandwidth donde el ancho de banda se expresa en bps. El cisco IOS determina automáticamente el coste basándose en el ancho de banda de la interfaz.
Para modificar el ancho de banda sobre la interfaz utilice el siguiente comando:
Router(config)#interface serial 0/0
Router(config-if)#bandwidth 64
Use el siguiente comando de configuración de interfaz para cambiar el coste del enlace:
Router(config-if)#ip ospf cost number
Comandos de autenticación OSPF
Router(config-if)#ip ospf authentication-key password
Router(config-router)#area area-number authentication
Router(config-if)#ip ospf message-digest-key key-id md5 encryption-type key
Router(config-router)#area area-id authentication message-digest


Para configurar los intervalos de Hello y de Dead en una interfaz utilizar los siguientes comandos
Router(config-if)#ip ospf hello-interval seconds
Router(config-if)#ip ospf dead-interval seconds

*En principio el router intentara utilizar un ID buscando interfaces virtuales o loopback,
si no encuentra configuración de las mismas lo hará con la interfaz física con la dirección IP mas alta.
*Los valores de los intervalos de Hello y de Dead deben coincidir en los router adyacentes para que OSPF
funcione correctamente.
*Ante la posibilidad de Flapping los routers esperan unos instantes antes de recalcular su tabla de enrutamiento.


Algunos comandos para el verificación y control OSPF son:
show ip routeMuestra la tabla de enrutamiento
show ip protocolsMuestra los parámetros del protocolo
show ip ospf neighborsMuestra la información de los vecinos OSPF
debug ip ospf eventsMuestra adyacencias, DR, inundaciones etc.
debug ip ospf packet
Muestra la información de los paquetes
debug ip ospf hello
Muestra las actualizaciones hello


AGRADECER NO CUESTA NADA!!!

martes, 9 de noviembre de 2010

IPTABLES Y NAT

En nuestros ejemplos vamos aprovechar las capacidades de control de conexiones que tienen las iptables. Primero, hay que tener en cuenta que el forwarding debe estar habilitado:
echo 1 > /proc/sys/net/ipv4/ip_forward
Y también recordar que para cambiar las reglas, primero hay que “borrar” las anteriores, por ejemplo:
iptables -F
iptables -t nat -F

Ahora veremos ejemplos particulares, en todos los ejemplos suponemos que las direcciones de nuestra red privada son 192.168.0.0/24 (es decir la máscara es de 24 bits: 255.255.255.0)

Sólo quiero hacer masquerading de una IP asignada dinámicamente

Caso común para un Linux que obtiene direcciones dinámicas de su proveedor de Internet, en el ejemplo lo doy con la interfaz ippp0, que es la que se usa para RDSI, pero podéis sustituirla por caulquier interfaz que uséis (eth0, ppp0...).
Además de hacer el NAT, vamos a permitir el tráfico ICMP (de los pings...) ya que está recomendado que así funcione. Veremos que las última 3 reglas, que no son obligatorias, peri os las recomiendo, lo que haces es descartar cualquier paquete que no sea de uina conexión previamente establecida.
# Habilito el NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0  \
     -j MASQUERADE
# Dejo pasar los paquetes ICMP
iptables -A INPUT -i ippp0 -p ICMP -j ACCEPT
# Acepto paquetes de conexiones ya establecidas
iptables -A INPUT -p TCP -m state --state RELATED \
    -j ACCEPT
# Rechazamos paquetes de conexiones nuevas
iptables -A INPUT -i ippp0 -m state --state NEW,INVALID -j DROP
# Rechazamos paquetes de forwarding de conexiones no establecidas
iptables -A FORWARD -i ippp0 -m state --state NEW,INVALID -j DROP

Pero también quiero permitir conexiones entrantes SSH y HTTP

Eso es fácil, antes de las últimas reglas “DROP” hay que poner unas que permitan las conexiones nuevas a esos puertos. Las reglas nos quedan de la siguiente forma:
# Habilito el NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0  \
    -j MASQUERADE
# Dejo pasar los paquetes ICMP
iptables -A INPUT -i ippp0 -p ICMP -j ACCEPT
# Permito conexiones al puerto 80 (HTTP)
iptables -A INPUT -i ippp0 -p TCP --dport 80 -m state --state NEW  \
    -j ACCEPT
# Permito conexiones al puerto 22 (SSH)
iptables -A INPUT -i ippp0 -p TCP --dport 22 -m state --state NEW  \
    -j ACCEPT
# Acepto paquetes de conexiones ya establecidas
iptables -A INPUT -p TCP -m state --state RELATED  \
    -j ACCEPT
# Rechazamos paquetes de conexiones nuevas
iptables -A INPUT -i ippp0 -m state --state NEW,INVALID -j DROP
# Rechazamos paquetes de forwarding de conexiones no establecidas
iptables -A FORWARD -i ippp0 -m state --state NEW,INVALID -j DROP

Si queréis “abrir” otros puestos, sólo tenéis que agregar esas nuevas reglas.

Tengo dirección IP fija, ¿como lo hago?

Es muy fácil, en vez de usar masquerading, vamos a usar una solución mejor: source NAT. Sólo hay que cambiar la regla del nat (la primera en los ejemplos anteriores). Si la interfaz que tiene la IP fija es la eth0, y la IP fija es la 111.111.111.111, nos quedaría:
# Habilito el SNAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 111.111.111.111
# Dejo pasar los paquetes ICMP
iptables -A INPUT -i eth0 -p ICMP -j ACCEPT
# Permito conexiones al puerto 80 (HTTP)
iptables -A INPUT -i eth0 -p TCP --dport 80 -m state --state NEW  \
    -j ACCEPT
# Permito conexiones al puerto 22 (SSH)
iptables -A INPUT -i eth0 -p TCP --dport 22 -m state --state NEW  \
    -j ACCEPT
# Acepto paquetes de conexiones ya establecidas
iptables -A INPUT -p TCP -m state --state RELATED  \
    -j ACCEPT
# Rechazamos paquetes de conexiones nuevas
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
# Rechazamos paquetes de forwarding de conexiones no establecidas
iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP

Vale, pero ahora quiero redireccionar las conexiones a un puerto hacia un ordenador interno de mi LAN

Esto se llama destination NAT es bastante sencillo, sólo hay que poner una regla adicional. Por ejemplo, si queremos redireccionar las conexiones al puerto 80 hacia el puerto 80 de un ordenador en la red interna (192.168.0.111).
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
           --to 192.168.0.111:80
Otro ejemplo sencillo y muy útil, redireccionar el puerto 2022 del ordenador haciendo de NAT o firewall hacia el puerto 22 (ssh) de un ordenador de la red interna.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT \
           --to 192.168.0.111:22



AGRADECER NO CUESTA NADA!!!

domingo, 7 de noviembre de 2010

Filtrado Web con Dansguardian, ClamAV y Squid

Desde hace un tiempo estamos utilizando Dansguardian (junto con Squid) para gestionar y controlar el tráfico de navegación en distintas redes, las cuales administramos junto con mi equipo de trabajo.
Los gateways que instalamos son equipos basados en Debian Sarge y utilizan la (famosa) combinación dePostfix + ClamAV + Amavis para filtrar los correos electrónicos entrantes y salientes eliminando así cerca del 98% de los virus (aunque JAMÁS vi entrar un virus por correo, pero no me puedo permitir decir que la eficacia es del 100%) y entre el 60% y el 90% del SPAM .
El único punto flaco del asunto era poder realizar un chequeo de los archivos que se descarguen, razón por la cual aprovechamos la estructura montada para probar la última versión de DG ya que la versión ‘ APTeable ‘ de DG para Sarge (2.8.0.4-2) no viene integrada para trabajar con un sistema AV .

2- Pre requisitos
En éste documento se da por sentado el hecho de que el equipo en el cual se trabaja tenga instalados y funcionando Squid , Amavis y ClamAV . En nuestro caso particular el demonio ClamAV corre como usuario ‘amavis‘ ya que el demonio de Amavis es quien, luego de hacer el análisis bayesiano a cada correo, solicita el escaneo AV a ClamAV . Éste hecho es importante saberlo porque para nuestro caso (que puede diferir del tuyo) el demonio Dansguardian va a tener que correr también como el usuario ‘amavis‘.
3- Antes de comenzar
Antes de ponernos de lleno con el asunto en cuestión, estimado lector, quiero que sepas que los pasos que describiré a continuación no son necesariamente los mismos que hicimos junto con mis colegas durante las horas de prueba y error (y bastante cafeína).
Algunas cosas (como las dependencias) han salido de tener que comernos algún error durante la compilación (situación a la cual, estoy mas que seguro, ya estás acostumbrado), pero el orden que aquí se les dará a los distintos pasos esta pensado para hacer todo el proceso mas rápido, sencillo y medianamente ‘amigable’. podrás ver que los pasos a seguir tienen los comandos que vas a necesitar para que puedas copiar-y-pegar (nada de andar escribiendo mucho, he dicho).
Obviamente puede ser que encuentres algún error o no estés de acuerdo con algo, caso en el cual estás más que invitado a colaborar.
4- Las dependencias
Los binarios y fuentes de las librerías de compresión y de Amavis están ‘APTeables‘ para Debian Sarge por lo cual su instalación es sencilla:
apt-get install zlib-bin zlib1g-dev libclamav-dev
También se necesita la versión 6 (o superior) de PCRE , en el caso de Debian Sarge va a ser necesario actualizarlo por lo que descargamos los sources y compilamos:
#cd /usr/src
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-6.7.tar.gz
#tar -xvzf pcre-6.7.tar.gz
#cd pcre-6.7
#./configure --libdir=/usr/lib
#make && make install && make clean
5- Consiguiendo Dansguardian
Ya estamos en condiciones de comenzar con DG . Te recomiendo que visites el sitio oficial para ponerte al día.
Nosotros hemos utilizado la versión 2.9.7.5 que, hasta el día de hoy, es la versión alpha (ya existe la versión 2.9.8 beta ).
Si es posible, revisa el historial de DG para que sepas que versión alpha hay disponible y los fixes y mejoras agregados.
#cd /usr/src
#wget http://dansguardian.org/downloads/2/Alpha/dansguardian-2.9.7.5.tar.gz
#tar -xvzf dansguardian-2.9.7.5.tar.gz
#cd dansguardian-2.9.7.5
#./configure --enable-clamd --localstatedir=/usr/local/ --prefix=/usr/local --sysconfdir=/etc bindir=/usr/local/sbin/
Antes de compilarlo es importante que verifiques que existan el grupo y el usuario ‘nobody’ , en caso contrario hay que crearlos:
#addgroup nobody
#adduser nobody
Una vez creados:
#make && make install && make clean
6- Post-instalación
6.1- Ajustes a ClamAV
El archivo de socket de Clamd para Unix debe llamarse ‘ clamd.ctl’ . De paso podemos verificar que el usuario que ejecuta Clamd sea ‘amavis’ (necesario para mi caso).
En el archivo /etc/clamav/clamd.conf:
LocalSocket /var/run/clamav/clamd.ctl
User amavis
Si vas a cambiar el usuario que corre ClamAV es necesario que verifiques que el propietario de las carpetas/var/log/clamav y /var/log/clamav sea el usuario ‘amavis’ .
#chown amavis.amavis /var/run/clamav -R
#chown amavis.amavis /var/log/clamav -R
6.2- Ajustes de Squid
En el proxy solo hay que cambiar el puerto al que escucha ya que DG será el que atienda las peticiones en el puerto 8080. Por defecto DG está configurado para comunicarse con Squid mediante el puerto 3128.
En el archivo /etc/squid/squid.conf debes verificar que el puerto esté seteado:
http_port 3128
Otros ajustes más personalizados de Squid quedarán a tu criterio, pero que lo debes tener en cuenta es que a partir de que DG se interponga entre Squid y los equipos clientes las peticiones hechas al proxy serán todas provenientes de la IP 127.0.0.1, lo cual inutilizará cualquier tipo de ACL que tengas configurada.
6.3- Ajustes a Dansguardian
En el archivo de configuración de DG es necesario cambiar algunas cosas parea que éste funcione. Tené en cuenta que algunas son cosas necesarias y van mas allá de la optimización o adaptación a tus necesidades.
En /etc/dansguardian/dansguardian.conf cambiar:
daemonuser='amavis'
daemongroup='amavis'
Descomentar la linea que dice:
contentscanner='/etc/dansguardian/contentscanners/clamdscan.conf'
En nuestro caso utilizamos Sarg para levantar los logs de navegación. Puntualmente hemos configurado DGpara que genera los logs en el mismo formato que Squid y solo cambiamos la carpeta donde Sarg buscará los logs .
Cambiar el destino de los logs y el formato:
loglocation='/var/log/dansguardian/access.log'
logfileformat = 3
NOTA: hay que cambiar, entonces, en el archivo /etc/squid/sarg.conf la carpeta de logs:
access_log /var/log/dansguardian/access.log
Editar el archivo /etc/dansguardian/contentscanners/clamdscan.conf y descomentar la linea que dice:
clamdudsfile='/var/run/clamav/clamd.ctl'
Crear como root el directorio /var/log/dansguardian y cambiar dueño y grupo para amavis . Si ya esta creado, solo cambiar los permisos.
#chown amavis.amavis dansguardian/ -R
7- Finalizando la instalación
Ahora solo restan dos pasos para dejar todo correctamente configurado.
7.1- Creación del script de arranque
Éste script será el que nos ayude a iniciar, detener y reiniciar el servicio de Dansguardian El mismo será llamado ‘dansguardian‘ a secas y será copiado a la carpeta /etc/init.d.
El contenido del mismo deberá ser:
#! /bin/sh
# Script startup para Dansguardian
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/dansguardian
NAME=dansguardian
DESC="DansGuardian"
CONFFILELOCATION=/etc/dansguardian/
set -e
case "$1" in
start)
echo -n "Iniciando $DESC: "
$DAEMON
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}" >&2
exit 1
;;
esac
exit 0
7.2- Configurando el arranque automático
Para que DG arranque automáticamente cuando inicie el sistema simplemente utilizamos el comando update-rc.d.
Lo único que hay que tener en cuenta es que DG debe iniciar solo después de Squid . Por lo cual será conveniente colocarle un número de prioridad mayor que el de éste último.
Para verificar la prioridad de arranque:
#ls -l /etc/rc2.d/
y buscamos la línea que dice:
S30squid -> ../init.d/squid
En éste caso debemos darle prioridad mayor que 30 para que DG arranque luego de Squid , entonces el comando que utilizaremos será:
#update-rc.d dansguardian defaults 40
8- Enlaces
Algunos enlaces interesantes
Sitio oficial de Dansguardian : http://www.dansguardian.org/
Sitio oficial de Amavis: http://www.amavis.org
Sitio oficial de Squid: http://www.squid.org
Sitio oficial de ClamAV: http://www.clamav.net


AGRADECER NO CUESTA NADA!!!!