Encontrar los últimos inicios de sesión exitosos e intentos fallidos en un servidor CentOS

29

Estoy buscando un archivo de registro o cualquier servicio para informar los últimos intentos de inicio de sesión que han fallado debido a una falta de coincidencia de nombre de usuario / contraseña. ¿Hay alguna de estas utilidades disponibles para CentOS? (se prefiere incorporado)

Mi segunda pregunta, y de manera más general, necesito un archivo de registro de intentos de penetración en mi servidor. Idealmente, este registro debe contener todos los intentos, incluidos los inicios de sesión, las actividades httpd y otros puertos abiertos convencionales.

lashgar
fuente
2
responda a la segunda pregunta: eche un vistazo a OSSEC .
quanta
1
Este hilo se movió de Stackoverflow después de que hice la pregunta en Serverfault. Aquí están los hilos discutiendo la segunda pregunta.
lashgar

Respuestas:

61

En Linux, el lastcomando muestra intentos exitosos de inicio de sesión y muestra información de la sesión (pts, fuente, fecha y duración).

El lastbcomando registra todos los intentos de inicio de sesión incorrectos. Ambos comparten la misma manpágina, pero la diferencia es que lastlee el /var/log/wtmparchivo binario y lo lastblee /var/log/btmppor defecto.

El rango de estos archivos depende de su cronograma de rotación de registros, pero debería abarcar algunas semanas. La mayoría de las distribuciones rotarán /var/log/wtmpmensualmente, por lo que puede leer un registro anterior, que generalmente se /var/log/wtmp.1especifica especificando el archivo con el -fparámetro ...last -f /var/log/wtmp.1

ewwhite
fuente
17
+1 para ellastb
lashgar
3
Esta debería ser la respuesta seleccionada
un codificador el
@acoder, hecho: pulgar:
lashgar
14

La pregunta está aquí fuera del tema, pero es una respuesta muy corta: tal vez debería simplemente verificar / var / log / secure (por ejemplo, grep para "fallido").

flolo
fuente
En realidad es la respuesta a mi primera pregunta. Le preguntaré lo segundo en ServerFault. Gracias.
lashgar
1

Este es un hilo antiguo pero obtuve una tarea similar como esta, así que en mi caso esta es una entrada de registro

Nov 15 17:14:47 megatron sshd[4768]: Failed password for git from 192.168.122.1 port 49227 ssh2

Entonces podemos hacerlo así, si estamos seguros de que el usuario es estático

#!/bin/bash
LOG=/var/log/secure
MESSAGE="Failed password for git"
grep -i "$MESSAGE" "$LOG

En caso de que sepamos por usuario

#!/bin/bash
LOG=/var/log/secure
if [ -n "$1" ]
then
NEWUSER="$1"
else
NEWUSER="root"
fi
MESSAGE="Failed password for $NEWUSER"
grep -i "$MESSAGE" "$LOG"

Entonces el script debe ejecutarse como

[root@megatron bash1]# ./failedlogin.sh git

O un enfoque más fácil

#!/bin/bash
LOG=/var/log/secure
MESSAGE="Failed password for"
grep -i "$MESSAGE" "$LOG"
Prashant Lakhera
fuente