0
SSH: timeout en conexiones establecidas (kill session)

Open 3 Respuestas 2 Views

Estuve investigando, pero no encontré algo existente que me permita limitarlo. Básicamente porque son conexiones established y active, lo que pude encontrar parece pensado para conexiones inactivas o en algún estado close.

Gracias al comentario de rda-mac en el irc, rebusqué parámetros del kernel pero no encontré una forma de aplicar este límite. 

Por lo vi debería poder utilizar net.netfilter.nf_conntrack_tcp_timeout_established, pero en mis pruebas no funciono. El problema aquí (si funcionara) radica en que entiendo que para el módulo de conntrack debo tener iptables iniciado y como fw se utiliza otro producto (corríjanme si estoy equivocado).

 

Cronee un script que toma los PID de las conexiones de más de 1 día y las mata, pero preferiría no tener este control si ya existe algo que me permita hacerlo de una forma más adecuada.

 

Escucho cualquier idea/comentario.

 

Saludos,

3 Respuestas

0
CSF hace algo similar, verifica procesos de usuarios que excedan X tiempo (hay whitelists también) y los mata.
respondido por TaiSHi (1,400 puntos) Abr 30, 2016
2Comentarios
comentado por Sultanovich (560 puntos) May 2, 2016
Voy a revisarlo, no sabia que hacia algo de este estilo.
comentado por Sultanovich (560 puntos) May 12, 2016
Estuve revisando y si bien podría funcionar esta basado en iptables, con lo cual lo tengo que descartar porque el equipo ya tiene un fw y momentáneamente no puedo cambiarlo.
0

Perdón, no lei bien tu pregunta en el irc. Entendí que necesitabas manipular el time out en general, por lo que recomendé que miraras las variables del kernel  en particular tcp_keepalive_time, tcp_keepalive_probes, tcp_syn_retries, tcp_retries1, tcp_fin_timeout, etc tenes algunas mas para jugar https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt 

Supongo que habrás probado con

ServerAliveInterval, ServerAliveCountMax y ClientAliveInterval,ClientAliveCountMax

Que necesitarías hacer exactamente ? matar las sesiones de ssh por mas que estén activas después de cierto tiempo ?

 

 

 

respondido por rd (1,920 puntos) May 2, 2016
4Comentarios
comentado por Sultanovich (560 puntos) May 2, 2016
Exacto, necesito que después de x horas la sesion se cierre aunque este activa. No probé todas las variables que comentas en el sshd_config, pero por la documentación no encontré ninguna que cortara conexiones activas, digamos que mantengan trafico.
comentado por Sultanovich (560 puntos) May 10, 2016
Estuve revisando de nuevo estas opciones y no realizan lo que necesito. Por lo que vi podes controlar otro tipos de estado o conexiones que no trafiquen datos.
comentado por rd (1,920 puntos) May 10, 2016
No veo que openssh tenga una opción nativa que permita cerrar todas las sesiones activas [1], quizás jugando con la diferencia entre el keepalive del cliente y del server puedas lograr terminar las conexiones después de cierto tiempo de forma controlada. Otra forma poco elegante podría ser ... ejecutar un cron cada x cantidad de tiempo y matar todas las sesiones existentes.


[1] http://man.openbsd.org/sshd_config.5
[2] http://www.commandlinefu.com/commands/view/1128/kill-any-lingering-ssh-processes
comentado por Sultanovich (560 puntos) May 12, 2016
Si, en realidad hoy justamente tengo un script croneado que hace el kill de los procesos. El tema es que como son sesiones con trafico el keepalive no las corta, por eso no puedo utilizarlo
.
Consultaba por si alguien conocía si había algo para hacer esto y no dejar negradas en el cron.
0
respondido por i90rr (690 puntos) Jul 13, 2016
...