elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  Notificar de que alguien se a conectado al sistema mediante ssh
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Notificar de que alguien se a conectado al sistema mediante ssh  (Leído 3,407 veces)
Sergiolocuelo

Desconectado Desconectado

Mensajes: 51


Somos ignorantes, pero no todos ignoramos lo mismo


Ver Perfil
Notificar de que alguien se a conectado al sistema mediante ssh
« en: 20 Agosto 2018, 02:19 am »

Hola, me gustaría hacer un script que me avise cuando alguien se conecte a mi sistema mediante ssh, la cuestión es ¿como puedo hacerlo? ¿Haría falta hacer un script con un bucle?


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #1 en: 20 Agosto 2018, 04:11 am »

si, un bucle

la forma facil de hacerlo y como muchos programas implementan sistemas, es leer el log de ssh, si hay nuevas lineas, entonces algo pasó, solo tienes que leer la linea y dice que pasó y cual ip lo causó


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #2 en: 20 Agosto 2018, 04:47 am »

si, un bucle

la forma facil de hacerlo y como muchos programas implementan sistemas, es leer el log de ssh, si hay nuevas lineas, entonces algo pasó, solo tienes que leer la linea y dice que pasó y cual ip lo causó

Código
  1. #!/bin/bash
  2.  
  3. if [ "$EUID" -ne 0 ]
  4.  then echo "run as root"
  5.  exit
  6. fi
  7.  
  8. LOG="/var/log/sshd_log"
  9. PATTERN="[sshd] Starting session: shell on"
  10.  
  11. tail -F -n0 ${LOG} |\
  12. while read LINE; do
  13. if echo "${LINE}" | grep -F "${PATTERN}" >/dev/null; then
  14. MSG=$(echo "${LINE}"|cut -d' ' -f10-)
  15. xmessage -center "New session ${MSG}" &
  16. fi
  17. done

xmessage es solo de ejemplo, si quieres una notificación necesitas alguna pijada estilo libnotify+zenity.

Suerte
« Última modificación: 20 Agosto 2018, 04:52 am por Slava_TZD » En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #3 en: 20 Agosto 2018, 10:41 am »

Tambien podrías poner en el bashrc una linea que mande el mensaje. Creo recordar que la variable display muestra ":0" si estas en local asi que cuando no valga eso mandas un mensaje (Tengo mala memoria así que igual no es esa variable la que indica desde donde conectas, haciendo env es facil de ver cual es). De esta manera no tienes que estar todo el rato mirando el archivo de log de ssh.

Yo hice en su dia un programa que hacía un wget a un servidor con un php muy básico (metia el nombre del ordenador, usuario y hora de login) y tenia un cliente en movil que se conectaba para decirme cuando hacia login alguien en alguno de mis equipos. Tambien se podía hacer algo parecido con el autorun del windows y en mac. De esta manera sabías a que hora esta entrando alguien y si eres tu.

Saludos.
En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
Sergiolocuelo

Desconectado Desconectado

Mensajes: 51


Somos ignorantes, pero no todos ignoramos lo mismo


Ver Perfil
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #4 en: 20 Agosto 2018, 19:23 pm »

Código
  1. #!/bin/bash
  2.  
  3. if [ "$EUID" -ne 0 ]
  4.  then echo "run as root"
  5.  exit
  6. fi
  7.  
  8. LOG="/var/log/sshd_log"
  9. PATTERN="[sshd] Starting session: shell on"
  10.  
  11. tail -F -n0 ${LOG} |\
  12. while read LINE; do
  13. if echo "${LINE}" | grep -F "${PATTERN}" >/dev/null; then
  14. MSG=$(echo "${LINE}"|cut -d' ' -f10-)
  15. xmessage -center "New session ${MSG}" &
  16. fi
  17. done

xmessage es solo de ejemplo, si quieres una notificación necesitas alguna pijada estilo libnotify+zenity.

