在bash中检测su命令的使用

时间:2013-07-27 12:39:13

标签: linux bash security

我想知道是否有人在尝试su -susu root后立即发送邮件。我知道mail命令,我正在尝试编写脚本,但我对此非常困惑

  • 在哪里写 - 无论是在.bashrc的根目录还是/etc/process
  • 如何使用su
  • 调用邮件

我已经尝试了常用的谷歌搜索等,但获得了su的使用,禁用它,保护ssh等的链接 - 没有一个回答了这个问题。

提前致谢

3 个答案:

答案 0 :(得分:4)

我想您的基本要求是,您拥有一群拥有root权限的人,但您并不完全信任它们,因此您需要密切关注它们。您的解决方案是在他们成为root用户时自己发送邮件。

此解决方案的问题在于root用户具有无限权限,因此无法阻止他们抵制此机制。例如,他们可以在一个会话中编辑/etc/login.defs文件,做你希望他们做的好事,然后su到root并做你害怕的坏事,在那个会话结束时他们编辑/etc/login.defs文件回到它的原始状态,你就不是更聪明了。或者他们可以只复制/ usr / bin / bash并使副本成为suid文件,只要他们运行它就会赋予它们特权。

您可能能够关闭我刚才建议的任何漏洞,但会有很多甚至更多漏洞。因此,您要么信任它们,要么根本不使用su并给予它们sudo权限,以便只运行那些他们需要做的命令。

答案 1 :(得分:2)

根据su的手册页,在/etc/login.defs中,您可以设置SULOG_FILE fileSYSLOG_SU_ENABLE yes来记录所有su活动。然后你只需要像inotifywait这样的东西来观察su事件的日志文件。

答案 2 :(得分:2)

有一个名为/var/log/secure的日志文件,它会在su执行时随时收到一个条目。它也可以在其他条件下获得条目。它在Linux Administrator's Security Guide中描述。

如果用户“fred”执行su -,则会出现一个如下所示的条目:

Jul 27 08:57:41 MyPC su: pam_unix(su-l:session): session opened for user root by fred(uid=500)

susu 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。