Your SlideShare is downloading. ×
Port Knocking   Securización De Servidores
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Port Knocking Securización De Servidores

909
views

Published on

La técnica del Port-Knocking trabaja a través de puertos cerrados, confía en todos los clientes e interactúa con los Knocks (en adelante “golpes”) que estos envían antes que se lleve a cabo la …

La técnica del Port-Knocking trabaja a través de puertos cerrados, confía en todos los clientes e interactúa con los Knocks (en adelante “golpes”) que estos envían antes que se lleve a cabo la autentificación, por lo que no hay discriminación de clientes que intentan conectarse. Una vez que la técnica del Port-Knocking ha aprobado la secuencia de golpes de un cliente, lo dirige hacia las aplicaciones de seguridad que se encargaran de la autentificación del cliente, esto proporciona un equilibrio entre la protección y la flexibilidad.

Published in: Technology

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
909
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. TOC TOC, TOCANDO A LA PUERTA DEL SERVIDOR Port Knocking – Securización de servidores By: Ronnie A. Q. (ronixp@gmail.com) INTRODUCCIÓN En la actualidad podemos notar un aumento en el uso de nuevas tecnologías, cada vez más, las empresas apuestan por el uso de computadoras para la administración de sus datos, recursos y dispositivos, por el uso de redes cableadas o inalámbricas para interconectar los datos y centralizando así la información en servidores de uso general y de propósito múltiple. En este tipo de escenarios, muy comúnmente surge la necesidad de acceder remotamente a los servidores (no necesariamente de oficina a oficina, sino hablamos de estaciones de trabajo distanciadas de una ciudad a otro), para realizar tareas de administración o de mantenimiento. Es aquí donde el tema de seguridad en el acceso a los servidores sugiere una mayor preocupación. Por tal motivo en el resto de este documento se hablara de una técnica no muy conocida y que aparentemente puede resultar muy sencilla pero su eficacia esta comprobada, la técnica de seguridad denominada PORT-KNOCKING. CONTENIDO Los administradores de sistemas, se enfrentan al reto de Cliente puede ser tanto equilibrar la flexibilidad y la seguridad a la hora de diseñar las una persona como una reglas para permitir el acceso de usuarios (en adelante clientes) máquina que requiere autorizados que requieren conectarse al servidor remoto. La acceder a recursos y servicios brindados por seguridad del servidor debe ofrecer protección contra clientes otro llamado servidor. atacantes, y al mismo tiempo dar confianza para conectarse a los clientes legítimos. Actualmente para permitir la conexión de un cliente legitimo al servidor, se realiza un filtrado mediante las direcciones IP, o mediante el puerto al que esta acogida la conexión del cliente. Lamentablemente, este tipo de filtrados no distingue a clientes atacantes que pueden venir de direcciones IP de confianza. La flexibilidad es limitada por el echo de que ninguna IP de las direcciones bloqueadas pueden conectarse, independientemente de la confianza o el estatus que esta posea. Al mismo tiempo la protección se ve debilitada por el hecho de que cualquiera de los rangos de IP bloqueados físicamente puede viajar y conectarse desde un cliente que posea una IP sin filtrar. El uso de sistemas de detección de intrusos y mantenimiento de aplicaciones que hay hasta la fecha, pueden ir a un largo camino hacia la prestación de la protección que ofrecen, pero lo hacen solo en contra los ataques conocidos, derivados o previstos. Tener los puertos abiertos sigue siendo una vulnerabilidad necesaria, para que se realice la conexión entre el cliente y el servidor, pero también puede convertirse en abrir las puertas para el ataque. Al final siempre que los puertos permanezcan abiertos, las aplicaciones de red son susceptibles a tener clientes atacantes.
  • 2. Aquí es donde entra el Port-Knocking Para eliminar el riesgo asociado de tener los puertos Los knocks o golpes abiertos, la técnica del Port-Knocking trabaja a través de puertos son equivalentes a cerrados, confía en todos los clientes e interactúa con los intentos de conexión Knocks (en adelante “golpes”) que estos envían antes que se que son enviados por lleve a cabo la autentificación, por lo que no hay discriminación algún cliente. de clientes que intentan conectarse. Una vez que la técnica del Port-Knocking ha aprobado la secuencia de golpes de un cliente, lo dirige hacia las aplicaciones de seguridad que se encargaran de la autentificación del cliente, esto proporciona un equilibrio entre la protección y la flexibilidad. Describamos como funciona esta técnica Para entender el concepto del Port-Knocking, recordemos las películas en donde un sujeto golpea con una cierta secuencia de golpecillos la puerta de una taberna, y si la secuencia era correcta, el tabernero abría una rendija para solicitarle una clave verbal y en el caso de que la secuencia de golpes no era correcta, el tabernero no hacia nada, por lo que el cliente pensaba que la taberna estaba cerrada. El concepto del Port-Knocking es exactamente análogo. Al igual que en ejemplo, esta técnica se basa en aparentar que todo esta cerrado. El cliente o KnockCliente es el responsable de generar la secuencia de golpes y tabernero o el KnockDaemon es el responsable de escuchar los puertos del servidor, tener un registro de golpes y de manipular los acciones. KnockCliente El KnockCliente es el responsable de enviar los golpes al servidor remoto donde un Knockdaemon esta escuchando. Su implementación puede ser tan simple como NETCAT o un programa modificado de PING o tan complicada como un generador de HASH CIFRADO. El KnockCliente codifica la información antes de enviarla. La secuencia de golpes sin codificar está compuesta generalmente de octetos: los primero cuatro octetos son de propiedad intelectual, es decir valores basados en la IP del cliente que envía el paquete en cuestión, seguidamente se encuentran octetos basados en el puerto, un FLAG o bandera, el tiempo de comprobación, y por ultimo factores basados en HASH CIFRADO. KnockDaemon - En primer lugar, el Knockdaemon crea un archivo de registro para controlar los golpes que reciben los puertos del servidor remoto. - En segundo lugar, el Knockdaemon requiere un método para extraer las secuencias de golpes a los puertos, ya sea desde del archivo registro o por la captura de paquetes y traducir su carga útil en información utilizable. - En este paso el Knockdaemon debe ser capaz de: detectar cuándo una secuencia de golpes comienza y termina, detectar correctamente la presencia de falsos golpes que no son parte de una secuencia. realizar un seguimiento de múltiples secuencias que llegan al mismo tiempo desde diferentes direcciones IP remotas. - Por ultimo, cuando un formato de secuencia correcto sea recibido, el contenido de la información de la secuencia debe ser vinculada a una acción. La acción por lo general puede ser ejecutar algún comando específico o un grupo de comandos. El formato de la secuencia El formato de la secuencia correcta puede consistir en cualquier número de TCP, UDP, o incluso a veces ICMP y otros paquetes de protocolo, que estén dentro del rango de numeración de puertos de la máquina destino. La complejidad de la secuencia de golpes puede ser cualquier cosa como una simple lista ordenada (por ejemplo, el puerto TCP 1000, el puerto TCP 2000, el puerto UDP 3000).
  • 3. Consideremos el siguiente ejemplo aplicando el Port-Knocking El servidor con IP: 192.168.1.2, tiene seguridad Port-Knocking por consiguiente los puertos están configurados para rechazar cualquier conexión TCP, y sin enviar paquetes ICMP de error al cliente. El comando IPTABLES (IPCHAINS en versiones inferiores a Linux 2.4) procede a cerrar los puertos 1-1024 de la siguiente forma: iptables –A INPUT –s 0.0.0.0/0 -p tcp –i eth1 –-dport 1:1024 -j DROP El cliente de IP: 192.168.1.5. En el primer caso, intentara conectarse sin saber de la existencia del Port-Knocking por lo que su intento será fallido. En el Segundo caso, conociendo de la existencia de esta técnica, intentara conectarse al servidor con la siguiente secuencia de puertos TCP: 100-200-300 (Paso 1 en la figura Nº 1). Desde el punto de vista del cliente, los intentos no producen ninguna respuesta y son en silencio: TCP_SYN al puerto 100 TCP_SYN al puerto 200 TCP_SYN al puerto 300 Sin embargo, en el servidor se registran todos los intentos de conexión; los datos del cliente y los puertos utilizados en cada intento de conexión de la siguiente forma: May 15 20:13:26 ... input DROP ... 192.168.1.5:10002 port:100 May 15 20:13:27 ... input DROP ... 192.168.1.5:10003 port:200 May 15 20:13:27 ... input DROP ... 192.168.1.5:10004 port:300 El KnockDaemon que supervisa el archivo de registro puede detectar estos intentos de conexión a los puertos 100, 200, 300 desde la misma dirección IP: 192.168.1.5. Esta secuencia en particular podría hacer que el KnockDaemon abriera el puerto SSH (TCP/22) para la IP: 192.168.1.5 y ejecutaría el siguiente comando: (Paso 2 en la figura Nº 1) iptables -i eth1 -I INPUT -s 192.168.1.5 -p tcp --dport 22 -j ACCEPT Una vez abierto el puerto SSH (TCP/22), el cliente puede establecer conexión con el servidor a través de dicho puerto. (Paso 3 en la figura Nº 1). Otra secuencia se puede utilizar para cerrar el puerto. Por ejemplo, 300, 200, 100 podría ser usado para activar la supresión de la regla que fue creada para permitir dinámicamente a la IP: 192.168.1.5 conectarse.
  • 4. Hablemos de los Beneficios del Port-Knocking Una de las ventajas principales de esta técnica de seguridad es que la información fluye en forma de intentos de conexión en lugar de los típicos paquetes de datos de carga útil. Un atacante que ignore la existencia de esta técnica nunca podrá conectarse, o causar algún daño al servidor. Incluso si supiera de la existencia de esta técnica, requeriría de un gran esfuerzo de fuerza bruta para descubrir la secuencia, la mas simple secuencia de tres golpes de tipo TCP (por ejemplo los puertos 700, 800, 900) requeriría que el atacante tenga que probar con todas las combinaciones de tres puertos en el rango de 1-65535, y además de eso escanear en cada una de las combinaciones si uno de los puertos por el que quiere entrar se ah abierto. El puerto no se abrirá hasta que la secuencia correcta de golpes en los puertos correctos sea recibida en orden por el KnockDaemon. Para minimizar el riesgo de una interceptación de las partes de una secuencia funcional que se esta enviando, el contenido de la información que contiene la IP remota en la secuencia puede ser encriptada. Otra ventaja importante es que el sistema es completamente personalizable, por lo que no se limita a la apertura de un puerto especifico, sino que una secuencia de golpes esta vinculada con una acción particular, como por ejemplo ejecutar un script shell, por lo que cuando una secuencia especifica de golpes es detectada por el KnockDaemon, este ejecutara el script. Provee de dinamismo a las tareas de administración, un cliente autorizado situado en cualquier parte del mundo sería capaz de abrir el puerto en el que esta interesado por un determinado periodo de tiempo sin necesidad de ayuda del administrador del servidor. También podrá quot;cerrarquot; el puerto una vez que hayan terminado, con otra secuencia de golpes y nunca mas abrirla para la misma IP remota. Una Importante aplicación de este sistema se expone en el uso del puerto SSH, puede impedir ataques de fuerza bruta sobre la contraseña de acceso. El demonio del SSH ni siquiera seria despertado con cualquier intento que se haga, hasta después que se haya detectado una secuencia correcta de golpes. Otro punto a favor de esta técnica, es que el software necesario, ya sea en el servidor o cliente final, es mínimo y, de hecho, puede aplicarse como un simple Script de shell para el servidor o un archivo por lotes y una utilidad de línea de comandos de Windows para el cliente. En términos de uso de tráfico, CPU y el consumo de memoria, el Port-Knocking utiliza un mínimo absoluto. La implementación de KnockDaemon también tiende a ser tan simple que cualquier tipo de vulnerabilidad seria evidente y el código es muy fácil de controlar. Cuando bebe ser utilizado el Port-Knocking Es recomendable usarlo en servicios de red que están destinados a ser utilizados por unos pocos usuarios autorizados. Por ejemplo; Consolas de administración, Administración basada en interfaces Web, SSH, bases de datos, etc. También para proteger servicios que se sabe tienen vulnerabilidades graves, pero por alguna razón no se pueden desactivar, Cualquiera que quiera añadir otra capa de seguridad a los servicios críticos como SSH. Esta técnica no es recomendable utilizarla para servidores que serán utilizados por el público en general, Por ejemplo; no seria una buena idea proteger un servidor Web público con esta técnica. Por que todos los usuarios que querrían acceder a una página web tendrían que usar un KnockCliente para establecer la conexión con el servidor web.
  • 5. DISCUSIÓN Aunque parezca una medida un tanto paranoica, es recomendable utilizarla debido a que la mayoría de aplicaciones tiene vulnerabilidades, los administradores de sistemas no pueden basarse simplemente en la seguridad proporcionada por los fabricantes, los sistemas críticos necesitan capas adicionales de seguridad, y merece la pena, aunque sea sólo para ahorrarte los intentos de intrusión SSH con ataques por fuerza bruta. En temas de seguridad, no existen técnicas que garanticen realmente en un 100% la protección que se ofrece. Tengamos en cuenta la Tercera Ley de Newton aplicada a la seguridad: “Por cada Sistema o Protocolo de Seguridad, existe en su contraparte un truco contrario”. Es por ello que se debe seguir investigando y dar propuestas para mejorar las técnicas de seguridad utilizadas. Por ejemplo para esta técnica, seria conveniente el uso adicional de datos basura dentro del paquete TCP, o incluso variar el TTL de cada paquete puede ser usado para transmitir algún tipo simple de combinación de números. Por ultimo, mencionar que esta técnica de seguridad trabaja en el nivel de la capa de enlace, siguiendo el modelo OSI. Se recomienda investigar más acerca de técnicas de seguridad basados en la capa de aplicación. BIBLIOGRAFÍA http://www.portknocking.org/ http://www.portknocking.org/view/resources http://www.portknocking.org/view/implementations http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki http://es.wikipedia.org RECURSOS ¿Port-Knocking... ofuscación o capa de seguridad? http://www.hispasec.com/unaaldia/3382/ Cómo instalar y configurar knockd a modo de receta http://crysol.inf-cr.uclm.es/es/node/618 Iptables: http://es.wikipedia.org/wiki/Iptables Lista de Números de Puertos http://es.wikipedia.org/wiki/Lista_de_números_de_puerto Recomendaciones de Seguridad www.fi.upm.es/docs/servicios/seguridad_informatica/371_recomendaciones.pdf