Linux 检测bash中su命令的使用

Linux 检测bash中su命令的使用,linux,bash,security,Linux,Bash,Security,我想知道,如果有人尝试su-、su或su root,是否有任何方法可以发送邮件。我知道mail命令,我正在尝试编写一个脚本,但我对它的使用感到非常困惑 在何处写入-无论是在root的.bashrc中还是在/etc/process 如何使用su 我尝试过谷歌搜索等,但得到了有关su使用、禁用它、保护ssh等的链接,这些都没有回答这个问题 提前感谢根据su手册页,在/etc/login.defs中,您可以设置SULOG\u FILE FILE或SYSLOG\u su\u ENABLE yes来记

我想知道,如果有人尝试
su-
su
su root
,是否有任何方法可以发送邮件。我知道mail命令,我正在尝试编写一个脚本,但我对它的使用感到非常困惑

  • 在何处写入-无论是在root的
    .bashrc
    中还是在
    /etc/process
  • 如何使用
    su
我尝试过谷歌搜索等,但得到了有关
su
使用、禁用它、保护ssh等的链接,这些都没有回答这个问题


提前感谢

根据su手册页,在/etc/login.defs中,您可以设置
SULOG\u FILE FILE
SYSLOG\u su\u ENABLE yes
来记录所有su活动。然后,您只需要像inotifywait这样的东西来查看su事件的日志文件。

根据su的手册页,在/etc/login.defs中,您可以设置
SULOG\u file file
SYSLOG\u su\u ENABLE yes
来记录所有su活动。然后您只需要像inotifywait这样的东西来查看日志文件中的su事件。

有一个名为
/var/log/secure
的日志文件,它在执行
su
时随时接收条目。它还可以在其他条件下获取条目。这一点在本手册中有描述

如果用户“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工具
软件包才能使用
inotifywait

如果此脚本在后台运行,则应向
you@email.com
每当出现
su
条目时

现在到哪里运行脚本。一种方法是将其放入可执行脚本文件(例如,
watchsu
),并从
rc.local
文件调用它:

nohup /path/to/watchsu 2>&1 &

我相信还有其他的想法可以从哪里开始。我不熟悉CentOS。

有一个名为
/var/log/secure
的日志文件,它在执行
su
时随时接收条目。它还可以在其他条件下获取条目。这一点在本手册中有描述

如果用户“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工具
软件包才能使用
inotifywait

如果此脚本在后台运行,则应向
you@email.com
每当出现
su
条目时

现在到哪里运行脚本。一种方法是将其放入可执行脚本文件(例如,
watchsu
),并从
rc.local
文件调用它:

nohup /path/to/watchsu 2>&1 &

我相信还有其他的想法可以从哪里开始。我对CentOS不太熟悉。

我想你的基本要求是,你有一群人被授予了root权限,但你并不完全信任他们,所以你想关注他们。您的解决方案是在邮件成为root时让自己发送邮件

这个解决方案的问题是根用户拥有无限的权限,因此没有什么可以阻止他们抵制这种机制。例如,他们可以在一次会话中编辑/etc/login.defs文件,做您希望他们做的好事,然后再执行root操作,做您担心的坏事。在会话结束时,他们将/etc/login.defs文件编辑回原始状态,您一点也不知道。或者,他们可以只复制/usr/bin/bash,并将该副本制作成suid文件,以便在运行时获得特权


您可能可以关闭我刚才建议的任何漏洞,但将会有更多的漏洞。所以你要么信任他们,要么根本不使用su,给他们sudo权限,让他们只运行那些他们需要的命令,来完成你想让他们做的事情。

我想你的基本要求是,你有一群人被你授予了root特权,但你并不完全信任他们,所以你想关注他们。您的解决方案是在邮件成为root时让自己发送邮件

这个解决方案的问题是根用户拥有无限的权限,因此没有什么可以阻止他们抵制这种机制。例如,他们可以在一次会话中编辑/etc/login.defs文件,做您希望他们做的好事,然后再执行root操作,做您担心的坏事。在会话结束时,他们将/etc/login.defs文件编辑回原始状态,您一点也不知道。或者,他们可以只复制/usr/bin/bash,并将该副本制作成suid文件,以便在运行时获得特权


您可能可以关闭我刚才建议的任何漏洞,但将会有更多的漏洞。所以你要么信任他们,要么根本不使用su,给他们sudo权限,让他们只运行那些他们需要的命令,来完成你想让他们做的事情。

你在运行哪个Linux发行版?对不起,我要提到的是,我在使用CentOS 6.4,你在运行哪个Linux发行版?对不起,我要提到的是,我使用的是CentOS 6.4,设置一个cron来运行这个脚本(可能每分钟一次)和使用inotify有什么区别?我问这个问题,因为我以前没有使用过inotify。@I.h4d35您可以执行
cron
作业,但您还需要创建一个脚本来检查自上次检查以来添加到文件中的行。所以这里有一点逻辑,你必须重新创建inotify为你所做的