网站被黑了怎么排查,后门查杀方法
前言
网站突然被挂了黑链、被跳转、内容被篡改?别慌,本文讲网站被黑后怎么排查、怎么找后门、怎么清理。
一、怎么判断被黑了
常见现象
- 网站打开变成别的页面(赌博、色情)
- 网站里多了很多不认识的页面
- 百度搜索显示的标题不对
- 网站突然变慢、CPU飙升
- 后台密码被改了
二、第一步:找最近修改的文件
黑客一般会往网站目录里传后门文件。
找最近24小时修改的文件
find /www/wwwroot/你的站/ -mtime -1 -type f
找最近7天修改的文件
find /www/wwwroot/你的站/ -mtime -7 -type f
找最近修改的PHP文件
find /www/wwwroot/你的站/ -name "*.php" -mtime -7
重点看: 你不认识的、突然冒出来的PHP文件。
三、第二步:找可疑代码
找一句话木马
黑客常用的一句话后门:
<?php @eval($_POST['cmd']); ?>
搜索:
grep -r "eval(" /www/wwwroot/你的站/
grep -r "assert(" /www/wwwroot/你的站/
grep -r "base64_decode(" /www/wwwroot/你的站/
grep -r "str_rot13(" /www/wwwroot/你的站/
找加密的后门
很多后门是加密的:
grep -r "gzinflate(" /www/wwwroot/你的站/
grep -r "gzuncompress(" /www/wwwroot/你的站/
grep -r "strrev(" /www/wwwroot/你的站/
找下载文件的后门
grep -r "file_put_contents(" /www/wwwroot/你的站/
grep -r "fwrite(" /www/wwwroot/你的站/
四、第三步:看Web日志
看Nginx访问日志,找可疑的请求。
看最近的访问
tail -100 /var/log/nginx/access.log
找可疑的POST请求
grep "POST" /var/log/nginx/access.log | tail -50
找访问可疑文件的
grep ".php" /var/log/nginx/access.log | grep "cmd"
五、第四步:看进程
看有没有可疑进程在跑。
ps aux
重点看:
- 不认识的进程
- 占CPU很高的进程
- 从/tmp目录跑的进程
杀掉可疑进程:
kill -9 进程ID
六、第五步:看定时任务
黑客会加定时任务,维持后门。
crontab -l
看有没有不认识的定时任务。
还有系统级的:
cat /etc/crontab
ls /etc/cron.d/
七、第六步:看后门文件特征
常见后门文件名
- shell.php
- cmd.php
- 1.php
- x.php
- upload.php
- webshell.php
看文件权限
后门一般是777权限:
find /www/wwwroot/你的站/ -perm 777
八、清理方法
方法1:删除可疑文件
确认是后门的直接删:
rm -f /www/wwwroot/你的站/可疑文件.php
方法2:重新上传程序
最安全的方法: 备份数据库,重新上传干净的程序,再恢复数据库。
方法3:改所有密码
- 后台密码
- 数据库密码
- FTP密码
- SSH密码
九、预防措施
1. 程序及时更新
WordPress、ThinkPHP等程序有漏洞要及时更新。
2. 上传目录禁执行
location ~* /upload/.*\.php$ {
deny all;
}
3. 定期备份
每天自动备份网站文件和数据库。
4. 改后台地址
不要用默认的admin后台地址。
5. 用安全插件
WordPress可以装Wordfence等安全插件。
十、常见坑
坑1:只删文件不改密码
黑客可能已经留了别的后门,删一个没用。
正确: 删文件 + 改所有密码 + 看定时任务。
坑2:备份也被感染了
备份文件里也有后门,恢复后又被黑了。
解决: 备份也要查。
坑3:只查网站目录
黑客可能在系统里留了后门(比如/tmp目录)。
解决: 也要查系统进程、定时任务。
总结
记住:
- 先找最近修改的文件
- 再找可疑代码(eval、base64_decode)
- 看Web日志和进程
- 看定时任务
- 删后门 + 改所有密码
- 最安全是重新上传干净程序
最快排查:
find /www/wwwroot/你的站/ -name "*.php" -mtime -7
grep -r "eval(" /www/wwwroot/你的站/
遇到问题加QQ23979811 协助处理
Nginx限制IP访问,拉黑恶意爬虫IP配置
前言
网站被恶意爬虫狂刷,服务器CPU跑满?或者有人恶意攻击你的网站?可以用 Nginx 直接把这些 IP 拉黑,不让他们访问。本文讲一下怎么配置 IP 访问控制。
怎么找到恶意 IP
先看 Nginx 访问日志,找出访问最频繁的 IP:
# 统计访问次数最多的前 20 个 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
如果某个 IP 访问量特别大,可能就是恶意爬虫或者攻击。
拉黑单个 IP
在 Nginx 配置里加:
server {
listen 80;
server_name www.example.com;
root /var/www/html;
# 拉黑某个 IP
location / {
deny 192.168.1.100;
allow all;
}
}
被拉黑的 IP 访问会返回 403 Forbidden。
拉黑 IP 段
拉黑整个 C 段
deny 192.168.1.0/24;
就是拉黑 192.168.1.1 到 192.168.1.255。
拉黑多个 IP
deny 192.168.1.100;
deny 192.168.1.101;
deny 192.168.1.102;
白名单模式(只允许某些 IP 访问)
如果想只允许特定 IP 访问(比如后台管理页面):
# 只允许内网 IP 访问 /admin
location /admin {
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
}
其他 IP 访问 /admin 都会返回 403。
用 include 单独管理黑名单
IP 多了不想写在主配置里,可以单独放一个文件:
第一步:创建黑名单文件
vi /etc/nginx/conf.d/blacklist.conf
内容:
deny 192.168.1.100;
deny 192.168.1.101;
deny 10.0.0.0/8;
第二步:在主配置里引入
server {
listen 80;
server_name www.example.com;
root /var/www/html;
# 引入黑名单
include /etc/nginx/conf.d/blacklist.conf;
location / {
try_files $uri $uri/ =404;
}
}
这样以后加黑名单只要改 blacklist.conf 文件,然后重载 Nginx 就行。
对某个目录单独限制
比如只对 /admin 目录限制:
location /admin {
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
root /var/www/html;
index index.php;
}
检查配置并重载
nginx -t
nginx -s reload
用防火墙拉黑(更彻底)
如果想在系统层面拉黑,用 firewall-cmd:
# 拉黑单个 IP
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
# 重新加载
firewall-cmd --reload
或者用 iptables:
iptables -I INPUT -s 192.168.1.100 -j DROP
常见坑
坑1:改了黑名单忘了 reload
加了黑名单,但 IP 还能访问。
原因: Nginx 没重载。
解决:
nginx -s reload
坑2:把自己 IP 拉黑了
测试的时候不小心把自己 IP 也拉黑了,自己也访问不了了。
解决: 先从服务器上用 curl 测试:
curl -I http://127.0.0.1
确认没问题再 reload。
坑3:CDN 后面拿不到真实 IP
用了 CDN 之后,日志里全是 CDN 的 IP,看不到用户真实 IP。
解决: 先配置 Nginx 获取真实 IP:
set_real_ip_from CDN的IP段;
real_ip_header X-Forwarded-For;
这样日志里才能看到用户真实 IP,才能正确拉黑。
总结
| 操作 | 命令/配置 |
|---|---|
| 拉黑单个 IP | deny 192.168.1.100; |
| 拉黑 IP 段 | deny 192.168.1.0/24; |
| 白名单模式 | allow 127.0.0.1; deny all; |
| 单独黑名单文件 | include /etc/nginx/conf.d/blacklist.conf; |
| 重载生效 | nginx -s reload |
提醒: 拉黑 IP 之前先确认是不是真的恶意,别误杀正常用户。
遇到问题加QQ23979811 协助处理