服务器被黑好蛋疼 ...记录下 随便求助

2016-07-18 01:40:39 +08:00
 LT

前言

首先服务器不是我 运营的是个游戏网站,可能被竞争对手的弄了。。。然后我是服务器菜鸟一顿乱折腾,到现在也还没折腾好。

7 月 15 日 傍晚

从阿里云日志来看 流量异常是 7 月 15 号开始, 网站被 dos ,服务器根目录出现大量未知缓冲文件。 这是有个昵称 360 白帽子 说网站有漏洞需要修复,上报了乌云没有通过审核(因为朋友没有去提交厂商认证?) 然后直接找的朋友,并且提供了 补丁文件,随后漏洞修复。 然后用 360 服务器杀毒杀了几个木马。 还是没办法访问。 用 iftop 发现流量异常。朋友找我,让我看看,,可是我半点相关安全经验也没有,只能硬着头皮上.

7 月 16 日 凌晨

由于晚上和女朋友在一起(秀波恩爱) 没有在电脑旁,晚上 11 点回去以后才开始检查。

iftop 发现


AY13120620245xxx	   => 10.141.xx.xx                 0b   2.xMb  
                          <=                          0b   3x.xMb

删掉修改了下数据, 反正就是上行流量 30 多兆,下行流量 2M 多。 朋友说过先提了工单给阿里云,要查 10.141 这个 ip ,阿里云回复说是本地 ip 非阿里云内网 。 既然这样我就去

ifconfig

看到了两个网卡 一个 eth0,还有个 eth1 。 eth0 的显示的本机地址是 10.xxx 我打开路由

route -n

看看是不是被路由网关在前面被黑过程中有篡改。结果发现了 10.xx 几个路由关联的是 eth0 。我不认识,直接删了,(还好有个好习惯预先截图 route -n 的结果)

然后关闭了 eth0 网卡

ifconfig eth0 down

接着 iftop , 流量不见了。 悲剧的事情来了,朋友说登陆不上 vps 了。没办法重新启用网卡,还有恢复路由表。 我就猜这些应该是阿里云监控相关的 ip ,我想到自己手上也有几个阿里云服务器,就登陆上去瞅了瞅,嗯也有类似的路由表和网卡。 把这个途径排除。

nginx access-log

接着查 nginx 访问日志。 这么高的流量 肯定有外网流量作祟。

然后果然查到 来自于 106.187.97.172/info.php 的 http-referer . 前面来源是各种 ip ,访问的是同一 url, 然后 url 后面待了些参数类似 说网站被黑之类的拼音。

然后百度了下 原来这是 DDOS 攻击 的一种 叫啥子 cc 攻击。 木有办法。修改了 nginx 配置

if ($http_referer ~* ^http:\/\/106\.187\.97\.172.+) {
     return 403;
}

重启,嗯,都是 403 了。 iftop 来自 10.xx 的流量下降到了 16M 左右。 网站还是不能访问。 现在的流量还是到了服务器,要流量不到服务器还得前面加个防火墙,时间到 凌晨 3 点多。扛不住睡觉

7 月 17 号

早上爬起来继续找原因。整理的下服务器上的 nginx 配置。原来朋友自己管理 nginx ,里面配置很多网站,但是把配置文件全部写了到了 nginx.conf 里。一团乱糟糟。强迫症,用 include ,分离到了其他文件夹,也是顺便查是否其他网站也有问题。 结果并没什么卵用。

关掉 php-fpm. 现在把 php 基本服务关掉,总不可能还有流量吧? 结果还真有,不过不多了只有几十 kb , 而且是每隔 10 多秒的样子出现一次。。嘿嘿 我以为我找到真凶了。。同时开 top 和 iftop ,看看流量出现的时候,那个程序被唤醒了。。。结果是坑爹的 阿里云监控。。。卒。。。

折腾到吃午饭 毫无头绪。 下午补觉。到了晚上,重开 php-fpm 服务 去找到朋友要相关阿里云后台登陆信息。结果在吸屁股。。囧。等了好一会。 我跟他说是 cc 攻击 他一起挂过 安全宝 后面因为有一部分域名解析出了问题,就没用了, 现在去开开,因为 安全宝 号称 防 DDOS 攻击和 cc 攻击, 然而 他用的是免费的 并没什么卵用。然后安全宝上面没有价格,需要和客服聊报价,就懒得去弄。

登陆阿里云后台后 ,发现了 有个叫云骑的防火墙 免费的,果断开了 http referer 阻断。结果 数据显示评价 5 分钟 有 15000 次来自于那个 ip 的访问。 这时候 流量下降到了 2M ,但是服务器还是不能访问, nginx 显示状态码 499 。不懂, 求助。

╮(╯▽╰)╭ 想到流量还是到了服务器这样子还是不行,还是得从外面阻隔流量。搜索 cc 攻击防护,看到个 360 的广告, 下面是广告时间(开玩笑),有个 360 网站安全。也说是免费的。 既然安全宝 没啥卵用,死马当活马医, DNS 解析切到了 360. 然后 果然 ,阿里云的防火墙流量下来了,下降到 5 分钟大概 300 多次的样子。 nginx 日志还是显示有流量过来,也就是 没有全阻断,也算不错了 。但是 iftop 的流量没降。 访问网站也是 502.

然后准备到这里来求助。 问题来了

挖掘机技术哪家强?

好吧,,我想问的是, 有没有办法看到 php-fpm 服务 执行了哪些文件入口? 阿里云后台显示 数据库连接有 50 多个,以前网站正常的时候 只有 7 个左右。 现在需要找到哪些 php 文件开启了数据库连接,一个个排除应该就可以解决问题了。。。也许吧。。

后续

另外我是写前端的。。。 php 真心不懂。。求大神教。。 后续更新进展

请允许我 @ 两个人来顶吗。。。 @xuedudu @wvv8oo

7336 次点击
所在节点    程序员
39 条回复
LT
2016-07-18 02:01:40 +08:00
突然想到 php 是门解释型语言,只要 php-fpm 服务一开,就有流量这是不科学的呀。 nginx 我都关掉了。。。难道是 php-fpm 被动了手脚?
ZGLHHH
2016-07-18 02:04:17 +08:00
nginx 搭配 php-fpm 实质是 nginx 通过 FastCGI 反向代理 php-fpm
--------------------------

location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock; #反代地址设置
fastcgi_index index.php; #设置 nginx 首页文件
include fastcgi.conf;
}

--------------------------
caola
2016-07-18 02:20:46 +08:00
说实在的防 CC ,可以弄个脚本监控网络的连接数,
哪个 IP 连接数超过设定值,直接防火墙封掉 IP ,也可根据 http-referer 或 user-agent 特点来封 IP ,
当然用上 CDN ,对解决这问题还是比较有用的,

nginx 499 状态码,表示客户端发起请求后,不等待服务器返回数据,就主动断开了。
3dwelcome
2016-07-18 02:24:49 +08:00
你换个 http 端口看看能不能访问呢?也有可能服务器数据被破坏了。

如果只是流量攻击、可以找个高手写个端口代理转发、识别出那些非正常访问的 ip 、总能屏蔽完的。
LT
2016-07-18 02:33:48 +08:00
@caola 是不是直接 封 499 状态码的 ip 来的直接 宁杀错不放过。 我去 google 下相关脚本试试 感谢
LT
2016-07-18 02:34:20 +08:00
@3dwelcome 我试试换个端口
msg7086
2016-07-18 02:57:01 +08:00
如果是单个来源 IP 的攻击的话,直接喂防火墙就好了。
再高级点,看下 nginx 的 limit_req 插件,遇到频繁访问的直接肛了。
只要不是流量攻击,什么都好说。
Silicon
2016-07-18 03:59:40 +08:00
数据应该已经被拖了吧…… DoS 掩饰攻击流量,后门留存,这套路玩的 6 啊

