Académique Documents
Professionnel Documents
Culture Documents
Objetivo General
INICTEL 1 Módulo 3
Administración y Seguridad en redes GNU/LINUX
Objetivo Específicos :
o Estará capacitado para implementar un servidor
Proxy-cache Squid
o Establecer listas de control de acceso donde se
define un conjunto de rangos de direcciones IP, lista
de enlaces, lista de archivos, rangos de puertos, etc.
Esto le permitirá realizar un mejor control cuando se
aplica restricciones.
o Asignar reglas de control de acceso que permite o
deniega el acceso a Squid a las listas de acceso
definidas por el administrador.
o Realizar tareas de mantenimiento al caché de Squid.
INICTEL 2 Módulo 3
Administración y Seguridad en redes GNU/LINUX
INTRODUCCIÓN
En este módulo se enseñará a instalar y configurar Squid que es un Proxy a nivel de
aplicación para HTTP, HTTPS y FTP. Squid es ideal para acelerar la navegación y
controlar el acceso a sitios web. Es el servidor Proxy más popular y extendido entre los
sistemas operativos basados sobre Linux y Unix. Una vez instalado el Proxy-Caché
Squid podrá salir a Internet desde un número ilimitado de clientes y almacenar las
páginas más cargadas en el caché, con el fin de optimizar el ancho de banda.
INICTEL 3 Módulo 3
Administración y Seguridad en redes GNU/LINUX
Sumario
1.1 Definición. 5 -6
1.8.2 Laboratorio
INICTEL 4 Módulo 3
Administración y Seguridad en redes GNU/LINUX
1
Fuente : extraída del libro Guía Avanzada Firewalls Linux, autor: Robert L. Ziegler , año 2000
INICTEL 5 Módulo 3
Administración y Seguridad en redes GNU/LINUX
define el puerto de escucha del servidor proxy, también se puede agregar la dirección IP que vincula
con el servicio para permitir el acceso de la red local. Se da un ejemplo de cómo se configura con el
parámetro http_port la dirección IP y puerto de escucha del servidor proxy.
http_port 192.168.1.33:3128
b. Memoria u sada
Se especifica la cantidad ideal de memoria para ser usada por los objetos en tránsito. Los datos de
estos objetos se almacenan en bloques de 4 Kb. El parámetro caché_mem especifica un límite
máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor
prioridad. Sin embargo los objetos negativamente almacenados en el caché podrán utilizar la
memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es
mayor a la cantidad de memoria especificada, squid excederá lo que sea necesario para satisfacer la
petición.
Por defecto se establecen 8 MB. Puede especificarse una cantidad mayor si así se considera
necesario, dependiendo esto de los hábitos de los usuarios o necesidades establecidas por el
administrador.
caché_mem 8 MB
c. Tamaño caché
Se establece el tamaño que tendrá el cache en el disco duro, donde se almacena los objetos
(páginas Web). Por defecto Squid utilizará un caché de 100 MB, el parámetro caché_dir define el
directorio caché y tamaño que se especifica con la siguiente sintaxis:
caché_dir type directory size (MB) L1 L2
type
Define el tipo de sistema de almacenamiento para crear el cache de squid en disco, el tipo de
sistema archivo por defecto es ufs.
directory
Nombre del directorio caché de nivel principal donde se almacena los objetos, este directorio no lo
crea por defecto squid.
size (MB)
Especifica el tamaño en MB del caché de disco, por defecto es 100 MB.
L1
Es el primer nivel de subdirectorios que se crea debajo del directorio caché de nivel principal. Por
defecto se crea 16 subdirectorios.
L2
Es el segundo nivel de subdirectorios que se crea por debajo de cada uno de los subdirectorios de
primer nivel. Por defecto se crea 256 subdirectorios.
caché ufs /usr/local/squid/var/caché 100 16 256
INICTEL 6 Módulo 3
Administración y Seguridad en redes GNU/LINUX
INICTEL 7 Módulo 3
Administración y Seguridad en redes GNU/LINUX
También se puede definir una Lista de Control de Acceso invocando un fichero, en el cual se
encuentra una lista de direcciones IP. Se utiliza la misma sintaxis con la diferencia que no se define
lo que compone la lista sino el nombre del fichero.
Sintaxis:
acl [nombre de la lista] [acltype] filename
Ejemplo 2:
Se creará una lista de control de acceso que contenga una lista de direcciones de direcciones IP de
máquinas que se deniega el acceso a servidores remotos.
INICTEL 8 Módulo 3
Administración y Seguridad en redes GNU/LINUX
La línea http_access allow redlocal! denegados, estamos permitiendo el acceso para la lista redlocal,
excepto a las máquinas definidas en la lista denegados, es decir las indicadas en el fichero
/etc/squid/denegados.
1.6. Parámetros de administración
a. cache_mgr
La dirección de correo electrónico del responsable del caché Squid .
Ejemplo:
caché_mgr cachemgr@dominio.com
b. caché_effective_user
El usuario y grupos con que se ejecutará el proceso squid. Por razones de seguridad sólo deben
tener permisos en el sistema, no asignarle un shell, no obstante deben tener permisos plenos sobre
los directorios de Squid logs y caché.
Ejemplo:
Se asigna como usuario a nobody y grupo nogroup para ejecutar el proceso squid.
INICTEL 9 Módulo 3
Administración y Seguridad en redes GNU/LINUX
dirección IP en donde se acepta las solicitudes como el nombre del host en el URL. Si desea que
soporte puerto virtual entonces se especifica el puert o como "0".
NOTA: Si usted quiere habilitar sólo estas características, entonces poner la opción
'httpd_accel_with_proxy'
e. httpd_accel_with_proxy on ?off
Si se desea usar el Squid tanto como acelerador local httpd y como un proxy, cambiar esto hacia
"on" . Dentro de las opciones de proxy acelerado está el habilitar un proxy transparente,
regularmente se utilizará el puerto 80 y se valdrá del re-direccionamiento de peticiones de modo tal
que no habrá necesidad alguna de modificar la configuración de los navegadores de red para utilizar
el servidor Proxy; bastará con utilizar como puerta de enlace al servidor. Cabe indicar que debemos
especificar la IP de cualquier servidor Web en la red local o bien el valor virtual. A continuación se
define los parámetros para configurar squid como un proxy transparente.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
f. httpd_accel_uses_host_header on ?off
Si usted necesita acelerar para proporcionar el dominio y si están como servidores virtuales basado
en la misma dirección IP entonces usted necesitará habilitar este parámetro en on. Nótese que
Squid no verificará el valor de las cabeceras de cualquier host que coincida con su servidor squid de
aceleración, así que puede abrir un hueco grande en la seguridad a menos que usted establezca los
controles de acceso apropiados. Por defecto este parámetro está deshabilitado.
1.7. Implementación de un servidor Proxy
Se instalará un servidor Proxy Caché Squid para proteger a los clientes de la red local cuando
accedan a Internet.
A continuación se indica los pasos a seguir para implementar servidor Proxy Caché Squid
1. Para instalación de Squid se puede descargar en http://www.squid-cache.org o también se
encuentra en paquete binario rpm. En este caso se instalará Squid a partir de los ficheros fuentes
que se obtendrá de la página oficial de Squid como se muestra en la Figura 1.
INICTEL 10 Módulo 3
Administración y Seguridad en redes GNU/LINUX
2. Ingresamos a la página donde está una lista de la suite de productos Squid versión 2.5. Ver
Figura 2.
INICTEL 11 Módulo 3
Administración y Seguridad en redes GNU/LINUX
4. En la misma página donde está la suite de productos Squid, en la parte inferior como se muestra
en la Figura 4 es tá los enlaces para descargar del archivo de verificación de sumatorias MD5 y
los parches de Squid para la versión 2.5
Figura 4 : Enlace para acceder a descargar archivos de verificación MD5 y parches de Squid
INICTEL 12 Módulo 3
Administración y Seguridad en redes GNU/LINUX
5. Primero ubicamos el checksums MD5 del fichero fuente Squid que descargamos anteriormente
como se muestra en la Figura 5.
Figura 5 : Selección del checksum MD5 para verificar la integridad del fichero fuente Squid
6. Seleccionado el checksum MD5 que corresponde del fichero fuente de Squid como se muestra en
la Figura 6 , procedemos a copiar para luego pegar en el fichero md5squid1 creado por el editor
de texto VIM
INICTEL 13 Módulo 3
Administración y Seguridad en redes GNU/LINUX
7. Procedemos con el comando md5sum a verificar la sumatoria de bits del fichero fuente squid-
2.5.STABLE5.tar.bz2 , donde se imprimirá en pantalla la suma de control como se muestra en la
Figura 7.
Figura 7 : Ejecución de md5sum para obtener la suma de control del fichero fuente de Squid.
8. Ahora procedemos a guardar esta suma de control como se puede apreciar en la Figura 8
usando un operador de salida que lo envía para ser registrado en el fichero md5squid2
INICTEL 14 Módulo 3
Administración y Seguridad en redes GNU/LINUX
12. En la página donde se accede para descargar el fichero fuente de Squid, existe un enlace
“Avaliable patches” para la versión 2.5 donde se descarga los parches como se muestra en la
Figura 12.
Figura 12 : Página Web donde se descarga los parches para Squid versión 2.5
INICTEL 15 Módulo 3
Administración y Seguridad en redes GNU/LINUX
13. En la Figura 13 muestra la página donde se da una breve información sobre el parche que
requiere Squid; es para evitar que bajo cierta condiciones Squid choque con un "Defecto de
Segmentación" después que aparece un mensaje de advertencia que se ha impreso en el
archivo caché.log. El grado de severidad de este problema es alto por lo tanto es necesario
descargar este parche que necesita Squid antes de instalar en el sistema.
INICTEL 16 Módulo 3
Administración y Seguridad en redes GNU/LINUX
17. En la Figura 17 se lista el directorio que contiene los ficheros fuentes de Squid.
INICTEL 17 Módulo 3
Administración y Seguridad en redes GNU/LINUX
INICTEL 18 Módulo 3
Administración y Seguridad en redes GNU/LINUX
23. Se procede a configurar Squid editando el fichero de configuración squid.conf. Ver Figura 23
24. Habilitar el parámetro http_port por donde Squid escucha las solicitudes que hacen los
navegadores para solicitarles páginas Web. En la Figura 24 se habilita tanto para el localhost y la
dirección IP 172.16.0.1 que permite acceder Squid a LAN privada teniendo como puerto de
escucha el 3128.
25. Cantidad de memoria requerida por Squid para los objetos en tránsitos. Ver Figura 25.
INICTEL 19 Módulo 3
Administración y Seguridad en redes GNU/LINUX
26. Se habilita el parámetro caché_dir para definir el tamaño del directorio caché; se le asignará de
tamaño 50MB; se puede incrementar el tamaño para almacenar más objetos y acelerar la
navegación. Ver Figura 26
27. El parámetro caché_access_log indica la ruta del fichero que registra el acceso de los clientes al
caché de squid. Ver Figura 27
28. En la Figura 28 se habilita el parámetro cache_log para especificar la ubicación del archivo que
registra información del caché de squid.
29. El parámetro caché_store_log especifica la ubicación del archivo store.log donde se registra
sobre los objetos agregados o eliminados en el caché de Squid. Ver Figura 29
INICTEL 20 Módulo 3
Administración y Seguridad en redes GNU/LINUX
30. En la Figura 30 se muestra la ubicación del archivo que almacena el número identificador de
proceso asociado a Squid.
INICTEL 21 Módulo 3
Administración y Seguridad en redes GNU/LINUX
32. Se agrega una lista de control de acceso llamado redlocal que define toda la red interna. Ver
Figura 32:
33. Configuración mínima recomendada de reglas de control de acceso que permite o deniega el
acceso a Squid. Ver Figura 33
34. Se agrega una regla de control de acceso que permite la red interna tener acceso a Squid y la
segunda regla deniega a todos acceder a Squid. Ver Figura 34
INICTEL 22 Módulo 3
Administración y Seguridad en redes GNU/LINUX
36. Se observa en la Figura 36 en donde se define al usuario y grupo efectivo que genera el
directorio caché y ejecutará el proceso Squid.
37. Se define el nombre de hosts con el que se anuncia la caché de Squid. Ver Figura 37
38. Parámetros que definen un Proxy Convencional como se muestra en la Figura 38.
INICTEL 23 Módulo 3
Administración y Seguridad en redes GNU/LINUX
Figura 39 : Parámetro que indica la ubicación del directorio que define el idioma por defecto.
40. En la Figura 40 lista las propiedades de los directorios contenidos en Squid. En donde el
directorio var se encuentra el directorio logs y se crea el directorio caché de Squid.
El usuario efectivo nobody es el que crea el directorio caché, por lo tanto debemos cambiar de
propietario y grupo al directorio var.
INICTEL 24 Módulo 3
Administración y Seguridad en redes GNU/LINUX
41. Asignar como propietario y grupo a nobody en el directorio var. Ver Figura 41
42. Ingresamos al directorio sbin como se muestra en la Figura 42, donde se ubica el comando de
Squid para realizar tareas de mantenimiento con las siguientes opciones:
§ -f : Especifica la ubicación del fichero de configuración de Squid
§ -z : Crea y limpia el cache de Squid.
§ -k check : Comprueba que el proceso squid está funcionando
§ -k reconfigure : Permite a Squid volver a leer el fichero de configuración
§ -k shutdown : Finaliza Squid, al utilizar esta opción es muy probable que haya conexiones
abiertas, por lo que squid las mantendrá, como máximo, durante un tiempo establecido por el
parámetro "shutdown_lifetime".
§ -k rotate : Permite a Squid rotar sus ficheros de logs
43. Con el comando squid crearemos el directorio caché usando las opciones -f para indicar la
ubicación del archivo de configuración que lee Squid y la opción -z para crear el cache de Squid.
Ver Figura 43.
INICTEL 25 Módulo 3
Administración y Seguridad en redes GNU/LINUX
46. Luego de haber inicializado Squid procedemos a revisar su archivo cache.log, que nos da
información del estado del caché de Squid. En la Figura 46 se puede observar que se ha
inicializado Squid en el sistema, asimismo acepta solicitudes de los clientes de la LAN interna por
la inter face de red asignado la dirección 172.16.0.1 a través del puerto 3128.
INICTEL 26 Módulo 3
Administración y Seguridad en redes GNU/LINUX
47. El siguiente paso es configurar el cliente de Squid, para eso utilizaremos como ejemplo el
navegador Mozilla y seleccionamos el menu Editar -> Preferencias donde visualizaremos la
siguiente ventana que se muestra en la Figura 47. Luego seleccionamos la opción Proxies y se
habilita la opción donde dice “Manual proxy configuration” y se agrega la dirección IP del Proxy y
puerto de escucha.
INICTEL 27 Módulo 3
Administración y Seguridad en redes GNU/LINUX
INICTEL 28 Módulo 3
Administración y Seguridad en redes GNU/LINUX
49. Revisando el archivo access.log que se muestra en la Figura 49, se puede observar que Squid
acepta la solicitud de la máquina cliente que pertenece a LAN interna protegida por el proxy
Squid. De este modo Squid solicitará por el cliente al servidor Web público, el cliente accede a
las páginas Web que Squid tiene en transferencia como si fuera el servidor Web publico.
INICTEL 29 Módulo 3
Administración y Seguridad en redes GNU/LINUX
50. También se puede configurar Squid para restringir el acceso a sitios no permitidos a que visite el
cliente, primero salimos del directorio sbin y creamos un archivo en el directorio etc como se
muestra en la Figura 50 donde registraremos todos los sitios no permitidos que serán restringido
por Squid.
51. En este archivo editamos una lista de sitios no permitidos como se muestra en la Figura 51.
52. Después editamos el archivo de configuración en donde agregaremos una nueva lista de control
de acceso y se define el tipo acl “url_regex” que permite a Squid en el archivo especificado
contener una lista de nombres URL. Como se muestra en la Figura 52.
53. Se aplica una regla de control de acceso como se muestra en la Figura 53, a la lista de control
de acceso (acl) llamado sitios prohibidos; esto permite a Squid denegar el acceso a los sitios
prohibidos que se menciona en el archivo “sitios denegados” a todos los clientes de la lista acl red
local.
INICTEL 30 Módulo 3
Administración y Seguridad en redes GNU/LINUX
54. Otra forma de definir una regla de control de acceso es usando “ ! “ como se muestra en la
Figura 54, en donde squid permitirá el acceso a los clientes de la lista acl redlocal excepto a los
que soliciten visitar direcciones de páginas no permitidas comprendidas en la lista acl sitios
prohibidos.
55. Luego de configurar el archivo squid.conf ejecutaremos squid estando en el directorio actual
(/usr/local/squid) con las siguiente opciones:
sbin/squid -f etc/squid.conf -k reconfigure
Para que vuelva a leer el archivo de configuración de este modo squid aplicará las reglas de
control. En la Figura 55 se solicita el acceso a la página http://www.mp3.com , donde Squid
responde indicando que las reglas de control de acceso impiden que su solicitud sea permitida.
INICTEL 31 Módulo 3
Administración y Seguridad en redes GNU/LINUX
INICTEL 32 Módulo 3
Administración y Seguridad en redes GNU/LINUX
58. Se aplica una regla de control de acceso como se muestra en la Figura 58, esto permite a Squid
denegar a que descargue archivos con extensiones definida en la lista acl “archivos” a todos los
clientes de la lista acl “redlocal”.
60. En la Figura 60 se solicita el acceso a la página web donde se descargan archivos comprimidos
con extensión “zip”, Squid responde indicando que las reglas de control de acceso impiden que su
solicitud sea permitida.
INICTEL 33 Módulo 3
Administración y Seguridad en redes GNU/LINUX
62. En la Figura 62 se habilita los parámetros que permite a Squid utilizar el puerto 80 al ser
desviado hacia el Proxy todo el tráfico que se solicita a través de determinados puertos,
habitualmente interceptan el tráfico solicitado al puerto 80. A esto se le llama proxy transparente,
porque su utilización es transparente al usuario, este no tiene que configurar en los navegadores
INICTEL 34 Módulo 3
Administración y Seguridad en redes GNU/LINUX
Web para utilizar el Proxy, bastará con utilizar como puerta de enlace la dirección IP del servidor
Proxy que encaminará todas las solicitudes de los clientes de la red interna con destino al Proxy.
63. Todas las solicitudes de los clientes deben ser redireccionado hacia el puerto 3128 por donde
Squid recibe cualquier petición originada en la red local hacia servicios HTTP (80), HTTPS (443),
FTP (21) principalmente, para esto hay que agregar una regla en la tabla NAT como se muestra
en la Figura 63 donde todas las solicitudes de la red local con destino al puerto 80 sean
redireccionado hacia el puerto 3128 por donde escucha Squid.
64. En el navegador Mozilla habilitamos la opción “Conexión directa a Internet “. Ver Figura 64
INICTEL 35 Módulo 3
Administración y Seguridad en redes GNU/LINUX
65.En la Figura 65 en la máquina cliente asignamos como puerta de enlace la dirección IP del
servidor Squid.
INICTEL 36 Módulo 3
Administración y Seguridad en redes GNU/LINUX
Figura 66 : Acceso al cliente de visitar páginas Web a través de Squid en Modo Transparente
INICTEL 37 Módulo 3
Administración y Seguridad en redes GNU/LINUX
1.8.1. AUTOEVALUACIÓN
1. ¿Qué parámetro define la ubicación y tamaño del disco donde se almacena los objetos?
a. caché_dir_ufs
b. caché_dir_fs
c. caché_access_log
d. caché_dir
2. ¿Cuál es la opción que permite a squid limpiar el disco donde se almacena los objetos?
a. -D
b. -k
c. -z
d. -f
3. ¿Cuál es el archivo donde se registra información de los objetos almacenados en disco?
a. cache.log
b. squid.log
c. store.log
d. access.log
4. ¿Qué opción de Squid permite renovar nuevos archivos de registro?
a. -k reload
b. -k reconfigure
c. -k rotate
d. -k check
5. ¿Cuáles de estas listas son parámetros administrativos?
a. http_access
b. visible_hostname
c. caché_dir
d. httpd_accel_port
6. Defina una regla de control de acceso que no permite Squid descargar archivos de extensión
definidos en la lista de acceso llamado extensiones
a. acl_access deny extensiones
b. http_access drop extensiones
c. acl _access drop extensiones
d. http_access deny extensiones
INICTEL 38 Módulo 3
Administración y Seguridad en redes GNU/LINUX
1.8.2. LABORATORIO
Experiencia practica 1.- Instalación de un servidor Proxy
Duración
§ 45 minutos
Objetivos
§ Brindar al participante las recomendaciones y procedimiento a seguir para implementar un
servidor Proxy en Linux.
Recursos a utilizar
Una PC que tenga dos interfaces de red por alumno con Linux distribución (RedHat 9.0 o Debían 3.0)
Ejecución de la Práctica I
Procedimiento para implementar un servidor Proxy para proteger la red privada con salida a Internet.
- Habilitar parámetros relacionado con la seguridad del sistema.
Rechazar a responder a solicitudes broadcast
Protección de Cookie TCP SYN
Protección contra malos mensajes de error
Habilitar el reenvió de paquetes
- Descargar fichero fuente de la aplicación Squid
- Verificación de la integridad del fichero fuente
- Descomprimir y extraer los ficheros fuentes de Squid
- Descargar los parches que requiere Squid
- Configuración
- Compilación
- Instalación de Squid
- Configuración mínima de los parámetros de Squid
- Crear listas de Control de acceso para:
§ Intervalo de direcciones IP de la red local
§ Sitios denegados
§ Archivos de extensión
- Aplicar reglas de control de acceso
- Creación del directorio caché de Squid
- Ejecución de Squid
- Configuración de la máquina cliente.
INICTEL 39 Módulo 3
Administración y Seguridad en redes GNU/LINUX
1.9. BIBLIOGRAFÍA
Textos.
§ Securing and Optimizing Linux: The Ultimate Solution version: 2.0, autor : Gerhard Mourani,
Publicado por : Open Network Architecture, Inc., Ultima version : 2001-06-10
Enlaces.
INICTEL 40 Módulo 3