Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Seguridad en Linux
Seguridad en Linux
Linux ipchains.
I Parte. Firewalls
Introducción.
1
I nt ernet
Firewall
Por ejemplo, un administrador de red podría definir como parte de las políticas para
el tráfico de red, deshabilitar el servicio telnet desde Internet hacia la red interna y no
utilizar servicios tales como NFS o NIS a través del firewall.
Puesto que todo el tráfico pasa a través del firewall, otra de las ventajas que
presenta, es que este se puede utilizar para recolectar información acerca de lo que ocurre
entre la red protegida e Internet.
Definiciones importantes.
Para poder entender todos los conceptos relacionados con firewalls, es necesario
conocer las siguientes definiciones:
2
Ø Servidor Proxy (gestor). Es un programa que interactúa con servidores
externos en nombre de clientes internos. Los clientes proxy se comunican
con servidores proxy o sucedáneos que a su vez retransmiten las solicitudes
legítimas a los servidores reales.
Tipos de Firewalls.
Filtrado de paquetes.
Los sistemas de filtrado de paquetes enrutan los paquetes entre las máquinas de la
red interna y externa, pero, de forma selectiva dependiendo de las políticas que se tengan en
el sistema. A esste tipo de enrutadores que realizan filtrado de paquetes se les llama
"screening router".
I nt ernet
Screennig Router
3
Estos son algunos ejemplos de lo que se puede realizar con firewalls de filtrado de
paquetes:
Ø El usuario Pedro puede hacer telnet a la red interna, pero el usuario Juan no.
Ø Ud. puede transferir archivos tipo .wav pero no tipo mp3.
Reglas de filtrado.
Ø Dirección IP de origen
Ø Dirección IP de destino
Ø Puerto de Origen
Ø Puerto de destino
Ø Protocolo
Ø Tipo de paquete
Esta es la forma más sencilla y más usada para realizar filtrado de paquetes. La
restricción del flujo de paquetes se realiza basándose en la dirección origen y/o destino del
paquete sin considerar qué protocolo está involucrado. Por ejemplo, si queremos bloquear
todo el tráfico proveniente de la red 10.10.10.0/24:
El signo ‘-‘ indica cualquier dirección destino. Flujo indica si el tráfico manejado
por el enrutador es entrante o saliente. Acción indica qué hace el enrutador con el paquete.
Generalmente existen tres acciones a tomar con un paquete de red:
4
Ø Aceptar. Indica que este paquete pasó el criterio de filtrado y será reenviado
tal como lo hace un enrutador cualquiera.
Ø Denegar. Indica que este paquete no cumple con el criterio de aceptación y
será descartado.
Ø Rechazar. Indica que este paquete no cumple con el criterio de acetación y
será descartado, pero a diferencia de Denegar, se envía un mensaje ICMP a
la máquina origen informado lo ocurrido. Generalmente es un paquete ICMP
de destino inalcanzable o destino administrativamente inalcanzable. De
esta forma el que envía el paquete es avisado y no tratará de retransmitir el
paquete.
Este es un tipo de filtrado más complejo y más completo. Este filtrado permite
definir reglas basadas en servicios tales como telnet, SNMP, SMTP, etc. El software de
filtrado utiliza la información de los puertos, protocolo y tipo que contiene cada paquete
para realizar filtrado por servicio. Por ejemplo, en el servicio telnet desde una máquina de
la red interna 192.168.2.1, a una máquina en la red externa 10.10.10.1 (servicio saliente),
los paquetes que van desde la máquina interna poseen la siguiente información (paquete
saliente):
5
Con esta información podemos construir las reglas de filtrado que permiten
conexiones telnet salientes, pero nada más. Consideraremos la red externa como Internet y
la red interna como 192.168.2.0/24:
La primera regla indica que se aceptan paquetes desde la red interna, a cualquier
servidor telnet en Internet.
La segunda regla indica que se aceptan paquetes de retorno desde el servidor telnet
de Internet a la red interna. Dado que esta regla chequea que el bit de ACK esté activado, se
prohíbe que se realicen conexiones entrantes desde el puerto 23 hacia cualquier puerto
superior al 1024. La regla final indica que si el paquete no cumple con ninguna de las reglas
anteriores, entonces es denegado.
Como último ejemplo, definamos las reglas de filtrado para cumplir con la siguiente
política en la red 192.168.1.0/24:
Las reglas 1 y 2 permiten realizar telnet desde cualquier máquina de la red interna.
Las reglas 3 y 4 permiten enviar correo desde cualquier máquina de la red interna. Las
reglas 5 y 6 permiten conectarse a servidores WEB desde cualquier máquina de la red
6
interna. Las reglas 7 y 8 permiten que el servidor de correos reciba correos desde cualquier
dirección de origen. Las reglas 9 y 10 permiten que cualquier máquina se puede conectar al
servidor WEB de la red interna. Por último la regla 11 bloquea cualquier otro tipo de
paquete.
Servidores Proxy.
Los servicios proxy son aplicaciones especializadas que corren en una máquina
firewall: ya sea en el enrutador de la red o en una máquina bastión. Estas aplicaciones
toman los requerimientos de los clientes y los reenvían a los servidores verdaderos,
basándose en las políticas de seguridad del sistema.
Servidor
Real
I nt ernet
Servidor
Proxy
Firewall
Client e
Proxy
7
Arquitecturas de Firewalls.
I nt ernet
Screennig Rout er
Bast ion
Todo intento de conexión a la red interna debe hacerse al bastión, por lo tanto, esta
máquina debe mantener un alto grado de seguridad. La configuración del filtrado de
paquetes en el enrutador puede realizarse de alguna de las siguientes formas:
Ø Bloquear todas las conexiones de las máquinas internas a Internet. Todos los
servicios deben ser solicitados al bastión configurado como servidor proxy.
8
Estos dos enfoques se pueden combinar en la configuración del firewall. Se pueden
permitir algunas conexiones directamente a Internet, mientras que otras deben ser
permitidas solo a través del servidor proxy.
Red perimetral.
Esta arquitectura trata de evitar los problemas que existen con el enrutador de
filtrado. Esta arquitectura agrega una capa extra de seguridad, colocando una red perimetral
que aísla la red interna de Internet.
I nt ernet
Bast ión
Enrut ador
ext erno
Enrut ador
Firewall int erno
9
II Parte. Linux ipchains
Para poder utilizar ipchains en Linux, el kernel debe contener IP firewall chains.
Una manera de verificar si el kernel actual tiene esta opción instalada, es cerciorándose de
que exista el archivo ‘/proc/net/ip_fwchains’ .
Las opciones de configuración que deben habilitarse en el kernel de las series 2.0 de
Linux son:
CONFIG_EXPERIMENTAL=y
CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_CHAINS=y
CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
Para poder manejar el filtrado de paquete que ofrece el kernel de linux, existe una
herramienta llamada ‘ipchains’ . Esta herramienta además de utilizarse para filtrado de
paquetes, sirve para controlar el enmascaramiento (masquerading) y la sustitución
transparente (transparent proxying). Estas dos capacidades adicionales al filtrado que posee
ipchains no serán cubiertas en esta práctica.
El kernel de Linux contiene tres listas de reglas de filtrado, estas listas son llamadas
cadenas (chains). Estas listas son llamadas input, output y forward. Cuando un paquete
llega a la máquina que funciona como firewall por una de sus interfaces, el kernel utiliza la
cadena input para decidir su destino. Si el paquete supera este paso, el kernel decide adónde
enviar el paquete basándose en la tabla de enrutamiento. Si el paquete está destinado a otra
10
máquina, el kernel consulta la cadena forward. Por último antes de enviar el paquete, el
kernel consulta la cadena output.
Una cadena es una lista de reglas. Cada regla dice: si el paquete cumple con “esto”,
entonces haga “aquello” con el paquete. Si la regla no corresponde al paquete, entonces se
consulta la regla siguiente. Por último, si ninguna de las reglas es aplicable al paquete, el
kernel revisa la política por omisión de la cadena para decidir qué hacer. Esta política por
omisión puede ser cualquiera de las acciones; denegar, aceptar o rechazar.
Uso de ipchains.
11
Ø Crear una nueva cadena ( –N ).
Ø Borrar una cadena vacía ( -X ).
Ø Cambiar la política por omisión de una de las cadenas ( -P )
Ø Mostrar las reglas en una cadena ( -L ).
Ø Eliminar las reglas de una cadena ( -F )
Ø Iniciar los contadores de paquetes y bytes de todas las reglas de una cadena
( -Z ).
Reglas
Con este comando agregamos a la cadena output la regla que dice que cualquier
paquete cuyo destino sea 192.168.2.1 sea denegado. El origen 0.0.0.0 significa cualquier
origen. Las direcciones IP se pueden especificar de cuatro formas distintas:
Especificar interfaz.
Para especificar una interfaz en particular, se utiliza la opción –i. Por ejemplo,
12
En este caso estamos denegando todo los paquetes que van a la dirección
192.168.2.1 y que salen por la interfaz ethernet eth0.
Especificar inversión.
Muchas de las opciones que se utilizan tal como –s o –i pueden ser precedidas por
‘!’, que indica no igual a la opción dada, por ejemplo:
Especificar protocolo.
Esta regla especifica que todos los paquetes que provengan de la máquina
192.168.1.2 y con protocolo TCP sean denegados.
Especificar servicio.
Adicionalmente los puertos pueden ser especificados por su nombre. Por ejemplo,
para definir todos los paquetes TCP excepto los de telnet:
Los paquetes ICMP no poseen puertos, poseen un nombre o tipo de paquete ICMP.
Por ejemplo destination-unreachable es un tipo de paquete ICMP que es recomendable que
nunca se bloquee, puesto que esto permite que un intento de conexión no se bloquee
esperando por una respuesta.
En TCP existen diferentes tipos de paquetes que pueden ser identificados por la
cabecera del paquete, como por ejemplo los paquetes que utiliza TCP para solicitar una
conexión. Estos paquetes son llamados SYN puesto que la bandera SYN del encabezado
13
del paquete esta activada. Al identificar estos paquetes se puede restringir las conexiones en
una sola dirección. ipchains puede realizar esto utilizando la opción –y, por ejemplo:
-p TCP –s 192.168.2.1 –y –j DENY, especifica que los paquetes SYN (para solicitar
una conexión) provenientes de la máquina 192.168.2.1 son denegados. Con esto se está
restringiendo las conexiones provenientes de la máquina 192.168.2.1.
Información de bitácora.
La opción -l, ipchains permite enviar a la bitácora del sistema información de los
paquetes que corresponden con algunas de las reglas.
Comprobación de paquetes.
Con la opción –C, ipchains permite ver qué ocurre si un cierto tipo de paquete entra
a la máquina. Los detalles del paquete que se quiere probar se especifican del mismo modo
como se especifican las reglas. Por ejemplo, para ver si un paquete TCP recibido por la
interfaz eth0 y que fue enviado por la máquina 192.168.2.1 al puerto 23 es aceptado, se
utiliza el siguiente comando:
14
III Parte. Trabajo Practico
Red A Red B
Red D Red C
A continuación se muestran los pasos que deben seguir los participantes para
realizar la práctica de firewalls.
15
• Permitir las conexiones al servicio indet de cada una de las máquinas
de la red:
ipchains –A input –s 0.0.0.0/0 1024: –d red_x 113 –p tcp –j ACCEPT
Nota: Este es un conjunto de reglas bastante sencillo donde se utiliza solo la cadena input,
es decir, solo se verifica el flujo de paquetes entrante.
Por último, cada uno de los participantes puede definir reglas de filtrado para cada
una de las máquinas internas de la red. Por ejemplo se puede definir una regla que evite que
las máquinas respondan a los ‘ping’:
16