HCRM博客

CentOS SSH登录日志查看指南

CentOS SSH登录日志:守护服务器的关键之眼

在Linux服务器的日常运维与安全防护中,SSH登录日志扮演着至关重要的角色,它如同一位不知疲倦的哨兵,忠实记录着每一次通过安全外壳协议(SSH)访问您CentOS系统的尝试,无论成功与否,深入理解并有效利用这些日志,是保障服务器安全不可或缺的一环。

核心日志文件:信息的源泉

CentOS SSH登录日志查看指南-图1

CentOS系统(特别是较新版本如CentOS 7/8/Stream)中,SSH服务的登录验证信息主要记录在 /var/log/secure 文件中,这是您需要首要关注的日志文件,对于使用rsyslogjournaldsystemd的日志系统)的环境,日志路径和查看方式可能略有差异:

  1. /var/log/secure (最常用):这是SSHD服务(sshd守护进程)默认写入认证相关事件的主要文件,使用以下命令实时跟踪其更新:

    sudo tail -f /var/log/secure
  2. /var/log/auth.log (部分旧系统或特定配置):在某些历史配置或特定发行版中,SSH日志可能被定向到此处,检查您的rsyslog配置(/etc/rsyslog.conf/etc/rsyslog.d/下的文件)确认。

  3. Systemd Journal (journalctl):对于使用systemd-journald的系统,日志统一由journald管理,查看SSH相关日志更灵活:

    sudo journalctl -u sshd  # 查看sshd服务单元的所有日志
    sudo journalctl -u sshd --since "2023-10-27 14:00" --until "2023-10-27 15:00"  # 按时间过滤
    sudo journalctl -u sshd -f  # 实时跟踪

解读日志:关键信息与安全信号

一条典型的SSH日志条目包含丰富信息,理解其结构是分析的基础:

CentOS SSH登录日志查看指南-图2
Oct 27 14:35:22 server1 sshd[12345]: Accepted password for user1 from 192.168.1.100 port 54321 ssh2
Oct 27 14:36:05 server1 sshd[12346]: Failed password for invalid user attacker from 203.0.113.5 port 12345 ssh2
Oct 27 14:36:08 server1 sshd[12346]: Connection closed by invalid user attacker 203.0.113.5 port 12345 [preauth]
  • 时间戳 (Oct 27 14:35:22): 事件发生的精确时间,对追踪攻击或排查问题至关重要。
  • 主机名 (server1): 生成日志的服务器标识。
  • 进程名与PID (sshd[12345]): sshd进程及其进程ID。
  • 事件类型与细节:
    • Accepted password for ...: 成功登录,包含用户名(user1)、来源IP(168.1.100)、来源端口(54321)和认证方式(passwordpublickey)。
    • Failed password for ...: 密码认证失败,注意区分是有效用户(root, user1)还是invalid user(尝试登录不存在的用户)。
    • Invalid user ...: 尝试登录一个系统中不存在的用户,这是暴力破解的常见迹象。
    • Connection closed by ... [preauth]: 连接在认证完成前被关闭,通常发生在多次认证失败后或客户端主动终止。preauth表明发生在认证阶段之前。
    • pam_unix(sshd:auth): authentication failure; ...: PAM(可插拔认证模块)记录的认证失败详情,常伴随Failed password出现。
    • Received disconnect from ...: ... [preauth]: 连接断开的原因代码和信息。
    • Disconnected from authenticating user ...: 用户在认证过程中断开了连接。
    • POSSIBLE BREAK-IN ATTEMPT!: 当检测到可疑行为(如短时间内同一用户多次失败)时,SSH可能会明确发出此警告(需配置启用)。
  • 来源IP地址与端口: 发起连接尝试的客户端地址和端口号,这是追踪攻击源的核心信息。

实战分析:挖掘日志中的安全情报

掌握基础命令,让日志数据开口说话:

  1. 实时监控新登录与尝试

    sudo tail -f /var/log/secure | grep -E "sshd.*(Accepted|Failed|Invalid|Connection closed|BREAK-IN)"
  2. 统计特定IP的失败登录次数 (识别潜在攻击者):

    sudo grep "Failed password" /var/log/secure | grep "203.0.113.5" | wc -l
  3. 列出所有尝试登录的无效用户名 (发现攻击目标模式):

    sudo grep "Invalid user" /var/log/secure | awk '{print $8}' | sort | uniq -c | sort -nr
  4. 查看指定用户的所有登录活动 (审计或排查问题):

    CentOS SSH登录日志查看指南-图3
    sudo grep "user1" /var/log/secure
  5. 查找成功登录记录

    sudo grep "Accepted" /var/log/secure
  6. 识别高频失败源IP (快速定位暴力破解源):

    sudo grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | head -n 20

日志轮转与持久化:确保历史可追溯

CentOS默认使用logrotate管理日志文件,配置通常在/etc/logrotate.conf/etc/logrotate.d/syslog中。/var/log/secure会被定期压缩归档(例如每周一次),并保留一定周期(通常是4周)的旧日志,使用zcat, zgrep等工具可方便地查询压缩的历史日志:

sudo zgrep "Accepted" /var/log/secure-20231020.gz

强化安全:超越日志分析的主动防御

日志是事后分析的眼睛,主动防御才是坚固的盾牌:

  1. 禁用Root密码登录:在/etc/ssh/sshd_config中设置 PermitRootLogin noPermitRootLogin prohibit-password(仅允许密钥登录),大幅减少最高权限账户被攻破的风险。
  2. 启用公钥认证,禁用密码认证:设置 PasswordAuthentication no,公钥认证在安全性上远超密码。
  3. 更改默认SSH端口:修改 Port 22 为其他高端口号(如 Port 22222),减少自动化脚本扫描攻击。
  4. 使用Fail2ban或DenyHosts:这些工具实时监控SSH日志,自动将短时间内多次登录失败的IP地址加入防火墙黑名单(如iptables/firewalld),有效阻止暴力破解。
  5. 限制允许登录的用户:使用 AllowUsers user1 user2 指令明确指定哪些系统用户允许通过SSH登录。
  6. 限制允许登录的IP段:结合防火墙(如firewalldiptables)规则,仅允许受信任的IP地址或网段访问SSH端口。
  7. 保持系统和SSH软件更新:及时应用安全补丁,修复已知漏洞。

作为服务器管理员,忽视SSH日志就如同蒙着眼睛守卫大门,每一次失败的登录尝试、每一个陌生的IP地址、每一个不存在的用户名请求,都可能是潜在威胁的蛛丝马迹,深入分析日志模式,结合强化的SSH配置和主动防御工具,才能筑起服务器访问安全的第一道坚实防线,持续观察这些日志,了解正常访问的基线,才能敏锐地捕捉异常,将风险扼杀在入侵发生之前,服务器的安全态势,往往就藏匿在这一行行看似枯燥的日志记录之中。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/34919.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~