我想知道是否有任何人一尝试就可以发送邮件su -
,su
或者su root
。我知道邮件命令,我正在尝试编写一个脚本,但我很困惑
- 在哪里写 - 无论是在
.bashrc
根还是在/etc/process
- 如何调用邮件上的使用
su
我已经尝试过通常的谷歌搜索等,但是得到了关于使用su
、禁用它、保护 ssh 等的链接——这些都没有回答这个问题。
提前致谢
我猜你的基本要求是你有一群人你已经授予了root权限,但你并不完全信任他们,所以你想关注他们。您对此的解决方案是在他们成为 root 时让自己发送邮件。
这个解决方案的问题是 root 用户拥有无限的权限,所以没有什么可以阻止他们抵制这种机制。例如,他们可以在一个会话中编辑 /etc/login.defs 文件,做您希望他们做的好事,然后 su 到 root 并做您担心的坏事,并在该会话结束时他们将 /etc/login.defs 文件编辑回它的原始状态,你一点也不聪明。或者,他们可以只制作 /usr/bin/bash 的副本,并将副本制作为 suid 文件,以便在他们运行时授予他们特权。
您可能能够关闭我刚刚建议的任何漏洞,但还会有很多很多。因此,您要么信任他们,要么根本不使用 su 并授予他们 sudo 权限以运行他们需要执行您希望他们执行的操作的那些命令。
根据 su 的手册页,您可以在 /etc/login.defs 中设置SULOG_FILE file
或SYSLOG_SU_ENABLE yes
记录所有 su 活动。然后你只需要像 inotifywait 这样的东西来观察日志文件中的 su 事件。
有一个名为的日志文件/var/log/secure
,它在任何时候执行都会接收一个条目su
。它也会在其他条件下获得条目。Linux 管理员安全指南中对此进行了描述。
如果用户“fred”执行su -
,将出现一个条目,如下所示:
Jul 27 08:57:41 MyPC su: pam_unix(su-l:session): session opened for user root by fred(uid=500)
类似的条目会出现su
或su root
。
因此,您可以设置一个监控/var/log/secure
如下的脚本:
#!/bin/sh
while inotifywait -e modify /var/log/secure; do
if tail -n1 /var/log/secure | grep " su: "; then
tail -n1 /var/log/secure | grep " su: " | mail -s "su occurred" you@email.com
fi
done
请注意,您需要inotify-tool
安装软件包才能使用inotifywait
.
如果此脚本在后台运行,它应该在出现条目时发送you@email.com
电子邮件su
。
现在在哪里运行脚本。一种方法是将其放入可执行脚本文件(例如watchsu
)并从您的文件中调用它rc.local
:
nohup /path/to/watchsu 2>&1 &
我敢肯定还有其他想法可以从哪里开始。我对 CentOS 不熟悉。