Configuración de Squid.
***NO INCLUYE PASOS DE INSTALACIÓN DEL SQUID*** (Software: IpTables, Squid)
Parámetro HTTP_PORT
http_port 3128 //Ya que por lo general se tiene el servicio apache corriendo en el puerto 80
Parámetro VISIBLE_HOSTNAME
visible_hostname CUALQUIERNOMBRE //El nombre es irrelevante pero debe ser declarado
Parámetro CACHE_MEM
cache_mem 32 MB // Cantidad de memoria que se asignará para el cache del Proxy
Parámetro CACHE_DIR
cache_dir 400 MB //mientras más espacio en el cache más páginas puede almacenar, por lo que se supone que menos ancho de banda se ocupará
ACL (Lista de control de accesos)
Las lista de control de acceso se definen asi:
acl (Nombre de la lista) src (Red o equipos que componen la lista)
acl todalared src 192.168.0.0/255.255.255.0
alc maquinas_permitidas “/etc/squid/maquinas_permitidas”
Parámetro HTTP_ACCESS (Reglas de control de acceso)
La sintáxis de las reglas de control de acceso son así:
http_access (allow o deny) (lista de control de acceso)
Un ejemplo donde se da acceso a toda la red seria algo así:
http_access allow todalared
Otro ejemplo:
http_access allow maquinas_permitidas
También se pueden definir varias listas de acceso, una para aceptar y otra para denegar, para esto de usa el símbolo ! que significa excepción.
http_access allow gerencia !secretarias
Esta regla otorga acceso a la lista llamada gerencia y deniega el acceso a la lista secretarias.
El Proxy controla el acceso al puerto 80, ósea Web, los demás protocolos salen a través de NAT.
OJO: Squid no es capas de manejar protocolos como POP, IMAP y SMTP, por lo tanto para la salida y entrada del correo se debe usar NAT.
Parámetro CACHE_MGR
En caso que ocurra alguna catástrofe en el servidor, squid podrá avisar cuando ocurra algo.
administrador@delsquid.xxx
SQUID CACHE
El cache de Squid trabaja básicamente almacenando en el servidor las páginas que los usuarios visitan, así cuando el usuario vuelve a visitarla posteriormente u otro usuario solicita la misma página, esta no será cargada desde el hosting donde se aloja la página, sino será cargada desde el cache de nuestro Proxy. Squid Cache acelera la navegación de las páginas ya que al estar guardada se aprovecha el ancho de banda que sirve para otros servicios críticos que usan Internet.
Ahora para usar el cache debemos activar los siguientes parámetros:
HTTPD_ACCEL_HOST
HTTPD_ACCEL_PORT
HTTPD_ACCEL_WITH_PROXY
En mi configuración para en Proxy transparente, estos parámetros los deje así:
Hecho esta, ya tenemos el Proxy Squid activo, ahora solo falta configurar los mensajes de error, los que vienen en distintos idiomas, por defecto English, los que se localizan en /usr/lib/squid/errors. Primero debemos borrar el enlace simbólico en /etc/squid/errors, y establecer uno nuevo a /usr/lib/squid/errors/Spanish.
Ahora solo basta iniciar el servicio. /etc/init.d/squid start.
Luego necesitamos indicarle a nuestro firewall que nos redireccione todo el trafico en el puerto 80 proveniente desde nuestra red. Mi configuración quedo asi.
#HTTP
IPTABLES –t nat –A PREROUTING –i eth1 –p tcp –dport 80 –j REDIRECT –to-port 3128
Mi servidor posee 2 interfaces de red, donde eth0 esta conectada a Internet y eth1 a la red interna. Ahora tenemos un Proxy totalmente transparente, esto significa que en los clientes no necesitaremos cambiar nada. Este ejemplo es aplicable a cualquier servicio que necesite pasar por un Proxy
#FTP
IPTABLES –t nat –A PREROUTING –i eth1 –p tcp –dport 21 –j REDIRECT –to-port 3128
#HTTPS
IPTABLES –t nat –A PREROUTING –i eth1 –p tcp –dport 443 –j REDIRECT –to-port 3128
SOBRE FILTROS DE RESTRICCION DE ACCESO
La lista de sitios denegados, se debe guardar en un fichero en el disco duro, por ejemplo /etc/squid/denied_sites.
www.pornografía.com
sexo
meebo
facebook
sexo
porn
p0rn
xxx
XXX
Warez
Mp3
Jpeg
89.56.213.189
Ahora debemos crear una lista de control de acceso en squid.conf
acl denied_sites url_regex “/etc/squid/denied_sites”
Ahora debemos crear la regla de control de acceso.
http_access deny denied_sites
..quedaron algunos sitios bloqueados por error, y para resolver esto es necesario crear otra lista de acceso de la misma forma que la anterior, pero esta vez con los sitios admitidos. Esto lo cree en /etc/squid/appoved_sites y lo agrege a squid.conf como una lista de acceso.
acl approved_sites url_regex “/etc/squid/approved_sites”
Ahora creamos la regla de control de acceso, pero para esto usaremos la misma regla anteriormente creada para denegar, usando el símbolo de excepción !.
http_access deny denied_sites !approved_sites
SOBRE EL MSN
Se puede bloquear a través de Iptables con una simple regla
IPTABLES -A FORWARD -p tcp --dport 1863 -j REJECT
Pero el nuevo MSN también usa el puerto 80 cuando el 1863 esta bloqueado.
IPTABLES –t mangle –A PREROUTING –p tcp –dport 1836 –j DROP
While read msn; do
done < /etc/rules/ip-addresses-msn
Donde el fichero “ip-addresses-msn” contiene una lista con todas las IPs de los servidores de Hotmail, 44 en total.
63.208.13.126
64.4.12.200
64.4.12.201
65.54.131.249
65.54.194.118
65.54.211.61
207.46.104.20
207.46.110.2
207.46.110.254
207.46.245.222
207.46.245.214
messenger.hotmail.com
messenger.msn.com
messenger.microsoft.com
echo-v1.msgr.hotmail.com
echo-v2.msgr.hotmail.com
login.passport.net
messenger.t1msn.com.mx
65.54.226.246
65.54.226.252
65.54.228.243
65.54.228.254
65.54.229.246
65.54.229.254
65.54.225.244
65.54.225.252
loginnet.passport.com
65.54.225.241
65.54.225.254
65.54.226.247
65.54.226.254
65.54.228.244
65.54.228.253
65.54.229.248
65.54.229.253
login.passport.com
65.54.231.240
65.54.230.240
207.68.173.245
64.202.167.129
63.241.128.250
207.68.173.245
config.messenger.msn.com
El único problema es que esta regla bloquea el mail y todos los servicios de Hotmail, no solo el MSN. Ahora la única regla que funciona adecuadamente es agregar una lista de control de acceso a Squid.
acl msn_messenger req_mime_type –i ^application/x-msn-messenger$
acl msn_messenger2 url_regex -i gateway.dll
y luego aplicar la regla de control de acceso respectiva
http_access deny msn_messenger
http_reply_access deny msn_messenger2
Todo listo!!!
Parámetro HTTP_PORT
http_port 3128 //Ya que por lo general se tiene el servicio apache corriendo en el puerto 80
Parámetro VISIBLE_HOSTNAME
visible_hostname CUALQUIERNOMBRE //El nombre es irrelevante pero debe ser declarado
Parámetro CACHE_MEM
cache_mem 32 MB // Cantidad de memoria que se asignará para el cache del Proxy
Parámetro CACHE_DIR
cache_dir 400 MB //mientras más espacio en el cache más páginas puede almacenar, por lo que se supone que menos ancho de banda se ocupará
ACL (Lista de control de accesos)
Las lista de control de acceso se definen asi:
acl (Nombre de la lista) src (Red o equipos que componen la lista)
acl todalared src 192.168.0.0/255.255.255.0
alc maquinas_permitidas “/etc/squid/maquinas_permitidas”
Parámetro HTTP_ACCESS (Reglas de control de acceso)
La sintáxis de las reglas de control de acceso son así:
http_access (allow o deny) (lista de control de acceso)
Un ejemplo donde se da acceso a toda la red seria algo así:
http_access allow todalared
Otro ejemplo:
http_access allow maquinas_permitidas
También se pueden definir varias listas de acceso, una para aceptar y otra para denegar, para esto de usa el símbolo ! que significa excepción.
http_access allow gerencia !secretarias
Esta regla otorga acceso a la lista llamada gerencia y deniega el acceso a la lista secretarias.
El Proxy controla el acceso al puerto 80, ósea Web, los demás protocolos salen a través de NAT.
OJO: Squid no es capas de manejar protocolos como POP, IMAP y SMTP, por lo tanto para la salida y entrada del correo se debe usar NAT.
Parámetro CACHE_MGR
En caso que ocurra alguna catástrofe en el servidor, squid podrá avisar cuando ocurra algo.
administrador@delsquid.xxx
SQUID CACHE
El cache de Squid trabaja básicamente almacenando en el servidor las páginas que los usuarios visitan, así cuando el usuario vuelve a visitarla posteriormente u otro usuario solicita la misma página, esta no será cargada desde el hosting donde se aloja la página, sino será cargada desde el cache de nuestro Proxy. Squid Cache acelera la navegación de las páginas ya que al estar guardada se aprovecha el ancho de banda que sirve para otros servicios críticos que usan Internet.
Ahora para usar el cache debemos activar los siguientes parámetros:
HTTPD_ACCEL_HOST
HTTPD_ACCEL_PORT
HTTPD_ACCEL_WITH_PROXY
En mi configuración para en Proxy transparente, estos parámetros los deje así:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Hecho esta, ya tenemos el Proxy Squid activo, ahora solo falta configurar los mensajes de error, los que vienen en distintos idiomas, por defecto English, los que se localizan en /usr/lib/squid/errors. Primero debemos borrar el enlace simbólico en /etc/squid/errors, y establecer uno nuevo a /usr/lib/squid/errors/Spanish.
Ahora solo basta iniciar el servicio. /etc/init.d/squid start.
Luego necesitamos indicarle a nuestro firewall que nos redireccione todo el trafico en el puerto 80 proveniente desde nuestra red. Mi configuración quedo asi.
#HTTP
IPTABLES –t nat –A PREROUTING –i eth1 –p tcp –dport 80 –j REDIRECT –to-port 3128
Mi servidor posee 2 interfaces de red, donde eth0 esta conectada a Internet y eth1 a la red interna. Ahora tenemos un Proxy totalmente transparente, esto significa que en los clientes no necesitaremos cambiar nada. Este ejemplo es aplicable a cualquier servicio que necesite pasar por un Proxy
#FTP
IPTABLES –t nat –A PREROUTING –i eth1 –p tcp –dport 21 –j REDIRECT –to-port 3128
#HTTPS
IPTABLES –t nat –A PREROUTING –i eth1 –p tcp –dport 443 –j REDIRECT –to-port 3128
SOBRE FILTROS DE RESTRICCION DE ACCESO
La lista de sitios denegados, se debe guardar en un fichero en el disco duro, por ejemplo /etc/squid/denied_sites.
www.pornografía.com
sexo
meebo
sexo
porn
p0rn
xxx
XXX
Warez
Mp3
Jpeg
89.56.213.189
Ahora debemos crear una lista de control de acceso en squid.conf
acl denied_sites url_regex “/etc/squid/denied_sites”
Ahora debemos crear la regla de control de acceso.
http_access deny denied_sites
..quedaron algunos sitios bloqueados por error, y para resolver esto es necesario crear otra lista de acceso de la misma forma que la anterior, pero esta vez con los sitios admitidos. Esto lo cree en /etc/squid/appoved_sites y lo agrege a squid.conf como una lista de acceso.
acl approved_sites url_regex “/etc/squid/approved_sites”
Ahora creamos la regla de control de acceso, pero para esto usaremos la misma regla anteriormente creada para denegar, usando el símbolo de excepción !.
http_access deny denied_sites !approved_sites
SOBRE EL MSN
Se puede bloquear a través de Iptables con una simple regla
IPTABLES -A FORWARD -p tcp --dport 1863 -j REJECT
Pero el nuevo MSN también usa el puerto 80 cuando el 1863 esta bloqueado.
IPTABLES –t mangle –A PREROUTING –p tcp –dport 1836 –j DROP
While read msn; do
IPTABLES –t mangle –A PREROUTING –d $msn –j DROP
Donde el fichero “ip-addresses-msn” contiene una lista con todas las IPs de los servidores de Hotmail, 44 en total.
63.208.13.126
64.4.12.200
64.4.12.201
65.54.131.249
65.54.194.118
65.54.211.61
207.46.104.20
207.46.110.2
207.46.110.254
207.46.245.222
207.46.245.214
messenger.hotmail.com
messenger.msn.com
messenger.microsoft.com
echo-v1.msgr.hotmail.com
echo-v2.msgr.hotmail.com
login.passport.net
messenger.t1msn.com.mx
65.54.226.246
65.54.226.252
65.54.228.243
65.54.228.254
65.54.229.246
65.54.229.254
65.54.225.244
65.54.225.252
loginnet.passport.com
65.54.225.241
65.54.225.254
65.54.226.247
65.54.226.254
65.54.228.244
65.54.228.253
65.54.229.248
65.54.229.253
login.passport.com
65.54.231.240
65.54.230.240
207.68.173.245
64.202.167.129
63.241.128.250
207.68.173.245
config.messenger.msn.com
El único problema es que esta regla bloquea el mail y todos los servicios de Hotmail, no solo el MSN. Ahora la única regla que funciona adecuadamente es agregar una lista de control de acceso a Squid.
acl msn_messenger req_mime_type –i ^application/x-msn-messenger$
acl msn_messenger2 url_regex -i gateway.dll
y luego aplicar la regla de control de acceso respectiva
http_access deny msn_messenger
http_reply_access deny msn_messenger2
Todo listo!!!
Comentarios