Vous êtes sur la page 1sur 20

Curso

Administrador Linux

Módulo 5
Iptable y Squid

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 1 de 20
Presentación

En esta unidad se introducirá a los participantes al funcionamiento de firewall y


servidores proxy.

Objetivos

Los participantes al finalizar la Unidad:

 Comprenderán el funcionamiento de un firewall.

 Podrán realizar configuraciones básicas de un firewall.

 Conocerán la utilidad de un servidor proxy.

 Podrán realizar la configuración básica de un proxy.

Temario
5.1 Iptables
5.2 ¿Qué es un firewall?
5.3 Firewall con iptables
5.4 Perfeccionamiento del firewall
5.5 Squid
5.6 Instalación
5.7 Configuración
5.8 Ajustes del firewall

Actividad de aplicación del conocimiento

Los participantes encontraran la actividad de aplicación en un archivo por separado


en caso de ser requerida.

Examen
Los participantes deberán rendir el examen online o presentar el material solicitado
según corresponda.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 2 de 20
5.1 Iptables

Para comenzar a entender el funcionamiento del filtrado de paquetes en Linux


debemos nombrar a Netfilter. Este es un framework, embebido en el Linux, que
mediante hooks intercepta y puede modificar paquetes.

Iptables es el programa que permite modificar las tablas y las cadenas de reglas.

A través del tiempo, como todo software, va evolucionando. Iptables


es el reemplazo de ipchains. Aun no se sabe en cuanto tiempo pero es
casi un hecho que iptables sea reemplazado.

La idea es que podemos agregar, modificar o quitar reglas del firewall mediante la
ejecución del comando iptables. Usualmente se arma un script con los comandos
necesarios en nuestro sistema, y se agrega un script de inicio en /etc/init.d para
agregar o quitar las reglas.

Al kernel le llega un paquete, se fija en las reglas del firewall y toma la decisión de que
realizar con ese paquete. Las decisiones que se puede tomar se observan en el
siguiente grafico.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 3 de 20
Al ingresar un paquete se puede aplicar NAT o MANGLE o FILTER, estas son las
cadenas de iptables (chains). NAT se utiliza para cambiar las IP de origen o destino
del paquete, o para realizar redireccionamiento de puertos. MANGLE permite modificar
valores internos del paquete.

Para NAT existen tres tipos de reglas PREROUTING, POSTROUTING y OUTPUT.


Para FILTER existen tres tipos de reglas, INPUT y OUTPUT que aplican a paquetes
destinados a la misma máquina, y FORWARD que aplica a paquetes dirigidos a otras
redes o maquinas.

FILTER
INPUT Paquetes que llegan con destino a nuestro sistema
FORWARD Paquetes que pasan por nuestro sistema dirigidos a otros
OUTPUT Paquetes generados en nuestro sistema y son enviados
NAT
PREROUTING Se utiliza para modificar paquetes al entrar
OUTPUT Se utiliza para modificar paquetes generados localmente
antes de ser enrutados
POSTROUTING Se utiliza para modificar paquetes al salir
MANGLE
PREROUTING Se utiliza para modificar paquetes al entrar
POSTROUTING Se utiliza para modificar paquetes al salir

5.2 ¿Qué es un Firewall?


Un firewall o cortafuegos es sistema de seguridad (un dispositivo o servidor) que sirve
de frontera entre nuestra red y el mundo exterior. El firewall inspecciona el tráfico
permitiendo o denegando el paso de los paquetes basando esta decisión en reglas
predefinidas.

Dado que las computadoras en la actualidad están interconectadas en red, ya sea red
interna o Internet, existe la posibilidad que nuestra información sea vista por gente que
no debería tener acceso a ella (por ejemplo un hacker).

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 4 de 20
Una de las formas de proteger la información es mediante la
implementación de un firewall para evitar las conexiones que no sean
autorizadas.

Como mencionamos anteriormente los firewalls pueden ser hardware (un dispositivo) o
software (por ejemplo netfilter/iptables) y, en primera instancia, pueden clasificarse
temporalmente de la siguiente manera:

 Primer generación - packet filters

Se basan en el filtrado de paquetes aceptando o denegando el paso del tráfico basado


en los encabezados (headers) de TCP/IP. Trabajan en la capa de red (capa 3) y no
realizan verificación del contenido de los paquetes, esto hace que no afecten la
performance de la red. Usualmente este tipo de firewalls permiten además filtrar por
campos de capa de transporte (capa 4) como el puerto origen y destino, o a nivel de
enlace de datos (capa 2) como la dirección MAC.

 Segunda generación - "stateful" filters

