PROYECTO A IMPLEMENTAR

En este manual se va a implementar un Servidor Proxy con autenticación de usuarios de servicio de directorio. Los objetivos a cumplir son:  Implementar Servidor proxy.  Implementar políticas de acceso y restricción por URL, extensiones de archivo, mimetypes y por acceso de horarios.  Implementar listas negras para control de acceso.  Implementar autenticación con usuarios de un servicio de directorio.  Implementar un analizador de tráfico para generar reportes estadísticos, con acceso seguro para la visualización de los reportes. Escenario:
o

Windows 2003 Server: Al menos un servidor windows 2003 con el Directorio Activo debian Leny: Sistema operativo squid-cache: Servidor proxy squidGuard: Filtrado web Sarg: Analizador de trafico bind9: apache2:

o o o o o o

AUTENTIFICACION LDAP POR GRUPOS DE WINDOWS 2003

Lo primero que vamos a hacer es la autenticación, ya que después de agregar las líneas correspondiente para la autenticación resulta más fácil agregar las demás líneas que necesitemos según nuestras necesidades.

Empezamos: Primero en el active directory hay que crear una unidad organizativa UO, lo recomendable es que la crees en la raíz, la llamaremos proxy; dentro de esta UO debes que crear los grupos que necesites para agrupar a tus usuarios según tus necesidades, en este manual usaremos los grupos: • • AccesoTotal AccesoLimitado

Los usuarios que pueden visitar casi todo el contenido de internet, que es este caso serán los administradores de la red, los haremos miembros del grupo Accesototal. Los usuarios que serán miembros del grupo Accesolimitado, tendrán acceso a casi todos los sitios web, pero no podrá hacer descargas, ver algunas extensiones de archivo o jugar; excepto en la hora de almuerzo, que es el horario en el que podrán visitar las páginas que en el resto de día no podrán ver como por ejemplo (www.facebook.com). Si el usuario no está en cualquiera de estos grupos se le denegara el acceso a internet

INSTALACION DE SQUID

 Vamos a empezar con la instalación de Squid. #apt-get install squid #apt-get install winbind Al instalar squid se instalara también squid-common El squid que se utilizara en esta configuración es squid 2.7, y squid-common 2.7 Ahora entramos a squid para empezar la configuración de squid.conf #cd /etc/squid #pico squid.conf El squid.conf es un fichero bastante grande, en su gran mayoría por los comentarios y explicaciones que este contiene, se recomienda crear una copia del archivo squid.conf borrar el contenido del original y crear dentro de este la configuración desde cero adaptándolo a tus necesidades. La configuración para la autenticación quedara así: CONFIGURACION DE SQUID #configuración general http_port 3128
>

El puerto por el que va a correr el proxy.

icp_port 0
>

El icp_port es para la comunicación con otro proxy, por defecto va icp_port 3130 pero lo pondremos icp_port 0 para indicar que esta desactivado.

forwarded_for off > Ocultamos la ip del cliente, para que en internet solo se muestre la ip del router.

hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY
>

Aquí puedes incluir todo aquello que squid no debe guardar en chache Ej. cgi-bin.

acl apache rep_header Server ^Apache broken_vary_encoding allow apache
>

Para los servidores que permiten resumir la sesión cuando se cancela una descarga de un archivo.

access_log /var/log/squid/access.log.1 squid
>

Esta linea se explica por si misma, donde guardamos el log de acceso.

emulate_httpd_log on
>

Para emular el formato de log del apache, esto nos sirve para utilizar los analizadores de logs de apache.

hosts_file /etc/hosts
>

Este indica ¿Donde esta el fichero hosts?

cache_dir aufs /var/spool/squid/ 200 16 256
>

Cuanto desea almacenar de Internet en el disco duro. o Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. o Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.

cache_mem 128 MB
>

Establece la cantidad ideal de memoria para lo siguiente:

o o o

Objetos en tránsito. Objetos frecuentemente utilizados (Hot). Objetos negativamente almacenados en el caché.

#para comunicar con el active directory de windows auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=proxy57,dc=com" -D "cn=usuarioldap,ou=proxy,dc=proxy57,dc=com" -w "sena.2009" -f sAMAccountName=%s -h 172.20.0.13
>

Esta linea es básica para que funcione

auth_param basic program
o

/usr/lib/squid/ldap_auth -R -b Aquí le indicamos donde se encuentra el "helper" del ldap. "dc=proxy57,dc=com" -D El dominio donde se encuentra el AD "cn=usuarioldap,ou=proxy,dc=proxy57,dc=com" El usuario para contactar con el AD y donde se encuentra. -w "micontraseña" -f sAMAccountName=%s -h 172.20.2.13la contraseña del usuarioldap y la ip del servidor de dominio.

o o

o

external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=proxy57,dc=com" -D "cn=usuarioldap,ou=proxy,dc=proxy57,dc=com" -w "sena.2009" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=proxy,dc=proxy57,dc=com))" -h 172.20.0.13
>

Ahora vamos con el otro "helper" este permite la utilización de grupos del ldap external_acl_type ldap_group o %LOGIN /usr/lib/squid/squid_ldap_group -R -b Aquí le indicamos donde se encuentra el "helper" del ldap-group o "dc=proxy57,dc=com" -D El dominio del AD

o "cn=usuarioldap,ou=proxy,dc=proxy57,dc=com" -w "micontraseña" -f El usuario para contactar con el AD y su contraseña o "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=proxy,dc=proxy57,dc=com))" -h 172.20.0.13Le inidcamos en que unidad organizativa se encuentran los grupos de los usuario, recuerda que hemos creado los grupos "Accessototal" y "Accesolimitado" en la UO "proxy" auth_param basic children 25 auth_param basic realm Proxy57
>

Todo lo que escribas después del realm, se muestra al usuario cuando se le pide la contraseña. Ej. "Proxy57"

auth_param basic credentialsttl 1 minutes
>

El tiempo que squid mantiene las credenciales de las web externas, donde el usuario se valida

CREAR LAS ACL'S La acl (lista de control de acceso) implementar políticas de acceso y restricción por URL, extensiones de archivo mimetypes y por acceso de horarios #acl's acl CONNECT method CONNECT acl Safe_ports port 80 443 1024-65535
>

Estos son los puertos "80 443" que squid permitirá conexiones. cualquier petición a un puerto que no esté en esta línea será rechazada. Si no sabes que puertos necesitan tus aplicaciones puedes utilizar una línea con todos los puertos altos y con los más usuales pero no es muy recomendable. Ej. "acl Safe_ports port 80 443 21 1024-65535"

acl all src 0.0.0.0/0.0.0.0
>

En esta acl definimos la red all.

acl manager proto cache_object

>

Se incluye por defecto.

acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8
>

Esta acl define localhost y to_localhost.

acl lan src 172.20.0.0/255.255.255.0
>

Lan es el nombre que le di a la acl para mi red.

acl purge method PURGE Se incluye por defecto. acl ldapLimitado external ldap_group Accesolimitado
> >

Esta acl define el grupo con Accesolimitado, es el nombre del grupo en el AD y ldapLimitado es el nombre de la acl del squid.

acl ldapTotal external ldap_group Accesototal
>

Esta acl define el grupo con Accesototal, es el nombre del grupo en el AD y ldapTotal es el nombre de la acl del squid.

acl archivos urlpath_regex "/etc/squid/acl/archivos.acl" acl mime_types urlpath_regex "/etc/squid/acl/mime_types.acl" acl url_deny dstdomain "/etc/squid/acl/url_deny.acl" acl cont_palabras url_regex "/etc/squid/acl/cont_palabras.acl"
>

En estos archivo pondremos todos lo que consideramos que no debe ser accesibles para todos los usuarios. Vamos a implementar políticas de acceso y restricción por URL, extensiones de archivo mimetypes y por acceso de horarios

acl horario_almuerzo time MTWHF 12:00-13:00
>

Solo vamos a usar una acl de tiempo, esta es para el horario de almuerzo.

acl ldap-group proxy_auth REQUIRED
>

Esta acl establece que todos los usuarios del ldap deben autenticarse.

offline_mode on
>

Para cachear todo lo que pase por el proxy.

#Políticas http_access deny !Safe_ports
>

Denegamos el acceso a cualquier puerto diferente a los definidos en Safe_ports.

http_access allow horario_almuerzo all ldapLimitado url_deny
>

Permitimos que todos los usuarios del grupo ldapLimitado en la hora del almuerzo pueda ver el contenido de la paginas denegadas dentro del archivo de la en la acl url_deny.

http_access allow ldapTotal all !cont_palabras
>

Todos los usuarios del grupo ldapTotal tienen acceso a todo excepto páginas que contengan las palabras definidas dentro del archivo de la acl cont_palabras.

http_access allow ldapLimitado all !archivos !mime_types !url_deny !cont_palabras
>

Ningún usuario que pertenezca el grupo ldapLimitado puede accede al contenido establecido dentro de las acl’s archivos mime_types url_deny cont_palabras .

http_access allow manager localhost http_access deny manager
>

Permitimos solo el acceso a cachemgr desde localhost.

http_access allow purge localhost http_access deny purge
>

Solo permitimos purgas desde localhost.

http_access allow localhost

>

Permitimos el acceso al proxy.

http_access deny all
>

y al final lo denegamos todo.

http_reply_access allow all
>

Para que conteste a las peticiones de los clientes.

icp_access deny all
>

Denegamos el icp.

header_access X-Forwarder-For deny all header_access Via deny all
>

Para ocultar la máxima información del proxy, solo en las cabeceras.

header_access Accept-Language deny all
>

Para remplazar las cabeceras, del proxy y de los navegadores.

refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320
>

Estas líneas no se para que sirven pero se incluyen por defecto y aquí están pero no las comento.

cache_effective_user proxy cache_effective_group proxy > El usuario y el grupo que utilizara squid. coredump_dir /var/spool/squid
>

Con esta línea le indicamos al squid donde guardar la cache

error_directory /usr/share/squid/errors/Spanish
>

El idioma que utilizara squid

#fin Hasta aquí todas las líneas del archivo de configuración del squid, ubicado en /etc/squid/squid.conf, asegúrate de hacer añadido los usuarios en los grupos correspondientes del Active Directory de windows, configurar el navegador de los usuarios con la dirección ip y el puerto del proxy.

Ahora antes de reiniciar el squid, tenemos que crear el directorio acl y creamos los archivos archivos mime_types url_deny cont_palabras Creamos el directorio acl en el directorio de configuración del squid. #mkdir /etc/squid/acl #touch /etc/squid/acl/archivos #touch /etc/squid/acl/mime_types #touch /etc/squid/acl/url_deny #touch /etc/squid/acl/cont_palabras

Concedemos permisos de escritura y lectura solo al usuario root # chmod 600 /etc/squid/acl -R Estos archivos contienen. Ejemplo

Usamos squid -z para refrescar la cache, con este comando también sabrás si

tienes algún error en la sintaxis. #squid -z Reinicia el squid # /etc/init.d/squid restart

LISTAS NEGRAS

 Para complementar las denegaciones vamos a implementar listas negras para control de acceso. Para esto usaremos squidguard 1.2.0-8.4 # apt-get install squidguard A continuación editamos el fichero de configuración de Squid #pico /etc/squid/squid.conf

CONFIGURACION DE SQUIDGUARD

Al final del archivo de configuración agregamos la línea redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Esta línea es necesaria para conectar Squid con SquidGuard.

Bajamos el archivo que contiene la base de datos con miles de direcciones web cuyo contenido queremos bloquear. Ese archivo lo podemos encontrar en la siguiente dirección: http://urlblacklist.com/cgibin/commercialdownload.pl?type=download&file=bigblacklist El archivo comprimido que descargues /var/lib/squidguard/db/ #cp blacklists.tar.gz /var/lib/squidguard/db/ Ve a la ruta /var/lib/squidguard/db/ #cd /var/lib/squidguard/db/ debes cp en la ruta

Y descomprimirlo en esa misma ruta. #tar xvzf blacklists.tar.gz Te quedara un archivo llamado blacklists que contiene las listas negras. Editamos el fichero de configuración de SquidGuard #pico /etc/squid/squidGuard.conf Borramos lo que aparece tras las líneas: dbhome /var/lib/squidguard/db lodgir /var/log/squid (Estas dos líneas las dejamos) Al final del fichero escribimos lo siguiente:

Al final agregamos la línea redirect y escribimos una pagina a la cual se redireccionaran todos los dominios y ulr’s que se intenten abrir. Cerramos el fichero guardando los cambios. Ahora solo nos queda convertir estas blacklist en formato de base de datos para que su consulta sea mucho más rápida y efectiva. #squidGuard -C all Refrescamos la cache

#squid -z Reinicia el squid # /etc/init.d/squid restart Utilizaremos un tail en el log del squidGuard, para asegurarnos que todo esté bien. #tail -f /var/log/squid/squidGuard.log Haremos una prueba, escribimos en el navegador una de las direcciones que aparecen en el fichero domains (por ejemplo, http://www.viendosexo.com/).

ANALIZADOR DE TRAFICO SARG

 Y para finalizar implementamos un analizador de tráfico para generar reportes estadísticos, con acceso seguro para la visualización de los reportes. Para esto usaremos SARG Las estadísticas las veremos vía web, y para ello deben tener instalado un servidor web y un servidor de nombres. La versión de sarg que usamos es la 2.2.5 En esta manual el SARG se instalo en la ruta donde se encuentra el squid. debian:/etc/squid#apt-get install sarg CONFIGURACION DE SARG

#pico sarg.conf

Spanish access_log /var/log/squid/access.log.1 graphs yes title "Reporte de Acceso de Usuarios de Squid" font_face Tahoma,Verdana,Arial header_color darkblue header_bgcolor blanchedalmond header_font_size -1 background_color white text_color black text_bgcolor beige title_color green temporary_dir /tmp output_dir /var/www/squid-reports/ resolve_ip yes user_ip yes topuser_sort_field languageBYTES reverse user_sort_field BYTES reverse date_format u remove_temp_files yes index yes overwrite_report yes use_comma no topsites_num 100 topsites_sort_order CONNECT D max_elapsed 28800000 report_type topsites users_sites sites_users date_time denied auth_failures site_user_time_date long_url no date_time_by bytes

CONFIGURACION DE APACHE

 Configura el apache2 para ver las estadísticas vía web.

 Crea el registro en el DNS  Configura al Apache para poder leer las estadísticas de uso del servidor Proxy. Entra a /etc/apache2/httpd.conf y agrega estas líneas #pico /apache2/httpd.conf

 Entra a tmp, allí ejecutaremos el comando para crearemos un archivos de contraseñas encriptadas para autorizar la entrada en Sarg. #cd / #cd tmp debian:/tmp# htpasswd -c -m /etc/.htpasswdsquidreports (administrador es el nombre para el usuario)  Reiniciamos todos los servicios. debian:/tmp# /etc/init.d/apache2 restart administrador

debian:/tmp# /etc/init.d/squid restart

PRUEBA Abre tu navegador y veras que si todo está bien te debe pedir el usuario y contraseña. La primera prueba la haremos con el usuarioldap, recuerda que este usuario no pertenece a ningún grupo, por lo tanto no tiene ningún permiso, no debe poder acceder a ninguna pagina.

 Ahora haremos una prueba con un usuario que pertenezca al grupo de Accesototal.

 Como ya podemos navegar, ahora vamos a probar la autenticación para los reportes de squid.

 De esta manera el usuario administrador, (que es independiente de los usuarios registrados en el Active Directiry), puede ver los reportes generados por el squid.

 Ahora puedes ver todas las estadísticas de los reportes.

 Puedes ver que los días en que ingresa a internet cada usuario

 Puedes ve las páginas que visita cada usuario, cuanto tiempo la visitaron, etc.

Y LISTO HEMOS TERMINADO

SQUID.CONF

El archivo de configuración quedara asi:
#configuracion general http_port 3128 icp_port 0 forwarded_for off hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY acl apache rep_header Server ^Apache broken_vary_encoding allow apache access_log /var/log/squid/access.log squid emulate_httpd_log on hosts_file /etc/hosts cache_dir aufs /var/spool/squid/ 200 16 256 cache_mem 128 MB #para comunicar con el active directory de windows auth_param basic program /usr/lib/squid/ldap_auth -R -b \"dc=proxy57,dc=com" -D "cn=usuarioldap,ou=proxy,dc=proxy57,dc=com" -w \"sena.2009" -f sAMAccountName=%s -h 172.20.0.13 external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R \-b "dc=proxy57,dc=com" -D "cn=usuarioldap,ou=proxy,dc=proxy57,dc=com" \-w "sena.2009" -f "(&(objectclass=person) (sAMAccountName=%v) \(memberof=cn=%a,ou=proxy,dc=proxy57,dc=com))" -h 172.20.0.13 auth_param basic children 25 auth_param basic realm Proxy57 auth_param basic credentialsttl 1 minutes #acl's acl CONNECT method CONNECT acl Safe_ports port 80 443 1024-65535 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 lan src 172.20.0.0/255.255.255.0 acl purge method PURGE acl ldapLimitado external ldap_group Accesolimitado acl ldapTotal external ldap_group Accesototal acl permitir dstdomain "/etc/squid/acl/permitir.acl" acl archivos urlpath_regex "/etc/squid/acl/archivos.acl" acl mime_types urlpath_regex "/etc/squid/acl/mime_types.acl" acl url_deny dstdomain "/etc/squid/acl/url_deny.acl" acl cont_palabras url_regex "/etc/squid/acl/cont_palabras.acl" acl horario_almuerzo time MTWHF 12:00-13:00 acl ldap-group proxy_auth REQUIRED offline_mode on #politicas http_access deny !Safe_ports http_access deny CONNECT

http_access allow horario_almuerzo all ldapLimitado url_deny http_access allow ldapTotal all !cont_palabras http_access allow ldapLimitado all !archivos !mime_types !url_deny \!cont_palabras http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access allow localhost http_access deny all http_reply_access allow all icp_access deny all header_access X-Forwarder-For deny all header_access Via deny all header_access Accept-Language deny all refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 cache_effective_user proxy cache_effective_group proxy coredump_dir /var/spool/squid error_directory /usr/share/squid/errors/Spanish #redireccionar a squidGuard redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Sign up to vote on this title
UsefulNot useful