如何记录输入的每个命令

如何记录输入的每个命令

如何记录某人在 shell 中输入的每个命令?

我问的是,如果您登录到别人的服务器并且出现问题,或者其他人登录到您的服务器(无论是故意还是恶意),都是为了保护自己。

即使是新手也可以绕过历史记录或者创建一个新的外壳来unset history隐藏他们的踪迹。

我很好奇 Linux 高级管理员如何跟踪已输入的命令或对系统进行的更改。

答案1

查看审计。如果你添加

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

每个/etc/audit/audit.rules执行的命令都会被记录。看:https://whmcr.com/2011/10/14/auditd-logging-all-commands/

然后将其发送到系统日志服务器。

答案2

您可以使用脚本命令。该命令未包含在 POSIX 中,但您会发现将所有击键以及输出和错误消息存储在文件中很有用。您可以稍后查看该文件。如果您正在做一些重要的工作并希望保留所有活动的日志,则应在登录后立即调用此命令:

$脚本
脚本已启动,文件为打字稿
$_ 请注意,这是另一个 shell——登录 shell 的子级

提示符返​​回,您现在在此处输入的所有击键(包括用于退格的击键)都会记录在“typescript”文件中。录制结束后,您可以通过输入来终止会话出口
注意:如果您输入脚本文件名,会话将被存储在文件中文件名而不是打字稿,即如果未指定特定文件名,则默认为 typescript。

您现在可以使用猫文件名或者猫打字稿,无论是哪种情况,查看录制的会话。

如果您希望将新会话附加到旧文件,请使用: 脚本-a 将新会话附加到打字稿,相同的默认规则也适用于此处

这是系统管理员跟踪会话的一种方式。希望它内容丰富且有用。干杯!

相关内容