Mi compañía requiere que cada vez que un usuario inicie sesión en un servidor de producción, la razón por la cual esa persona inició sesión y los cambios que el usuario tenga la intención de realizar deben estar registrados. Mi equipo quiere hacer esto, pero es fácil de olvidar. Me gustaría ayudarlos a recordar. Lo consideré un motd, pero quiero algo un poco más fuerte.
Mi primer pensamiento fue cambiar el shell del usuario a un script que haga algo como
vim /logs/logindate.txt
bash -l
¿Existe una técnica mejor o más estándar?
Nota: La idea es que estos usuarios sean administradores de sistemas y deseen realizar la entrada de registro sin subvertir el sistema; con frecuencia se olvidan de hacerlo. Entonces, si pueden controlarlo, bueno ... estamos asumiendo que no lo harán.
Respuestas:
Mira pam_exec.so . Puede ejecutar un script al iniciar sesión en la interfaz de sesión de la autenticación del sistema de PAM. El script se ejecuta como root antes de que el usuario obtenga un shell, por lo que es posible que no capture la entrada con
read
? Sin embargo, puede intentar y utilizarread
para obtener un motivo del usuario y registrarlo en syslog con unalogger
declaración. (Lo he omitido a continuación, pero puede atrapar CTRL + C para evitar que alguien salga sin razón). $ PAM_USER se configurará para la persona que inicia sesión, por lo que puede incluir eso en la declaración del registrador.Ejemplo:
En la parte superior de la sesión en /etc/pam.d/system-auth:
Y / usr / local / sbin / getreason:
Disculpas si esto no funciona perfectamente. No lo probé, pero recientemente he hecho algo similar. (No capturó la entrada).
Editar: cuanto más pienso en esto, más no creo que funcione debido a la etapa en la que se ejecuta. La misma
getreason
secuencia de comandos debe trabajar después de sustituir$PAM_USER
con$(logname)
, pero puede necesitar ser ejecutado en/etc/profile
. (Prueba de shell interactivo, primero.)Dejaré ambas opciones arriba, ya que al menos debería hacerte pensar en la dirección correcta si nada más.
fuente
La alternativa es una solución de administración de cuenta privilegiada, en la que, en lugar de dar acceso a los administradores con su propia cuenta, las cuentas de administrador están en custodia por un tercero y se deben seguir los procedimientos obligatorios antes de que los administradores puedan acceder a los sistemas de producción http: // en. m.wikipedia.org/wiki/Privileged_Identity_Management
fuente
Otra forma de lograr esto sería tener su instalación de registro centralizado (estoy pensando en Logstash, pero puede hacer esto de otras maneras) tome su auth.log en los sistemas de producción, alimente eso en una aplicación donde las personas puedan registrar sus justificaciones .
fuente
La forma en que he visto esto implementado en los clientes que ejecutan HP Server Automation * es que confían en el registro innato de la herramienta con una combinación de pasos de aprobación (he estado en varios clientes donde no hay sudo o root privs, excepto en Dev )
Las aprobaciones se pueden hacer a través de algo como Remedy and Operations Orchestration, o inicio de sesión administrativo dentro de SA, etc.
Dicho todo esto, fuera de las herramientas de gestión y automatización empresarial, la respuesta de @ Aaron Copley es una excelente opción.
* Soy senior HPSA, HPOO y otros aspectos del consultor de la suite de automatización de HP
fuente
Mientras buscaba una solución, leí la respuesta de Aaron Copley y pensé: "¿Qué pasa si cambio el shell de mi usuario?"
Lo hice con éxito en mi máquina Ubuntu 14.04:
En su secuencia de comandos puede capturar la razón del inicio de sesión simplemente. El mío es así:
Una cosa que debe tener en cuenta: el script no se ejecuta como root, por lo que es posible que deba otorgarle al usuario algunos permisos para que funcione.
fuente