Squid
De Gleducar, http://www.gleducar.org.ar
Tabla de contenidos |
¿Qué es un Servidor Squid?
Es un sistema proxi dedicado a acelerar peticiones en todos los protocolos conocidos en la red, dar seguridad a redes mediante bloque de direcciones malignas y muchÃsimas cosas más, pero aquà solo voy a explicar como hacerlo funcionar en su forma básica, ideal para escuelas.
Configuración Básica
- Comienzo:
Antes de empezar debemos asegurarnos que tenemos todo instaladom, lo logramos de una forma sensilla
urpmi squid
Si está todo instalado podemos proseguir sino debemos esperar que se instale el servidor.
Debemos empezar configurando el archivo "squid.conf" en "/etc/" puede estar en "/etc/squid/"
como root:
cd /etc/squid/ vi squid.conf
Ya dentro del archivo de configuración primero debemos declarar el puerto que utilizará el Squid. Por defecto port 3128
http_port 3128
No debe estar comentado ( # )
# http_port 3128
Lo próximo que debemos hacer es generar la configuración mÃnima requeria para empezar a trabajar con el Squid, para esto debemos ir a la lÃnea 1757 y modificar los siguiente
http_access allow manager localhost http_access deny manager
Con esto ya podemos arrancar nuestro Proxi-Squid
/etc/init.d/squid start
Ahora ya tenemos nuestro proxi en pleno funcionamiento, solo nos falta decirle a los navegadores que deben filtrar la conexión a internet mediante proxi. Debemos poner como direccion de proxi 127.0.0.1 y puerto el previamente declarado (en nuestro caso 3128)
Control de Acceso
Lo primero es abrir nuevamente el archivo squid.conf y detener el servicio del squid proxi
/etc/init.d/squid stop (o en MDK) service squid stop vi /etc/squid/squid.conf
Dentro del archivo de configuración del Squid debemos encontrar el Titulo principal
ACCES CONTROL --------------
Dentro de este debemos ir a la linea
#Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 acl CONNECT method CONNECT
De esta forma es como debe quedarnos para que el squid funcione, pero para bloquear webs, ip's malignas o expresiones regulares debemos agregar nuestra propia ACL, podemos hacerlo página por página, expresión por expresión, etc. lo cual no es muy práctico asi que crearemos un archivo con todo lo que deseemos prohibir. La acl quedaria
acl prohi url_regex "/etc/squid/prohi.list" http_access deny prohi
Nuestro archivo de lista es prohi.list.
Ejemplo de archivo prohi.list
www.abc.com muerte 200.45.21.36
Es quiere decir que el servidor proxi no permitirá visualizar las expresiones anteriores.
Otra opción interesante seria permitir webs dentro de una generalidad bloqueda, por ejemplo: Deseo bloquear todas las webs que contengan la palabra Jotelog, pero deseo que se pueda ver el mio ;-P, debemos crear una acl que permita ciertas webs a pesar de la generalidad. Para esto, dentro del archivo squid.conf
acl permi url_regex "/etc/squid/permi.list" http_access allow permi acl prohi url_regex "/etc/squid/prohi.list" http_access deny prohi
Dentro del archivo prohi.list
ww.abc.com. muerte 200.45.21.36 jotelog
Dentro de el archivo permi.list
mijotelog.jotelog
nota: Deben tener en cuenta que la declaracion de acl y de lista de prohidos funciona como un "CASE" (Véase programacion estructurada) cuando encuentra una coincidencia sale del "CASE" asà que deben tener MUCHO cuidado cuando declaren ACL's
En este caso el squid denegará acceso web a todos los jotelog menos a "mijotelog.jotelog" Si tienen alguna duda manden un mail, gaccardo@gmail.com
Analizar los resultados mediante Webalizer y Sarg
El servidor Squid genera archivos ".log" de todas las acciones que registra pero lo hace de una forma muy poco entendible para el ojo humano, por esta razón hay muchos programas que tienen la función de expresarlos mediante tablas, gráficos y detallando por usuarios, tiempos de conexión, etc.
Analizar mediante Sarg
Este no es un programa muy conocido, pero es muy bueno y accesible, y quizás lo mejor MUY F�CIL de hacer andar. Primero veamos si lo tenemos instalado.
su urpmi sarg
luego veamos en el archivo de configuración del Sarg si está todo bien
vi /etc/sarg/sarg.conf
Dentro de este podemos hacer varias configuraciones. Está muy bien comentado asà que pueden hacerlos solos, lo único que no interesa realmente es de donde saca los ".log", deberia quedarnos asÃ
access_log /var/log/squid/access.log
Ahora le decimos donde queremos que nos deje los resultados para visualisar mediante el navegador de la siguiente manera
output_dir /var/www/html/squid-reports
esta ipcion está mas abajo en la lÃnea 146 del archivo sarg.conf
Cada ves que deseemos ver las estadÃsticas producidas por este programa debemos hacer lo siguiente:
su sarg
Solo nos queda abrir nuestro navegador y tipear
127.0.0.1/squid-report/
Visualizar los resultados
Para visualizar los resultados no hay mas que abrir un navegador e ingresar las siguientes direcciones
Sarg: http://127.0.0.1/squid-reports/ Webalizer: http://127.0.0.1/webalizer_report/
Ejemplos:
Sarg: http://200.82.8.76/squid-reports/ Webalizer http://200.82.8.76/webalizer_report/
Analizar mediante Webalizer
El proceso es muy similar al del Sarg, debemos verificar si está todo instalado
urpmi webalizer
Ingresamos al archivo de configuracion
vi /etc/webalizer.conf
El webalizer también sirve para generar informes con los ".log" del Apache/Linux, etc.), Windows, Macintosh y otras.XQX</tooltip> Web Server, y está configurado por defecto con esta opción, asà que lo primero que debemos hacer es cambiar el path de los logs de httpd por los del squid
Dentro de webalizer.conf
Antiguo: LogFile /var/httpd/logs/httpd.log Debe quedar: LogFile /var/log/squid/access.log
Ahora debemos indicarle al Webalizer donde generar el informe, asi que debemos crear una carpeta en /var/
su cd /var/www/html/ mkdir webalizer_report
Una ves creada la carpeta volvemos a webalizer.conf y le decimos donde generarlo
OutputDir /var/www/html/webalizer_report/
Para generar la estadÃstica ingresamos en la consola como root
webalizer -F squid
Esta linea le indica a webalizer que va a analizar un log file tipo squid
Acelerar y volver trasparente al Squid
El Squid requiere de unos cambios mÃnimos para utilizar la aceleración, lo que hace Squid es guardar en memoria caché las páginas e IP's mas visitadas y guardarlas para hacer una "especie" de trabajo off-line. Estas opciones también sirven para hacer transparente el Squid asà que veamos.
Dentro de squid.conf
debemos encontrar las lineas correspondientes y dejarlas igual a las siguientes.
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
de esta forma el Squid "sabe" que debe trabajar trasparente.
En la consola
lo siguiente es redireccionar el todas las peticiones del puerto 80 (http o páginas web's) hacia el puerto 3128, osea pasar todo si o si por el proxi. Para esto utilizaremos el comando IPTABLES
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
- donde eth0 es la interface de red interna y NO la ethX de entrada de internet
Otros puertos útiles:
FTP-datos: 20
FTP: 21
GOPHER: 70
WAIS: 210
HTTPS: 443
Scrip para ayudar
Visual_Squix, para ayudar a principiantes con el proxy-server.