También conocidos como Circuit-level gateway. Estos firewalls tienen en cuenta


también la posición de cada uno de los paquetes dentro de la serie de paquetes. Esta
tecnología se conoce como stateful packet inspection, ya que lleva registro de todas
las conexiones que pasan por el firewall pudiendo además determinar si un paquete es
el inicio de una nueva conexión, si es un paquete de una conexión ya existente o si es
un paquete invalido. Si bien consta de un conjunto de reglas, el estado de una
conexión en uno de los criterios de activación de una regla especifica. Son muy útiles
para evitar ataques que se basan en explotar conexiones y denegación de servicios
(DoS).

 Tercer generación - application layer

Este tipo de firewall también es llamado proxy de aplicaciones. Es un intermediario en


la comunicación, todas las aplicaciones de los host protegidas son forzadas a utilizar el
Firewall como un Proxy. El cliente va al proxy como su servidor y el servidor ve al
Proxy como cliente. Entonces el Firewall puede autorizar cada paquete de cada
protocolo en forma independiente. Su principal desventaja es que puede afectar la
performance general.

 Cuarta y quinta generación - Firewalls actuales y en desarrollo

En la actualidad los firewalls son capaces de realizar una inspección detallada de los
paquetes y compartir los datos con sistemas de prevención de intrusos (IPS).

La quinta generación está conformada por los llamados Kernel proxy firewall, estos
están desarrollados en el interior del kernel y es una tecnología totalmente diferente a
las previamente vistas.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 5 de 20
Políticas por defecto del firewall

Hoy dos formas de comenzar a implementar políticas en un firewall

ACEPTAR - ACCEPT
En este caso por defecto se acepta el tráfico que pasa por el firewall y se deniega
explícitamente mediante reglas. El riesgo es que no controlamos que puertos están
abiertos, por ejemplo si se instala un nuevo software o en un peor caso un gusano o
spyware, podría abrir un nuevo puerto.

DENEGAR - DROP
En este caso por defecto se niega el tráfico y se permite lo que se explicito en las
reglas. En este caso el firewall actúa como una pared.

En cualquiera de los casos es importante notar que el orden de las


reglas es determinante.

Al momento de decidir qué hacer con un paquete el firewall compara regla por regla
hasta que encuentra una coincidencia (match) y se realiza lo que la regla indica. Una
vez realizada la acción no se verifican el resto de las reglas, por esto es muy
importante verificar muy bien el orden de las reglas y cuan permisivas son.

Topologías comunes

Hay diversas topologías de red en base a la posición que ocupa el firewall, por ejemplo
Bastion host, Dual-homed firewall, Screened host, Screened subnet, etc. Veremos en
este apartado dos disposiciones básicas para luego pasar a la configuración de
iptables.

Esquema simple, el trafico sale directamente del firewall (sin red interna).

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 6 de 20
Orden en que se verán las tablas y cadenas
mangle / OUTPUT
nat / OUTPUT
filter / OUTPUT
nat / POSTROUTING

Esquema simple con red interna, el firewall tiene dos placas de red. Una de las placas
conectada a Internet y otra conectada a la red interna.

Orden en que se verán las tablas y cadenas


mangle / PREROUTING
nat / PREROUTING
filter / FORWARD
nat / POSTROUTING

5.3 Firewall con iptables


Veamos primero algunos ejemplos de reglas básicas por separado y luego veremos
cómo realizar un script completo de firewall.

Una regla en general luce como la siguiente

# iptables -A INPUT -s 192.168.139.1 -d 200.77.5.5 -p tcp --dport 22 -j ACCEPT

-A le indica que abra esta regla para la cadena INPUT


-s para indicar el origen (source)
-d para indicar destino
-p para indicar el protocolo
--dport para indicar el puerto destino
-j indica saltar. Si todo funciona en esta regla saltar para ACCEPT (aceptar)

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 7 de 20
Las reglas las que aplicaremos en estos ejemplos son para nuestro equipo,
denominado debian.linux.com y bloquearemos los ataques de redes (193.11.1.0/24) o
del host hacker.com

Descartar (drop) todos los paquetes del tipo http provenientes de la red 193.11.1.0/24
# iptables -A FORWARD -p tcp -dport 80 -s 193.11.1.0/24 -d debian.linux.com -j

