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.