miércoles, 13 de enero de 2010

SQUID denegar site--Autenticacion ncsa

Cómo configurar Squid: Restricción de acceso a Sitio de Red.


Introducción.

Denegar el acceso a ciertos Sitios de Red permite hacer un uso más racional del ancho de banda con el que se dispone. El funcionamiento es verdaderamente simple, y consiste en denegar el acceso a nombres de dominio o direcciones Web que contengan patrones en común.

Este manual considera que usted ya ha leído previamente, a detalle y en su totalidad el manual "Como configurar Squid: Servidor Proxy" y que ha configurado exitosamente Squid como servidor proxy.
Software requerido.

Para poder llevar la cabo los procedimientos descritos en este manual y documentos relacionados, usted necesitará tener instalado al menos squid-2.5STABLE1.
Definiendo patrones comunes.

Lo primero será generar una lista la cual contendrá direcciones Web y palabras usualmente utilizadas en nombres de ciertos dominios. Ejemplos:

www.sitioporno.com
www.otrositioporno.com
sitioindeseable.com
otrositioindeseable.com
napster
sex
porn
mp3
xxx
adult
warez
celebri

Esta lista, la cual deberá ser completada con todas las palabras (muchas de está son palabras obscenas en distintos idiomas) y direcciones Web que el administrador considere pertinentes, la guardaremos como /etc/squid/sitiosdenegados.
Parámetros en /etc/squid/squid.conf

Debemos definir una Lista de Control de Acceso que a su vez defina al fichero /etc/squid/sitiosdenegados. Esta lista la denominaremos como "sitiosdenegados". De modo tal, la línea correspondiente quedaría del siguiente modo:

acl sitiosdenegados url_regex "/etc/squid/sitiosdenegados"

Habiendo hecho lo anterior, deberemos tener en la sección de Listas de Control de Acceso algo como lo siguiente:

#
# 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 redlocal src 192.168.1.0/255.255.255.0
acl password proxy_auth REQUIRED
acl sitiosdenegados url_regex "/etc/squid/sitiosdenegados"

A continuación especificaremos modificaremos una Regla de Control de Acceso existente agregando con un símbolo de ! que se denegará el acceso a la Lista de Control de Acceso denominada sitiosdenegados:

http_access allow redlocal !sitiosdenegados

La regla anterior permite el acceso a la Lista de Control de Acceso denominada redlocal, pero le niega el acceso a todo lo que coincida con lo especificado en la Lista de Control de Acceso denominada sitiosdenegados.

Ejemplo aplicado a una Regla de Control de Acceso combinando el método de autenticación explicado en el documento Cómo configurar Squid: Acceso por Autenticación:
Reglas de control de acceso: denegación de sitios.

#
# INSERT YOUR OWN RULE(S) HERE TO allow ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal password !sitiosdenegados
http_access deny all

Permitiendo acceso a sitios inocentes incidentalmente bloqueados.

Si por ejemplo el incluir una palabra en particular afecta el acceso a un sitio Web, también puede generarse una lista de dominios o palabras que contengan un patrón pero que consideraremos como apropiados.

Como ejemplo: vamos a suponer que dentro de la Lista de Control de Acceso de sitios denegados está la palabra sex. esta denegaría el acceso a cualquier nombre de dominio que incluya dicha cadena de caracteres, como extremesex.com. Sin embargo también estaría bloqueando a sitios como sexualidadjovel.cl, el cual no tiene que ver en lo absoluto con pornografía, sino orientación sexual para la juventud. Podemos añadir este nombre de dominio en un ficheros que denominaremos /etc/squid/sitios-inocentes.

Este fichero será definido en una Lista de Control de Acceso del mismo modo en que se hizo anteriormente con el fichero que contiene dominios y palabras denegadas.

acl inocentes url_regex "/etc/squid/sitios-inocentes"

Para hacer uso de el fichero, solo bastará utilizar la expresión ! en la misma línea utilizada para la Regla de Control de Acceso establecida para denegar el mismo.

http_access allow all inocentes

