如何记录某人在 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 将新会话附加到打字稿,相同的默认规则也适用于此处
这是系统管理员跟踪会话的一种方式。希望它内容丰富且有用。干杯!