Firewalls, IPtables y Netfilter Redes de Datos Dastugue, Juan Cristobal, Leandro Mayo de 2014
Índice general 1. 2 1.1. Introducción............................ 2 2. 3 2.1. Firewalls.............................. 3 2.1.1. Definición......................... 3 2.1.2. Funciones......................... 3 2.1.3. Principio de funcionamiento............... 4 2.1.4. Vulnerabilidades comunes................ 6 2.1.5. Tipos de Firewall..................... 7 2.1.5.1. Firewall stateless (sin estado)......... 7 2.1.5.2. Firewall statefull (con estado)......... 7 2.1.5.3. Firewall de aplicación (Proxy)......... 7 2.1.5.4. OSFirewall................... 9 2.1.6. Políticas de diseño de un Firewall............ 10 2.1.7. Ventajas.......................... 11 2.1.8. Desventajas........................ 12 3. 13 3.1. Netfilter - Ip tables........................ 13 4. 15 4.1. DMZ (zona desmilitarizada)................... 15 4.1.1. Arquitectura de una DMZ................ 16 A. 17 A.1. TCP................................ 17 A.2. UDP................................ 17 A.3. ICMP............................... 17 A.4. IP................................. 18 A.5. DoS................................ 18 i
A.6. Rootkits.............................. 19 B. 20 B.1. Ejemplo.............................. 20 B.1.1. Equipamiento lógico necesario.............. 20 B.1.1.1. Instalación a través de yum.......... 20 B.1.2. Procedimientos...................... 20 B.1.2.1. Cadenas..................... 20 B.1.2.2. Reglas de destino................ 21 B.1.2.3. Políticas por defecto.............. 21 B.1.2.4. Limpieza de reglas específicas......... 21 B.1.2.5. Reglas específicas................ 22 B.1.3. Ejemplos de reglas.................... 23 B.1.4. Cerrar accesos....................... 26 B.1.5. Eliminar reglas...................... 26 B.1.6. Mostrar la lista de cadenas y reglas........... 27 B.1.7. Iniciar, detener y reiniciar el servicio iptables...... 31 B.1.8. Agregar el servicio iptables al arranque del sistema.. 31 ii
Índice de figuras 2.1. Esquema de los hosts A, B y C en red......... 6 4.1. Esquema de una DMZ implementada con un Firewall..... 16 4.2. Esquema de una DMZ implementada con dos Firewall..... 16 iii
Índice de cuadros B.1. Lista de cadenas y reglas - Chain INPUT Policy DROP.. 28 B.2. Lista de cadenas y reglas - Chain FORWARD Policy DROP 28 B.3. Lista de cadenas y reglas - Chain OUTPUT Policy ACCEPT 29 B.4. Lista de cadenas y reglas - Chain INPUT Policy DROP.. 29 B.5. Lista de cadenas y reglas - Chain FORWARD Policy DROP 30 B.6. Lista de cadenas y reglas - Chain OUTPUT Policy ACCEPT 30 1
Capítulo 1 1.1. Introducción En el presente informe se desarrollaron los principales conceptos relativos a la seguridad en las redes de datos actuales focalizados en los conceptos de Firewalls, Netfilters/IPtables y DMZ. Se analizaron individualmente, buscando como objetivo una clara comprensión del concepto. En la actualidad, las redes de datos han crecido de tal manera que nos vemos en la necesidad de proteger nuestra información de aquellos que pretenden vulnerar nuestra seguridad y hacerse dueños de la misma. Es por esto, que se han implementado protecciones a nivel físico con la capacidad de filtrar paquetes a nivel de red, transporte y aplicación. Por último se introdujeron los conceptos de IPtables/Netfilters y DMZ (Zona desmilitarizada). 2
Capítulo 2 2.1. Firewalls 2.1.1. Definición Un firewall o cortafuegos es un sistema o conjunto de sistemas, ubicado entre dos redes. Tiene como finalidad principal ejercer una política de seguridad establecida por un usuario o administrador de IT, proveyendo un control del flujo de la información en ambos sentidos de la comunicación, separando la intranet (red privada), de la Internet (red pública). Un firewall trabaja a nivel de red del modelo OSI (capa 3) 1. Este puede ser implementado mediante un software específico, sobre un host o embebido en dispositivos físicos como routers y switchs. 2.1.2. Funciones Sus funciones principales son permitir, limitar, cifrar, descifrar y llevar un registro del tráfico entre diferentes redes y se basa en un conjunto de normas y criterios impuestos por un administrador. Los firewall se utilizan con frecuencia para evitar que los usuarios de Internet no autorizados tengan acceso a redes privadas(intranets) conectadas a Internet. Todos los mensajes que entren o salgan de la intranet pasan a través del firewall, que examina cada mensaje y bloquea aquellos que no cumplen los criterios de seguridad especificados. En otras palabras, determina cuales de los servicios de red pueden ser accedidos por los que están afuera, por lo tanto, quien puede utilizar los recursos pertenecientes a la organización. Para que un firewall sea efectivo y que los datos sean inspeccionados en su totalidad, todo trafico deberá pasar a través suyo. 1 Al filtrar puertos, trabaja en el nivel 4 y un proxy en el nivel 7 3
2.1.3. Principio de funcionamiento Los firewalls filtradores de paquetes validan los mismos basándose en las direcciones IP y los puertos (de origen y destino), parámetros tales como el horario, tipo de servicio, y todo aquel que se encuentre dentro del header del paquete. Por lo general, el filtrado se logra utilizando listas de control de acceso (ACL 2 ). Aplicado en switches y routers, es un método muy veloz. Su principal ventaja es que puede ser implementado en todos los dispositivos de red, tanto en los de uso personal como en los de uso intensivo empleados por los ISP s 3. Es importante destacar, que las listas de control de acceso son estáticas y que el filtrado no tiene acceso a los datos contenidos en cada paquete. Existen dos tipos de filtrado Filtrado estático: Es el más comúnmente usado, en el cual las reglas de filtro las establece el administrador de forma manual. Esta implementación posee reglas fijas, las cuales no van adaptándose automáticamente, comportándose de manera algorítmica. Filtrado dinámico: Es aquel donde un proceso externo modifica las reglas de filtro basándose en eventos detectados. Un ejemplo podría ser un proceso que habilita paquetes entrantes de FTP si y solo si desde dentro salieron previamente paquetes de FTP. 2 Access Control List 3 Internet Service Provider 4
El filtrado actúa mediante la inspección de paquetes 4. Si el contenido de un paquete coincide con el conjunto de reglas del filtro, este se reducirá (descarte silencioso) o será rechazado (descartándolo y enviando una respuesta de error al emisor). Para realizar el filtrado, el software consulta la información contenida en el header y por lo general compara: La dirección del emisor del paquete (IP fuente). La dirección de destino (IP destino). Su protocolo (TCP 5, UDP 6, ICMP 7, o IP 8 ). El número de puerto fuente y destino (TCP/UDP). El tipo de mensaje ICMP. La interfaz de entrada y salida del paquete. Los protocolos TCP y UDP comprenden la mayor parte de la comunicación a través de Internet y utilizan por convención lo puertos llamados bien conocidos (whell known) para determinados tipos de tráfico. El filtrado de paquetes mediante puertos y protocolos (nivel 4 del modelo OSI) permite establecer que servicios estarán disponibles al usuario y por cuales puertos. Por ejemplo se puede permitir navegar en la web (puerto 80 abierto) pero no acceder a la transferencia de archivos vía FTP (puerto 21 cerrado), etc. 4 Un paquete representa la unidad básica de transferencia de datos entre ordenadores 5 Ver A.1 6 Ver A.2 7 Ver A.3 8 Ver A.4 5
2.1.4. Vulnerabilidades comunes Si bien los firewalls son bastante seguros, pueden ser susceptibles a ciertos ataques y fallas: Man in the middle: implica interceptar una comunicación ya autenticada de forma que permita usar la misma para pasar a través del firewall. Una posible solución es encriptar las comunicaciones. IP Spoofing: En este caso, como puede verse en la fig: 2.1, un host B intenta conectarse a un host A, haciéndose pasar por el host C. Para realizarlo, el host B, envía una solicitud syn al host A, con la dirección IP del host C. El host A, responde al host C, con un Syn ACK (en el cual figura el número de secuencia esperada). Para completar la solicitud de conexión, el host B debe conocer el número de secuencia esperada por el host A. SI el host C se encuentra activo, enviará un reset al host A siendo descartada la solicitud de conexión. Para evitar esto, el host B debe impedir que el host C envíe el reset denegandole el servicio mediante un ataque DoS 9. Bugs de software: como todo software, los firewalls de aplicación contienen bugs que pueden permitir a un atacante el ingreso a una red protegida. Figura 2.1: Esquema de los hosts A, B y C en red 9 Ver A.5 6
2.1.5. Tipos de Firewall 2.1.5.1. Firewall stateless (sin estado) Es la forma más básica de filtrado de tráfico. Usualmente se aplica en dispositivos de Capa de Red (3 del modelo OSI) e implementa conjuntos de reglas estáticas, que examinan los encabezados de cada paquete permitiendo o denegando el tráfico, sin ninguna relación con los flujos de tráfico precedentes. 2.1.5.2. Firewall statefull (con estado) Es un método de filtrado de paquetes que trabaja teniendo en cuenta el flujo de datos previo, sobre la conexión actual. Permite almacenar en tablas de datos dinámicas, parámetros de la conexión (conocidos como estado de la conexión) como direcciones IP, puertos y números de secuencia. Esta información almacenada, es evaluada y permite en conjunto con las reglas impuestas por el administrador una mejor performance en el filtrado de paquetes. El mecanismo asume que si se permite el inicio de la conexión, cualquier conexión adicional que requiera esa aplicación será permitida. Este tipo de firewall pueden ayudar a prevenir ataques tipo man in the middle contra conexiones en curso o ciertos ataques de denegación de servicio. 2.1.5.3. Firewall de aplicación (Proxy) Estas aplicaciones son conocidas como servidores proxy y el dispositivo donde se ejecuta recibe el nombre de gateway de aplicación. El proxy, instalado sobre el nodo actúa de intermediario entre el cliente y el servidor real de la aplicación, siendo transparente a ambas partes. Este tipo de firewall oculta de manera eficaz las verdaderas direcciones de red de los host actuantes. Actúa sobre varias capas del modelo OSI (red, transporte y aplicación). La importancia de un firewall de aplicación es que soporta varias aplicaciones y protocolos como FTP, TELNET, DNS, DHCP, HTTP, TCP y UDP permitiendo detectar si un protocolo no deseado se ingresó a través de un puerto no estándar o si un protocolo está siendo utilizado de manera excesiva. Por ejemplo, si se trata de tráfico HTTP, se pueden realizar filtrados según la URL a la que se está intentando acceder, e incluso puede aplicar reglas en función de los propios valores de los parámetros que aparezcan en un formulario web. Un firewall de aplicación es mucho más seguro y fiable que un firewall de filtrado de paquetes, ya que trabaja sobre las siete capas del modelo OSI. En esencia es similar a uno de filtrado de paquetes, con la diferencia que también podemos filtrar el contenido del mismo. Por ejemplo, si se quiere bloquear toda la información relacionada con una palabra en 7
concreto, puede habilitarse el filtrado de contenido. No obstante, los firewall de aplicación resultan más lentos que los de estado. 2.1.5.3.1. Características de un proxy Cada proxy es configurado para soportar únicamente un subconjunto de aplicaciones estándar de un conjunto de comandos. Si un comando estándar no es soportado por la aplicación proxy, es porque simplemente no esta disponible para el usuario. Cada proxy esta configurado para dejar acceder únicamente a los servidores especificados en el sistema. Esto significa que existe un conjunto de características/comandos que podrán ser aplicados para un subconjunto de sistemas en la red protegida. Cada proxy mantiene la información detallada y auditada de todos los registros del trafico, cada conexión, y la duración de cada conexión. El registro de audición es un herramienta esencial para descubrir y finalizar el ataque de un intruso. Cada proxy es un programa pequeño y sencillo específicamente diseñado para la seguridad de redes. Este permite que el código fuente de la aplicación pueda revisar y analizar posibles intrusos y fugas de seguridad. Por ejemplo, una típica aplicación - UNIX mail - puede tener alrededor de 20,000 líneas de código cuando un correo proxy puede contener menos de mil. Cada proxy es independiente de todas las demás aplicaciones proxy en el servidor de defensa. Si se produjera un problema con la operación de cualquier proxy, o si se descubriera un sistema vulnerable, este puede desinstalarse sin afectar la operación de las demás aplicaciones. Aun, si la población de usuarios requiere el soporte de un nuevo servicio, el administrador de redes puede fácilmente instalar el servicio proxy requerido en el servidor de defensa. Un proxy generalmente funciona sin acceso al disco lo único que hace es leer su archivo de configuración inicial. Dado que la aplicación proxy no ejecuta acceso al disco, un intruso podrá encontrar mas dificultades para instalar programas perjudiciales y otro tipo de archivos peligrosos en el servidor de defensa. 8
2.1.5.4. OSFirewall Existen firewalls comerciales que además de implementar el sistema de protección saliente, monitorean y bloquea comportamientos sospechosos que puedan afectar el sistema operativo (OSFirewall - Servidor de Seguridad del Sistema Operativo). Esta funcionalidad es implementada supervisando los cambios en la instalación de programas, el registro de sistema y los archivos del SO 10, simultanemente se vigila el control del teclado y el ratón. Esto es debido a que una conexión indeseada puede afectar el SO con un keylogger, registrando el comportamiento del teclado y enviándolo vía correo electrónico al atacante. [1] 2.1.5.4.1. Características Bloqueo de accesos no autorizados. Bloqueo de puertos inactivos. Protección contra la invasión por falsificación (si puede pasar, que no pueda salir). Capacidad de ocultar todos los puertos para que su equipo sea indetectable en los barridos de puertos. Autoprotección del firewall en caso de ataque. Detección de los programas falsificados. Detección de rootkits 11 por comportamiento. Protección de arranque inicial, iniciándose antes que cualquier otro servicio del SO. 10 Sistema Operativo 11 Ver Apéndice A 9
2.1.6. Políticas de diseño de un Firewall Hay dos políticas básicas en la configuración de un firewall que cambian totalmente la filosofía fundamental de la seguridad en la organización: Política restrictiva: Se deniega todo el tráfico excepto el que está explícitamente permitido. El firewall obstruye todo el tráfico y hay que habilitar expresamente el tráfico de los servicios que se necesiten. Esta aproximación es la que suelen utilizar la empresas y organismos gubernamentales. Política permisiva: Se permite todo el tráfico excepto el que esté explícitamente denegado. Cada servicio potencialmente peligroso necesitará ser aislado caso por caso, mientras que el resto del tráfico no será filtrado. Esta aproximación la suelen utilizar universidades, centros de investigación y servicios públicos de acceso a Internet. La política restrictiva es la más segura, ya que es más difícil permitir por error tráfico potencialmente peligroso, mientras que en la política permisiva es posible que no se haya contemplado algún caso de tráfico peligroso y sea permitido por omisión. Las políticas de accesos en un firewalls se deben diseñar poniendo principal atención en sus limitaciones y capacidades pero también pensando en las amenazas y vulnerabilidades presentes en una red externa insegura. Conocer los puntos a proteger es el primer paso a la hora de establecer normas de seguridad. También es importante definir los usuarios contra los que se debe proteger cada recurso, ya que las medidas diferirán notablemente en función de esos usuarios. Generalmente se plantean algunas preguntas fundamentales que debe responder cualquier política de seguridad: Qué se debe proteger?. Se deberían proteger todos los elementos de la red interna (hardware, software, datos, etc.). De quién protegerse?. De cualquier intento de acceso no autorizado desde el exterior. Sin embargo, podemos definir niveles de confianza, permitiendo selectivamente el acceso de determinados usuarios externos a determinados servicios o denegando cualquier tipo de acceso a otros. 10
2.1.7. Ventajas Pueden bloquear fácilmente los ataques de reconocimiento, tales como los barridos de puertos o el escaneo IP, si se los programa para tal propósito. Tienen la ventaja de ser económicos, tener un alto nivel de desempeño y ser transparentes para los usuarios conectados a la red. Algunos firewalls aprovechan la capacidad de que toda la información entrante y saliente debe pasar a través de ellos para proveer servicios de seguridad adicionales como la encriptación del tráfico de la red. Pueden ofrecer servicio de NAT. En los últimos años en Internet debido al fenómeno de vaciamiento, se han agotado las direcciones IPv4, esto ha causado que las intranets adopten direcciones sin clase (claseless), las cuales para conectarse a Internet deben pasar por un traductor de direcciones, el cual se aloja generalmente en el firewall. Los firewall también son importantes desde el punto de vista de llevar las estadísticas del ancho de banda utilizado por el trafico de la red, y que procesos han influido más en ese trafico. De esta manera el administrador de la red puede restringir el uso de estos procesos y reduciendo el uso y economizando el ancho de banda disponible de la conexión. 11
2.1.8. Desventajas No protege las capas de Sesión y Aplicación del modelo OSI. Al servir de defensa perimetral, no defiende a hosts de ataques o errores provenientes de la intranet. Tampoco ofrece protección una vez que el intruso lo traspasa. Sus capacidades de auditoria suelen ser limitadas, al igual que su capacidad de registro de actividades. No soportan políticas de seguridad complejas como autenticación de usuarios y control de accesos con horarios prefijados. El firewall no puede proteger contra los ataques de ingeniería social (ataques organizados a nivel global). El firewall no puede proteger contra los ataques de virus informáticos o software malicioso. Los firewalls no son sistemas inteligentes, ellos actúan de acuerdo a parámetros introducidos por su diseñador, por ende si un paquete de información no se encuentra dentro de estos parámetros como una amenaza de peligro simplemente lo deja pasar. 12
Capítulo 3 3.1. Netfilter - Ip tables Netfilter es un módulo disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho módulo permite realizar el manejo de paquetes en diferentes estados del procesamiento. Una de las herramientas más utilizadas implementadas sobre Netfilter son las IPtables. Las IPtables permiten no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) o mantener registro del tráfico. En otraspalabras, es el programa en el cual se implementan las reglas con las cuales se comparan los paquetes y se decide que hacer con ellos. Las reglas se agrupan en cadenas: cada cadena es una lista ordenada de reglas. Las cadenas se agrupan en tablas: cada tabla está asociada con un tipo diferente de procesamiento de paquetes. Cada regla especifica qué paquetes la cumplen (match) y un objetivo que indica qué hacer con el paquete en cada caso. Cada paquete de red que llega a un host o que se envía desde un host recorre por lo menos una cadena y cada regla de esa cadena se comprueba con el paquete. Si la regla se cumple, el recorrido se detiene y el destino de la regla dicta lo que se debe hacer con el paquete. Si el paquete alcanza el fin de una cadena predefinida sin haberse correspondido con ninguna regla de la cadena, la política de destino de la cadena dicta qué hacer con el paquete. Una cadena puede contener un enlace a otra cadena. No hay un límite respecto de cuán anidadas pueden estar las cadenas. Hay tres cadenas básicas 13
(INPUT, OUTPUT y FORWARD: ENTRADA, SALIDA y REENVÍO) y el usuario puede crear tantas como desee 1. 1 En B, podremos encontrar un ejemplo de implementación de IPtables/Netfilters 14
Capítulo 4 4.1. DMZ (zona desmilitarizada) Para hacer accesibles hosts (servidores web, de correo electrónico, FTP) tanto desde una red interna como de una red externa, es necesario implementar una nueva red aislada, para evitar comprometer la seguridad de la red interna. El término zona desmilitarizada. o DMZ hace referencia a esta red aislada que posee servicios disponibles para el público y para los usuarios de la intranet. Por lo general, las políticas de seguridad para las DMZ son las siguientes: El tráfico de la red externa a la DMZ está autorizado 1. El tráfico de la red externa a la red interna está prohibido 2. El tráfico de la red interna a la DMZ está autorizado. El tráfico de la red interna a la red externa está autorizado. El tráfico de la DMZ a la red interna está prohibido. El tráfico de la DMZ a la red externa está prohibido. 1 Implica que puede iniciar una conexión 2 Implica que no puede iniciar una conexión 15
4.1.1. Arquitectura de una DMZ Una DMZ se puede implementar de muchas maneras diferentes. Las arquitecturas más comunes son la de firewall simple y la de firewall doble. Firewall simple: En esta configuración se emplea un solo firewall con al menos tres interfaces de red. La primera se conecta al router del ISP y forma la red externa. La segunda se conecta a la lan interna y forma la red interna. Finalmente la tercer interfaz conecta los servidores que proveerán servicios a la red externa. Este punto de unión de las tres redes se torna crítico y debe ser capaz de soportar todo el tráfico de la red. Figura 4.1: Esquema de una DMZ implementada con un Firewall Doble firewall: Una implementación más segura que la anterior es utilizar dos firewall, donde la DMZ se sitúa en el medio y se conecta a los mismos. Esta arquitectura ayuda a prevenir configuraciones erróneas accidentales que permitan el acceso desde la red externa a la interna. Esta segunda configuración es más segura porque se necesita que los dos dispositivos estén comprometidos para crear una falla de seguridad. Y es aún más seguro si los dos firewall son de distintos fabricantes, porque resulta menos probable que los dos tengan las mismas vulnerabilidades. Figura 4.2: Esquema de una DMZ implementada con dos Firewall 16
Apéndice A A.1. TCP TCP es un protocolo de comunicación orientado a conexión fiable del nivel de transporte, actualmente documentado por IETF en el RFC 793. Es un protocolo de capa 4 según el modelo OSI. En la pila de protocolos TCP/IP, TCP es la capa intermedia entre el protocolo de internet (IP) y la aplicación. Habitualmente, las aplicaciones necesitan que la comunicación sea fiable y, dado que la capa IP aporta un servicio de datagramas no fiable (sin confirmación), TCP añade las funciones necesarias para prestar un servicio que permita que la comunicación entre dos sistemas se efectúe libre de errores, sin pérdidas y con seguridad[2]. A.2. UDP UDP es un protocolo del nivel de transporte basado en el intercambio de datagramas (Encapsulado de capa 4 Modelo OSI). Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera. Tampoco tiene confirmación ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado correctamente, ya que no hay confirmación de entrega o recepción[3]. A.3. ICMP El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas en inglés de Internet Control Message Protocol) es el sub protocolo de control y notificación de errores del Protocolo de Internet (IP). Como tal, se usa para 17
enviar mensajes de error, indicando por ejemplo que un servicio determinado no está disponible o que un router o host no puede ser localizado. También puede ser utilizado para transmitir mensajes ICMP Query[4]. A.4. IP Internet Protocol(en español Protocolo de Internet ) o IP es un protocolo de comunicación de datos digitales clasificado funcionalmente en la Capa de Red según el modelo internacional OSI[5]. A.5. DoS En seguridad informática, un ataque de denegación de servicios, también llamado ataque DoS (de las siglas en inglés Denial of Service) o DDoS (de Distributed Denial of Service), es un ataque a un sistema de computadoras o red que causa que un servicio o recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos computacionales del sistema de la víctima. Se genera mediante la saturación de los puertos con flujo de información, haciendo que el servidor se sobrecargue y no pueda seguir prestando servicios; por eso se le denomina denegación, pues hace que el servidor no dé abasto a la cantidad de solicitudes. Esta técnica es usada por los llamados crackers 1 para dejar fuera de servicio servidores objetivo. Una ampliación del ataque DoS es el llamado ataque distribuido de denegación de servicio, también llamado ataque DDoS (de las siglas en inglés Distributed Denial of Service) el cual se lleva a cabo generando un gran flujo de información desde varios puntos de conexión. La forma más común de realizar un DDoS es a través de una botnet 2, siendo esta técnica el ciberataque más usual y eficaz por su sencillez tecnológica. En ocasiones, esta herramienta ha sido utilizada como un buen método para comprobar la capacidad de tráfico que un ordenador puede soportar sin volverse inestable y afectar a los servicios que presta. Un administrador de redes puede así conocer la capacidad real de cada máquina[6]. 1 El término cracker (del inglés cracker, romper ) se utiliza para referirse a las personas que rompen algún sistema de seguridad. 2 Botnet es un término que hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática. 18
A.6. Rootkits Su función principal es el uso bidireccional en origen o destino de comunicación para transmitir datos mediante un protocolo no orientado a conexión que transfiere paquetes conmutados a través de distintas redes físicas previamente enlazadas según la norma OSI de enlace de datos. Un rootkit es un programa que permite un acceso de privilegio continuo a una computadora pero que mantiene su presencia activamente oculta al control de los administradores al corromper el funcionamiento normal del sistema operativo o de otras aplicaciones[6]. 19
Apéndice B B.1. Ejemplo B.1.1. Equipamiento lógico necesario B.1.1.1. Instalación a través de yum Si utiliza CentOS 5 y 6, Red Hat Enterprise Linux 5 o 6, solo se necesita realizar lo siguiente para instalar o actualizar el equipamiento lógico necesario: yum -y install iptables B.1.2. Procedimientos B.1.2.1. Cadenas Las cadenas pueden ser utilizadas para: Tráfico entrante (INP UT) Tráfico saliente (OUTPUT) tráfico reenviado (F ORW ARD) 20
B.1.2.2. Reglas de destino Algunas de las reglas de destino pueden ser: Aceptar conexiones (ACCEP T) Descartar conexiones (DROP) Rechazar conexiones (REJECT) Encaminamiento posterior (P OST ROUT ING) Encaminamiento previo (P REROUT ING) SNAT NAT B.1.2.3. Políticas por defecto Establecen cual es la acción a tomar por defecto ante cualquier tipo de conexión. La opción -P cambia una política para una cadena. En el siguiente ejemplo se descartan (DROP) todas las conexiones que ingresen (INPUT), todas las conexiones que se reenvíen (FORWARD) y todas las conexiones que salgan (OUTPUT), es decir, se descarta todo el tráfico que entre desde una red pública y el que trate de salir desde la red local. iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT B.1.2.4. Limpieza de reglas específicas A fin de poder crear nuevas reglas, se deben borrar las existentes, para el tráfico entrante, tráfico reenviado y tráfico saliente así como el NAT. iptables -F INPUT iptables -F FORWARD iptables -F OUT- PUT iptables -F -t nat 21
B.1.2.5. Reglas específicas Las opciones más comunes son: -aañadeunacadena,laopción-idefineunainterfazdetráficoentrante. -o define una interfaz para trafico saliente. -j establece una regla de destino del tráfico, que puede ser ACCEPT, DROP o REJECT. -m define que se aplica la regla si hay una coincidencia específica. state define una lista separada por comas de distinto tipos de estados de las conexiones (INVALID, ESTABLISHED, NEW, RELATED). to-source define que IP reportar al tráfico externo. -s define trafico de origen. -d define tráfico de destino. source-port define el puerto desde el que se origina la conexión. destination-port define el puerto hacia el que se dirige la conexión. -t tabla a utilizar, pueden ser nat, filter, mangle o raw. 22
B.1.3. Ejemplos de reglas Reenvío de paquetes desde una interfaz de red local (eth1) hacia una interfaz de red pública (eth0): iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT Aceptar reenviar los paquetes que son parte de conexiones existentes (ES- TABLISHED) o relacionadas de tráfico entrante desde la interfaz eth1 para tráfico saliente por la interfaz eth0: iptables -A FORWARD -i eth0 -o eth1 -m state state ESTA- BLISHED,RELATED -j ACCEPT Permitir paquetes en el propio muro cortafuegos para tráfico saliente a través de la interfaz eth0 que son parte de conexiones existentes o relacionadas: iptables -A INPUT-i eth0 -m state state ESTABLISHED,RELATED -j ACCEPT Permitir (ACCEPT) todo el tráfico entrante (INPUT) desde (-s) cualquier dirección (0/0) la red local (eth1) y desde el retorno del sistema (lo) hacia (-d) cualquier destino (0/0): iptables -A INPUT -i eth1 -s 0/0 -d 0/0 -j ACCEPT iptables -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT Hacer (-j) SNAT para el tráfico saliente (-o) a tráves de la interfaz eth0 proveniente desde (-s) la red local (192.168.0.0/24) utilizando ( to-source) la dirección IP w.x.y.z. iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o eth0 -j SNAT to-source x.y.z.c Descartar (DROP) todo el tráfico entrante (-i) desde la interfaz eth0 que trate de utilizar la dirección IP pública del servidor(w.x.y.z), alguna dirección IP de la red local (192.168.0.0/24) o la dirección IP del retorno del sistema (127.0.01) 23
iptables -A INPUT -i eth0 -s w.x.y.x/32 -j DROP iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j DROP iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP Aceptar (ACCEPT) todos los paquetes SYN ( syn) del protocolo TCP (-p tcp) para los puertos ( destination-port) de los protocolos SMTP (25), HTTP(80), HTTPS (443) y SSH (22): iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 25 syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 80 syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 443 syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 22 syn -j ACCEPT Aceptar (ACCEPT) todos los paquetes SYN ( syn) del protocolo TCP (-tcp) para los puertos ( destination-port) del protocolos SMTP (25) en el servidor (w.x.y.z/32), desde (-s) cualquier lugar (0/0) hacia (-d) cualquier lugar (0/0). iptables -A INPUT -p tcp -s 0/0 -d w.x.y.z/32 destination-port 25 syn -j ACCEPT Aceptar (ACCEPT) todos los paquetes SYN ( syn) del protocolo TCP (-p tcp) para los puertos ( destination-port) de los protocolos POP3 (110), POP3S (995), IMAP (143) y IMAPS (993): iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 110 syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 995 syn -j ACCEPT 24
iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 143 syn -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 destination-port 993 syn -j ACCEPT Aceptar (ACCEPT) el tráfico entrante (-i) proveniente desde la interfaz eth1 cuando las conexiones se establezcan desde el puerto ( sport) 67 por protocolos (-p) TCP y UDP. iptables -A INPUT -i eth1 -p tcp sport 68 dport 67 -j ACCEPT iptables -A INPUT -i eth1 -p udp sport 68 dport 67 -j AC- CEPT Aceptar (ACCEPT) conexiones de tráfico entrante (INPUT) por protocolo(-p) UDP cuando se establezcan desde(-s) el servidor DNS 200.33.145.217 desde el puerto ( source-port) 53 hacia (-d) cualquier destino (0/0): iptables -A INPUT -p udp -s 200.33.146.217/32 source-port 53 -d 0/0 -j ACCEPT 25
B.1.4. Cerrar accesos Descartar (DROP) el tráfico entrante (INPUT) para el protocolo (-p) TCP hacia los puerto ( destination-port) de SSH (22) y Telnet (23): iptables -A INPUT -p tcp destination-port 22 -j DROP iptables -A INPUT -p tcp destination-port 23 -j DROP Descartar (DROP) todo tipo de conexiones de tráfico entrante (INPUT) desde (-s) la dirección IP a.b.c.d: iptables -A INPUT -s a.b.c.d -j DROP Rechazar(REJECT) conexiones hacia(output) la dirección IP a.b.c.d desde la red local: iptables -A OUTPUT -d a.b.c.d -s 192.168.0.0/24 -j REJECT B.1.5. Eliminar reglas Engeneral seutilizalamisma regla,peroenlugardeutilizar-a(append), se utiliza -D (delete). Eliminar la regla que descarta(drop) todo tipo de conexiones de tráfico entrante (INPUT) desde (-s) la dirección IP a.b.c.d: iptables -D INPUT -s a.b.c.d -j DROP 26
B.1.6. Mostrar la lista de cadenas y reglas Una vez cargadas todas las cadenas y reglas de iptables es posible visualizar éstas utilizando el mandato iptables con las opciones -n, para ver las listas en formato numérico y -L, para solicitar la lista de éstas cadenas. iptables -nl Cuando no hay reglas ni cadenas cargadas, la salida debe devolver lo siguiente: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Cuando hay cadenas presentes, la salida, suponiendo que se utilizarón los ejemplos de este documento, debe devolver algo similar a lo siguiente: 27
Chain INPUT (policy DROP) Target Prot. Opt. Source Destination - ACCEPT all 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT all 0.0.0.0/0 0.0.0.0/0? - ACCEPT all 192.168.1.64 0.0.0.0/0? - DROP all 172.16.0.0/24 0.0.0.0/0? - DROP all 127.0.0.0/8 0.0.0.0/0? - DROP all 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 192.168.1.64 tcp dpt:110 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:995 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67 ACCEPT udp 200.33.146.217 0.0.0.0/0 udp spt:53 Cuadro B.1: Lista de cadenas y reglas - Chain INPUT Policy DROP Chain FORWARD (policy DROP) target prot opt source destination - ACCEPT all 0.0.0.0/0 0.0.0.0/0 - ACCEPT all 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED Cuadro B.2: Lista de cadenas y reglas - Chain FORWARD Policy DROP 28
Chain OUTPUT (policy ACCEPT) Target Prot. Opt. Source Destination - [root@m064 ]# iptables -nl Cuadro B.3:Listadecadenasyreglas-Chain OUTPUT Policy ACCEPT Chain INPUT (policy DROP) target prot opt source destination - ACCEPT all 0.0.0.0/0 0.0.0.0/0 - ACCEPT all 0.0.0.0/0 0.0.0.0/0 - ACCEPT all 0.0.0.0/0 0.0.0.0/0 - DROP all 192.168.1.64 0.0.0.0/0 - DROP all 172.16.0.0/24 0.0.0.0/0 - DROP all 127.0.0.0/8 0.0.0.0/0 - ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 192.168.1.64 tcp dpt:110 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:995 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt143 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 flags:0x17/0x02 ACCEPT tcp 0.0.0.0/0 0.0.0.0/0 tcp spt:68 dpt:67 ACCEPT udp 0.0.0.0/0 0.0.0.0/0 udp spt:68 dpt:67 ACCEPT udp 200.33.146.217 0.0.0.0/0 udp spt:53 Cuadro B.4: Lista de cadenas y reglas - Chain INPUT Policy DROP 29
Chain FORWARD (policy DROP) target all opt source destination - ACCEPT all 0.0.0.0/0 0.0.0.0/0 - ACCEPT all 0.0.0.0/0 0.0.0.0/0 state RELATED, ESTABLISHED Cuadro B.5: Lista de cadenas y reglas - Chain FORWARD Policy DROP Chain OUTPUT (policy ACCEPT) target all opt source destination - - - - - - - Cuadro B.6:Listadecadenasyreglas-Chain OUTPUT Policy ACCEPT 30
B.1.7. Iniciar, detener y reiniciar el servicio iptables Si está de acuerdo con las reglas generadas de iptables, utilice el siguiente mandato para guardar éstas: service iptables save Las reglas quedarán almacenadas en el archivo /etc/sysconfig/iptables. Para ejecutar por primera vez el servicio iptables, utilice: service iptables start Para hacer que los cambios hechos tras modificar la configuración surtan efecto, utilice: service iptables restart Para detener el servicio iptables y borrar todas las reglas utilice: service iptables stop B.1.8. Agregar el servicio iptables al arranque del sistema Para hacer que el servicio de iptables esté activo con el siguiente inicio del sistema, en todos los niveles de ejecución (2, 3, 4 y 5), se utiliza lo siguiente: chkconfig iptables on[7] 31
Bibliografía [1] Z. A. TM Check Point Software Technologies LTD, Qué debe ofrecer un buen servidor de seguridad, Zone Alarm TM Check Point Software Technologies LTD, Tech. Rep., 2014. [Online]. Available: http://www.zonealarm.es/security/es/firewall/good-firewall.htm#os [2] Wikipedia, Transmission control protocol, http://es.wikipedia.org/wiki/transmission Control Protocol, 06 2014, bb. [3], User datagram protocol, http://es.wikipedia.org/wiki/user Datagram Protocol, 06 2014. [4], Internet control message protocol, http://es.wikipedia.org/wiki/http://es.wikipedia.org/wiki/icmp, 06 2014. [5], Internet protocol, http://es.wikipedia.org/wiki/direccion IP, 06 2014. [6], Ataque de denegación de servicio, http://es.wikipedia.org/wiki/ataque de denegacion de servicio, 06 2014. [7] J. B. Dueñas, Introducción a iptables, Alcance Libre, Tech. Rep., 2011. [Online]. Available: http://www.alcancelibre.org/staticpages/index.php/introduccion-iptables 32