¿Ventajas de matar sesiones después de 5 minutos?

29

Estoy tratando con un servidor que no es mío para configurar. Algo en algún lugar entre yo y este servidor mata a cualquier conexión después de 5 minutos si no pasa tráfico entre las dos máquinas. Esto incluye conexiones activas donde se ejecuta un comando en el servidor; específicamente, he demostrado que esta desconexión se produce mediante una conexión SSH (ejecutar un comando bash que no imprime ningún resultado durante más de 5 minutos) y una base de datos SQL (ejecutar un comando SQL que dura más de 5 minutos). También se desconecta si voy a leer algo y no envío ningún comando durante 5 minutos, por supuesto.

Para la configuración de SSH, el grupo responsable del servidor recomendó que yo habilite mantener vivo el lado del cliente. No han proporcionado ninguna sugerencia para las conexiones de la base de datos.

Estoy completamente confundido, sin embargo. ¿Cuál es el beneficio de seguridad aquí? Para SSH, puedo omitir sus configuraciones completamente desde el lado del cliente, e incluso recomiendan hacerlo. (Esto último significa que no puede haber un argumento de "seguridad a través de la oscuridad", ya que no será oscuro porque todos los usuarios necesitarán saberlo. No es que crea que esto frustraría un ataque, incluso si fuera oscuro, especialmente porque Descubrí por mi cuenta antes de que incluso lo recomendaran.) Para ambos, esto demostrablemente se degrada la disponibilidad. Podré ver que desconectar las sesiones activas después de unas pocas horas de inactividad podría ser beneficioso (aunque las posibles amenazas de las sesiones abiertas no son claras para mí), pero ¿cada 5 minutos ? Esto significa que ni siquiera puedo leer una publicación de DBA.SE mientras estoy trabajando en mi SQL sin desconectarme. ¿Es esto tan ridículo como me suena, o hay algo que me falta?

Aclaraciones

Algunos puntos se han mencionado en los comentarios, por lo que me gustaría aclarar un poco.

  • Puedo reproducir constantemente el tiempo de espera a los 5 minutos. Utilicé comandos que registran el lado del servidor de la marca de tiempo cada pocos segundos, y después de una desconexión, la última marca de tiempo registrada siempre fue exactamente 5 minutos después de la primera marca de tiempo. Así que las desconexiones nunca fueron esporádicas.
  • Poco después de que escribí esta publicación, los administradores del sistema / red respondieron que esto es realmente intencional. Cito: "¿Más consecuencias del límite de tiempo de 5 minutos establecido en los F5 hace unas semanas?" No estoy seguro de qué es un F5; Algunos googlings sugieren que es un conmutador muy costoso, que corresponde a alguien que estaba tratando de encontrar una solución para mis conexiones de base de datos que luego mencionara la configuración del conmutador.

(No creo que esta información invalide ninguna respuesta).

    
pregunta jpmc26 27.04.2016 - 22:01
fuente

5 respuestas

30

Esto parece un buen ejemplo de un seguridad "cargo culto" . Se ha implementado un control de seguridad a ciegas sin comprender el contexto involucrado o, de hecho, implementarlo correctamente.

En términos generales, en términos de seguridad, el punto de un tiempo de espera inactivo es para reducir el riesgo de situaciones en las que una máquina cliente queda desatendida y un usuario malintencionado llega a la máquina y ejecuta comandos no autorizados en ella. El saldo en estos tiempos de espera tiende a ser uno de usabilidad (que favorece un tiempo de espera más largo o no) y de seguridad (que favorece tiempos de espera más cortos).

A veces puede detectar el cultivo de la carga de seguridad exactamente con lo que mencionó, es decir, los operadores del sistema realmente lo están ayudando a evitar el control nominal (en su caso, recomendando el uso de keep-alives)

    
respondido por el Rоry McCune 27.04.2016 - 22:18
fuente
52
  

Estoy completamente confundido, sin embargo. ¿Cuál es el beneficio de seguridad aquí?

Nada. El escenario más probable es que algo intermedio sea el tiempo de espera de la conexión después de 5 minutos para conservar los recursos. Eso podría ser un firewall, un acelerador de WAN, un acelerador de SSL, etc. O podría ser simplemente una mala configuración predeterminada. ¿Quién sabe?

Los administradores de red a menudo tienen preocupaciones diferentes a las de los demás, ya que muchas veces pueden entrar en conflicto con otros. Trabajamos en un mundo de silo donde no se toma en cuenta la imagen holística.

No asuma que hay una razón particularmente buena para cada configuración, pero deje espacio para la posibilidad de que el tiempo de espera de 5 minutos sea una solución rápida para algún otro problema que tengan, y el problema de su aplicación fue de retroceso.

    
respondido por el Steve Sether 27.04.2016 - 23:21
fuente
13
  

Estoy completamente confundido, sin embargo. ¿Cuál es el beneficio de seguridad aquí?

Puede que no sea una cuestión de seguridad, sino que tenga una razón diferente. Desafortunadamente, su pregunta solo ofrece su opinión, por lo que solo podemos especular sobre cuál podría ser la verdadera razón.

Una explicación podría ser que hay un filtro de paquetes con estado simple donde los estados se agotan después de 120 segundos de inactividad. Esto significa que cualquier dato transferido después de esta inactividad será bloqueado porque ya no hay un estado abierto. La razón de esto podría ser un dispositivo que solo tiene recursos muy limitados y, por lo tanto, no puede mantener demasiados estados abiertos al mismo tiempo, por ejemplo, un firewall que fue diseñado con 10 usuarios en mente, pero ahora es usado por 100 usuarios.

Por supuesto, también puede ser que un BOFH esté ejecutando el sistema, que probablemente sea más su opinión ante el problema: ) Pero es difícil saberlo sin tener más información sobre el sistema real.

    
respondido por el Steffen Ullrich 27.04.2016 - 22:25
fuente
7

Como puede haber notado, esto no tiene nada que ver con la seguridad en absoluto. En cambio, la práctica de matar conexiones TCP inactivas de larga duración tiene que ver con errores: es una solución alternativa para el software con errores.

Uno de los ejemplos más famosos de software que deja colgadas las sesiones de TCP es Internet Explorer (al menos hasta la versión 7). IE tenía el hábito de no finalizar las sesiones TCP correctamente, por lo que mientras el PC / laptop / teléfono cliente se considera cerrado, el servidor todavía ve la conexión como abierta. Y IE es solo uno de los ejemplos más conocidos. Hay un montón de software de buggy por ahí.

Entonces, ¿por qué debería importarle un servidor? Porque cada socket abierto es también un descriptor de archivo abierto. No manejar esta situación hace que el servidor se quede sin descriptor de archivos. En teoría, el servidor también puede quedarse sin ID de socket, pero ese número es mucho más alto que el número de descriptores de archivos abiertos que un sistema operativo puede manejar.

Debido a esto, varias implementaciones de la pila TCP incluyen un tiempo de espera en sockets muertos. En algunos sistemas operativos puede configurar este tiempo de espera.

    
respondido por el slebetman 29.04.2016 - 08:22
fuente
2

Casi siempre se ha agotado el tiempo de espera en la sesión TCP inactiva implementada en enrutadores, conmutadores y toda esa maquinaria de red de bajo nivel. Tiene poco que ver con la seguridad en el sentido de protección contra un ataque deliberado, pero simplemente trate de no agotar los recursos debido a que el software defectuoso no puede cerrar la conexión u otros errores de hardware en la red externa que impiden que el paquete final llegue a su destino.

Debido a esas posibles fallas trascendentales, un equipo de red (que normalmente nunca se reinicia a menos que esté roto) que nunca se desconectaría de la conexión inactiva terminaría en la falta de recursos y generará un rechazo del servicio ...

Lo peor, es que a menudo son sistemas de bajos recursos (bajo costo) y, por ese motivo, los administradores de red se esfuerzan por reducir el riesgo de que su parte se bloquee bajo carga y, como tal, tienden a utilizar tiempos de espera agresivos. Esa es la razón por la que se usa la conexión TCP viva (si hay algo en el otro extremo) combinado con tiempos de espera de red cortos.

Pero el verdadero problema aquí es que los desarrolladores de aplicaciones saben poco sobre los usos de red de bajo nivel, y que a los administradores de red no les importa mucho las aplicaciones de alto nivel. La vida es así ...

    
respondido por el Serge Ballesta 29.04.2016 - 11:11
fuente

Lea otras preguntas en las etiquetas