Cómo detectar sesiones SSH de larga duración

1

Estoy tratando de encontrar una manera de detectar sesiones ssh que se hayan establecido durante un largo período de tiempo. Me parece recordar que había formas de detectar conexiones tcp que han estado conectadas durante mucho tiempo, pero no recuerdo cómo. Miré a Snort, incluso publicé aquí sobre esto, pero no pude encontrar una regla que me permitiera ver una sesión de ssh durante un período de tiempo y luego solo alertarme si llegaba a un límite específico.

¿Puede alguien indicarme la dirección / tecnología correcta para esto?

Gracias,

    
pregunta Brett Littrell 06.08.2017 - 23:27
fuente

2 respuestas

1

No pude encontrar una solución lista para usar para esto, sin embargo, creo que esto se puede hacer mediante secuencias de comandos un poco. Aquí están mis pensamientos.

Configure Snort para alertar sobre TCP TCP a puertos de destino SSH. Haga que registre estas alertas en un archivo. También configure alertas de tráfico a / desde puertos SSH. Escribe estas alertas en un archivo también.

Luego, cree un script que correlacione estos eventos y avise si una conexión está activa durante demasiado tiempo.

Una máquina de estado simple debería hacer el trabajo. Si la alerta de handshake es un encuentro, guarde desde / a ip a algún tipo de almacenamiento (puede ser memoria), así como los puertos y la hora de la alerta. Tenga guardada la última fecha de visualización y actualícela cuando vea el tráfico entre los dos hosts. Compruebe si la diferencia entre la última vista y la conexión establecida es mayor que su preferencia.

    
respondido por el Daniel Szpisjak 07.08.2017 - 08:57
fuente
-1

Depende de lo que quieras hacer, pero podemos comenzar con who -a .

Esto le mostrará quién ha iniciado sesión, cuando comenzó la sesión, e incluso le dará antiguo si es anterior. Para ssh, probablemente querrá enfocarse en pty (pseudo terminal para inicios de sesión remotos) en lugar de tty (terminales reales, para inicios de sesión físicos).

Para obtener las fechas, puede utilizar:

dates='who -a | grep root | awk '{ print $4 }''

Luego puedes comparar esas fechas con un límite arbitrario que configuraste para encontrar inicios de sesión sospechosos / antiguos / muertos.

Por supuesto, lo anterior le da todos los inicios de sesión de root. Si desea todos los inicios de sesión pts remotos, puede utilizar:

dates='who -a | grep pts | awk '{ print $4 }''

Pero, luego, debe filtrar los inicios de sesión de las cuentas de no usuarios. Es más sencillo obtener grep en un nombre de usuario, pero sin saber a qué fin necesita usar esto, es difícil adaptar la respuesta mucho más.

    
respondido por el DrDamnit 07.08.2017 - 00:17
fuente

Lea otras preguntas en las etiquetas