¿Cómo puedes registrar cada comando escrito?

24

¿Cómo puede registrar cada comando que alguien ha ingresado en el shell?

Le pregunto sobre la base de protegerse si ha iniciado sesión en el servidor de otra persona y se rompe algo, o si otra persona ha iniciado sesión en su servidor (ya sea intencionalmente o maliciosamente).

Incluso un principiante puede historial de derivación con unset historyo crear una nueva carcasa para ocultar sus pistas.

Tengo curiosidad por saber cómo los administradores senior de Linux rastrean qué comandos se han introducido / cambios realizados en el sistema.

Spuder
fuente

Respuestas:

29

Echa un vistazo auditado . Si agregas

-a exit,always -F arch=b64 -S execve
-a exit,always -F arch=b32 -S execve

a /etc/audit/audit.rulescada comando ejecutado se registrará. Ver: http://whmcr.com/2011/10/14/auditd-logging-all-commands/

Luego envíelo a un servidor syslog.

Piedra
fuente
Seguramente execveno es la única llamada al sistema que necesita para iniciar sesión. ¿Por qué no execvptan bien? O execl? etc.
2rs2ts
En realidad, noté que en la página del manual execdice que "la exec() familia de funciones reemplaza la imagen de proceso actual con una nueva imagen de proceso. Las funciones descritas en esta página de manual son front-end para execve(2)". Entonces, aunque no estoy seguro execveat, puedo sentirme seguro acerca de la execfamilia.
2rs2ts
5

Puedes usar el comando de script . Este comando no está incluido en POSIX, pero le resultará útil almacenar en un archivo todas las pulsaciones de teclas, así como los mensajes de salida y error. Más tarde puede ver el archivo. Si está haciendo un trabajo importante y desea mantener un registro de todas sus actividades, debe invocar este comando inmediatamente después de iniciar sesión:

$ script
Script iniciado, el archivo es typecript
$ _ Tenga en cuenta que este es otro shell - hijo del shell de inicio de sesión

El aviso regresa y todas sus pulsaciones de teclas (incluida la que se usa para retroceder) que ahora ingresa aquí se registran en el archivo 'mecanografiado'. Una vez finalizada la grabación, puede finalizar la sesión ingresando exit .
Nota: Si ingresa el nombre de archivo de la secuencia de comandos , la sesión se almacenará en el nombre del archivo en lugar de en el mecanografiado , es decir, el mecanografiado es el predeterminado si no se especifica un nombre de archivo específico.

Ahora puede usar el nombre de archivo o el mecanografiado de gato , según sea el caso, para ver la sesión grabada.

Si desea agregar una nueva sesión a un archivo antiguo, use: script -a Agrega la nueva sesión al mecanografiado, la misma regla predeterminada se aplica aquí también

Esta es una forma en que un administrador del sistema puede realizar un seguimiento de las sesiones. Espero que haya sido informativo y útil. ¡Aclamaciones!

marca
fuente