找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4991

积分

0

好友

662

主题
发表于 前天 05:23 | 查看: 10| 回复: 0

服务器一旦被入侵,排查登录历史、定位攻击来源并封堵安全漏洞就成了当务之急。本文整理了一套系统性的方法,通过Linux自带的日志工具来分析异常登录、追踪可疑IP,并给出关键应急处理步骤,特别适合运维人员和开发者参考。

1. 查看最近的登录记录(last 命令)

使用 last 命令可以快速回顾系统的登录历史,帮你了解有哪些用户、在什么时间、从哪里登录了系统。

last -n 20 # 查看最近20条登录记录
last -f /var/log/wtmp # 指定登录日志文件(默认也是wtmp)

查看时需要重点观察这几个信息:

  • 用户名(例如:root、admin,或者任何陌生账号)
  • 登录时间(是否是凌晨或非工作时段等可疑时间)
  • 登录来源IP
  • 登录方式(例如 SSH pts/0)

来看一个示例输出:

root     pts/0        192.168.1.100   Thu Apr 11 10:15   still logged in
hacker   pts/1        45.76.123.89    Thu Apr 11 09:55 - 10:05  (00:10)

如果你发现了陌生的用户名或者来自异常地理位置的IP登录记录,这很可能是入侵留下的痕迹。这类日志分析是入侵响应的核心环节。

2. 查看失败登录尝试(lastb 命令)

lastb 命令专门用来查看所有失败的登录尝试,暴力破解的攻击行为通常会在这里留下大量记录。

lastb | head -n 20   # 查看最近20次失败登录尝试

如果发现某个IP地址在短时间内连续出现多次登录失败,那么它很可能正在进行暴力破解攻击:

banned  ssh:notty     103.20.45.89    Thu Apr 11 09:50 - 09:51  (00:01)

3. 检查 SSH 登录日志(/var/log/secure 或 /var/log/auth.log)

更详细的登录信息通常记录在SSH服务的专属日志中。

3.1 查找成功登录记录

根据你的Linux发行版,使用不同的命令:

grep "Accepted" /var/log/secure # CentOS/RHEL
grep "Accepted" /var/log/auth.log # Ubuntu/Debian

示例输出如下:

Apr 11 10:15:00 server sshd[1234]: Accepted password for root from 45.76.123.89 port 45678 ssh2

3.2 查找失败登录记录

grep "Failed password" /var/log/secure
grep "Failed password" /var/log/auth.log

3.3 查找 root 用户远程登录

grep "session opened" /var/log/secure | grep "root"

4. 查看当前在线用户(who / w

入侵者可能还保持着活跃的连接。使用以下命令可以立即查看当前所有登录的用户:

who

或者使用 w 命令,它不仅能显示用户,还能看到他们正在执行的命令:

w

如果在输出中发现了陌生的用户名(例如 hackertest123),那就说明系统很可能已经被控制,需要立即处理。

5. 检查 SSH 配置是否被篡改

攻击者有时会修改SSH服务的配置文件,放宽登录限制以便后续访问。检查一下关键配置:

cat /etc/ssh/sshd_config | grep PermitRootLogin

通常,出于安全考虑,建议将此项设置为:

PermitRootLogin no

6. 查看用户执行命令历史(.bash_history

每个用户的家目录下都有一个 .bash_history 文件,记录了该用户执行过的命令。检查它可能发现入侵者的操作意图。

cat ~/.bash_history | tail -n 50

请重点查找以下类型的可疑命令:

  • 使用 wgetcurl 下载来路不明的脚本或程序。
  • 执行权限提升命令,如 chmod 777./xxx
  • 添加用户、修改密码或执行其他可能植入后门的脚本命令。

7. 追踪可疑 IP 来源(whois / ping

当你锁定了一个可疑IP,可以进一步追查它的来源。

whois 45.76.123.89
ping -c 4 45.76.123.89

此外,还可以利用在线安全数据库进行查询,例如通过AbuseIPDB的API检查该IP是否有恶意历史:

curl -s https://api.abuseipdb.com/api/v2/check?ipAddress=45.76.123.89

8. 应急处理建议

发现入侵后,应立即采取行动遏制损失。

8.1 封禁可疑 IP

使用防火墙规则立即阻断攻击源:

  • iptables(传统):
    iptables -A INPUT -s 45.76.123.89 -j DROP
  • firewalld(CentOS 7+/RHEL):
    firewall-cmd --add-rich-rule='rule family="ipv4" source address="45.76.123.89" reject' --permanent
    firewall-cmd --reload
  • fail2ban(如果已安装):
    fail2ban-client set sshd banip 45.76.123.89

8.2 修改 SSH 配置并重启服务

立即加固SSH服务,防止攻击者再次利用相同漏洞进入。

vim /etc/ssh/sshd_config

建议进行如下关键修改:

Port 2222                # 更改默认端口
PermitRootLogin no       # 禁止root直接登录

修改后保存并重启SSH服务:

systemctl restart sshd

8.3 强制踢出可疑用户

如果发现仍有可疑用户在线,立即将其踢出系统:

pkill -u hacker

8.4 锁定高危账户

锁定你怀疑已被入侵的账户,禁止其登录:

usermod -L hacker

8.5 更改所有关键账户密码

立即更改所有可能已泄露的账户密码,尤其是root账户:

passwd root

8.6 更新系统与安装安全补丁

确保系统不存在已知漏洞,更新所有软件包:

yum update -y   # CentOS/RHEL
apt update && apt upgrade -y   # Ubuntu/Debian

9. 总结与建议

服务器被入侵后,第一步不一定是立即重装,而是应该冷静地进行调查,搞清楚入侵路径并清除隐患。通过 lastlastbgrep 分析日志,结合 w.bash_history 查看实时状态和历史命令,我们就能快速定位攻击来源,分析入侵行为。

当然,如果系统已被完全控制或植入了难以清除的后门,最稳妥的做法是备份重要数据后彻底重装系统。在新环境中部署时,务必强化安全措施,例如:

  • 禁止root用户远程SSH登录
  • 使用非默认的SSH端口
  • 部署并启用 fail2ban 等防暴力破解工具,并配置严格的防火墙策略
  • 使用SSH密钥对登录,完全替代密码登录方式
  • 建立定期审计机制,检查登录日志和账户活动。

保持系统的安全性是一个持续的过程,定期关注安全领域的动态和最佳实践,例如在云栈社区网络/系统板块与其他技术同行交流,能帮助你更好地防御未来的威胁。




上一篇:Linux主机入侵排查九步法:应急响应与安全检查实战指南
下一篇:Windows 11必备的5个命令行技巧,让系统管理与文件运维更高效
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 19:47 , Processed in 1.000269 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表