Criado Indomable

Un intento de Blog de Sebastián D. Criado – 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

Denegación de servicio en pop3 por mala configuración en inetd.conf

Posted by Sebastián Criado en Lunes, diciembre 4, 2006 12:13

SeguridadAl preparar un esquema de seguridad para una red, generalmente se comete el error de pensar que hay servicios que están configurados bien por defecto. Es muy común que los implementadores de soluciones libres tengan la falsa confianza de seguridad y dejen las cosas como vienen de fabrica sin siquiera poner un mínimo de atención a la configuración de otros servicios involucrados.

El caso que comentare es sobre una denegación de servicio (DoS) sobre un servidor pop3 utilizando solid-pop3d como servidor y inetd para atender la conexiones en un servidor Debian GNU/Linux.

En este caso, no se tiene habilitado el acceso a pop3 desde el mundo, siendo utilizado solamente en la red interna.
Aplico este ejemplo por lo conversado en post anteriores en cuanto a los ataques desde el interior, intencionales o no, pero que suceden con más frecuencia que lo que se desearía.

Ataque:

Un usuario está esperando un mail y reiteradamente le da al botón enviar y recibir para chequear si ha llegado.
El demonio inet.d detecta estos pedidos reiterados como un ataque DoS y deja de atender pedidos para pop3 por un tiempo X. Se ha provocado con esto, efectivamente, una ataque de DoS ya que el servicio no esta disponible. Si tenemos una red mediana, unos 50 usuarios, tendremos varias llamadas solicitando una solución al problema en ese lapso.
Según un análisis posterior de los logs, el usuario impaciente chequeo correo a razón de unas 6 veces por segundo durante un lapso de 10 segundos, lo que dio un total de 60 pedidos al servicio pop3 en menos de un minuto, a esto se le puede sumar los pedidos de los demás usuarios.
El demonio inet.d, por defecto, atiende unos 40 pedidos por minuto, superado este máximo, deshabilitara el servicio en cuestión y la saturación de la linea telefónica por reclamos.

Configuraciones:

Veamos un poco la configuración que se utilizo.
La misma fue por defecto con lo cual, recordemos, atenderá 40 pedidos por minuto. Para ver más detalles sobre la configuración del inet.d hacer man inetd.conf.

El archivo de configuración indica:


pop3 stream tcp nowait root.mail /usr/sbin/tcpd /usr/sbin/solid-pop3d

Los campos por numero son:
1: es el nombre del servicio, en nuestro caso, pop3. El mismo tiene que estar detallado en /etc/services para ser considerado correcto.

2: describe el tipo socket asociado a la conexión.
3: protocolo de red utilizado por el servicio.
4: Concurrencia: puede ser waith o no waith
5: usuario que ejecuta el servicio
6: Programa a ejecutar

Configuración correcta:

Con esta configuración tenemos el problema que como por defecto se tendrán 40 conexiones por minuto, el usuario impaciente tiene todas las herramientas para hacer una denegación de servicio.

El manejo de las conexiones se debe a que el servicio pop3 es multihilo (puede atender más de una conexión al mismo tiempo) con lo cual no tiene que esperar a terminar una conexión para iniciar otra y por eso en el campo 4 se pone nowait.

Para poder solucionar este inconveniente, bastara con agregar la cantidad de atenciones que queramos tener y una configuración en el cron para que cargue cada cierto tiempo el demonio inet.d a fin de que no se provoque un DoS superado este punto.
Para saber cuantas conexiones se necesitan , bastara con ver los logs de pop3 y ver cuanto es lo normal en un minuto. Sabiendo el tipo de servidor que se tenga, se podrá determinar una cantidad de conexiones óptima para brindar el servicio pop3 sin que se produzcan caídas.
Tomemos por ejemplo el doble de lo que esta por default, es decir, 80 conexiones por minuto.

La configuración necesaria para esto es muy simple. Bastara con poner la cantidad de conexiones en el campo 4 (concurrencia) separado del nowait con un punto:


pop3 stream tcp nowait.80 root.mail /usr/sbin/tcpd /usr/sbin/solid-pop3d

Luego configuraremos el /etc/crontab para que recargue el inetd cada 10 minutos.

0,10,20,30,40,50 * * * * root /etc/init.d/inetd restart

Con estas configuraciones, estaremos menos propensos a un ataque DoS interno o externo (si es el caso).
El ver la simplicidad con la que se puede dejar sin un servicio, aunque sea por un corto tiempo, tiene que hacer recapacitar al administrador para tener en cuenta las configuraciones por defecto como una solución general.
“Cuando se requiere brindar un servicio con un alto nivel de seguridad, se requiere una configuración especifica, adaptada a los requerimientos y características de lo que se está cuidando”.

7 comentarios to “Denegación de servicio en pop3 por mala configuración en inetd.conf”

  1. Diego said

    No tengo demasiada experiencia con solid-pop3, pero si quisieras darle una mayor seguridad al servicio pop3 probaria dovecot, altamente configurable, estable y cuida todas las cuestiones “conocidas” en cuanto a la “seguridad”, tuve la oportunidad de implementarlo en una red donde hay aprox 2500 usuarios de pop3 y pop3s (solo locales) y no ha reportado problema alguno como si lo hacia otros como solid-pop3

  2. Lo voy a porbar, pero el tema es que este no es un problema del solid-pop3, si no de una mala configuración en el inetd.conf.

  3. Diego said

    Si, coincido con que sea una mala configuracion de inetd pero pienso que el servicio pop3 funciona mejor corriendo en un daemon, tal vez para una concurrencia pequeña de usuarios me animaria a usar el servicio en inetd (80 conexiones por min), pero sino no, el solid lo veo muy limitado comparado a por ejemplo el dovecot que te comentaba antes (donde lo estoy usando tiene un promedio de 800 conexiones por min) …
    ademas soporta todo lo que se te ocurra…
    dovecot es mi sponsor🙂
    se nota? :))))

    salutes

  4. x-ip said

    “no hay DoS sin TreS”

  5. Voy a verlo. Igualmente, me gusta que inetd controle las conexiones. Sigo usando tcpd para controlar algunas cosillas antes que se ejecute el servidor de pop3, cosa que no se puede con el demonio escuchando en un puerto directamente.

  6. Joselo said

    🙂 es del siglo pasado el inetd !

  7. Magda Morales said

    Gracias pro el tip,

    Yo estaba trabajando bien con mi servidor, pero desde hace dos semanas tenemos problemas se esta perdiendo el pop3, espero que esto me funcione.

    aunque tengo xinetd

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: