fase 3 squid proxy

28
Seguridad de la red Implementación Del Plan De Seguridad De La Información Fase 3 Proxy HTTP Linux - Squid GRUPO “MiNdWiDeJUAN ALEJANDRO BEDOYA JOSE DE ARLEX DOMINGUEZ NEIFER ERNEY GIRALDO JHON FREDY HERRERA YOJAN LEANDRO USME ADMINISTRACION DE REDES INFORMATICAS Mauricio Ortiz CENTRO DE SERVICIO Y GESTION EMPRESARIAL SENA (MEDELLIN) 2010

Upload: jh0n-fredy-h

Post on 08-Apr-2015

8.435 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Fase 3 Squid Proxy

Seguridad de la red

Implementación Del Plan De Seguridad De La Información

Fase 3 – Proxy HTTP – Linux - Squid

GRUPO “MiNdWiDe”

JUAN ALEJANDRO BEDOYA

JOSE DE ARLEX DOMINGUEZ

NEIFER ERNEY GIRALDO

JHON FREDY HERRERA

YOJAN LEANDRO USME

ADMINISTRACION DE REDES INFORMATICAS

Mauricio Ortiz

CENTRO DE SERVICIO Y GESTION EMPRESARIAL

SENA (MEDELLIN)

2010

Page 2: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 2

INDICE

Introducción ......................................................................................................................... 3

Objetivo ............................................................................................................................... 4

Topología ................................................................................................................................................... 5

Tabla de direccionamiento ........................................................................................................................ 5

Screenshot de las VM. ............................................................................................................................... 6

Servidor Proxy ....................................................................................................................................... 6

Cliente WEB ........................................................................................................................................... 6

Configuración de R1 ................................................................................................................................... 7

Configuración básica ............................................................................................................................. 7

Configuración de las interfaces ............................................................................................................. 8

Configuración de enrutamiento ............................................................................................................ 8

Tabla de enrutamiento de R1 ................................................................................................................ 8

Proxy HTTP - Squid ................................................................................................................................... 10

Las directivas ....................................................................................................................................... 10

# NETWORK OPTIONS ..................................................................................................................... 10

# MEMORI CACHE OPTIONS ............................................................................................................ 10

# ACCESS CONTROL ......................................................................................................................... 11

# DISK CACHE OPTIONS ................................................................................................................... 16

# LOG FILE OPTIONS ........................................................................................................................ 17

# ADMINISTRATIVA PARAMETERS .................................................................................................. 17

# ERROR PAGE OPTIONS ................................................................................................................. 18

# MISCELLANEOUS .......................................................................................................................... 18

Aplicar algunas políticas ...................................................................................................................... 19

Queremos restringir cierto tipo de extensiones, y messenger ....................................................... 19

Prohibir el acceso a ciertos sitios. ................................................................................................... 25

Conclusiones ....................................................................................................................... 27

Bibliografía ......................................................................................................................... 27

Page 3: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 3

Introducción

Existen cientos de manuales y howto’s de cómo montar un servidor Proxy en producción para una

empresa. En este manual se hará énfasis sobre todo en la manera de filtrar el contenido Web a

ciertas páginas, el filtrado de las descargas por Internet.

Me imagino que muchos sabran que un Proxy es un software que realiza las peticiones a un

servidor en nombre de un cliente. Aunque la configuración básica de un Proxy es la de cachear el

contenido Web este concepto para mí ya no tiene mucho sentido dado las velocidades que

tenemos hoy en día para el acceso a Internet, fácilmente en un hogar podemos contar con

velocidades de mínimo 2000 Kbps y sobre todo el aspecto cambiante que tienen las páginas Web.

De qué sirve cachear una página Web si a los 5 minutos ya ha cambiado su aspecto.

Page 4: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 4

Objetivo

Implementar un servidor proxy HTTP y para lleva a cabo este proyecto nos apoyaremos en los

aplicativos VMware Workstation, GNS3, la distribución de Linux CentOS 5.5. Con el fin de tener

una solución la cual permita limitar a los usuarios de la LAN en la navegación por internet.

Page 5: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 5

Topología

Nuestra topología consta de LAN_LOCAL en la cual se encuentran las estaciones de trabajo y

nuestro servidor proxy.

Tabla de direccionamiento

