云服务器挖矿怎么防?新手必看的最佳实践指南
云服务器挖矿怎么防?新手必看的最佳实践指南
备案流程一头雾水,很多人以为网站建好就完事了,结果上线没多久就被云服务器挖矿搞得服务器卡顿、流量暴增,甚至被运营商封号。别急,这不是你的错,只是你对服务器安全的认知还停留在“建站=买个空间放网页”这个阶段。云服务器挖矿这种隐藏的威胁,往往在你毫无察觉时悄然发生。本文就是给新手的云服务器挖矿最佳实践,帮你从0到1搞定防护方案。
威胁场景:你的服务器可能正在被用来挖矿
云服务器挖矿,顾名思义,就是有人在你的服务器上安装了挖矿程序,利用你的服务器资源去挖加密货币。这类行为通常悄无声息,服务器的CPU、内存和带宽都会被大量占用,而用户却可能误以为是服务器性能下降或代码优化不当。
挖矿行为的常见迹象
- 服务器CPU占用率长期超过80%;
- 网络带宽突然飙升,流量异常;
- 系统进程出现可疑的
minerd、xmrig、cpuminer等进程; - 系统日志中存在大量“unknown user login”记录;
- 服务器运行缓慢,甚至出现宕机现象。
如果你发现服务器运行状态异常,第一步就是检查是否有可疑进程,第二步就是排查是否被远程入侵,第三步则是着手防护。
漏洞原理:挖矿程序是如何入侵服务器的
云服务器挖矿通常通过漏洞入侵实现,常见入侵途径包括:
- 弱口令漏洞:未修改默认账户密码,或使用简单密码,被暴力破解;
- 未修复的软件漏洞:比如Nginx、MySQL、SSH等服务存在漏洞,未及时更新;
- 第三方插件/脚本漏洞:比如WordPress插件、Discuz程序等被利用;
- 未限制远程访问:比如SSH端口未关闭,或未设置防火墙规则;
- 恶意文件上传:通过上传Webshell(如一句话木马)获取服务器权限。
挖矿脚本的典型表现
# 检查是否存在可疑进程
ps -ef | grep minerd
ps -ef | grep xmrig
ps -ef | grep cpuminer
如果发现上述进程,说明服务器可能已经被入侵,正在被用来挖矿。这时候要立刻处理,否则挖矿程序会持续占用资源,甚至导致服务器被封。
防护方案:从服务器安全配置入手
一、关闭不必要的端口与服务
服务器默认开放了22(SSH)、80(HTTP)、443(HTTPS)等端口,但很多业务不需要所有端口都开放,建议通过防火墙限制访问。
配置iptables或firewalld规则示例:
# 使用iptables限制SSH只允许特定IP访问
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
# 使用firewalld配置规则(CentOS 7+)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" drop'
firewall-cmd --reload
安装并配置fail2ban
Fail2ban 是一款自动阻止暴力破解攻击的工具,可以防止SSH等服务被暴力破解。
# 安装fail2ban(以Ubuntu为例)
sudo apt update
sudo apt install fail2ban
编辑配置文件 /etc/fail2ban/jail.local,加入如下内容:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
二、强制使用SSH密钥登录,禁用root远程登录
使用密码登录是最常见的安全风险,建议强制使用SSH密钥登录,并禁用root用户远程登录。
修改SSH配置:
# 编辑sshd_config
sudo nano /etc/ssh/sshd_config
修改以下内容:
PasswordAuthentication no
PermitRootLogin no
重启SSH服务:
sudo systemctl restart sshd
三、及时更新系统和软件包
定期更新系统和软件包是防止漏洞利用的关键。建议设置自动更新策略。
Ubuntu/Debian系统:
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
CentOS/RHEL系统:
sudo yum update -y
你也可以设置定时任务:
# 每天凌晨3点执行更新
echo "0 3 * * * root apt update && apt upgrade -y" | sudo tee /etc/cron.d/autoupdate
检测与修复:如何发现并清除挖矿程序
一、使用工具扫描服务器
1. 使用rkhunter扫描后门
sudo apt install rkhunter
sudo rkhunter --check
2. 使用chkrootkit检测rootkit
sudo apt install chkrootkit
sudo chkrootkit
二、手动查找可疑文件
挖矿程序通常会藏在以下位置:
/tmp//dev/shm//var/tmp//home/*/.ssh//etc/crontab/etc/rc.local/etc/rc.d/rc.local/etc/xdg/autostart/
你可以使用以下命令查找可疑文件:
find / -name "*.sh" -type f -exec grep -l "minerd" {} \;
find / -name "*.php" -type f -exec grep -l "eval" {} \;
find / -name "*.js" -type f -exec grep -l "eval" {} \;
三、清除挖矿程序
找到挖矿程序后,直接删除相关文件,并删除其在crontab中的任务。
查看crontab任务:
crontab -l
删除可疑任务后,使用以下命令清除挖矿文件:
rm -rf /path/to/minerd
rm -rf /path/to/xmrig
如果发现系统中有cron定时任务被修改,可以检查/etc/crontab和/var/spool/cron/目录。
安全加固清单:新手必看的云服务器安全配置
| 安全措施 | 说明 | 推荐工具 |
|---|---|---|
| 关闭不必要的端口 | 防止未授权访问 | iptables/firewalld |
| 使用SSH密钥登录 | 防止暴力破解 | ssh-keygen |
| 定期更新系统 | 修复已知漏洞 | apt/yum |
| 配置fail2ban | 自动阻止攻击 | fail2ban |
| 安装安全扫描工具 | 检测rootkit、后门等 | rkhunter/chkrootkit |
| 配置防火墙策略 | 限制访问源IP | firewall-cmd |
| 设置定时任务清理日志 | 防止日志被篡改 | crontab |
| 禁用root远程登录 | 防止高权限攻击 | sshd_config |
| 定期备份数据 | 防止数据丢失 | rsync |
| 配置SSH白名单 | 只允许特定IP访问 | sshd_config |
结尾互动钩子
你的服务器有没有被挖矿?你是怎么发现的?欢迎留言说说你的经历,还有个问题想问你:建站花了多少钱?留言说说真实价格。