使用 su/sudoed 为 root 的原始用户名记录所有 root 活动

使用 su/sudoed 为 root 的原始用户名记录所有 root 活动

sudo -i当禁用 root 登录 (SSH) 但用户可以运行或su -成为 root 时,跟踪谁在日志中充当 root 的首选方法是什么?我也想使用原始用户名来执行每个命令。 RHEL 6 或任何 Linux rsyslog 等。

答案1

最稳健的方法似乎是经过审计的:

要求 10:跟踪和监控对网络资源和持卡人数据的所有访问

Auditd 基本上拦截所有系统调用并根据您的规则集检查它们。所以在你的/etc/audit/audit.rules文件中你会有类似下面的内容:

# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION

最后一条规则是唯一的非默认规则。

这种方法的主要缺点(也是我在寻找替代方案时发现这个问题的原因)是原始日志文件非常神秘,并且只有在原始日志文件上运行查询程序后才有用:ausearch

该规则的查询示例如下:

ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f

一个常识性的解决方案可能是创建一个 cron 来查询您的原始审核日志,然后将它们发送到您的日志记录解决方案。

答案2

在 Red Hat 发行版上,您通常使用/var/log/secure日志来识别谁正在登录或使用sudoFedora/CentOS/RHEL 系统。

例子

须藤示例
$ sudo -Es

日志结果:

9 月 1 日 19:32:51 greeneggs sudo: saml : TTY=pts/2 ; PWD=/home/saml ;用户=根;命令=/bin/bash

苏的例子
$ su -

日志结果:

Sep 1 19:34:49 greeneggs su: pam_unix(su-l:session): saml(uid=1000) 为用户 root 打开的会话

答案3

如果您有合作用户,您可以设置 rootsh 将 root 用户键入的所有内容记录到系统日志中。

http://linux.die.net/man/1/rootsh

rootsh rpm 在 EPEL 中可用。

RHEL6 上的 sudo 版本还能够将每个 sudo 会话的 stdout 记录到文件中。查看 sudo_plugins 手册页。

这些方法都不是完全无懈可击的。

相关内容