DROP Descartar (drop) los paquetes de telnet provenientes del host hacker.net
# iptables -A INPUT -p tcp -s hacker.com -d debian.linux.com -dport 23 -j DROP

Permitir SSH para management del servidor


# iptables -A FORWARD -p tcp -dport 22 -i eth0 -m state --state NEW,ESTABLISHED -
j ACCEPT

Port forwarding, aquí re direccionamos el trafico dirigido a un puerto hacia otro


# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Descartamos los paquetes ICMP (ping, etc) que provienen de un host malicioso
# iptables -A INPUT -s hacker.com -p icmp -j DROP

Hacemos NAT (Network Address Translation o Masquerade)


# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Para verificar que las reglas se han aplicado debemos ejecutar el comando
# iptables –L -n

Ejemplo de saludo de 3 vías:

iptables puede determinar el estado (state) en el cual se encuentra un paquete. Por


ejemplo, en el caso que estamos estudiando donde se utiliza el saludo de 3 vías entre
dos equipos. La comunicación se establece de la siguiente forma:

 NEW - Equipo1 se conecta con Equipo2 enviando un paquete SYN


 RELATED - Equipo2 recibe el paquete SYN y responde con un paquete SYN-
ACK
 ESTABLISHED - Equipo1 recibe el paquete SYN-ACK y responde con el
paquete de aceptación ACK

Una vez finalizado este saludo el tráfico queda establecido. Para que nuestro firewall
acepte conexiones una vez establecidas deberemos tener una serie de reglas que
verificaran el estado de la conexión. Las reglas lucirán como las siguientes:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 8 de 20
La última regla permite que cualquier tráfico de una conexión establecida salga del
servidor.

Para guardar las reglas actuales del firewall (backup) utilizamos el comando

# iptables-save

Para restablecer una configuración previamente grabada

# iptables-restore

Configurando iptables

Para comenzar realicemos la configuración de un firewall con iptables teniendo en


cuenta los siguientes puntos:

 Nuestra maquina se conectara a Internet y tiene la IP 200.77.1.1


 La maquina del desarrollador tiene la IP 200.77.1.2
 Nos basaremos en la premisa de permitir todo.

#!/bin/sh
echo “Se está ejecutando el script de firewall”
## FLUSH de reglas
iptables -F
iptables -X
iptable -Z
iptables –t nat -F

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 9 de 20
## Política por defecto: ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Reglas
## Se permite el tráfico a localhost
iptables -A INPUT -i lo -j ACCEPT
## Maximo acceso para nuestra IP
iptables -A INPUT -s 200.77.1.1 -j ACCEPT

## Acceso MySQL para desarrollador


iptables -A INPUT -s 200.77.1.2 -p tcp --dport 3306 -j ACCEPT
## Acceso FTP para el desarrollador
iptables -A INPUT -s 200.77.1.2 -p tcp -dport 20:21 -j ACCEPT
## Puerto http abierto para que se vean las paginas
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

## Cerramos explícitamente los puertos de FTP, SSH y el puerto de MySQL para el


## resto de los usuarios
iptables -A INPUT -p tcp --dport 20:21 -j DROP
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 3306 -j DROP

echo "Ha finalizado la ejecución del script"

Si queremos darle un poco mas de rigor al ejemplo anterior podríamos cerrar al menos
los puertos bajos de TCP y UDP (también llamados puertos conocidos). Agregaremos
entonces las líneas que siguen al script anterior:

## Cerramos puertos bajos


iptables -A INPUT -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 1:1024 -j DROP

Supongamos ahora que nuestro firewall está entre la red local con direccionamiento
privado e Internet.

Basaremos el desarrollo en los siguientes puntos:

 Nuestra maquina fuera de la oficina tiene la IP 200.77.1.1 y nuestra maquina en


la oficina la IP 192.168.139.61
 La red interna tiene direccionamiento IP privado basado en la red
192.168.139.0/24 por lo que debemos hacer NAT para salir a Internet
 Política aceptar todo

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 10 de 20
#!/bin/sh
echo “Se está ejecutando el script de firewall”

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat –F

## Politica por defecto: ACCEPT


iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Topología: eth0 interface conectada al router y eth1 a LAN

## Reglas

## Se permite el tráfico a localhost


iptables -A INPUT -i lo -j ACCEPT

## Máximo acceso para nuestra IP desde afuera


iptables -A INPUT -s 200.77.1.1 -j ACCEPT

## Máximo acceso para nuestra IP desde la oficina


