Linux用户登录日志审计查看:零基础也能掌握的监控技巧
为什么需要审计用户登录日志
每台Linux服务器都会记录用户的登录行为,包括成功登录、失败尝试、登录时间、来源IP等。
通过查看这些日志,可以及时发现异常登录尝试、潜在的攻击行为,或者排查谁在什么时候登录过系统。
对于服务器运维新手来说,掌握登录日志审计查看是最基础也是最实用的安全技能之一。
准备工作:确认系统环境和日志文件存在
在开始操作前,先确认你的系统类型。
大多数Linux发行版(如CentOS、Ubuntu、Debian)都会默认开启登录日志记录,日志文件通常位于 /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(CentOS/RHEL)。
你可以用以下命令检查文件是否存在:
ls -l /var/log/auth.log /var/log/secure 2>/dev/null
如果显示 No such file or directory,说明你的系统可能使用systemd-journald管理日志,此时需要用 journalctl 命令代替直接读取日志文件。
另外,普通用户可能没有读取日志文件的权限,建议使用 sudo 或以root身份执行命令。
核心操作:使用三个命令快速查看登录日志
1. 查看所有成功登录记录:last
last 命令读取 /var/log/wtmp 文件(二进制格式),显示所有成功登录会话的历史记录,包括登录时间、登录时长、IP地址等。
直接运行:
last
输出示例:
admin pts/0 192.168.1.100 Mon Mar 4 10:20 still logged in
root pts/1 10.0.0.5 Mon Mar 4 09:15 - 09:45 (00:30)
reboot system boot 5.10.0-28-amd64 Mon Mar 4 09:00 still running
如果想只看特定用户的记录,后面加上用户名,例如 last admin。
2. 查看所有登录失败记录:lastb
lastb 命令读取 /var/log/btmp 文件,专门记录登录失败的尝试,包括错误的用户名、密码、来源IP。
执行时可能需要root权限:
sudo lastb
输出类似下面:
admin ssh:notty 192.168.1.200 Mon Mar 4 10:10 - 10:10 (00:00)
test ssh:notty 10.0.0.99 Mon Mar 4 08:20 - 08:20 (00:00)
如果失败记录很多,可以配合 head 只查看前10条:sudo lastb | head -10。
3. 查看实时日志和更详细记录:journalctl
对于使用systemd的系统(现代Ubuntu、CentOS 7+等),推荐用 journalctl 查看登录相关日志。
筛选 sshd 或 login 服务的日志:
# 查看所有与SSH登录相关的日志
sudo journalctl -u sshd --no-pager | tail -50
# 查看最近5分钟内的登录日志
sudo journalctl --since "5 minutes ago" -u sshd
此外,还可以直接查看 /var/log/auth.log 或 /var/log/secure 的纯文本内容(需要root权限):
sudo tail -50 /var/log/auth.log
避坑指南:容易忽略的几个问题
- 日志轮转导致文件被清空:日志文件默认由
logrotate管理,旧日志会被压缩或删除。如果你发现last或lastb输出很少,不代表没有记录,只是旧的会话已经被轮转。可以查看/var/log/wtmp-*.gz等历史归档。 - 权限不足:普通用户执行
lastb会提示权限拒绝,必须加sudo。last命令通常普通用户也能执行,但某些发行版可能限制。 - 时间不同步:如果服务器系统时间不准确,日志时间会错误。建议先执行
date确认当前时间,必要时用ntpdate或chrony同步。 - SSH配置影响记录:如果
sshd_config中设置了LogLevel VERBOSE,日志会更详细;如果LogLevel QUIET,可能不记录失败信息。但默认配置下都能正常记录。
效果验证:判断日志审计是否正常工作
执行完上述命令后,你可以通过以下方式验证日志审计功能是否正常:
- 用错误的密码尝试SSH登录一次(比如
ssh test@localhost输入错误密码),然后立即执行sudo lastb,查看是否出现了该次失败的记录。 - 正常登录一次,然后执行
last,检查自己的会话是否出现在列表中。 - 长期使用
sudo journalctl -u sshd -f可以实时监控登录尝试,每次有新的SSH连接都会实时显示。
如果上述验证都通过,说明你的Linux服务器登录日志审计查看功能正常,可以用于日常安全监控。
总结
Linux用户登录日志审计查看并不复杂,核心就是用好 last、lastb 和 journalctl(或直接读取 /var/log/auth.log)。
掌握了这三个命令,你就能随时掌握谁登录了服务器、谁试图入侵、以及当前的登录状态。
记住日志轮转、权限和日志路径差异这三个常见坑,日常巡检就能游刃有余。
如果你正在处理Linux用户登录日志审计查看,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。