服务器测评网
我们一直在努力

如何查看Linux服务器SSH登录的详细历史记录?

Linux SSH 登录日志是系统安全审计、故障排查和用户行为追踪的重要依据,通过详细记录每一次 SSH 登录的来源、时间、用户及操作行为,管理员能够及时发现异常访问、未授权登录等安全风险,同时也能快速定位用户操作问题,本文将详细介绍 SSH 登录日志的存储位置、核心字段解析、日志分析技巧、常见安全问题及应对策略,帮助管理员更好地利用日志保障系统安全。

SSH 登录日志的存储位置与类型

SSH 服务的日志主要由两个核心组件记录:OpenSSH 服务日志系统日志(syslog),具体存储位置取决于 Linux 发行版的配置。

默认日志文件

  • 基于 RHEL/CentOS 的系统:SSH 日志通常由 rsyslog 管理,默认存储在 /var/log/secure 文件中,该文件记录所有与身份验证相关的日志,包括 SSH 登录成功、失败、密码错误、密钥验证等信息。
  • 基于 Debian/Ubuntu 的系统:默认使用 syslog-ngrsyslog,日志文件路径为 /var/log/auth.log,同样包含 SSH 登录认证详情。

日志轮转机制

由于日志文件会随时间增长,系统会通过 logrotate 工具自动进行轮转(如按天或按大小分割),避免单个文件过大。/var/log/secure 可能会被轮转为 /var/log secure.1/var/log/secure.2 等历史文件,保留周期通常为 30 天(可配置)。

SSH 登录日志核心字段解析

以常见的 SSH 登录日志条目为例,以下是对关键字段的详细说明(以 RHEL 系统日志为例):

Aug 20 10:30:22 server sshd[12345]: Accepted publickey for admin from 192.168.1.100 port 22 ssh2: RSA SHA256:abc123...
Aug 20 10:31:15 server sshd[12346]: Failed password for invalid user test from 192.168.1.200 port 22 ssh2
Aug 20 10:32:00 server sshd[12347]: session opened for user root from 192.168.1.100 by (uid=0)
Aug 20 10:35:22 server sshd[12348]: Received disconnect from 192.168.1.200: 11: Bye Bye

关键字段说明表

字段 含义与示例
时间戳 日志记录的精确时间,如 Aug 20 10:30:22(月 日 时:分:秒)。
主机名 记录日志的主机名,如 server(可配置 /etc/hostname 修改)。
进程ID SSH 守护进程的子进程ID,如 [12345],用于追踪具体登录会话。
事件类型 核心事件标识,如 Accepted publickey(密钥认证成功)、Failed password(密码认证失败)、session opened(会话开启)。
用户信息 登录用户名,如 admin(成功)或 invalid user test(用户不存在)。
来源IP 客户端IP地址,如 168.1.100(可信内网)或 168.1.200(可疑IP)。
端口 SSH 服务端口,默认为 22(若修改过非默认端口需注意)。
认证方式 publickey(公钥)、password(密码)、keyboard-interactive(键盘交互)。
其他细节 如密钥指纹(RSA SHA256:abc123...)、断开原因(Bye Bye)等。

SSH 登录日志分析实用技巧

通过分析日志字段,管理员可以快速定位问题或发现异常行为,以下是常见场景的分析方法:

检查登录成功记录

使用 grep "Accepted" /var/log/secure 命令可筛选所有成功登录的记录,重点关注:

  • 异常时间登录:如非工作时间的登录(凌晨、节假日);
  • 异常来源IP:如从未知地区或公网IP登录(需确认是否为管理员操作);
  • 敏感用户登录:如 root 用户直接登录(建议禁止,改用 sudo 提权)。

定位失败登录尝试

频繁的失败登录尝试可能是暴力破解的前兆,可通过以下命令统计:

grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

该命令会按IP地址统计失败登录次数,若某IP失败次数超过阈值(如5次/分钟),可考虑使用 iptablesfail2ban 封禁该IP。

追踪用户操作行为

对于已登录的用户,可通过 grep "session opened" /var/log/secure 查看会话开启记录,结合 last 命令查看用户历史登录信息,进一步分析用户操作轨迹(如是否执行了高危命令)。

分析日志轮转文件

若当前日志未发现异常,可检查历史日志(如 /var/log/secure.1),使用 zgrep 命令直接解压并搜索:

zgrep "Accepted" /var/log/secure.1.gz

常见安全问题与日志关联分析

SSH 登录日志中隐藏着大量安全线索,以下为常见威胁及应对措施:

暴力破解攻击

日志特征:短时间内大量 Failed passwordInvalid user 记录,来源IP单一或集中。
应对策略

  • 修改默认SSH端口(22),避免端口扫描;
  • 禁用密码登录,启用密钥认证(编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no);
  • 使用 fail2ban 工具自动封禁恶意IP,配置规则如下:
    [sshd]
    enabled = true
    port = 22
    maxretry = 3
    bantime = 3600

未授权用户访问

日志特征:记录中出现 invalid user 且来源IP异常,或成功登录的用户不在允许列表中。
应对策略

  • 通过 AllowUsersDenyUsers 指令限制允许登录的用户(编辑 /etc/ssh/sshd_config);
  • 定期检查 /etc/passwd 中的无用账户,及时禁用或删除。

远程代码执行或提权

日志特征:成功登录后出现 sudo 提权记录、敏感命令(如 wgetcurl 下载未知文件)或异常进程创建。
应对策略

  • 限制 sudo 权限,仅允许必要用户执行特定命令;
  • 开启 SSH 审计日志(通过 sshd_configLogLevel VERBOSE 增加日志详细程度)。

日志管理最佳实践

为保障 SSH 日志的有效性和安全性,建议遵循以下管理规范:

  1. 定期备份日志:通过 cron 任务将 /var/log/secure/var/log/auth.log 备份至远程服务器或对象存储,防止日志被恶意删除。
  2. 设置日志保留期限:在 /etc/logrotate.conf 中调整日志轮转周期,确保至少保留90天的日志记录以满足审计需求。
  3. 集中日志管理:对于多服务器环境,使用 rsyslogELK Stack(Elasticsearch、Logstash、Kibana)实现日志集中收集与分析,便于统一监控。
  4. 自动化监控告警:通过 grep + mail 或 Prometheus + AlertManager 配置实时告警,当检测到连续失败登录或异常IP登录时,立即通知管理员。

SSH 登录日志是 Linux 系统安全的“黑匣子”,通过深入理解日志结构、掌握分析技巧并结合自动化工具,管理员可以构建主动防御体系,有效抵御外部攻击和内部违规操作,在日常运维中,应将日志分析作为常态化工作,确保系统安全稳定运行。

赞(0)
未经允许不得转载:好主机测评网 » 如何查看Linux服务器SSH登录的详细历史记录?