印象中 MySQL 有一条指令可以查看目前进行的查询:
```
show processlist;

+--------+--------+-----------+--------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+--------+-----------+--------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+
| 708163 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 708174 | test | localhost | test | Query | 2 | Copying to tmp table | select dist.name, dist.filename, count(*)
from orders_header h
inner join orders_detail d on h.ord |
+--------+--------+-----------+--------+---------+------+----------------------+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
```
dxwwym
2016-07-18 08:00:39 +08:00
你朋友的网站好有价值
ershisi
2016-07-18 08:40:16 +08:00
这种事情应该先抓包不是?
asp
2016-07-18 08:55:11 +08:00
乌云都没通过审核,那你这厂商肯定也大不到那去,好奇是什么洞?发网址出来看看呗
winsyka
2016-07-18 11:02:03 +08:00
php ddos
LT
2016-07-18 11:10:56 +08:00
@asp 网站 现在一打开就挂
LT
2016-07-18 11:11:22 +08:00
@dxwwym 游戏网址日均 pv 30w-50w 左右
LT
2016-07-18 11:11:43 +08:00
@asp jx3pve.com 现在我已经把它停掉了
LT
2016-07-18 11:12:28 +08:00
@ershisi 抓过包了 很多 ip , status 499. 上了 阿里云的 web 防火墙 还是不行。
LT
2016-07-18 11:14:45 +08:00
@Silicon 我试试 感谢
LT
2016-07-18 11:16:36 +08:00
然后 ps aux 不知道这么多 进程是否正常

www 26502 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26503 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26504 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26505 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26506 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26507 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26508 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26509 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26510 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26511 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26512 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26513 0.0 0.1 393684 5284 ? S 10:59 0:00 php-fpm: pool www
www 26514 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26515 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26516 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26517 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26519 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26521 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26522 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26523 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26525 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26527 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26528 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26529 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26531 0.0 0.1 393684 5288 ? S 10:59 0:00 php-fpm: pool www
www 26533 0.0 0.1 393684 5292 ? S 10:59 0:00 php-fpm: pool www
www 26535 0.0 0.1 393684 5292 ? S 10:59 0:00 php-fpm: pool www
www 26537 0.0 0.1 393684 5292 ? S 10:59 0:00 php-fpm: pool www
www 26539 0.0 0.1 393684 5292 ? S 10:59 0:00 php-fpm: pool www
www 26540 0.0 0.1 393684 5292 ? S 10:59 0:00 php-fpm: pool www
www 26541 0.0 0.1 393684 5292 ? S 10:59 0:00 php-fpm: pool www
LT
2016-07-18 11:18:45 +08:00
这是一部分 错误日志, 当把网站打开的时候 就狂刷
r from upstream, client: 180.253.54.101, server: www.jx3pve.com, request: "GET http://www.jx3pve.com/ HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-cgi.sock", host: "www.jx3pve.com", referrer: "http://www.jx3pve.com/"
2016/07/18 10:57:23 [error] 26013#0: *8028 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 180.253.54.101, server: www.jx3pve.com, request: "GET http://www.jx3pve.com/ HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-cgi.sock", host: "www.jx3pve.com", referrer: "http://www.jx3pve.com/"
2016/07/18 10:57:24 [error] 26013#0: *8060 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 180.253.54.101, server: www.jx3pve.com, request: "GET http://www.jx3pve.com/ HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-cgi.sock", host: "www.jx3pve.com", referrer: "http://www.jx3pve.com/"
2016/07/18 10:57:24 [error] 26013#0: *8081 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 180.253.54.101, server: www.jx3pve.com, request: "GET http://www.jx3pve.com/ HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-cgi.sock", host: "www.jx3pve.com", referrer: "http://www.jx3pve.com/"
2016/07/18 10:57:24 [error] 26016#0: *8097 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 180.253.54.101, server: www.jx3pve.com, request: "GET http://www.jx3pve.com/ HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-cgi.sock", host: "www.jx3pve.com", referrer: "http://www.jx3pve.com/"
suckli
2016-07-18 11:19:18 +08:00
试试 iptable?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX