FIREWALLS





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:

Reglas de filtrado

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:
     

    Filtrado por Servicio

    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:
     

    Cadenas para filtrado

    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:
     

    Uso de ipchain.

    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:
     

    Al agregar una regla de filtrado a cualquiera de las cadenas, se especifica la dirección IP origen con la opción –s y la dirección IP destino con –d. Para especificar la acción a tomar si un paquete corresponde con la regla, se utiliza la opción –j. Si esta opción es omitida, la regla es considerada como de contabilidad, que es utilizada simplemente paracontar ciertos tipos de paquetes. Usando ipchains –L –v se pueden ver los contadores de bytes y paquetes asociados a cada regla.
     

    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.
     

                ipchains –A input –s 192.168.1.2 –d 0.0.0.0 –p tcp –j DENY.

                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
    .

                -p tcp –s 0.0.0.0/0 :1023
     

             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.
     

                ipchains –C input –p tcp –s 192.168.2.1 –d 0.0.0.0/0 23 –i eth0

            Si el paquete es aceptado, el comando retorna ‘packet accepted’