Debian系统记录用户登录活动的核心机制与方法
/var/log/auth.logDebian系统通过rsyslog服务将用户登录、注销等认证相关事件集中记录在/var/log/auth.log文件中。该文件是监控用户登录活动的核心日志源,包含以下关键信息:
sshd[pid]: Accepted password for username from IP port port(SSH密码登录成功);sshd[pid]: Failed password for username from IP port port(SSH密码错误);session opened for user username by (uid=0)(用户会话启动)、session closed for user username(用户会话结束)。tail -f /var/log/auth.log实时查看最新登录事件,或使用grep命令过滤特定用户(如grep 'username' /var/log/auth.log)。last命令:
显示所有用户的历史登录/注销记录,包括登录时间、退出时间、登录IP地址及持续时间。例如:
last
输出示例:
username pts/0 192.168.1.100 Mon Oct 14 09:30 - 11:45 (02:15)
该命令读取/var/log/wtmp文件(循环日志,旧记录可能被覆盖)。
lastlog命令:
显示所有用户的最后登录时间及IP地址(仅显示已登录过的用户)。例如:
sudo lastlog
输出示例:
Username Port From Latest
root pts/0 192.168.1.100 Mon Oct 14 09:30:00 +0800 2025
username pts/1 192.168.1.101 Tue Oct 15 14:20:00 +0800 2025
该命令读取/var/log/lastlog文件(二进制格式)。
journalctl命令:
通过systemd日志系统查看实时或历史登录事件,支持按服务、时间过滤。常用示例:
journalctl -u sshd.service
_COMM字段过滤ssh进程):journalctl _COMM=ssh | grep 'username'
journalctl --since "1 hour ago" | grep 'session opened'
该命令无需直接访问/var/log文件,且支持日志轮转后的历史记录查询。
auditd框架(可选)若需要更详细的用户活动审计(如命令执行、文件访问),可安装auditd(Linux审计框架):
sudo apt install auditd audispd-plugins
sudo systemctl start auditd
sudo systemctl enable auditd
/etc/audit/audit.rules,添加以下规则监控登录相关事件:
sshd服务的所有执行:-a exit,always -F arch=b32 -S execve -F path=/usr/sbin/sshd -k sshd_exec
-a exit,always -F arch=b64 -S execve -F path=/usr/sbin/sshd -k sshd_exec
/var/log/auth.log文件的修改(防止日志篡改):-w /var/log/auth.log -p wa -k auth_log_modify
ausearch命令查看特定事件的日志,例如:sudo ausearch -k sshd_exec | grep 'username'
sudo ausearch -k auth_log_modify
auditd的日志存储在/var/log/audit/audit.log中,支持更细粒度的权限控制和事件溯源。Debian系统通过logrotate工具自动管理日志轮转,默认配置位于/etc/logrotate.d/rsyslog。对于auth.log,轮转规则通常包括:
weekly);rotate 52);compress);create 640 root adm)。sudo logrotate -f /etc/logrotate.d/rsyslog
轮转后的日志文件命名为auth.log.1、auth.log.2.gz等,仍可通过zcat或less查看。