首先服务器不是我 运营的是个游戏网站,可能被竞争对手的弄了。。。然后我是服务器菜鸟一顿乱折腾,到现在也还没折腾好。
从阿里云日志来看 流量异常是 7 月 15 号开始, 网站被 dos ,服务器根目录出现大量未知缓冲文件。 这是有个昵称 360 白帽子 说网站有漏洞需要修复,上报了乌云没有通过审核(因为朋友没有去提交厂商认证?) 然后直接找的朋友,并且提供了 补丁文件,随后漏洞修复。 然后用 360 服务器杀毒杀了几个木马。 还是没办法访问。 用 iftop 发现流量异常。朋友找我,让我看看,,可是我半点相关安全经验也没有,只能硬着头皮上.
由于晚上和女朋友在一起(秀波恩爱) 没有在电脑旁,晚上 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 访问日志。 这么高的流量 肯定有外网流量作祟。
然后果然查到 来自于 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 点多。扛不住睡觉
早上爬起来继续找原因。整理的下服务器上的 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
1
LT OP 突然想到 php 是门解释型语言,只要 php-fpm 服务一开,就有流量这是不科学的呀。 nginx 我都关掉了。。。难道是 php-fpm 被动了手脚?
|
2
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; } -------------------------- |
3
caola 2016-07-18 02:20:46 +08:00
说实在的防 CC ,可以弄个脚本监控网络的连接数,
哪个 IP 连接数超过设定值,直接防火墙封掉 IP ,也可根据 http-referer 或 user-agent 特点来封 IP , 当然用上 CDN ,对解决这问题还是比较有用的, nginx 499 状态码,表示客户端发起请求后,不等待服务器返回数据,就主动断开了。 |
4
3dwelcome 2016-07-18 02:24:49 +08:00 via Android
你换个 http 端口看看能不能访问呢?也有可能服务器数据被破坏了。
如果只是流量攻击、可以找个高手写个端口代理转发、识别出那些非正常访问的 ip 、总能屏蔽完的。 |
7
msg7086 2016-07-18 02:57:01 +08:00
如果是单个来源 IP 的攻击的话,直接喂防火墙就好了。
再高级点,看下 nginx 的 limit_req 插件,遇到频繁访问的直接肛了。 只要不是流量攻击,什么都好说。 |
8
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) ``` |
9
dxwwym 2016-07-18 08:00:39 +08:00 via iPhone
你朋友的网站好有价值
|
10
ershisi 2016-07-18 08:40:16 +08:00
这种事情应该先抓包不是?
|
11
asp 2016-07-18 08:55:11 +08:00
乌云都没通过审核,那你这厂商肯定也大不到那去,好奇是什么洞?发网址出来看看呗
|
12
winsyka 2016-07-18 11:02:03 +08:00
php ddos
|
15
LT OP @asp jx3pve.com 现在我已经把它停掉了
|
18
LT OP 然后 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 |
19
LT OP 这是一部分 错误日志, 当把网站打开的时候 就狂刷
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/" |
20
suckli 2016-07-18 11:19:18 +08:00
试试 iptable?
|
22
LT OP 错误日志里面有很多条这个
connect() to unix:/dev/shm/php-cgi.sock failed(12: Cannot allocate memory).... 这个是内存泄露的意思么 |
23
realpg 2016-07-18 11:32:07 +08:00
首先你要完全了解你服务器上正在运行的 PHP 程序,读过所有的代码,哪里不抗压心里有数
然后跟着流量走,哪里压爆改哪里 finally, 问问你老板要专业远程运维部…… |
24
zoues 2016-07-18 11:42:07 +08:00
看看日志 链接太多会撑爆内存 所以要改 nginx 配置参数,上次有个老毛子用 xmlrpc 搞我的机器.. 笑死了
|
26
7654 2016-07-18 11:54:07 +08:00
所以说这是个做挂的网站?
|
29
iyaozhen 2016-07-18 12:13:20 +08:00 via Android
ifconfig eth0 down
6666666 |
30
dxwwym 2016-07-18 12:13:55 +08:00 via iPhone
很多福建 adsl 专门被用来干这个,别问我是怎么知道的!
|
31
LT OP 添加一些 ip 到防火墙后, iptables 的规则里面没有相应 ip, iptables -L 的结果是:
DROP all -- bzq-79-178-9-254.red.bezeqint.net anywhere DROP all -- cable-24-135-138-230.dynamic.sbb.rs anywhere DROP all -- 105-226-148-3.east.dsl.telkomsa.net anywhere DROP all -- host-41.238.20.42.tedata.net anywhere DROP all -- 188.228.36.184.dynamic.altibox.net anywhere DROP all -- 91.204.60.100.cn.zp.ua anywhere 这些都是动态 vps 吧? |
32
lijinma 2016-07-18 14:04:42 +08:00
吸屁股是什么意思?
|
33
DT27 2016-07-18 14:11:19 +08:00
要我就网站备份出来直接重装系统重新配置。。。
|
34
lianxiaoyi 2016-07-18 14:20:13 +08:00
居然可以这么屌......服务器挂了还能安心去睡觉.......
|
36
donglemon 2016-07-18 14:55:34 +08:00
游戏网站流量还蛮大的,一般都会用 CDN 啦,运维这是就不用自己发愁了~
目前自助接入的平台还很多,如果既想要加速有想要高防的话,私人或中小网站可以考虑的网宿云的 cloudWss http://www.wangsucloud.com/ |
37
rootit 2016-07-18 15:41:03 +08:00
使用脚本 + nginx 就可以,我的一个 google 代理被被别人代理,我直接写了个脚本封了 楼主可参考我的配置:
nginx.conf 添加 ....... limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn_status 566; ....... vhost 添加: limit_conn addr 2; ##限制每个 IP 同时只能有两个连接 include extra/deny.conf; 脚本: write_ip="" will_deny_ip=$(awk '/566/{print $1}' /app/logs/access_g.log|egrep -v ${write_ip}|grep -v grep) deny_conf="/application/nginx/conf/extra/deny.conf" for ip in $will_deny_ip do if [ `grep -v "^${ip}$" ${deny_conf}|wc -l` == "0" ];then # if [ `/etc/init.d/iptables status|grep ${ip}|wc -l` == "0" ];then # iptables -I INPUT -s ${ip} -j DROP echo "deny $ip;" >>${deny_conf} fi done /application/nginx/sbin/nginx -s reload 脚本中也提供使用 iptables 来限制的步骤,但是 vps 的 iptables 的表的存放地址很小,上千 ip 就存不下了。如果楼主的 vps 可以,建议使用 iptables |
38
Cyrils 2016-07-18 17:47:10 +08:00
发下那个人给你们发的补丁吧
|