iptables -A INPUT -s 192.168.139.61 -j ACCEPT

##Como tenemos direccionamiento privado y queremos que las maquinas salgan a


##Internet haremos NAT, debemos activar el forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 11 de 20
##Habilitamos NAT para la red interna
iptables -t nat -A POSTROUTING -s 192.168.139.0/24 -o eth0 -j MASQUERADE

## Cerramos los puertos bajos de TCP y UDP para todas las IP


iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

echo "Ha finalizado la ejecución del script"

Podemos hacer menos permisiva la salida a Internet restringiendo protocolos o


servicios.

Podemos entonces cerrar toda comunicación de la red interna con el exterior

iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -j DROP

Si deseamos solo permitir navegar debemos agregar, antes de la regla anterior, lo


siguiente:

## Abrimos las conexiones HTTP (puerto 80)] y HTTPS (puerto 443)


iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

## Abrimos las conexiones a los DNS


iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

O, por ejemplo, podemos decidir bloquear las conexiones a Messenger para todos los
usuarios, excepto para nosotros, dejando log de las conexiones.

## Cerrar el acceso a MSN


iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -p tcp --dport 1863 -j LOG
--log- prefix "MESSENGER MSN -> "
iptables -A FORWARD -s 192.168.139.0/24 -i eth1 -p tcp --dport 1863 -j DROP
iptables -A FORWARD -s 192.168.139.61 -p tcp --dport 1863 -j ACCEPT

Ahora veremos un caso similar al anterior pero en el que agregamos una DMZ (zona
desmilitarizada).

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 12 de 20
#!/bin/sh
echo “Se está ejecutando el script de firewall”

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat –F

## Política por defecto: ACCEPT


iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## Topología: eth0 interface conectada al router y eth1 a LAN ## Reglas

## Se permite el tráfico a localhost


iptables -A INPUT -i lo -j ACCEPT

## Máximo acceso para nuestra IP desde afuera


iptables -A INPUT -s 200.77.1.1 -j ACCEPT

## Máximo acceso para nuestra IP desde la oficina


iptables -A INPUT -s 192.168.139.61 -j ACCEPT

## Como tenemos direccionamiento privado y queremos que las maquinas salgan a


## Internet haremos NAT, debemos activar el forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 13 de 20
##Habilitamos NAT para la red interna
iptables -t nat -A POSTROUTING -s 192.168.139.0/24 -o eth0 -j MASQUERADE

## Habilitamos el acceso HTTP y HTTPS de la DMZ y bloqueamos el resto


iptables -A FORWARD -d 200.77.5.5 -p tcp -dport 80 -j ACCEPT
iptables -A FORWARD -d 200.77.5.5 -p tcp -dport 443 -j ACCEPT
iptables -A FORWARD -d 200.77.5.5 -j DROP

## Abrimos el paso desde la Lan a una base de datos MySQL


iptables -A FORWARD -s 200.77.5.5 --sport 1024:65535 -d 192.168.139.66 -p tcp --
dport 3306 -j ACCEPT

## Habilitamos la conexión reciproca


iptables -A FORWARD -s 192.168.139.66 -d 200.77.5.5 -p tcp --sport 3306 --dport
1024:65535 -j ACCEPT

## Bloqueamos el resto de las conexiones de la DMZ a la LAN


iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP

## Bloquemos las conexiones de la DMZ al firewall


iptables -A INPUT -s 200.77.5.5 -i eth2 -j DROP

## Cerramos los puertos bajos de TCP y UDP para todas las IP


iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

echo "Ha finalizado la ejecución del script"

Haremos ahora un ejemplo de firewall con política denegar. Recordemos que en este
caso debemos explicitar todas las conexiones que permitiremos pero tenemos mayor
protección.

#!/bin/sh
echo “Se esta ejecutando el script de firewall”
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat –F

## Politica por defecto: DROP


iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 14 de 20
## Topología: eth0 interface conectada al router y eth1 a LAN

## Reglas

## Máximo acceso para nuestra IP desde afuera


iptables -A INPUT -s 200.77.1.1 -j ACCEPT

## Máximo acceso para nuestra IP desde la oficina


iptables -A INPUT -s 192.168.139.61 -j ACCEPT

## Abrimos los accesos para un servidor de mail y uno web


## Servidor web IP 200.77.5.5 puerto 80
iptables -A FORWARD -d 200.77.5.5-p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 200.77.5.4.5 -p tcp --sport 80 -j ACCEPT