Suerte

No comprendo muy bien tu código ya que sé lo básico de shell script, este es mi código:

Código:
#! /bin/bash
conectados=`w|wc -l`

for conex in $conectados; do
if [ $conex -gt 3 ]; then
zenity --info --text "Alguien se a conectado"
fi
done

Como veréis lo e hecho de manera sencilla, el problema es que solo me avisa de que hay alugien conectado solo cuando abro la terminal, ¿Tengo mal el bucle for?

« Última modificación: 20 Agosto 2018, 20:30 pm por Sergiolocuelo » En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #5 en: 20 Agosto 2018, 20:58 pm »

w no te muestra exactamente si a se han conectado por SSH. La forma de hacerlo es como comentó el otro compañero y te muestro en el script. No tiene misterio, hace un tail al log y cada línea es evaluada en busca de una pattern que indique que una nueva sesión se abrió.

Si quieres hacer funcionar tu script tienes que meter todo eso dentro de un bucle.

Suerte
En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
Sergiolocuelo

Desconectado Desconectado

Mensajes: 51


Somos ignorantes, pero no todos ignoramos lo mismo


Ver Perfil
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #6 en: 20 Agosto 2018, 21:14 pm »

w no te muestra exactamente si a se han conectado por SSH. La forma de hacerlo es como comentó el otro compañero y te muestro en el script. No tiene misterio, hace un tail al log y cada línea es evaluada en busca de una pattern que indique que una nueva sesión se abrió.

Si quieres hacer funcionar tu script tienes que meter todo eso dentro de un bucle.

Suerte

El script que pasó no me funciona, no tengo el archivo sshd_log
En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #7 en: 20 Agosto 2018, 22:08 pm »

Era un path de ejemplo, el fichero no es el mismo ni tiene porque estar en el mismo lugar dependiendo del logger que tengas y de como esté configurado... Si te conectas por SSH y luego haces un grep -r "shell on" en /var/log te dirá donde está logueando.

Ejemplo
Código:
# cd /var/log
# grep -r "shell on"
sshd/current:Aug 20 00:00:01 [sshd] Starting session: shell on pts/12 for root from 10.0.55.154 port 37238 id 0

Puede que la pattern no te coincida...eg te sale el pid del servidor en log 'sshd[8321]' o tiene un formato distinto, simplemente te fijas en el mensaje que se genera al loguearte y creas otra.

Suerte
En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
Sergiolocuelo

Desconectado Desconectado

Mensajes: 51


Somos ignorantes, pero no todos ignoramos lo mismo


Ver Perfil
Re: Notificar de que alguien se a conectado al sistema mediante ssh
« Respuesta #8 en: 20 Agosto 2018, 22:14 pm »

Era un path de ejemplo, el fichero no es el mismo ni tiene porque estar en el mismo lugar dependiendo del logger que tengas y de como esté configurado... Si te conectas por SSH y luego haces un grep -r "shell on" en /var/log te dirá donde está logueando.
Puede que la pattern no te coincida...eg te sale el pid del servidor en log 'sshd[8321]' o tiene un formato distinto, simplemente te fijas en el mensaje que se genera al loguearte y creas otra.

Suerte

Gracias por la información!! Al final como no sabía como hacer el bucle en linux, le e hecho con python:

Código:
#! /usr/bin/python3

import subprocess
def bucle():


a=subprocess.check_output("who|wc -l", shell=True)

if a[0]>2:

subprocess.run("zenity --info --text 'Alguien se a conectado'", shell=True)
subprocess.run("espeak -ves 'Alguien se a conectado al sistema'", shell=True)



while True:
bucle()
subprocess.run("sleep 30", shell=True)

¿El bucle que e hecho con python se hace igual que en Linux o es de otra forma diferente? Si me lo demostrases te estaría muy agradecido  ;)

También voy a intentar a hacerlo como me indicáis
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines