如何排查服务器是否有被黑客入侵的迹象?

排查服务器是否被黑客入侵是系统维护的重要工作。以下是详细的排查步骤,通过分析日志、检查用户、进程、网络连接等多个方面来判断服务器是否存在被入侵的迹象。


一、入侵的常见迹象

在开始排查之前,以下是一些常见的入侵迹象,若发现这些情况,需要进一步深入检查:

  1. 服务器性能异常

    • CPU、内存或磁盘使用率异常升高。
    • 系统变慢或卡顿。
  2. 异常登录活动

    • 出现未知 IP 地址的登录。
    • 登录失败次数激增。
    • 在非正常时间有登录记录。
  3. 文件被篡改或新增未知文件

    • 系统关键文件(如 /etc/passwd/etc/shadow)被修改。
    • 系统目录中出现未知脚本或文件(如 /tmp/var/tmp/dev/shm 等)。
  4. 异常网络流量

    • 服务器流量激增。
    • 打开了未知端口。
    • 持续对外连接可疑 IP。
  5. 日志异常

    • 系统日志被清空。
    • 日志中有异常登录或操作记录。
  6. 可疑进程或后门

    • 系统中运行未知的高权限进程。
    • 有伪装成正常服务的恶意程序。

二、详细排查步骤

1. 检查登录记录

黑客通常会通过 SSH 或其他远程方式登录服务器,检查登录记录可以发现异常活动。

查看登录历史
  • 查看最近登录的用户: bash

    复制

    复制代码
    last
  • 检查系统中是否有异常的远程登录 IP 或非正常时间的登录。

查看登录失败记录
  • 检查 SSH 登录失败的情况: bash

    复制

    复制代码
    grep "Failed password" /var/log/secure

    或:

    bash

    复制

    复制代码
    grep "Failed password" /var/log/auth.log
检查成功登录记录
  • 查看成功的 SSH 登录记录: bash

    复制

    复制代码
    grep "Accepted password" /var/log/secure

    或:

    bash

    复制

    复制代码
    grep "Accepted password" /var/log/auth.log
重点关注
  • 是否有来自未知 IP 的登录。
  • 是否有大量失败登录尝试,可能是暴力破解攻击的迹象。

2. 检查用户账户

黑客可能会创建新的账户以保持对系统的访问。

列出所有用户

bash

复制

复制代码
cat /etc/passwd
查找具有 root 权限的用户

bash

复制

复制代码
awk -F: '($3 == 0) {print}' /etc/passwd
检查用户组文件

bash

复制

复制代码
cat /etc/group
重点关注
  • 是否有新增的未知用户。
  • 普通用户是否被赋予了 root 权限。

3. 检查系统日志

日志文件可以记录服务器的活动,但黑客可能会清空或篡改日志,因此要仔细检查。

查看系统日志
  • CentOS: bash

    复制

    复制代码
    cat /var/log/messages
  • Ubuntu: bash

    复制

    复制代码
    cat /var/log/syslog
检查 SSH 日志
  • CentOS: bash

    复制

    复制代码
    cat /var/log/secure
  • Ubuntu: bash

    复制

    复制代码
    cat /var/log/auth.log
检查是否有清空日志的痕迹

bash

复制

复制代码
ls -lh /var/log/
  • 如果日志文件大小异常或时间戳不符合预期,可能是被清空或篡改。

4. 检查异常进程

黑客可能会运行后门程序或恶意进程来控制服务器。

查看当前运行的进程

bash

复制

复制代码
ps aux
寻找可疑进程
  • 查看是否有伪装成系统进程的恶意程序(如伪装为 sshdnginx)。
  • 查看进程的运行路径是否正常,重点检查 /tmp/var/tmp/dev/shm 等目录中的程序。
列出启动项
  • 查看开机启动服务: bash

    复制

    复制代码
    systemctl list-units --type=service
  • 检查定时任务: bash

    复制

    复制代码
    crontab -l
    cat /etc/crontab
