Me gustaría modificar la configuración del historial de todos los usuarios en los sistemas que administro. Me gustaría que contenga la información del terminal de conexión como dewho
sysadmin:/ # who
sysadmin pts/0 Mar 26 07:11 (sysadmin.doofus.local)
Actualmente modifico mi historial de las siguientes maneras. Sé que muchas de estas configuraciones se han cubierto aquí varias veces. Sin embargo, saqué este código de " Recetas de administración del sistema Linux por: Juliet Kemp " hace mucho tiempo.
shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T "
shopt -s histappend
soluciona el problema cuando tienes múltiples terminales, la información abierta puede perderse.
PROMPT_COMMAND='history -n;history -a'
se extiende para proporcionar anexos en tiempo real al historial en múltiples terminales.
HISTSIZE=100000
HISTFILESIZE=100000
extiende la cantidad de history
retención
HISTTIMEFORMAT="%m/%d/%y %T
"precede a cada línea del historial con una marca de tiempo
Lo que normalmente obtienes con history
835 ls
836 cd ..
Mis history
resultados actuales modificados
5853 03/26/12 07:16:49 ls
5854 03/26/12 07:16:50 ll
El regreso de history
me gustaría ver
5853 03/26/12 07:16:49 sysadmin.doofus.local ls
5854 03/26/12 07:16:50 sysadmin.doofus.local ll
001 03/26/12 05:11:29 demo_user.doofus.local cd
002 03/26/12 05:11:30 demo_user.doofus.local ll
No estoy "casado" para ver el DNS
nombre. Solo lo querría allí si lo extrae de who
u otra ubicación sin la necesidad de realizar una búsqueda o consulta de ningún tipo. Estaría contento con la dirección IP.
002 03/26/12 05:11:30 192.168.0.2 ll
¿Por qué? Administro varios sistemas donde un ID de usuario que comparten varios usuarios del mismo grupo para realizar sus tareas diarias. Esto me permitiría correlacionar su ubicación real y el usuario real dentro de la organización con lo que hicieron en la historia.
Soy consciente de que esto no es óptimo y me gustaría cambiarlo, pero cuando estás en un barco del tamaño de un crucero no intentas dar vueltas. (Nota: cuando lo haces, los pasajeros intentan arrojarte por la borda)
De todos modos, hasta que pueda migrarlos a una mejor solución, me gustaría tener esta capacidad de seguimiento.
Además, si tiene alguna recomendación sobre lo que estoy usando actualmente para mis history
modificaciones, me encantaría escucharla.
Gracias,
Editar: 1
No quiero ejecutar otros programas ni tener que configurar nada adicional "dentro de lo razonable".
Quiero agregar 0
gastos generales, si tengo que agregarlo, debe ser pequeño.
Confío en mis usuarios. Solo me gustaría (en caso de que ocurriera algo) ver cuál de los 10 usuarios que iniciaron sesión en el sistema con el mismo usuario: contraseña. O bien, podría no haber sido un usuario, podría haber sido olvidado cron
en un sistema que realiza una conexión como usuario para hacer algo. O una aplicación Ej: BMC Control-M
que se conecta ssh
y ejecuta tareas. No se trata tanto de encontrar "malos usuarios" como de poder rastrearlo con un mínimo de esfuerzo.
Edición 2:
Los sistemas ejecutan SLES y RHEL
/proc
/dev
y /home
directorios de usuarios . Esto agrega gastos generales. Mientras history
que ya se está grabando y su información de conexión es conocida por el sistema que conecta la IP, etc. Esta información, si aún no está disponible "estáticamente", podría establecerse de esa manera o almacenarse en una variable o archivo e ingresarse a los history
registros y al rendimiento. sería muy pequeño o 0.
auditd
. No estoy seguro si sus registros le darán suficiente información. La dificultad de lo que quieres es precisamente por qué las cuentas compartidas son tan criticadas.
auditd
es muy parecido a inotify
que tiene que decirle qué monitorear para detectar cambios. Archivos individuales, directorios, etc. No quiero ir a ese nivel de configuración. De hecho (lo hago) pero esencialmente no me importa tanto. Tengo puppet
que manejar esas cosas. auditd
viene con la carga adicional y el tiempo de configuración también. Si una cuenta está modificando algo, todavía me gustaría mirar hacia atrás en el historial y ver quién o qué está iniciando sesión e intentando.
PROMPT_COMMAND=
solo ejecuta comandos normales antes del siguiente mensaje, ¿no podría escribir una función que llame a sed / awk que funcione en la última línea del archivo de historial para agregar la información? entonces llame a esa función PROMPT_COMMAND=
para agregar los datos? sería hack pero debería hacer el trabajo.