1. 确认入侵迹象
首先,需要判断服务器是否真的被入侵。常见的入侵迹象包括:
1.1 异常的服务器行为
cpu、内存、带宽异常:
- 使用
top、htop或sar检查是否有异常的进程占用大量资源。 - 使用
iftop或nload检查网络流量,注意是否有异常的外发流量(如流量暴增)。
文件异常:
- 系统文件被篡改,如
/etc/passwd、/etc/shadow或/etc/hosts。 - 可疑的文件被创建在
/tmp、/var/tmp、/dev/shm或其他目录。
服务异常:
- 系统服务被劫持或新服务被添加,常见目标是 ssh、web 服务等。
1.2 日志文件的可疑条目
- 系统日志:
查看 /var/log/auth.log 或 /var/log/secure,检查是否有异常的 ssh 登录尝试,如大量失败登录或未知 ip 登录成功。
grep "failed password" /var/log/auth.log grep "accepted password" /var/log/auth.log
- 登录记录:
通过 last 或 lastb 检查登录历史,注意是否有异常 ip 或时间段的登录。
last lastb
- 其他日志:
检查 web 服务日志(如 nginx 的 /var/log/nginx/access.log)是否有异常访问(如高频 post 请求或尝试访问管理后台)。
1.3 攻击者的痕迹
异常进程:
- 使用
ps aux查看是否有异常进程(如未知的脚本或恶意程序)。 - 配合
lsof -p <pid>查看进程打开的文件,确认可疑进程的活动。
定时任务:
- 检查定时任务是否被篡改:
crontab -l cat /etc/crontab ls /etc/cron.d/
网络连接:
- 检查是否有可疑的网络连接,使用
netstat或ss:
netstat -tulnp ss -tulnp
- 注意是否有连接到陌生 ip,尤其是持续的外发流量。
文件完整性:
- 如果有文件完整性检查工具(如
tripwire或aide),可以验证系统文件是否被篡改。
2. 排查入侵方式
入侵的方式可能多种多样,常见的路径包括:
2.1 弱口令攻击
检查 ssh 登录安全性:
- 是否使用了简单密码(如
123456、root等)被暴力 破解。 - 是否允许了密码登录而非密钥登录。
解决方法:
- 禁用密码登录,仅允许密钥登录:
vi /etc/ssh/sshd_config # 修改以下配置 passwordauthentication no
- 重启 ssh 服务:
systemctl restart sshd
2.2 服务漏洞攻击
- 检查服务版本:
是否有未更新的服务存在已知漏洞,如 apache、nginx、mysql、php 等。
apache2 -v nginx -v mysql --version php -v
- 解决方法:
升级相关服务到最新版本:
apt update && apt upgrade -y # ubuntu/debian yum update -y # centos/rhel
2.3 web 应用漏洞
排查 web 应用安全:
- 检查是否有文件上传漏洞、sql 注入、xss(跨站脚本攻击)等。
- 查看是否有恶意文件被上传到 web 应用目录(如
/var/www/html)。
解决方法:
- 删除恶意文件。
- 修复 web 应用的漏洞,使用 waf(web 应用防火墙)保护。
2.4 后门和恶意程序
查找后门文件:
- 搜索可疑文件或脚本,常见后门文件位置:
find / -type f \( -name "*.sh" -o -name "*.py" -o -name "*.php" \) -mtime -7
- 检查系统是否存在已知的恶意程序:
clamscan -r / # 使用 clamav 扫描全系统
解决方法:
- 删除后门文件,并重启服务器保证新进程未加载恶意代码。
2.5 未授权的端口 暴露
- 检查开放端口:
netstat -tulnp
- 解决方法:
禁用未使用的端口,并在防火墙中限制不必要的外部访问:
ufw allow 22 # 允许 ssh ufw deny 3306 # 禁止 mysql 外部访问 ufw enable # 启用防火墙
3. 解决入侵问题
3.1 隔离服务器
- 确保服务器不再继续被攻击:
临时关闭网络连接或限制入站流量:
iptables -p input drop
或在云服务商管理界面禁用服务器的外网访问。
3.2 删除恶意文件和进程
- 找出并清理恶意文件。
- 杀死可疑的恶意进程:
kill -9 <pid>
3.3 恢复系统文件
- 如果系统文件被篡改,使用备份恢复或重新部署操作系统。
3.4 更新和打补丁
确保操作系统、服务和应用程序都更新到最新版本:
apt update && apt upgrade -y # 对于 ubuntu/debian yum update -y # 对于 centos/rhel
3.5 更改所有密码
- 更改服务器用户、数据库和后台管理系统的密码,确保使用强密码(16 位以上,包含数字、字母、特殊字符)。
4. 加强服务器安全防护
4.1 配置防火墙
使用 ufw 或 iptables 限制访问:
ufw allow 22/tcp ufw deny 3306/tcp ufw enable
4.2 启用 ssh 安全策略
禁用 root 登录:
vi /etc/ssh/sshd_config # 修改为 permitrootlogin no
更改默认 ssh 端口(如改为 2222):
vi /etc/ssh/sshd_config # 修改为 port 2222
4.3 安装安全工具
- fail2ban:自动封禁暴力 破解 ip。
- clamav:扫描系统中的木马和恶意文件。
- rkhunter:检测 rootkit。
4.4 定期备份
- 配置定期备份方案,确保数据可以在遭到攻击后快速恢复:
- 使用
rsync备份文件。 - 结合云服务商的快照功能备份整个系统。
- 使用
5. 总结
被入侵的 linux 服务器需要快速响应,按照以下步骤进行修复和防护:
- 确认入侵迹象,分析入侵路径。
- 隔离服务器,删除恶意文件和进程。
- 修复漏洞,更新系统和服务。
- 加强安全防护,配置防火墙和 ssh 策略。
- 定期备份,确保数据安全。
通过这些手段,可以最大限度地降低安全风险,并确保服务器的长期稳定。
到此这篇关于linux系统云服务器被入侵排查和解决方法的文章就介绍到这了,更多相关linux云服务器被入侵内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论