Linux en Espanol
 
Comprobar conexiones establecidas en el SSH (tema #16041)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Servidores y Servicios
Autor Mensaje
CHaiS
Forista
Registrado: 2004-05-31
Mensajes: 1290

Publicado: 2006-08-01 12:16:55    Asunto: Comprobar conexiones establecidas en el SSH

Buenas tardes, hace tiempo que no publico ningún post preguntando, y aquí va una cuestión:

Quiero hacer que cuando detecte una conexión por ssh a mi equipo (el cual está funcionando como servidor) me envie un e-mail informandome de la dirección ip, del usuario, y de la hora a la que está conectado, estoy pensando en hacer un script en bash (o bien lanzarlo directamente desde cron) usando netstat y varios grep, pero me gustaria saber si hay otras opciones para comprobar esto, y no depender del cron, puesto que solo me avisaria si esto ocurre cuando se ejecuta la operación indicada.

Gracias por adelantado, y un saludo (por cierto, seria sin usar el snort)
l.juan
Forista


Registrado: 2004-07-03
Mensajes: 443

Publicado: 2006-08-01 17:51:57    Asunto:

Se me ocurre hacer un script sencillo con watch y el log del sshd o la salida de who.

[code:1:d22e68f9e4]man watch
man who[/code:1:d22e68f9e4]

Suerte,
Juan
CHaiS
Forista
Registrado: 2004-05-31
Mensajes: 1290

Publicado: 2006-08-02 06:07:25    Asunto:

Gracias l.juan, pero buscando he encontrado que se podria hacer directamente con un spawn desde el hosts.deny, solo que tendria que pulirlo un poco ..., otra opción que barajaba era la de hacerla desde iptables...

Editado: he añadido lo siguiente en el fichero /etc/hosts.allow pero no me hace nada
[code:1:6b78b8c397]sshd: ALL: SPAWN (/usr/bin/finger -l @%h | /usr/bin/mail -s "Acceso de %c %d-%h a las `date`" root) &[/code:1:6b78b8c397]
úsolo se permite el uso de SPAWN enel fichero hosts.deny?
mike114x
Forista
Registrado: 2004-01-23
Mensajes: 561

Publicado: 2006-08-22 03:42:20    Asunto:

Hola que tal pana, mira, si quieres q cada vez q un usuario se conecte se te envie un mail puedes hacer lo siguiente, busca informacion en google de unos archivos q se llaman mas o menos algo como bash_logout y bash_login o bash.logout, en esos archivos tu colocas comandos q quieres q se ejecuten cada vez q un usuario se logee o desconecte, en tu caso usarios el q corresponde cuando un usuario se conecta y alli puedes colocar algun comando como #who > mail tucorreo@dominio.com y listo, o coloca los comandos q quieras y listo..
Avisanos q tal te fue
Saludos.
pprovasi
Forista
Registrado: 2006-09-20
Mensajes: 13

Publicado: 2006-09-20 21:37:25    Asunto:

Hola CHaiS
Hice algo de esto pero nada igual a lo anterior

1º la opción manual para examinar las conexiones SSH cada vez que llego a la Oficina o desde casa.

Primero cree un Script al que bautise ScanLog
----------------------------
#!/bin/sh

echo " " > /root/WatchScanLog
echo " " > /root/WatchScanLog
echo "############################" > /root/WatchScanLog
date >> WatchScanLog
echo "############################" > /root/WatchScanLog
grep -F /var/log/messages -f /root/patronesGREP > /root/WatchScanLog
echo " Editando WatchScanLog ... "

pico /root/WatchScanLog
------------------------------

Bien.... en el File patronesGREP pones el patron a buscar en el Log messages . La salida filtrada te la copia en el File al que bautise WatchScanLog . Pico es un editor de texto simple para linux que luego de filtrar y copiar a Watch..... me lo edita en pantalla.

2º Busque en Internet un script para bloquear accesos ilegales via ssh. Trabaja aplicando reglas iptables en el firewall. se llama BANFROMLOG. Al script lo modifique un poco le agregue algunas cosas, etc. podrías agregarle que te envie un correo..

si quieres que te mande el script contactame al correo y te lo mando con algunas explicaciones. Es super eficiente y es impresionante la cantidad de Hackers que quieren entrar utilizando metodos como el de fuerza bruta via ssh.

La explicación sería para contarte como automatizarlo con el cron, etc. para que la lista de control de acceso no se copie siempre en forma repetida en el iptables.

salu2
pprovasi
CHaiS
Forista
Registrado: 2004-05-31
Mensajes: 1290

Publicado: 2006-09-21 10:28:39    Asunto:

Al final lo hice de otra forma, aunque la mencionada en este post si me habia funcionado correctamente.

Pero eso de lo que me informaba, era de que alguien queria acceder a través de ssh, y no se verificaba si realmente llegaba a logarse o no, el otro dia, me encontré con la siguiente web: http://stolz.gsmlandia.com/node/24 en la que muestran una forma realmente buena para realizar lo que pretendia y funciona correctamente :)

Pasteo aquí el código de dicha web que utilicé yo:

Contenido de: /etc/ssh/sshrc
[code:1:523a716685]
uando=`/usr/bin/date`
donde=`echo $SSH_CONNECTION|cut -f1 -d' '|cut -f4 -d:`
if [ -z "$SSH_TTY" ] ; then
que="Conexion de $USER"
else
que="Login de $USER en $SSH_TTY"
fi

mailto=""
cc_to=""
bcc_to=""
while read direccion mode
do
if [ -z "$direccion" -o "${direccion:0:1}" = "#" ] ; then continue; fi
if [ "x$mode" = "xcc" -o "x$mode" = "xCC" ] ; then
cc_to=${cc_to:+${cc_to},}$direccion
elif [ "x$mode" = "xbcc" -o "x$mode" = "xBCC" ] ; then
bcc_to=${bcc_to:+${bcc_to},}$direccion
else
mailto=${mailto:+${mailto},}$direccion
fi
done </etc/ssh/notify

mailto=${mailto:-operator}
cc_to=${cc_to:+"-c $cc_to"}
bcc_to=${bcc_to:+"-b $bcc_to"}
mail ${cc_to} ${bcc_to} -s "Alerta SSH" ${mailto} >&2 <<-EOM
${que} desde ${donde} el ${cuando}
EOM[/code:1:523a716685]


Y por ultimo crear: /etc/ssh/notify.

[code:1:523a716685]
# Lista de destinatarios para las alertas de acceso SSH
#
# Formato:
# direccion[,direccion] [cc|bcc]
#
# Se pueden indicar varias direcciones en distintas lineas o separadas por comas
# Las opciones "cc" y "bcc" marcan la direccion(es) de destino como "Cc:" or
# "Bcc:", respectivamente.
#
# Las lineas en blanco o con # en la columna 1 son ignoradas.
#
# Es importante que la ultima linea del fichero sea una linea en blanco
#
tu-usuario@tu-dominio.com,root@localhost

[/code:1:523a716685]





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries