Una de las formas principales de implantar un sistema de seguridad en una red de datos es a través de un firewall. Un firewall o “cortafuego” es un dispositivo que permite a una red, tener conexión a Internet con cierto grado de seguridad.
Existe una gran variedad de ataques o formas de violentar la seguridad de un sistema o red. Un firewall permite combatir diferentes tipos de "ataques" que son conocidos en Internet:
Intrusión. Es el mas común, con una intrusión, las personas pueden utilizar un computador sin tener autorización para ello. Las formas de realizar una intrusión en un sistema son muy variadas, desde "robarse" una contraseña de una cuenta, hasta valerse de “errores" de algún componente de software para obtener acceso a un computador sin poseer una cuenta en él.
Negación de Servicios (Denial of Service). Este es un tipo de ataque que busca inutilizar los servicios que presta un computador. La forma más común de realizar este tipo de ataques es inundar un sistema o red con mensajes, procesos o requerimientos de servicio, de tal manera que el sistema o red es incapaz de satisfacer las solicitudes de los usuarios legítimos.
Robo de Información. Este ataque permite al intruso obtener
información sin haber utilizado directamente tu computadora. Generalmente
estos ataques explotan servicios de Internet que son utilizados para proveer
información, induciendo a estos servicios a dar mas información
de la que deben suministrar o dar información a personas equivocadas.
Un firewall es colocado generalmente en el punto donde la red interna se conecta a Internet o red externa.
Al colocar el firewall de esta manera, todo el tráfico que proviene
o va hacia Internet pasa a través de él. De esta forma el
firewall tiene la capacidad de cerciorarse que este tráfico es conforme
a las políticas de seguridad del sistema. Estas políticas
definen la accesibilidad y los niveles de restricción tanto de los
servicios disponibles en Internet como los que se ofrecen en la red
interna. Estas políticas son controladas a través de un solo
punto central: el punto de conexión de la red con Internet.
Tipos de Firewalls
El concepto de firewall puede ser efectuado mediante:
Filtrado de paquetes, que consiste en bloquear selectivamente el tráfico de red.
Servidores proxy, que realizan
la comunicación de red en lugar del cliente.
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".
Un firewall de filtrado de paquetes trabaja a nivel de paquetes. Estos firewalls son diseñados para controlar el flujo de paquetes basándose en la dirección IP de origen y destino, los puertos de origen y destino e información del tipo del paquete.
El filtrado de paquetes no toma decisiones basándose en el contenido
en sí del paquete sino en el encabezado.
Algunos filtrados de paquetes son:
El filtrado de paquetes utiliza la siguiente información que poseen los paquetes para definir las reglas de filtrado:
Dirección IP de origen Dirección IP de destino Puerto de Origen Puerto de destino Protocolo Tipo de paquete
Filtrado por dirección
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.
Generalmente existen tres acciones a tomar con un paquete de red:
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.
El bit ACK de los paquetes TCP permite identificar si se trata de
un paquete de solicitud de conexión (donde el ACK no está
activado) o si es otro de los paquete de la conexión (donde sí
está activado).
De la misma forma un paquete entrante de una conexión telnet
saliente posee la siguiente información:
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.
El servidor proxy evalúa las solicitudes de los clientes y decide
si debe ser aprobada o denegada. Si la solicitud es aprobada el servidor
proxy contacta al servidor real y le reenvía las solicitudes del
cliente proxy al servidor y las respuestas del servidor real al cliente
proxy. Por el contrario si es denegada, entonces la solicitud es descartada.
ipchains
En Linux ipchains es el código de filtrado de paquetes.
Ipchains permite ver el encabezado de los paquetes que pasan por el sistema
y decide qué hacer basándose en las políticas de seguridad,
ipchains puede tomar cualquiera de las siguientes decisiones:
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 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 la condicion, entonces hara lo que este indicado 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.
Etapas del filtrado
Las etapas de filtrado son:
Ipchains es el comando que permite manejar las cadenas de firewalls
en el kernel.
Reglas
Una regla de firewalls especifica citerios para un paquete y un objetivo.
Si el paquete no concuerda se examina la siguiente regla de la cadena;
si concuerda, la siguiente regla se especifica por el valor del objetivo,
que puede ser el nombre de una cadena definida por el usuario o uno de
los valores especiales ACCEPT, DENY, REJECT, MASQ, REDIRECT o RETURN.
Existen opciones para manejar cadenas completas. Siempre se tienen
inicialmente tres cadenas que no se pueden eliminar. Las opciones para
manejar las cadenas son:
Para manipular las reglas dentro de las cadenas:
Ejemplos de Aplicación
Especificar interfaz.
ipchains –A output –s 0.0.0.0 –d 192.168.2.1 –i eth0 –j DENY
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.
! –s 192.168.1.0/24, corresponde a los paquetes cuyo origen no es 192.168.1.0/24
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:
-p
tcp –s 0.0.0.0/0 ! telnet
Especificar paquetes ICMP.
Especificar tipo de paquetes.
-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.
Comprobación de paquetes.
Si el paquete es aceptado,
el comando retorna ‘packet accepted’