## Servidor de email IP 211.34.149.3 SMTP y POP


iptables -A FORWARD -d 200.77.5.4.4 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 200.77.5.4.4 -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -d 200.77.5.4.4 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 200.77.5.4.4 -p tcp --sport 110 -j ACCEPT

## Si deseamos acceder a esos servidores debemos abrir el acceso


iptables -A FORWARD -s 200.77.1.1 -d 200.77.5.4.5 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 200.77.5.4.5 -d 200.77.1.1 -p tcp --sport 22 -j ACCEPT

# Acceso a nuestra ip para gestionarlo


iptables -A FORWARD -s 200.77.1.1 -d 200.77.5.4.4 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 200.77.5.4.4 -d 200.77.1.1 -p tcp --sport 22 -j ACCEPT

echo "Ha finalizado la ejecución del script"

5.4 Perfeccionamiento del firewall

Para verificar y perfeccionar nuestro firewall podemos recurrir a algunas herramientas


como la que se indica a continuación:

 nmap: es la herramienta ideal para realizar escaneo de puertos. Permite


inclusive verificar los banner de los servidores atendiendo en cada puerto. Es
simple y muy versátil, pudiendo realizar verificaciones muy detalladas. Con
esta utilidad podremos verificar si tenemos algún puerto abierto que debería
estar cerrado. Nos da una vista de lo que un eventual atacante ve de nuestro
sistema.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 15 de 20
 iptraf: este programa sirve para ver si las conexiones se están estableciendo o
no. Es una aplicación de consola que nos muestra el tráfico en tiempo real, el
tipo de paquetes que están pasando por una interface, IPs, puertos, etc.

 bash: al utilizar un script para el firewall podremos utilizar los comandos del
shell para realizar acciones adicional, por ejemplo mostrar en pantalla la regla
que se esta aplicando.
iptables -A INPUT -i lo -j ACCEPT && echo "regla loopback accept ok"

5.5 Squid

Squid es un servidor proxy ampliamente utilizado, ha sido portado a múltiples sistemas


operativos y es distribuido bajo GNU/GPL. Es utilizable como proxy y cache de
diversos protocolos, además permite realizar (en conjunto con otras aplicaciones)
filtrado de contenidos, QoS, Access list, verificación de virus, etc.

Una solución completa puede verse gráficamente como sigue

5.6 Instalación

Podemos realizar la instalación mediante el paquete debían o bien utilizar el código


fuente y realizar la compilación. Con la esta última opción podremos habilitar ciertas
funcionalidades que por defecto están desactivadas.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 16 de 20
El procedimiento para realizar la instalación desde el paquete es el que ya conocemos.

# apt-get install squid

Para realizar la compilación podemos proceder como se muestra a continuación.

Descargamos la última versión desde http://www.squid-cache.org/

# wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE13.tar.gz

Descomprimimos:

# tar xzvf squid-3.0.STABLE13.tar.gz -C /usr/src/

Procedemos a configurar para luego compilar, en este ejemplo utilizamos algunas


opciones para ejemplificar:

# ./configure --enable-delay-pools --enable-icap --with-filedescriptors=4096 --enable-


basic-auth-helpers=LDAP && make && make install

Las opciones que utilizamos en este caso son las siguientes:

 enable-delay-pools: Se utiliza para controlar el ancho de banda por aplicación.

 enable-icap: Esta opción habilita el protocolo ICAP de comunicación con otras


aplicaciones (ej. Antivirus).

 with-filedescriptors=4096: Con esta opción aumentamos la cantidad de


conexiones.

 enable-basic-auth-helpers=LDAP: Habilita la autenticación de usuarios


mediante LDAP.

Por supuesto que existen muchas más opciones disponibles que están descriptas en
la documentación.

5.7 Configuración
Para configurar Squid editaremos el archivo /etc/squid/squid.conf. Hay muchos
parámetros con los que trabajar por lo que veremos algunos de ellos.

 http_port
El puerto por defecto es el 3128, pero modificando este parámetro podemos decirle a
squid en que puerto debe atender solicitudes.

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 17 de 20
Por ejemplo si lo deseamos configurar como proxy transparente lo haremos atender en
el puerto 80.

También es común encontrar que los proxys atiendan en el puerto 8080 y podemos
hacer que atienda en los dos puertos haciendo lo siguiente:
# You may specify multiple socket addresses on multiple lines.
http_port 3128
http_port 8080

 maximum_object_size
