Linux服务器用户登录审计实操指南
Linux服务器用户登录审计是保障系统安全的基础能力。
很多新手管理员不知道如何追踪谁在什么时候登录过服务器,遇到异常访问也难以查证。
本文从最简单的命令开始,逐步教你搭建一套可落地的登录审计方案,全程零基础可跟做。
环境准备与基础探查
在开始前请确认你已具备sudo或root权限,且系统为CentOS 7/8、Ubuntu 20.04或更高版本。
先运行以下命令查看现有登录记录:
last -10 # 显示最近10条登录记录
如果输出为空,说明系统默认日志可能被清空或未开启。
接着检查auditd是否安装:
systemctl status auditd
若未安装,分别执行:
- CentOS/RHEL:
yum install audit -y - Ubuntu/Debian:
apt install auditd -y
安装后启动并设为开机自启:
systemctl start auditd
systemctl enable auditd
配置auditd记录详细登录事件
auditd是Linux原生的审计框架,可以捕捉各类系统调用。
要审计用户登录,需要添加对应规则。
编辑规则文件:
vim /etc/audit/rules.d/login.rules
写入以下内容:
-w /var/log/lastlog -p wa -k user_login
-w /var/log/btmp -p wa -k failed_login
这两行分别监控正常登录日志(lastlog)和失败登录日志(btmp),-k是自定义关键词,方便后续搜索。
保存后重启auditd:
service auditd restart
或者使用新版命令:systemctl restart auditd。
为了实时捕获SSH登录,还需要启用pam_tty_audit模块。
编辑SSH配置文件:
vim /etc/pam.d/sshd
在末尾添加:
session required pam_tty_audit.so enable=* open_only
保存后重启sshd:
systemctl restart sshd
这样每次用户通过SSH登录时,auditd都会记录详细的键盘输入和操作。
避坑指南:常见报错与解决方法
- auditd启动失败:检查
/etc/audit/audit.rules语法,确保没有多余空格或反斜杠。可以用auditctl -R /etc/audit/audit.rules测试规则。 - 日志不记录SSH登录:多数原因是未配置pam模块。请确认
/etc/pam.d/sshd中已添加pam_tty_audit.so,并重新加载sshd。 - 磁盘空间暴涨:audit日志默认写至
/var/log/audit/audit.log,长期不轮转会撑满磁盘。建议设置日志轮转:vim /etc/logrotate.d/auditd,加入rotate 7保留7天。 - 使用last命令发现记录缺失:last读取的是
/var/log/wtmp,若该文件被清理则无记录。可以结合ausearch -k user_login搜索自定义规则日志。
效果验证:确认审计数据正常记录
配置完成后,别急着走,先自行验证。
重新开启一个SSH会话登录,然后执行:
ausearch -k user_login --start today
如果看到类似type=USER_LOGIN的事件,说明审计生效。
也可以查看原始日志:
aureport --login -i -ts today
该命令会按时间列出今天的登录成功和失败事件,包含用户名、来源IP、时间。
另外,手动触发一次登录失败测试:故意输错密码三次,然后搜索:
aureport --failed-login -i
若能列出失败记录,证明整个审计链条完整。
总结
通过以上步骤,你已经掌握了Linux服务器用户登录审计的完整配置流程。
从基础命令last开始,到auditd规则配置、pam模块集成,再到问题排查和效果验证,每一步都经过实操检验。
建议定期使用aureport检查登录概况,将审计日志存档到远程日志服务器。
如果你正在处理Linux服务器用户登录审计,先按本文执行一遍,再根据环境微调规则,遇到异常时优先回看避坑和高频问题部分。