重点关注
  • 是否有不明启动项或定时任务。
  • 是否有恶意进程运行。

5. 检查网络连接

黑客可能会通过网络后门访问服务器或利用服务器对外发起攻击。

查看当前网络连接

bash

复制

复制代码
netstat -tuln

或:

bash

复制

复制代码
ss -tuln
寻找可疑端口
  • 检查是否有异常的监听端口(如 12345、31337 等常见后门端口)。
  • 注意是否有未知的外部连接。
查看网络流量

使用 iftopnload 检查网络流量:

bash

复制

复制代码
iftop

(需安装:yum install iftopapt install iftop

重点关注
  • 是否有异常的流量流向未知 IP。
  • 是否有隐藏的监听端口。

6. 检查文件系统

黑客可能会篡改系统文件或上传恶意脚本。

检查最近修改的文件

bash

复制

复制代码
find / -mtime -5 2>/dev/null

此命令查找最近 5 天内被修改过的文件。

查找隐藏文件

bash

复制

复制代码
find / -name ".*" 2>/dev/null
检查关键系统文件
  • 检查 /etc/passwd/etc/shadow/etc/sudoers 是否被修改:

    bash

    复制

    复制代码
    ls -l /etc/passwd /etc/shadow /etc/sudoers
重点关注
  • 是否有未知的脚本或文件出现在 /tmp/var/tmp/dev/shm 等目录。
  • 是否有文件被篡改或权限被异常修改。

7. 检查资源使用情况

黑客可能会利用服务器进行挖矿或 DDoS 攻击,导致资源使用异常。

查看系统资源
  • 查看 CPU 和内存使用情况: bash

    复制

    复制代码
    top
  • 使用 htop(需安装)查看进程的实时资源占用:

    bash

    复制

    复制代码
    htop
重点关注
  • 是否有占用大量资源的可疑进程。
  • 是否有伪装成正常服务的恶意程序。

8. 检查是否存在 rootkit 或恶意软件

使用工具扫描是否存在 rootkit 或其他恶意程序。

使用 rkhunter

bash

复制

复制代码
rkhunter --check

(需安装:yum install rkhunterapt install rkhunter

使用 chkrootkit

bash

复制

复制代码
chkrootkit

(需安装:yum install chkrootkitapt install chkrootkit


三、确认入侵后的应对措施

如果确认服务器被入侵,应立即采取以下措施:

  1. 隔离服务器

    • 断开服务器网络,防止进一步的攻击或数据泄露。
  2. 备份重要数据

    • 在隔离后,将重要文件和日志备份以便分析和恢复。
  3. 分析入侵方式

    • 收集日志、异常文件和进程信息,分析黑客的入侵手段。
  4. 清理恶意程序

    • 删除恶意文件、进程或用户。
  5. 重新部署系统

    • 如果系统被严重破坏,建议重装操作系统并重新部署服务。
  6. 加强安全措施

    • 修改所有密码,尤其是 root 和 SSH 用户的密码。
    • 限制 SSH 登录,启用密钥认证并关闭密码登录。
    • 安装防火墙(如 iptablesfirewalld)。
    • 启用安全工具(如 Fail2Ban)防止暴力破解。

四、总结

通过以上步骤,可以全面排查服务器是否存在被入侵的迹象。如果发现异常,应迅速采取隔离和修复措施。同时,做好日常的安全防护(如定期更新系统、关闭不必要的端口和服务、定期备份等)以降低被入侵的风险。

相关推荐
无名之逆14 分钟前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
大丈夫立于天地间15 分钟前
ISIS协议中的数据库同步
运维·网络·信息与通信
cg501718 分钟前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影38 分钟前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain1 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon1 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu1 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu
tadus_zeng2 小时前
Windows C++ 排查死锁
c++·windows
EverestVIP2 小时前
VS中动态库(外部库)导出与使用
开发语言·c++·windows