Tamaño máximo de los objetos a guardar en cache. Por ejemplo si queremos guardar
los objetos que ocupan hasta 20 Mb.
maximum_object_size 20 MB

 cache_dir
Este parámetro establece el tamaño de cache en el disco rígido para squid y refiere a
la cantidad de información que almacenara squid.
Por ejemplo podemos establecer un cache de 1giga mediante
cache_dir ufs /var/spool/squid 1000 16 256

 ftp_passive
Si utilizamos un firewall que solo permite conexiones FTP pasivas debemos activar
esta opción:
ftp_passive on

 Control de acceso
Se genera una lista de acceso y se le aplican reglas. Veremos cómo funciona esto
tomando en cuenta nuestra Lan de ejemplos anteriores 192.168.139.0/24
Listas de acceso
Las listas de acceso tienen la siguiente sintaxis
acl red_local_permitida src 192.168.139.0/255.255.255.0
Se puede recurrir a leer un archivo en cuyo contenido esta la lista permitida mediante
acl listapermitidos src “/etc/squid/hostpermitidos”
Reglas de acceso
Son las que definen si se permite el acceso o no, para esto trabajan en conjunto con
las listas de acceso. Para permitir que la red interna se comunique y el resto no. La
sintaxis es:
http_access allow red_local_permitida
http_aceess deny all

Por ejemplo para evitar que se pueda acceder a contenido de tipo flash video
debemos hacer algo como esto:
acl deny_rep_mime_flashvideo rep_mime_type -i video/flv
acl deny_rep_mime_flashvideo rep_mime_type -i video/x-ms-asf
acl deny_rep_mime_flashvideo rep_mime_type -i video/x-ms-wmv
acl deny_rep_mime_flashvideo rep_mime_type -i application/x-shockwave-flash
http_reply_access deny deny_rep_mime_flashvideo denied_media

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 18 de 20
 Delay pools
Se utiliza esta opción para controlar el ancho de banda. En Squid3 existen 5 delay
pools, los ejemplos que mostraremos son del tipo 3.
Podemos crear una lista con los tipos de archivos en los que se controlara el ancho de
banda, por ejemplo:
acl magic_words1 url_regex -i ftp .cab .rpm .rar .zip .tar.gz .gz .rpm .mp3.avi .mpeg $
Decimos que tipo de delay pool utilizaremos:
delay_class 2 3
Le damos los valores de tráfico:
delay_parameters 1 128000/256000 64000/32000 8000/16000
El valor 128000/256000 indica que para todos los usuarios tendremos 1Mb con picos
de 2Mb. Con el valor 64000/32000 indicamos que para cada red hay asignados 500Kb
y 1Mb de pico. Con el ultimo valor 8000/16000 tenemos 64Kb para cada usuario
128Kb de pico.
Y aplicamos mediante:
delay_access 1 allow magic_words1

 Cache con aceleración


Dado que estamos almacenando información en la cache de Squid podemos acelerar
la performance del sistema haciendo que estos recursos descargados sean accesibles
a otros usuarios. Esto tiene la ventaja adicional de disminuir el ancho de banda
consumido. Para esto debemos habilitar las siguientes opciones:
httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on
Si estamos haciendo un Proxy transparente estaremos usando el puerto 80 por lo que
la configuración quedara:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Algunos ejemplos adicionales para referencia:

 Limitar conexiones simultáneas por IP

acl mi-red src 192.168.5.0/24


acl limitusercon maxconn 3
http_access deny mi-red limitusercon

 No cachear ciertas páginas:

acl DENYPAGE urlpath_regex Servlet


no_cache deny DENYPAGE

 Autenticación LDAP/AD:

auth_param basic program /usr/lib/squid/squid_ldap_auth -b


"dc=intranet,dc=ejemplo,dc=com" \
-h 192.168.0.2 -D "cn=admin,cn=Users,dc=intranet,dc=ejemplo,dc=com" -w Secreto -f
sAMAccountName=%s

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 19 de 20
5.8 Ajustes del Firewall
Si deseamos tener salida a Internet pero utilizar el proxy para los protocolos HTTP,
SSL y FTP deberemos modificar el firewall para que redireccione.

Por ejemplo para redireccionar el protocolo HTTP debemos tener una regla que
reenvié cualquier solicitud entrante desde la red local hacia el exterior puerto 80 al
puerto 3128

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Universidad Tecnológica Nacional – Facultad Regional Buenos Aires


Página 20 de 20

Vous aimerez peut-être aussi