排查服务器是否被黑客入侵是系统维护的重要工作。以下是详细的排查步骤,通过分析日志、检查用户、进程、网络连接等多个方面来判断服务器是否存在被入侵的迹象。
一、入侵的常见迹象
在开始排查之前,以下是一些常见的入侵迹象,若发现这些情况,需要进一步深入检查:
-
服务器性能异常:
- CPU、内存或磁盘使用率异常升高。
- 系统变慢或卡顿。
-
异常登录活动:
- 出现未知 IP 地址的登录。
- 登录失败次数激增。
- 在非正常时间有登录记录。
-
文件被篡改或新增未知文件:
- 系统关键文件(如
/etc/passwd
、/etc/shadow
)被修改。 - 系统目录中出现未知脚本或文件(如
/tmp
、/var/tmp
、/dev/shm
等)。
- 系统关键文件(如
-
异常网络流量:
- 服务器流量激增。
- 打开了未知端口。
- 持续对外连接可疑 IP。
-
日志异常:
- 系统日志被清空。
- 日志中有异常登录或操作记录。
-
可疑进程或后门:
- 系统中运行未知的高权限进程。
- 有伪装成正常服务的恶意程序。
二、详细排查步骤
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
寻找可疑进程
- 查看是否有伪装成系统进程的恶意程序(如伪装为
sshd
、nginx
)。 - 查看进程的运行路径是否正常,重点检查
/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 等常见后门端口)。
- 注意是否有未知的外部连接。
查看网络流量
使用 iftop
或 nload
检查网络流量:
bash
复制
iftop
(需安装:yum install iftop
或 apt 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 rkhunter
或 apt install rkhunter
)
使用 chkrootkit
bash
复制
chkrootkit
(需安装:yum install chkrootkit
或 apt install chkrootkit
)
三、确认入侵后的应对措施
如果确认服务器被入侵,应立即采取以下措施:
-
隔离服务器:
- 断开服务器网络,防止进一步的攻击或数据泄露。
-
备份重要数据:
- 在隔离后,将重要文件和日志备份以便分析和恢复。
-
分析入侵方式:
- 收集日志、异常文件和进程信息,分析黑客的入侵手段。
-
清理恶意程序:
- 删除恶意文件、进程或用户。
-
重新部署系统:
- 如果系统被严重破坏,建议重装操作系统并重新部署服务。
-
加强安全措施:
- 修改所有密码,尤其是 root 和 SSH 用户的密码。
- 限制 SSH 登录,启用密钥认证并关闭密码登录。
- 安装防火墙(如
iptables
、firewalld
)。 - 启用安全工具(如 Fail2Ban)防止暴力破解。
四、总结
通过以上步骤,可以全面排查服务器是否存在被入侵的迹象。如果发现异常,应迅速采取隔离和修复措施。同时,做好日常的安全防护(如定期更新系统、关闭不必要的端口和服务、定期备份等)以降低被入侵的风险。