Páginas

viernes, 15 de febrero de 2013

Servidor DNS Squid y Filtrado

Instalar ipkg en Synology ds112plus

La idea es que los clientes de la red salgan a Internet a través del proxy e implementar un sistema de filtrado para bloquear publicidad de terceros, sitios conocidos de malware, spyware, filtrar contenido, etc. Esto último desde el propio squid y utilizando el paquete de listas negras blacklists.

La versión DSM 4.1 de Synology ya incluye un servidor DNS por lo que sencillamante se instala y ejecuta. Para integrar toda la red puede utilizarse un dominio interno o grupo de trabajo. En este caso linux.bcn. Si se fija en la parte inferior de la imagen verá que pone Report Bugs, esto es porque acabo de actualizar (no es recomendable) a la versión Beta 4.2 del sistema operativo de Synology.

Entramos al nas a través del explorador:


Archivo /etc/hosts


Desde el cliente configurar resolv.conf impedir que el gestor de redes NetworkManager lo modifique al reiniciar y comprobar que el servidor dns funcione. En la primera consulta (Query time) tarda 78 mseg y en la segunda 1 mseg
[carlos@gentoo ~]$ dig @ds112plus google.es




Conectarnos al nas via ssh desde la terminal de Arch linux



Instalar squid utilizando ipkg en mi caso lo había instalado con anterioridad desde un cliente centos 6:
ds112plus> ipkg install squid


Inicializar directorios cahe:
ds112plus> squid -z

Iniciar squid:
ds112plus> /opt/etc/init.dS80squid start


Squid se inicia sin errores. Configurar squid utilizando el archivo de configuración squid.conf que he movido a la carpeta /opt/etc/squid/squid.conf. A continuación el archivo completo construido a partir del archivo de http://wl500g.info y de un pdf encontrado en la red cuya autoría pertenece a Jorge García Delgado con licencia crative commons (adjuntar listas negras a servidor proxy squid).
Comprobado en un nas Synology ds112+.

Descargar listas negras completas desde squidguard, crear carpeta listasnegras y descomprimir blacklists:
ds112plus> wget http://squidguard.mesd.k12.or.us/blacklists.tgz




# configuracion avanzada original mas wl500 url
# http://wl500g.info/showthread.php?17287-NAS-Create-your-own-caching-proxy
cache_mgr foot@gmail.com
visible_hostname fake.domain 
cache_replacement_policy lru
# directorio cache 20 Gb
cache_dir ufs /opt/var/squid/cache/ 20000 16 256
minimum_object_size 0 KB
maximum_object_size 2097152 KB
maximum_object_size_in_memory 1024 KB
#
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
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 listanegra1 urlpath_regex "/opt/etc/squid/listasnegras/blacklists/redirector/urls"
acl listanegra2 urlpath_regex "/opt/etc/squid/listasnegras/blacklists/spyware/urls"
acl listanegra3 urlpath_regex "/opt/etc/squid/listasnegras/blacklists/gambling/urls"
acl CONNECT method CONNECT
http_access allow manager localhost
icp_access deny all
http_port 192.168.1.254:3128
http_port 192.168.1.254:8080
hierarchy_stoplist cgi-bin ?
access_log /opt/var/squid/logs/access.log squid
refresh_pattern ^ftp:  1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern .  0 20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /opt/var/squid/cache
# Leave coredumps in the first cache dir
coredump_dir /opt/var/squid/cache
#
# Disable cachemgr password
cachemgr_passwd none all
#
refresh_pattern \.gif 1440 50% 40320 reload-into-ims
refresh_pattern \.jpg 1440 50% 40320 reload-into-ims
refresh_pattern \.tif 4320 50% 43200
refresh_pattern \.png 1440 50% 40320 reload-into-ims
refresh_pattern \.jpeg 1440 50% 40320 reload-into-ims
refresh_pattern ^http://*.google.*/.* 720 100% 4320
#
# refresh patterns to enable caching of MS windows update
refresh_pattern windowsupdate\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern update\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern office\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960
refresh_pattern windowsupdate\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern download\.microsoft\.com/.*\.(cab|exe|psf) 4320 100% 120960 reload-into-ims
refresh_pattern microsoft\.com 4320 100% 10080
#
# Rendre le proxy indetectable
via off
forwarded_for off # permet de masquer l'ip du client
header_access From deny all
header_access Server deny all
header_access WWW-Authenticate deny all
header_access Link deny all
header_access Cache-Control deny all
header_access Proxy-Connection deny all
header_access X-Cache deny all
header_access X-Cache-Lookup deny all
header_access Via deny all
header_access Forwarded-For deny all
header_access X-Forwarded-For deny all
header_access Pragma deny all
header_access Keep-Alive deny all
#
# limpieza automatica del cache de squid
cache_swap_low 90
cache_swap_high 95
# paginas de error castellano
error_directory /opt/share/squid/errors/Spanish

Comprobar fichero de configuración:
ds112plus> squid -k parse


Si se inicia Squid como root sin establecer cache_effective_user, Squid utiliza nobody como valor por defecto.
ds112plus> ps | grep squid 
 9537 root      5032 S    /opt/sbin/squid -f /opt/etc/squid/squid.conf
 9549 nobody   16484 S    (squid) -f /opt/etc/squid/squid.conf
13581 root      3552 S    grep squid


Configurar clientes para utilizar proxy: 


En Gentoo Linux
export http_proxy=http://192.168.1.254:8080

Arch linux Firefox:


Arch linux Chromium



Arch linux utilizando NetworkManager automático o manual:



Linux es genial!.