¿Cómo recibir una notificación cuando otros usuarios inician sesión en "mi" sistema?

9

Sé que el whocomando me muestra a todos los usuarios registrados. Pero quiero informar de alguna manera cuando alguien que no sea yo inicia sesión en mi sistema. Cualquier applet? También sería bueno si el applet muestra el número de usuarios distintos que iniciaron sesión, lo que significa que tiene un shell de inicio de sesión y una conexión ssh establecida.

matemáticas
fuente
Por cierto: alguien puede comentar sobre la ruptura en los intentos. ¿Entonces todavía se ejecuta /etc/profile.d? Supongo que depende de la intrusión, por lo que para los ataques ssh de fuerza bruta esto podría mantenerse, por la escalada de derechos de los servicios en ejecución, podría no ser así. Ahh parece que el monitoreo del usuario no es una tarea fácil.
matemáticas

Respuestas:

10

Para la parte de la notificación cuando alguien inicia sesión en su sistema, puede intentar colocar un pequeño script en un /etc/profile.dscript. Usando notify -send (parte del paquete libnotify-bin) puede intentar esto:

/etc/profile.d/notify_log.sh

notify-send -t 3000 "User logged in" `whoami`

y luego, cada vez que alguien inicie sesión en su sistema, se le notificará.

EDITAR: Entonces, no funciona bien :( Si configuró un servidor de correo en su máquina, puede usar el comando de correo en lugar de notify-send.

Pero de acuerdo con la publicación aquí , la mejor solución sería un script pam_exec .

Cédric Julien
fuente
Buena idea, pero no es necesario que sea ejecutable y no es necesario tener un shebang, ya que los archivos /etc/profile.d/se obtienen. Solo los shells de inicio de sesión (terminales virtuales e inicio de sesión ssh) y algunos inicios de sesión de GUI ejecutan la inicialización del perfil.
enzotib
@enzotib: gracias por los consejos, corregí mi respuesta :)
Cédric Julien
Ok, lo he intentado pero sin suerte hasta ahora. La razón es que un usuario no puede notificar a otro fácilmente. Por lo tanto, se deben establecer algunas variables de entorno, consulte: g-loaded.eu/2007/11/18/… . ¡Hasta ahora tengo un ejecutable que hace las cosas pero no cuando inicio sesión! Si justo source /etc/profile.d/notify_log.shdespués de iniciar sesión a través de ssh, se envía la notificación. Supongo que no se ejecuta correctamente después de iniciar sesión. Observé /var/log/auth.log sin suerte. ¿Alguna ayuda?
Matemáticas
Encontré la razón: utilizo ZSH y / etc / zsh / zprofile está vacío, se supone que debe generar / etc / profile que a su vez debe generar /etc/profile.d/*.sh, ¡pero no hace nada! > - (... Voy a buscar esto explícitamente y comprobaré todos los demás shells instalados, ya que no sé qué shells de inicio de sesión utilizan todos los usuarios de LDAP ... De todos modos, gracias.
Matemáticas
@brubelsabs: oups, edité mi respuesta con otras soluciones
Cédric Julien
2

Lo hacemos creando un archivo /etc/profile.d/notify.shcon el siguiente contenido:

#!/bin/sh

sender="[email protected]"
recepient="[email protected]"
subject="Privileged Account logon used"
message="`env`"
    echo "$message" | mail -s "$subject" -r "$sender" -Smtp=mail.example.com "$recepient"

Asumiendo que mailx está instalado.

Antonio
fuente
Sí, a veces puede perderse una notificación de escritorio, pero el correo generalmente permanece.
matemáticas
@Antonio ¿Tienes que agregar el script a crontab? No parece estar funcionando.
cokedude