¿Cómo monitorear los inicios de sesión en Screen Sharing y SSH?

1

No confío en nadie, ni siquiera mis propios firewalls y otras medidas contra piratas informáticos invasivos, me gusta poder monitorear cualquier inicio de sesión exitoso a mis sistemas OS X (p. ej., al instante enviando un correo electrónico a mi cuenta de gmail).

¿Cómo puedo lograr esto, incluidos los inicios de sesión a través de Screen Sharing y SSH?

Puedo ver que el archivo secure.log enumera dichos inicios de sesión, pero ¿cómo puedo monitorearlos y filtrarlos para obtener inicios de sesión exitosos, a fin de emitir correos electrónicos sobre estos eventos?

El usuario bmike sugirió usar el comando tail en el archivo secure.log. Descubrí que este comando tiene una opción "-F" que es adecuada para esta tarea: sigo reportando líneas agregadas al archivo de registro e incluso maneja las rotaciones del archivo de registro.

Pero esto no es suficiente para mis necesidades todavía. Solo deseo enviar las notificaciones si se produce un acceso externo (inicio de sesión), no cada vez que se autoriza una tarea local.

Aquí hay un extracto de mi archivo secure.log:

mymac login[26292]: in pam_sm_acct_mgmt(): OpenDirectory - Membership cache TTL set to 1800.
mymac login[26292]: in od_record_check_pwpolicy(): retval: 0
mymac login[26292]: in od_record_attribute_create_cfstring(): returned 3 attributes for dsAttrTypeStandard:AuthenticationAuthority
mymac sudo[26296]:    myname : 3 incorrect password attempts ; TTY=ttys005 ; PWD=/Users/myname ; USER=root ; COMMAND=/bin/bash
mymac sudo[26301]:    myname : TTY=ttys005 ; PWD=/Users/myname ; USER=root ; COMMAND=/bin/bash
mymac com.apple.SecurityServer[27]: Succeeded authorizing right 'system.hdd.smart' by client '/Library/Application Support/iStat local/iStatLocalDaemon' [133] for authorization created by '/Library/Application Support/iStat local/iStatLocalDaemon' [133]
mymac sshd[26308]: Accepted publickey for myname from x.x.x.x port 62433 ssh2
mymac screensharingd[26328]: Authentication: SUCCEEDED :: User Name: John Doe :: Viewer Address: x.x.x.x :: Type: DH

En este ejemplo, solo los "screensharingd" y "sshd" son relevantes para mí. Pero no parece haber una distinción clara entre estas y las otras autorizaciones locales. El único patrón común que encuentro es la dirección IP, pero ¿es a prueba de fallos? Supongo que para que mi script sea usable (por cualquier persona), no solo tendría que detectar las direcciones IPv4, sino también las direcciones IPv6. ¿Y puedo estar seguro de que otros tipos de inicio de sesión externos (por ejemplo, el uso compartido de archivos) también incluirán una dirección IP en su formato original como este? ¿Nunca usé nombres simbólicos que no podría detectar con este patrón?

En realidad, también inicié sesión a través del uso compartido de archivos (AFP), ¡que ni siquiera se incluyó en secure.log, curiosamente! Lo que significa que secure.log probablemente no sea el único o no el punto central de aprendizaje sobre autorizaciones.

Esperaba que hubiera un punto central en OSX que se encargara de todas las autorizaciones de nombre de usuario / contraseña y que este punto también proporcionara algún gancho para el monitoreo.

Me temo que mi pregunta no puede ser respondida suficientemente de manera genérica. Iré ahora y preguntaré en la lista de correo de seguridad de Apple. Voy a informar de nuevo.

Background:

Mi razonamiento para este tipo de pregunta es que creo que ningún sistema está a salvo de un robo. Por lo tanto, confiar en las medidas para prevenir un robo no es solo una medida segura. Agregar notificaciones (externas) sobre cuándo ocurre un inicio de sesión en un sistema es lo que lo hace mucho más controlable: si alguien logra ingresar, será detectado por este método, por lo que se sabe que el sistema ya no es confiable. y será tratado con. Sin este tipo de monitoreo, alguien podría ser capaz de ingresar y luego modificar el sistema hasta un punto en el que alguien que mire más tarde no pueda decir lo que sucedió, asumiendo que el sistema sigue siendo seguro.

    
pregunta Thomas Tempelmann 12.02.2013 - 13:24

2 respuestas

2

Sí: sería más eficiente tail -f el archivo de registro, de modo que su secuencia de comandos solo tiene que analizar cada línea del archivo una vez en lugar de una vez por intervalo.

Por supuesto, aún necesita escribir y probar el código para monitorear los momentos en que se rota el archivo de registro y tal vez no vuelva a ver un evento al escanear todo el archivo nuevo una vez que lo conecte por primera vez. expediente.

Lo mejor es un intercambio entre tu nivel de comodidad y tus habilidades. También es lógico que MIT detecte el tráfico de la red, ya que la pantalla compartida escucha en puertos conocidos, o puede monitorear los procesos nuevos que están escuchando en puertos nuevos o puede activar la auditoría de procesos y monitorear esos registros o puede analizar la tabla de procesos. Hay muchas maneras de pelar a este gato.

    
respondido por el bmike 13.02.2013 - 14:25
0

Si ya ha averiguado cómo extraer la información del registro, una forma sencilla de hacer que se ejecute solo cuando sea necesario en lugar de sondearla cada día / hora, etc., es agregar el script como una acción de inicio de sesión al Usuarios en cuestión. Pídales que interpreten los registros, calculen si es un inicio de sesión local o remoto, y un correo electrónico (o imagen, etc.) de manera adecuada.

    
respondido por el stuffe 13.02.2013 - 13:34

Lea otras preguntas en las etiquetas