Dispositivo Interfaz Direccion IPMascara de

subred

Gateway

predeterminadaFa0/0 10.0.0.6 255.255.255.248 NO APLICABLE

Fa0/1 10.0.0.13 255.255.255.248 NO APLICABLE

SVR-PROXY-01 NIC 10.0.0.3 255.255.255.248 10.0.0.6

CLIENTE-WEB-01 NIC 10.0.0.5 255.255.255.248 10.0.0.6

R1

Page 6: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 6

Screenshot de las VM.

Servidor Proxy

Cliente WEB

Page 7: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 7

Configuración de R1

Configuración básica

enable

configure terminal

hostname R0

line console 0

password cisco

login

exec-timeout 0 0

logging synchronous

exit

line vty 0 4

password cisco

exec-timeout 3 0

logging synchronous

login

exit

service password-encryption

banner motd / !!¡¡ SOLO PERSONAL AUTORIZADO ¡¡!! /

enable secret class

clock timezone BOGOTA -5

END

clock set 15:35:30 12 january 2010

cop r s

Page 8: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 8

Configuración de las interfaces

Configuración de enrutamiento

Tabla de enrutamiento de R1

R1(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.14

R1(config)#interface fa0/0

R1(config-if)#ip add

R1(config-if)#ip address 10.0.0.6 255.255.255.248

R1(config-if)#description TO LAN_LOCAL

R1(config-if)#no shutdown

R1(config)#interface fa0/1

R1(config-if)#ip add

R1(config-if)#ip address 10.0.0.13 255.255.255.248

R1(config-if)#description TO INTERNET

R1(config-if)#no shutdown

Page 9: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 9

En la siguiente imagen observamos conectividad completa.

Page 10: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 10

Proxy HTTP - Squid

Para la instalación de squid ejecutamos el comando yum install squid, el directorio principal de

squid lo encontramos en /etc/squid/. Nos posicionamos sobre ese directorio y procedemos a

realizar una copia del archivo de configuración ppal el cual es squid.conf.

Antes de que empecemos a configurar el servidor vamos a agregarlo al inicio, con el siguiente

comando.

Las directivas

# NETWORK OPTIONS

# TAG: http_port

http_port: esta directiva permite configurar squid para que escuche por un puerto específico

además también podemos especificar que escuche por una dirección ip determinada o cualquiera

que tenga configurada el servidor donde se ejecuta squid.

Esta directiva la configuraremos así:

# MEMORI CACHE OPTIONS

# TAG: cache_mem

cache_mem: nos permite especificar la cantidad de memoria RAM que usara para almacenar los

datos más solicitados.

http_port 10.0.0.3:3128

http_port 10.0.0.3:8080

chkconfig squid on

cp squid.conf squid.conf.old

Page 11: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 11

Esta directiva la configuraremos así:

# ACCESS CONTROL

# TAG: acl

Alc: nos permite crear listas de control de acceso para definir que se permite o no, como por

ejemplo dominios permitidos de destino, ips, etc.

Empezaremos a agregar las directivas acl desde acl CONNECT method CONNECT.

En esta directiva definimos nuestra red local.

Con esta configuración básica ya podemos empezar a testear nuestro proxy, antes de configurar

nuestro cliente debemos habilitar conexiones a el puerto 8080 en el firewall de CentOS.

Reiniciamos el servicio

Y habilitamos el puerto en iptables.

service squid restart

acl LAN_LOCAL src 10.0.0.0/29

cache_mem 16 MB

Page 12: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 12

Configuramos nuestro cliente para que utilice el servidor proxy.

Page 13: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 13

Por lo pronto vemos que nos dejo conectarnos al servidor proxy pero no podemos visualizar

ninguna página web, esto es porque debemos especificar si permitimos o denegamos la acl creada

anteriormente en # ACCESS CONTROL > # TAG: acl.

# TAG: http_access

http_access: en esta directiva especificamos si se permiten o se deniegas las acl creadas

anteriormente en la sección # ACCESS CONTROL > # TAG: acl.

Empezaremos a agregar directivas http_access posteriormente a la directiva http_access allow

localhost.

Agregaremos la siguiente directiva a esta sección para que nos permita visualizar cualquier página

a la LAN_LOCAL o sea a 10.0.0.0/29.

Reiniciamos squid.

service squid restart

http_access allow LAN_LOCAL

Page 14: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 14

Y podemos observar que ya nos deja ver cualquier página web.

En este apartado me imagino que se estarán haciendo la pregunta:

Para resolver este problema realizaremos una ACL en R1, y es la siguiente:

R1(config)#ip access-list extended ONLYPROXY

R1(config-ext-nacl)#permit ip host 10.0.0.3 any log

R1(config-ext-nacl)#permit icmp any any log

R1(config-ext-nacl)#deny ip any any log

R1(config-ext-nacl)#exit

Bueno teniendo en cuenta la tabla de direccionamiento presentada al inicio de este

documento podemos observar que la Gateway para los clientes es 10.0.0.6, dirección ip de la

Interface Fa0/0 de R1, que pasa si le quitamos al navegador web el proxy?. Si efectivamente

dejaría navegar tranquilamente a los clientes sin necesidad de pasar por el servidor proxy.

Page 15: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 15

Aplicamos la ACL creada a la interface Fa0/0 con dirección de entrada.

En esta captura podemos observar la cantidad de coincidencia que se permiten y deniegan para la

ACL creada con el nombre de ONLYPROXY.

Igualmente los logs que nos envía a la consola.

R1(config)#interface fa0/0

R1(config-if)#ip access-group ONLYPROXY in

Page 16: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 16

Resuelta la pregunta continuamos y agregaremos, modificaremos las siguientes directivas.

# DISK CACHE OPTIONS

# TAG: cache_dir

cache_dir: Con esta directiva podemos especificar el tamaño de almacenamiento en disco duro

que utilizara squid para almacenar el cache, número de directorios y subdirectorios.

Esta directiva la configuraremos así:

Es importante aclarar que cuando se toca el tamaño del cache debemos parar el servicio y ejecutar

el siguiente comando en la CLI del OS.

# TAG: minimum_object_size

minimum_object_size: Con esta directiva podemos especificar el tamaño mínimo permitido que

se almacenara en cache.

squid -z

cache_dir ufs /var/spool/squid 500 16 256

Jan 12 21:34:04.963: %SEC-6-IPACCESSLOGP: list ONLYPROXY permitted tcp 10.0.0.3(0) ->

96.31.90.61(0), 14 packets

Jan 12 21:34:04.963: %SEC-6-IPACCESSLOGP: list ONLYPROXY permitted udp 10.0.0.3(0) ->

208.67.222.222(0), 1 packet

R1#

Jan 12 21:35:04.963: %SEC-6-IPACCESSLOGP: list ONLYPROXY denied udp 10.0.0.5(0)->

10.0.0.7(0), 6 packets

R1#

Jan 12 21:35:40.571: %SEC-6-IPACCESSLOGP: list ONLYPROXY denied udp 10.0.0.5(0)->

208.67.222.222(0), 1 packet

Page 17: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 17

# TAG: maximum_object_size

maximum_object_size: Con esta directiva podemos especificar el tamaño máximo permitido que

se almacenara en cache.

# LOG FILE OPTIONS

# TAG: access_log

access_log: Esta directiva especifica el directorio donde se almacenara información referente al

acceso de nuestro servidor proxy.

# TAG: cache_log

cache_log: Esta directiva nos permite definir la ubicación del archivo en donde se almacenara

datos del comportamiento de cache squid.

# ADMINISTRATIVA PARAMETERS

# TAG: cache_mgr

cache_mgr: Esta directiva nos permite configurar una dirección de correo electrónico para en

envío de eventos si ocurre algo relacionado con el cache.

Esta directiva la configuraremos así:

# TAG: visible_hostname

visible_hostname: Con esta directiva especificamos el nombre del servidor.

cache_mgr [email protected]

cache_log /var/log/squid/cache.log

access_log /var/log/squid/access.log squid

maximum_object_size 2048 KB

minimum_object_size 0 KB

Page 18: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 18

Esta directiva la configuraremos así:

# ERROR PAGE OPTIONS

# TAG: error_directory

error_directory: Esta directiva permite cambiar el idioma para que aparezcan los mensajes de

error a los clientes en el idioma deseado.

Esta directiva la configuraremos así:

# TAG: err_html_text

err_html_text: Esta directiva nos permite agregar comentarios adicionales a los errors generados

por squid hacia sus clientes, para que el valor asignado a esta directiva tenga efecto debemos

agregar a el tipo de mensaje en el que queremos incluir este comentario la variable %L.

# TAG: deny_info

deny_info: Esta directiva nos permite asociar una página de error personalizada a una negación

establecida por http_access.

Por el momento dejaremos esta directiva tal cual está en la configuración por defecto.

# MISCELLANEOUS

# TAG: offline_mode

offline_mode: Permite especificar que nuestro servidor proxy este en modo offline o sea que

proporcionara información de cache que este en el servidor, pero si la información solicitada es

nueva no actualizara el cache, igualmente nunca tratara de verificar si hay nueva información de

sitos, para su actualización en cache.

err_html_text <p style=’color: red;’>NO SE PUEDE…</p>

error_directory /usr/share/squid/errors/Spanish

visible_hostname localhost3

Page 19: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 19

Muy bien con las directivas básicas configuradas reiniciaremos el servidor.

Si por algún motivo no nos inicia squid podemos verificar que está ocurriendo con el siguiente

comando:

Podemos observar que nuestro mensaje se agrego a el tipo de mensaje de error

ERR_ACCESS_DENIED.

Aplicar algunas políticas

Queremos restringir cierto tipo de extensiones, y messenger

Crearemos un archivo en /etc/squid/ llamando deny_files.conf, y el cual contendrá lo siguiente:

service squid reload

service squid restart

offline_mode off

Page 20: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 20

Con esto estaremos restringiendo mp3, avi, rar, exe, bat, com.

Y finalmente agregamos las siguientes directivas a el archivo squid.conf.

NOTA: El orden es importante para que la política se aplique correctamente las reglas deny las

ingresamos antes de lo que se permite.

Reiniciamos el servicio.

http_access deny deny_files

http_access deny messenger

acl deny_files urlpath_regex "/etc/squid/deny_files.conf"

acl messenger rep_mime_type -i ^application/x-msn-messenger$

\.[Mm][Pp]3$

\.[Aa][Vv][Ii]$

\.[Rr][Aa][Rr]$

\.[Ee][Xx][Ee]$

\.[Bb][Aa][Tt]$

\.[Cc][Oo][Mm]$

Page 21: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 21

service squid reload

Page 22: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 22

Page 23: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 23

Como podemos observar no nos deja descargar archivos .exe, mp3.

Pero si que nos deja archivos .msi.

Page 24: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 24

Y esta es una captura en una estación de trabajo no esta dentro del dominio del servidor proxy.

Page 25: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 25

Prohibir el acceso a ciertos sitios.

Crearemos un nuevo archivo en /etc/squid/ el cual se llamara deny_sites.conf y contendrá lo

siguiente:

Crearemos la acl nombrada como deny_sites

Aplicamos la negación a esta acl.

Nuevamente el orden es importante y reiniciamos el servicio

service squid reload

http_access deny deny_sites

alc deny_sites url_regex “/etc/squid/deny_sites.conf”

tube8.com

megaupload.com

rapidshare.com

taringa.net

Page 26: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 26

Para finalizar vamos a personalizar un mensaje para la acl deny_files creada anteriormente.

Con esto cuando intenten descargar un tipo de extensión lo que hará es re direccionar a la url

http://jfherrera.wordpress.com.

deny_info http://jfherrera.wordpress.com deny_files

Page 27: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 27

Conclusiones

La implementación de un servidor proxy puede ser muy útil para la implementación de políticas de

una organización.

Si queremos reservar el ancho de banda para otras tareas más necesarias podemos apoyarnos en

un servidor proxy con cache.

La implementación de Squid es fácil de realizar, además en la web encontramos infinidad de

información del mismo, lo mejor es que es la misma configuración en cualquier distribución de

Linux.

Bibliografía

http://www.visolve.com

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento

http://www.vlan7.org/

Page 28: Fase 3 Squid Proxy

Mind Wide Open™ BLOG – http://jfherrera.wordpress.com

Seguridad de la red | Implementación Del Plan De Seguridad De La Información

GROUP | “???”

MiNdWiDe - Group 28

Gracias… Juan Alejandro Bedoya

Jose De Arlex Dominguez

Neifer Erney Giraldo

Jhon Fredy Herrera

Yojan Leandro Usme