我创建了一个自动执行脚本,当根帐户被访问时,它会向我发送电子邮件。但是,我想进一步增加该消息的详细信息。
我有几个用户可以访问我的服务器,并且想监视主根帐户,以防发生某些事情,我可以去找那个人并询问他们做了什么事情。
基本上,该电子邮件会说,“[用户] 在 [hr]:[min] [am/pm] 通过 IP 地址 [ip address] 访问了 ROOT 帐户”
如果不可能的话,我也可以接受用户帐户或 IP 地址。我不挑剔。
答案1
/var/log/auth.log
包含很多你想要的东西。例如,使用以下命令升级到 rootsudo -s
会生成以下条目:
Dec 18 19:31:23 kazwolfe sudo: kazwolfe : TTY=pts/1 ; PWD=/home/kazwolfe ; USER=root ; COMMAND=/bin/bash
Dec 18 19:31:23 kazwolfe sudo: pam_unix(sudo:session): session opened for user root by kazwolfe(uid=0)
从那里,我可以查看who
获取 IP 地址的命令pts/1
:
kazwolfe pts/1 2017-12-18 19:30 (2001:db8::4665)
括号内的部分是我的 IPv6 地址,可以用作日志条目。您还可以看到我何时加载了会话。
auth.log
还将包含 sudo 的其他条目:
Dec 18 19:33:30 kazwolfe sudo: kazwolfe : TTY=pts/1 ; PWD=/home/kazwolfe ; USER=root ; COMMAND=/bin/cat data
Dec 18 19:33:30 kazwolfe sudo: pam_unix(sudo:session): session opened for user root by kazwolfe(uid=0)
Dec 18 19:33:30 kazwolfe sudo: pam_unix(sudo:session): session closed for user root
Dec 18 19:33:40 kazwolfe sudo: kazwolfe : TTY=pts/1 ; PWD=/home/kazwolfe ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Dec 18 19:33:40 kazwolfe sudo: pam_unix(sudo:session): session opened for user root by kazwolfe(uid=0)
只要您强制管理员执行sudo
,每次升级时都会生成这些日志条目。但需要注意的是,root 用户可以隐藏或以其他方式修改这些日志以隐藏内容。
如果你不想挂载日志文件,你可以设置sudo
为总是发送电子邮件(参见man sudoers
),但请注意,这可能会产生很多无用的电子邮件。
如果您这样做,您的电子邮件将包含与上面列出的几乎完全相同的信息。仍然需要单独查询 IP 地址,但您也可以随时使用该last
命令获取最近几次登录。
管理员需要非常拦截速度很快,因此他们很难隐藏损害(尽管如果收件箱位于同一台服务器上,他们可能会从您的收件箱中删除电子邮件)。也就是说,这些日志仍然不会提供有关他们在会话内所做事情的信息sudo
(特别是如果他们升级到命令提示符)。解决方案要复杂得多。