Tengo un servidor ubuntu20 y un script bash ubicado en /etc/profile.d envía un mensaje a Telegram si alguien se conecta usando ssh. El propósito de este script es descubrir si hay un hack y tomar medidas.
Quiero saber el nombre de la computadora que se conectó a ssh para incluirlo en un mensaje de Telegram para ver si la persona que se conecta es alguien de mi equipo o un hacker. Intenté almacenar el resultado de whoami en una variable pero muestra el nombre de usuario de Linux, no el nombre de usuario de la computadora de quien se conectó. ¿Puedo ejecutar el comando whoami en el dispositivo del conector? O cualquier otra forma de conocer lo que estoy pensando. el código bash:
#!/usr/bin/env bash
# Import credentials form config file
. /home/roots/credentials.config
URL="https://api.telegram.org/bot${KEY}/sendMessage"
DATE="$(date "+%d %b %Y %H:%M")"
if [ -n "$SSH_CLIENT" ]; then
ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
TEXT=" New login via ssh, username ${USER} IP (*${ip}*)
Date: ${DATE}"
curl -s -d "chat_id=${USERID}&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
fi
Respuesta1
Basado en la publicación Determinar el nombre del host actualmente conectado a través de SSH:
ssh
establece la variable de entorno$SSH_CONNECTION
para que contenga la dirección IP del cliente, el número de puerto del cliente, la dirección IP del servidor y el número de puerto del servidor separados por espacios.Puedes usar
echo ${SSH_CONNECTION%% *}
para obtener la dirección IP del cliente. Para obtener el nombre DNS use algo como
host
odig -x
:host ${SSH_CONNECTION%% *}
Pruebe entonces el comando host ${SSH_CONNECTION%% *}
.
Otra respuesta señaló que SSH_CONNECTION
se pierde al iniciar un subproceso, como por ejemplo llamando su
.
Otras respuestas en la publicación también podrían ser útiles.