Configuración de squidGuard Borre el contenido del archivo original de configuración de SquidGuard y copie el siguiente. Si va a cambiar su contenido, tenga especial cuidado con los comentarios: No comente el contenido entre corchetes.
source /etc/fws/infraestructura.sh
SRV=( ${ listados['SRV'] } )
cat << MAFI > /etc/squidguard/squidGuard.conf
###########################################################################
#### Archivo de configuración para squidGuard ####
#### NO USE COMENTARIOS DENTRO DE {}
## Directorio de listas negras y log
dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
### ACL de tiempo.
## ¿Son estos los horarios que necesita?
time laboral {
weekly * 00 : 15 - 12 : 29
weekly * 13 : 15 - 23 : 55
}
time almuerzo {
weekly * 12 : 30 - 13 : 14
}
###########################################################################
### Clases de Filtrado
## Para agregar más, busque en el directorio especificado en dbhome, y revise el contenido de cada directorio.
## Dominios a los que se permite su acceso por parte de algunos usuarios
## Se recomienda el nombre sitios_{nombre}
#dest sitios_{nombre} {
# domainlist custom/{nombre}.lst
# log destino.log
#}
# URL especificas que, si bien incluidos en las listas negras, se confía para su acceso a TODOS los usuarios de la red. Por lo general, para sitios de actualizaciones y ese tipo de cosas
dest sitios {
domainlist custom/sitios .lst
log destino.log
}
dest adv {
domainlist BL/adv /domains
log destino.log
}
dest archivos {
expressionlist custom/extensiones .lst
log destino.log
}
dest compras {
domainlist BL/shopping /domains
log destino.log
}
dest descargas {
domainlist BL/downloads /domains
log destino.log
}
dest deportes {
domainlist BL/recreation /sports/domains
log destino.log
}
dest foros {
domainlist BL/forum /domains
log destino.log
}
dest juegos {
domainlist BL/gamble /domains
log destino.log
}
dest juegos-online {
domainlist BL/hobby /games-online/domains
log destino.log
}
dest juegos-misc {
domainlist BL/hobby /games-misc/domains
log destino.log
}
dest musica {
domainlist BL/music /domains
log destino.log
}
dest peliculas {
domainlist BL/movies /domains
log destino.log
}
dest porn {
domainlist BL/porn /domains
log destino.log
}
dest proxy {
domainlist BL/anonvpn /domains
log destino.log
}
dest radio {
domainlist BL/webradio /domains
log destino.log
}
dest redes {
domainlist BL/socialnet /domains
log destino.log
}
dest sexo {
domainlist BL/sex /lingerie/domains
log destino.log
}
dest tracker {
domainlist BL/tracker /domains
log destino.log
}
dest warez {
domainlist BL/warez /domains
log destino.log
}
dest web-proxy {
domainlist BL/redirector /domains
log destino.log
}
dest web-tv {
domainlist BL/webtv /domains
log destino.log
}
dest webphone {
domainlist BL/webphone /domains
log destino.log
}
###########################################################################
## ACL de redes
## Combine acá las ACL de tiempo y redes.
## Especifique en el archivo /var/lib/squidguard/db/custom/irrestrictos.lst aquellas IP que puedan navegar sin restricciones
## Especifique en el archivo /var/lib/squidguard/db/custom/restrictos.lst aquellas IP que no deban tener navegación.
## IP de usuario a los que se les permite el acceso a sitios_{nombre}
#src lista_{nombre} {
# iplist custom/usuarios_{nombre}.lst
# within laboral
#}
src lista_blanca {
iplist custom/irrestrictos .lst
within laboral
}
src lista_negra {
iplist custom/restrictos .lst
within laboral
}
## Empiezan sus reglas personalizadas
src usuarios_laboral {
$(for r in ${ listados_red['LAN'] } ; do printf "ip %s \ n" $r ; done )
within laboral
}
src usuarios_almuerzo {
$(for r in ${ listados_red['LAN'] } ; do printf "ip %s \ n" $r ; done )
within almuerzo
}
## Empiezan las acl_rules personalizadas
# ACL RULES:
# Propiamente dichas, los nombres se corresponden con las ACL de redes.
# Agregue lo siguiente entre lista-negra y usuarios-laboral
# lista_{nombre} {
# pass sitios_{nombre}
# }
# Para habilitar el acceso de los usuarios en lista_{nombre} a los sitios especificados en sitios_{nombre}
acl {
lista_blanca {
pass any
}
lista_negra {
redirect http:// $(echo ${ SRV[0] } | cut -d '/' -f 1 )/index.php?purl=%u&razon=%t
} else {
redirect http:// $(echo ${ SRV[0] } | cut -d '/' -f 1 )/index.php?purl=%u&razon=%t }
usuarios_laboral {
pass sitios !in-addr !adv !archivos !compras !descargas !deportes !foros !juegos !juegos-online !juegos-misc !musica !peliculas !porn !proxy !radio !redes !sexo !tracker !warez !web-proxy !web-tv !webphone !any
redirect http:// $(echo ${ SRV[0] } | cut -d '/' -f 1 )/index.php?purl=%u&razon=%t
}
usuarios_almuerzo {
pass sitios !in-addr !adv !archivos !compras !descargas !juegos !porn !proxy !radio !sexo !tracker !warez !web-proxy !any
redirect http:// $(echo ${ SRV[0] } | cut -d '/' -f 1 )/index.php?purl=%u&razon=%t
}
default {
pass none
redirect http:// $(echo ${ SRV[0] } | cut -d '/' -f 1 )/index.php?purl=%u&razon=%t
}
}
MAFI
Personalizando la configuración Obtener las listas negras a las que se hace referencia en el fichero anterior. No ubicamos en el directorio correspondiente, descargamos y descomprimimos
cd /var/lib/squidguard/db/
wget http://www.shallalist.de/Downloads/shallalist.tar.gz
tar -xzvf shallalist.tar.gz
Ejecute lo siguientes comandos para crear ficheros donde guardar personalizaciones básicas.
mkdir /var/lib/squidguard/db/custom
touch /var/lib/squidguard/db/custom/{ ,ir} restrictos.lst
source /etc/fws/infraestructura.sh
SRV =( ${ listados [ 'SRV' ] } )
cat << MAFI > /var/lib/squidguard/db/custom/sitios.lst
$( echo $SRV [ 0] | cut -d '/' -f 1)
gob.sv
typepad.com
blogspot.com
wordpress.com
MAFI
cat << MAFI > /var/lib/squidguard/db/custom/extensiones.lst
.\.(com|exe|pif|scr|vbe|vbs|wsf|bat|inf|reg|lnk|url|iso|chm|hlp|avi|wma|wmf|mp3|drv|ovr|dll|torrent)$
MAFI
Para una explicacion exhaustiva de los ficheros anteriormente creados, puede remitirse a Extendiendo el proxy de su servidor Firewall
Normalice permisos a todos los archivos que ha creado:
chown -R proxy:proxy BL custom
Despliegue de configuración Reinicie squid, quién se encarga de iniciar/apagar a squidGuard.
systemctl restart squid.service
Ahora debe revisar los log de squidGuard, (tail -f /var/log/squidguard/squidGuard.log
). Es posible que vea la siguiente línea por un tiempo considerable. Que indica que por el considerables tamaño de esa lista, le es más difícil a squidGuard crear la base de datos correpondiente
2015-03-07 12:46:40 [ 7651] init domainlist /var/lib/squidguard/db/BL/porn/domains
La siguiente linea marca el momento en que el proxy es capaz de recibir peticiones. No acepte nada menos que esto, otro mensaje indica algún error que debe ser revisado.
2013-06-04 09:12:15 [ 3348] INFO: squidGuard ready for requests ( 1370358735.429)
Pese a lo anteriormente dicho, podría aceptar también esta línea (Muchas, de hecho) si ha tardado mucho en revisar los log.
2015-03-26 12:29:31 [ 14125] INFO: recalculating alarm in 30 seconds
Prueba de configuración La prueba más convincente de la configuración de filtro de contenido es ver a usuarios reales navegando realmente. En ese caso, necesita avanzar en Otras configuraciones importantes hasta Configuración de Mensajes de Error
Sin embargo, es posible verificar desde consola que las reglas en squidGuard funcionen tal como se espera. Ejecute desde consola el siguiente comando, cambiando 10.20.20.5
por una ip válida en su red, sin importar si algún equipo la tiene configurada:
echo "hola.org/- 10.20.20.5 - GET -" | squidGuard -c /etc/squidguard/squidGuard.conf -d
Las últimas lineas debe tener esta forma:
2017-07-13 08:31:59 [ 22635] INFO: squidGuard 1.5 started ( 1499956309.073)
2017-07-13 08:31:59 [ 22635] INFO: squidGuard ready for requests ( 1499956319.099)
2017-07-13 08:31:59 [ 22635] Request( usuarios_laboral/web-proxy/-) hola.org/- 10.168.4.5/- - GET REDIRECT
OK rewrite-url= "http://10.168.4.1/index.php?purl=hola.org/-&razon=web-proxy"
2017-07-13 08:31:59 [ 22635] INFO: squidGuard stopped ( 1499956319.099)
Por otro lado, el fingir navegar hacia www.google.com.sv:
echo "www.google.com.sv/- 10.20.20.5 - GET -" | squidGuard -c /etc/squidguard/squidGuard.conf -d
Debería devolver un mensaje como el siguiente. Acá, ERR
significa error en el sentido que la URL esta permitida y no necesita una redirección como la que se arroja en el anterior ejemplo
2017-07-13 08:33:58 [ 22639] INFO: squidGuard 1.5 started ( 1499956428.578)
2017-07-13 08:33:58 [ 22639] INFO: squidGuard ready for requests ( 1499956438.697)
ERR
2017-07-13 08:33:58 [ 22639] INFO: squidGuard stopped ( 1499956438.698)
Configuración avanzada El siguiente archivo lee los grupos de un servidor LDAP. Obviamente, usted puede configurar más grupos. Tome en cuenta que en el ejemplo existe dos grupos LDAP: Domains Admins
y http_noacces
y dos ACL de tiempo: laboral
y almuerzo
, estás dos últimas podría obviarlas o establecer un horario nocturno si es que necesita que sea diferente a laboral. Entonces, hay creadas dos src
por cada grupo para que coincida con las ACL de tiempo, lo que nos da cuatro src
, luego, tal como he hecho antes, debe configurar los permisos por cada `src en
###########################################################################
#### Archivo de configuración para squidGuard ####
#### NO USE COMENTARIOS DENTRO DE {}
## Directorio de listas negras y log
dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
###########################################################################
### Primeras configuraciones para USUARIOS Y GRUPOS LDAP
ldapbinddn cn=lectura,dc=empresa,dc=com
ldapbindpass PassUsuarioLectura
## ldap cache time in seconds
ldapcachetime 300
## Versión de LDAP a usar
ldapprotover 3
### ACL de tiempo.
## ¿Son estos los horarios que necesita?
time laboral {
weekly * 00:15 - 12:29
weekly * 13:15 - 23:55
}
time almuerzo{
weekly * 12:30 - 13:14
}
###########################################################################
### Clases de Filtrado
## Para agregar más, busque en el directorio especificado en dbhome, y revise el contenido de cada directorio.
## Dominios a los que se permite su acceso por parte de algunos usuarios
## Se recomienda el nombre sitios_{nombre}
#dest sitios_{nombre} {
# domainlist custom/{nombre}.lst
# log destino.log
#}
# URL especificas que, si bien incluidos en las listas negras, se confía para su acceso a TODOS los usuarios de la red. Por lo general, para sitios de actualizaciones y ese tipo de cosas
dest sitios {
domainlist custom/sitios.lst
log destino.log
}
dest adv {
domainlist BL/adv/domains
log destino.log
}
dest archivos {
expressionlist custom/extensiones.lst
log destino.log
}
dest compras {
domainlist BL/shopping/domains
log destino.log
}
dest descargas {
domainlist BL/downloads/domains
log destino.log
}
dest deportes {
domainlist BL/recreation/sports/domains
log destino.log
}
dest foros {
domainlist BL/forum/domains
log destino.log
}
dest juegos {
domainlist BL/gamble/domains
log destino.log
}
dest juegos-online {
domainlist BL/hobby/games-online/domains
log destino.log
}
dest juegos-misc {
domainlist BL/hobby/games-misc/domains
log destino.log
}
dest musica {
domainlist BL/music/domains
log destino.log
}
dest peliculas {
domainlist BL/movies/domains
log destino.log
}
dest porn {
domainlist BL/porn/domains
log destino.log
}
dest proxy {
domainlist BL/anonvpn/domains
log destino.log
}
dest radio {
domainlist BL/webradio/domains
log destino.log
}
dest redes {
domainlist BL/socialnet/domains
log destino.log
}
dest sexo {
domainlist BL/sex/lingerie/domains
log destino.log
}
dest tracker {
domainlist BL/tracker/domains
log destino.log
}
dest warez {
domainlist BL/warez/domains
log destino.log
}
dest web-proxy {
domainlist BL/redirector/domains
log destino.log
}
dest web-tv {
domainlist BL/webtv/domains
log destino.log
}
dest webphone {
domainlist BL/webphone/domains
log destino.log
}
###########################################################################
## ACL de redes
## Combine acá las ACL de tiempo y redes.
## Especifique en el archivo /var/lib/squidguard/db/custom/irrestrictos.lst aquellas IP que puedan navegar sin restricciones
## Especifique en el archivo /var/lib/squidguard/db/custom/restrictos.lst aquellas IP que no deban tener navegación.
## IP de usuario a los que se les permite el acceso a sitios_{nombre}
#src lista_{nombre} {
# iplist custom/usuarios_{nombre}.lst
# within laboral
#}
src lista_blanca {
iplist custom/irrestrictos.lst
within laboral
}
src lista_negra {
iplist custom/restrictos.lst
within laboral
}
## Empiezan sus reglas personalizadas
# Grupo Domains Admins
src domain_admins_usuarios_laboral {
<<redlan>>
ldapusersearch ldap://<<serverldap>>/cn=Domain%20Admins,<<basegrupos>>?memberUid?sub?(&(objectclass=sambaGroupMapping)(memberUid=%s))
within laboral
log users
}
src domain_admins_usuarios_almuerzo {
<<redlan>>
ldapusersearch ldap://<<serverldap>>/cn=Domain%20Admins,<<basegrupos>>?memberUid?sub?(&(objectclass=sambaGroupMapping)(memberUid=%s))
within almuerzo
log users
}
# Grupo no http_noacces
src http_noacces_usuarios_laboral {
<<redlan>>
ldapusersearch ldap://<<serverldap>>/cn=http_noacces,<<basegrupos>>?memberUid?sub?(&(objectclass=sambaGroupMapping)(memberUid=%s))
within laboral
log users
}
src http_noacces_usuarios_almuerzo {
<<redlan>>
ldapusersearch ldap://<<serverldap>>/cn=http_noacces,<<basegrupos>>?memberUid?sub?(&(objectclass=sambaGroupMapping)(memberUid=%s))
within almuerzo
log users
}
## Empiezan las acl_rules.
# ACL RULES:
# Propiamente dichas, los nombres se corresponden con las ACL de redes.
# Agregue lo siguiente entre lista-negra y usuarios-laboral
# lista_{nombre} {
# pass sitios_{nombre}
# }
# Para habilitar el acceso de los usuarios en lista_{nombre} a los sitios especificados en sitios_{nombre}
acl {
lista_blanca {
pass any
}
lista_negra {
redirect http://$(echo ${SRV[0]} | cut -d '/' -f 1)/index.php?purl=%u&razon=%t
}else{
redirect http://$(echo ${SRV[0]} | cut -d '/' -f 1)/index.php?purl=%u&razon=%t }
domain_admins_usuarios_laboral {
pass sitios !in-addr !adv !archivos !compras !descargas !deportes !foros !musica !peliculas !porn !proxy !radio !redes !sexo !tracker !warez !web-proxy !web-tv !webphone !any
redirect http://<<ipaddresslan>>/index.php?purl=%u&razon=%t
}
domain_admins_usuarios_almuerzo {
pass sitios !in-addr !adv !archivos !compras !descargas !porn !proxy !radio !sexo !tracker !warez !web-proxy !any
redirect http://<<ipaddresslan>>/index.php?purl=%u&razon=%t
}
http_noacces_usuarios_laboral {
pass sitios !in-addr !adv !archivos !compras !descargas !deportes !foros !musica !peliculas !porn !proxy !radio !redes !sexo !tracker !warez !web-proxy !web-tv !webphone !any
redirect http://<<ipaddresslan>>/index.php?purl=%u&razon=%t
}
http_noacces_usuarios_almuerzo {
pass sitios !in-addr !adv !archivos !compras !descargas !porn !proxy !radio !sexo !tracker !warez !web-proxy !any
redirect http://<<ipaddresslan>>/index.php?purl=%u&razon=%t
}
default {
pass none
redirect http://<<ipaddresslan>>/index.php?purl=%u&razon=%t
}
}
Personalizando la configuración La siguiente configuración es un poco más complicada de lo usual en la medida que sea más complicado para usted usar su propio servidor LDAP. Sin embargo, los siguientes datos pueden funcionar para un servidor configurado según el esquema rfc230bis .
Configure ldapbinddn
con el DN de un usuario de lectura sin límites en las lecturas sobre el árbol LDAP. Es decir, los mismo permisos que su administrador pero de LECTURA. Configure ldapbindpass
con la contraseña de dicho usuario, que como nos gusta resaltar, será mejor si sus permisos son de sólo lectura. Los siguientes comandos configuran el resto del archivo. Esperando que usted conozca bien los datos del servidor al cual se ha de conectar Cambie 10.40.30.5 por la dirección IP del servidor LDAP sed -i 's/<<serverldap>>/10.40.30.5/g' /etc/squidguard/squidGuard.conf
Cambie ou=Groups,dc=empresa,dc=com por la base de los grupos LDAP sed -i 's/<<basegrupos>>/ou=Groups,dc=empresa,dc=com/g' /etc/squidguard/squidGuard.conf