Linux服务器被入侵了怎么办?登录历史分析排查全攻略

admin 2025年3月24日16:34:25评论10 views字数 2816阅读9分23秒阅读模式

了解Linux系统中的登录历史对于每一位系统管理员来说都是非常重要的。这不仅帮助我们确认用户是否在预期的时间内成功登录,还能让我们注意到任何不寻常的行为,从而及时发现并解决可能存在的安全问题。在这篇文章里,我们将一起探索如何有效地检查和分析Linux系统的登录历史,希望能为您的日常管理工作提供一些有用的技巧和支持。

查看系统登录历史的工具

Linux系统提供了几种命令和工具来查看登录历史。这些工具的使用可以帮助管理员快速识别是否存在不正常的登录行为。

last 命令

last 命令用于显示系统上所有用户的登录历史,包括登录时间、持续时间、IP 地址等信息。它读取 /var/log/wtmp 文件,该文件存储了系统的所有登录和注销事件。

  • 使用方法:
 
last

该命令将列出系统所有的登录记录,按时间倒序排列。你会看到类似如下的信息:

 
root     pts/1        112.97.47.32     Mon Aug 19 17:14 - 17:38  (00:23)
root     pts/0        112.97.47.32     Mon Aug 19 16:23 - 17:38  (01:15)

lastb 命令

lastb 命令用于查看系统上的登录失败记录。它读取 /var/log/btmp 文件,该文件记录了所有失败的登录尝试。

  • 使用方法:
 
lastb

这会显示登录失败的尝试记录。通常,这些记录会包含用户名、IP地址、时间以及失败的原因。如果有大量失败的登录尝试,可能需要进一步调查,确保系统的安全。

 
dbuser   ssh:notty    174.138.12.250   Fri Mar 14 11:59 - 11:59  (00:00)
dbs      ssh:notty    174.138.12.250   Fri Mar 14 11:59 - 11:59  (00:00)
dbn      ssh:notty    174.138.12.250   Fri Mar 14 11:59 - 11:59  (00:00)

who 命令

who 命令可以显示当前系统登录的所有用户信息。它会列出每个用户的用户名、登录时间、终端等信息。

  • 使用方法:
 
who
  • 输出示例:
 
root     pts/0        2025-03-24 09:57 (183.9.128.198)
root     pts/1        2025-03-24 11:06 (183.9.128.198)

这显示了当前已登录的用户。虽然 who 命令不显示历史记录,但它非常适合实时监控登录的用户。

w 命令

w 命令提供有关当前登录用户的详细信息,包括他们当前正在做什么、登录时间、登录时长等。它比 who 提供了更多的实时信息。

  • 使用方法:
 
w
  • 输出示例:
 
11:28:23 up 102 days, 14:43,  2 users,  load average: 0.210.130.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    183.9.128.198    09:57    1:09m  0.02s  0.02s -bash
root     pts/1    183.9.128.198    11:06    4.00s  0.02s  0.00s w

日志文件深度分析

核心日志文件定位

  • /var/log/auth.log (Debian/Ubuntu)
  • /var/log/secure(RHEL/CentOS)
  • /var/log/wtmp:成功登录二进制日志(由last解析)
  • /var/log/btmp:失败登录二进制日志(由lastb解析)
  • /var/run/utmp:当前登录记录(由who解析)

原始日志解析技巧

 
# 使用utmpdump解析二进制日志
utmpdump /var/log/wtmp | grep -v "LOGIN"  # 排除系统启动记录
utmpdump /var/log/btmp | awk '/ssh/ {print $3}' | sort | uniq -c  # 统计SSH暴力破解IP

# 文本日志过滤示例
grep "Failed password" /var/log/auth.log  # SSH登录失败记录
grep "Accepted password" /var/log/auth.log | awk '{print $11}' | sort | uniq  # 成功登录IP统计

高级检测与自动化

可疑登录特征识别

 
# 检测非常用IP登录
last | awk '{print $3}' | grep -E '[0-9]+.[0-9]+.[0-9]+.[0-9]+' | sort | uniq | diff - common_ips.txt

# 检测非工作时间登录(示例:22:00-06:00)
last | awk '$7 >= "22:00" || $7 < "06:00" {print}'

预存的合法IP文件common_ips.txt

自动化监控脚本

 
#!/bin/bash
# 实时监控SSH登录(成功/失败)
tail -f /var/log/auth.log | awk '/sshd/{
  if(/Accepted/){ 
    print "�33[32m[SUCCESS] "$0"�33[0m" 
  } else if(/Failed/){ 
    print "�33[31m[FAILURE] "$0"�33[0m"
  }
}'

加强登录安全的措施

除了定期查看登录历史外,管理员还应采取一些措施来提高系统的登录安全性:

配置失败登录锁定

为了防止暴力破解攻击,可以配置系统在多次登录失败后暂时锁定账户。在 /etc/pam.d/common-auth 中,可以添加如下配置:

 
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600

这将使得在连续 5 次失败登录后,账户会被锁定 10 分钟。

使用SSH密钥认证

对于远程登录,使用 SSH 密钥认证比使用密码更加安全。管理员可以禁用密码登录,只允许使用 SSH 密钥来访问系统。

 
# 修改SSH默认端口
Port 2222

# 禁用root登录
PermitRootLogin no

# 强制密钥认证
PasswordAuthentication no

定期审计和更新密码策略

强密码和定期更新密码是保证系统安全的基本措施。管理员可以使用 chage 命令强制用户定期更改密码,并设置密码复杂度要求。

结语

检测和分析 Linux 系统的登录历史是确保系统安全的基本步骤之一。通过使用 lastlastbwho 和 w 等命令,管理员可以轻松查看用户的登录记录,并及时发现潜在的安全威胁。此外,结合一些安全措施,如多因素认证和 SSH 密钥认证,可以进一步提高系统的安全性,减少未经授权访问的风险。

原文始发于微信公众号(攻城狮成长日记):Linux服务器被入侵了怎么办?登录历史分析排查全攻略

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月24日16:34:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux服务器被入侵了怎么办?登录历史分析排查全攻略https://cn-sec.com/archives/3878708.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息