miércoles, 26 de marzo de 2008

Ejercicios de squid

A medida que vemos squid han puesto unos ejercicios que documentare con la solucion previa. Para que miren lo que puede hacer este proxy.

Politicas de seguridad
Restringir el uso de internet

-Crear listas negras "acl" (archivos) para bloquear los siguientes contenidos: porno, chat, correos, deportes, descargas, juegos. Para cada categoria se debe crear una lista negra en las cuales agregamos los registros que deseamos.
Ejemplo de lo que contiene el archivo Porno.
En la consola de comandos como root creamos el archivo porno en /etc/squid/
touch porno
ahora lo editamos
pico porno

Escribimos las palabras "claves" con las que negaremos esta clase de paginas ejemplo: en cada linea una debajo de la otra.
xxx
XXX
SEXO
sexo
porno
(asi las que deseamos)

-Creadas las listas negras bloquearemos a todos los usuarios de la red la navegacion a estos sitios web.
En acl se especifica lo que haremos con esta opcion
acl Porno url_regex "/etc/squid/porno"
Y con la siguiente linea le indicamos que hara si aceptarla (allow) o denegarla (deny).
http_access deny porno

-Bloquear a todos los usuarios descargas (.exe, .iso, .zip, .rar) reproduccion de archivos (.mp3, .mpg, .wav)
Politica para archivos multimedia.
acl multimedia urlpath_regex \mp3.$ \.mpg$ \.wav$
http_access deny multimedia
Politica para archivos de descargas.
acl instaladores urlpath_regex \.exe$ \.rar$ \.zip$ \.iso$
http_access deny instaladores

-La navegacion debe restringirse a horarios locales de lunes a viernes de 8:00 am a 12:00 am y de 13:00 pm a 16:30 pm.
acl horario time MTWHF 08:00-12:00
acl Horario time MTWHF 13:00-16:30
http_access allow horario red
http_access allow Horario red

-Existe un usuario sin ninguna restriccion con la ip 10.3.6.248 (Profesor)
acl profe src 10.3.6.248
http_access allow profe
-Los usuarios de la red pueden acceder a paginas de correo gratuito y chat solamente en horas de almuerzo (12:00 am -- 13:00 pm)
acl HorarioAlmuerzo time MTWHF 12:00-13:00 (basta con una linea de estas)
como tenemos dos listas de control de acceso Correos y Chat nos taca especificar claramente loq ue deseamos. Aunque podriamos crear otra contenga todos los parametros.
http_access allow Chat HorarioAlmuerzo red
http_access allow Correos HorarioAlmuerzo red

-Configurar el proxy para que trabaje como transparente (que el usuario no tenga conciencia de su existencia) solo le agregamos tranparent en la siguiente linea.
http_port 10.3.6.205:3128 transparent
Para que esto se cumpla debemos darle en consola una regla de iptables que nos dice. Todo lo que venga por eth0 con destino el puerto 80 lo redireccione al puerto 3128. Todo en una sola linea.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Aclaro que las lineas que estan en negrita son las mas importantes van en el archivo de configuracion squid.conf otras, es muy importante el ordenen que acomodamos las reglas (http_access ...) porque de eso depende que todas se cumplan. A continuacion muestro todas las lineas del archivo de configuracion del squid montado de acuerdo mis necesidades.

http_port 10.3.6.205:3128 transparent

icp_port 0

cache_mem 32 MB
cache_dir ufs /var/spool/squid 100 16 256
cache_peer proxy2.sena.edu.co parent 80 0 default

acl profe src 10.3.6.248
acl horario time MTWHF 08:00-12:00
acl Horario time MTWHF 1:00-4:30
acl HorarioAlmuerzo time MTWHF 12:00-13:00
acl Chat url_regex "/etc/squid/chat"
acl Correos url_regex "/etc/squid/correos"
acl Deportes url_regex "/etc/squid/deportes"
acl Descargas url_regex "/etc/squid/descargas"
acl Juegos url_regex "/etc/squid/juegos"
acl Porno url_regex "/etc/squid/porno"
acl multimedia urlpath_regex \mp3.$ \.mpg$ \.wav$
acl instaladores urlpath_regex \.exe$ \.rar$ \.zip$ \.iso$
acl imagenes urlpath_regex \.jpg$ \.png$ \.jif$
acl correo dst www.hotmail.com
acl noquiero dst www.yahoo.com
acl all src 0.0.0.0/0.0.0.0
acl red src 10.3.6.128/255.255.255.128

visible_hostname localhost

http_access allow profe
http_access allow Chat HorarioAlmuerzo red
http_access deny Chat
http_access allow Correos HorarioAlmuerzo red
http_access deny Correos
http_access deny Deportes
http_access deny Descargas
http_access deny Juegos
http_access deny porno
http_access deny multimedia
http_access deny instaladores
http_access deny imagenes
http_access deny correo
http_access deny noquiero
http_access allow horario red
http_access allow Horario red
http_access deny all

request_header_max_size 10 KB
request_body_max_size 512 KB
reply_body_max_size 512 KB

Recargamos el servicio /etc/init.d/squid restart desde la consola y con esto concluimos la configuracion.

1 comentario:

Rodrigo Quiroz Silva dijo...

estimado muy bueno el ejercicio, lo hice mirando tu ejemplo con el proxy no transpatante funciona ok.
tengo unas maquinas con unos switch probando y funciona ok.

deje el servidor squid dentro de la lan + configure los navegadores uno por uno (se entiende) ademas baje el iptables y agregue esta linea
echo "1" > /proc/sys/net/ipv4/ip_forward

bloquea las paginas que quiero y permite las direcciones ip que quiero

ademas tengo el squid
squid-2.6.STABLE6-5.el5_1.3

funciona ok

ahora que cambie las lineas no me funciona.

agregue transparent a la linea
http_port 8080 transparent

al parecer tengo problemas con el iptables me ayudas si puedes

saludos