La regla anterior especifica que se denegará el acceso a todo lo que comprenda la Lista de Control de Acceso denominada denegados excepto lo que comprenda la Lista de Control de Acceso denominada inocentes. es decir, se podrá acceder sin dificultad a www.sexualidadjoven.cl manteniendo la restricción para la cadena de caracteres sex.
Finalizando procedimiento.

Finalmente, solo bastará reiniciar Squid para que tomen efecto los cambios y podamos hacer pruebas.

service squid restart

Fuente http://www.linuxparatodos.net/portal/staticpages/index.php?page=19-2-como-squid-restriccion-web


Cómo configurar Squid: Acceso por Autenticación.

Autenticación a través del módulo NCSA

Squid puede utilizar el módulo ncsa_auth, de la NCSA (National Center for Supercomputing Applications), y que ya viene incluido como parte del paquete principal de Squid en la mayoría de las distribuciones actuales. Este módulo provee una autenticación muy sencilla a través de un fichero de texto simple cuyas claves de acceso fueron creadas con htpasswd.
Creación del fichero de claves de acceso.

Se requerirá la creación previa de un fichero que contendrá los nombres de usuarios y sus correspondientes claves de acceso (cifradas). El fichero puede localizarse en cualquier lugar del sistema, con la única condición que sea asequible para el usuario squid.

Debe procederse a crear un fichero /etc/squid/claves:

touch /etc/squid/claves

Salvo que vaya a utilizarse un guión a través del servidor web para administrar las claves de acceso, como medida de seguridad, este fichero debe hacerse leíble y escribible solo para el usuario squid:

chmod 600 /etc/squid/claves
chown squid:squid /etc/squid/claves

A continuación deberemos dar de alta las cuentas que sean necesarias, utilizando el mandato htpasswd -mismo que viene incluido en el paquete httpd-2.0.x-. Ejemplo:

htpasswd /etc/squid/claves joseperez

Lo anterior solicitará teclear una nueva clave de acceso para el usuario joseperez y confirmar tecleando ésta de nuevo. Repita con el resto de las cuentas que requiera dar de alta.

Todas las cuentas que se den de alta de este modo son independientes a las ya existentes en el sistema. Al dar de alta una cuenta o cambiar una clave de acceso lo estará haciendo EXCLUSIVAMENTE para el acceso al servidor Proxy. Las cuentas son independientes a las que se tengan existentes en el sistema como serían shell, correo y Samba.
Parámetros en /etc/squid/squid.conf

Lo siguiente será especificar que programa de autenticación se utilizará. Localice la sección que corresponde a la etiqueta auth_param basic program. Por defecto no está especificado programa alguno. Considerando que ncsa_auth se localiza en /usr/lib/squid/ncsa_auth, procederemos a añadir el siguiente parámetro:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/claves

/usr/lib/squid/ncsa_auth corresponde a la localización de el programa para autenticar y /etc/squid/claves al fichero que contiene las cuentas y sus claves de acceso.
Listas y reglas de control de acceso.

El siguiente paso corresponde a la definición de una Lista de Control de Acceso. Especificaremos una denominada passwd la cual se configurará para utilizar obligatoriamente la autenticación para poder acceder a Squid. Debe localizarse la sección de Listas de Control de Acceso y añadirse la siguiente línea:

acl password proxy_auth REQUIRED

Habiendo hecho lo anterior, deberemos tener en la sección de Listas de Control de Acceso algo como lo siguiente:
Listas de Control de Accesos: autenticación.

#
# 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 redlocal src 192.168.1.0/255.255.255.0
acl password proxy_auth REQUIRED

Procedemos entonces a modificar la regla de control de accesos que ya teníamos para permitir el acceso a Internet. Donde antes teníamos lo siguiente:

http_access allow redlocal


Le añadimos passwd, la definición de la Lista de Control de Acceso que requiere utilizar clave de acceso, a nuestra regla actual, de modo que quede como mostramos a continuación:

http_access allow redlocal password

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:
Reglas de control de acceso: Acceso por clave de acceso.

#
# INSERT YOUR OWN RULE(S) HERE TO allow ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal password

http_access deny all

Finalizando procedimiento.

Finalmente, solo bastará reiniciar Squid para que tomen efecto los cambios y podamos hacer pruebas.

service squid restart

No hay comentarios: