如何配置 PAM 以审核日志记录 Shell 用户活动
这是我们正在进行的关于 Linux 审计的系列文章,在本文的第四部分,我们将解释如何使用pam_tty_audit工具配置PAM以审计特定用户的Linux TTY输入(记录 Shell 用户活动) 。
Linux PAM(可插入式身份验证模块)是一种在应用程序和各种系统服务中实现身份验证服务的高度灵活的方法;它源自原始的 Unix PAM。
它将认证功能分为四大管理模块,分别是:账户模块、认证模块、密码模块和会话模块。这些管理组的详细讲解超出了本教程的范围。
auditd工具使用pam_tty_audit PAM 模块来启用或禁用对指定用户的TTY输入的审计。一旦将用户配置为要进行审计,pam_tty_audit将与auditd协同工作,以跟踪用户在终端上的操作,并且如果已配置,则捕获用户进行的精确击键,然后将其记录在/var/log/audit/audit.log文件中。
在 Linux 中配置 PAM 以审核用户 TTY 输入
您可以使用 enable 选项在/etc/pam.d/system-auth和/etc/pam.d/password-auth文件中配置PAM以审核特定用户的TTY输入。另一方面,正如预期的那样,disable 会为指定用户关闭此功能,格式如下:
session required pam_tty_audit.so disable=username,username2... enable=username,username2..
要打开实际用户击键(包括空格、退格、回车键、控制键、删除键等)的记录,请将log_passwd选项与其他选项一起添加,使用以下形式:
session required pam_tty_audit.so disable=username,username2... enable=username log_passwd
但在执行任何配置之前,请注意:
- 如上面的语法所示,您可以将许多用户名传递给启用或禁用选项。
- 任何禁用或启用选项都会覆盖与相同用户名匹配的先前的相反选项。
- 启用 TTY 审计后,它将被定义的用户启动的所有进程继承。
- 如果激活了击键记录功能,则输入不会立即记录,因为 TTY 审计首先将击键存储在缓冲区中,并在给定的时间间隔或在被审计用户注销后将缓冲区内容写入/var/log/audit/audit.log文件中。
让我们看下面的一个例子,我们将配置pam_tty_audit来记录用户example
在所有终端上的操作(包括击键),同时禁用所有其他系统用户的 TTY 审计。
打开下面这两个配置文件。
# vi /etc/pam.d/system-auth # vi /etc/pam.d/password-auth
在配置文件中添加以下行。
会话需要 pam_tty_audit.so disable=* enable=示例
为了捕获用户输入的所有击键示例,我们可以添加所示的log_passwd选项。
session required pam_tty_audit.so disable=* enable=example log_passwd
现在保存并关闭文件。之后,使用aureport 实用程序查看auditd日志文件中记录的任何 TTY 输入。
# aureport --tty
从上面的输出中,您可以看到UID为1000的用户示例使用了vi/vim 编辑器,创建了一个名为bin的目录并进入该目录,清除了终端等等。
要搜索时间戳等于或晚于特定时间的 TTY 输入日志,请使用-ts
指定开始日期/时间并-te
设置结束日期/时间。
以下为一些例子:
# aureport --tty -ts 09/25/2017 00:00:00 -te 09/26/2017 23:00:00 # aureport --tty -ts this-week
您可以在pam_tty_audit手册页中找到更多信息。
# man pam_tty_audit
查看以下有用的文章。
- 在 Linux 服务器上使用 PuTTY 配置“无密码 SSH 密钥身份验证”
- 在 RHEL/CentOS 7 中设置基于 LDAP 的身份验证
- 如何为 SSH 登录设置双因素身份验证(Google Authenticator)
- 使用 SSH Keygen 只需 5 个简单步骤即可实现 SSH 无密码登录
- 如何在 Linux 中不输入密码的情况下运行“sudo”命令
在本文中,我们描述了如何在 CentOS/RHEL 上配置 PAM 以审计特定用户的输入。如果您有任何问题或其他想法要分享,请使用下面的评论。