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

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

7093 次点击
所在节点    程序员
39 条回复
LT
2016-07-18 11:22:00 +08:00
@suckli 好多 ip 。。
LT
2016-07-18 11:30:47 +08:00
错误日志里面有很多条这个

connect() to unix:/dev/shm/php-cgi.sock failed(12: Cannot allocate memory)....

这个是内存泄露的意思么
realpg
2016-07-18 11:32:07 +08:00
首先你要完全了解你服务器上正在运行的 PHP 程序,读过所有的代码,哪里不抗压心里有数
然后跟着流量走,哪里压爆改哪里

finally, 问问你老板要专业远程运维部……
zoues
2016-07-18 11:42:07 +08:00
看看日志 链接太多会撑爆内存 所以要改 nginx 配置参数,上次有个老毛子用 xmlrpc 搞我的机器.. 笑死了
Silicon
2016-07-18 11:46:32 +08:00
@LT 错误原因似乎是 PHP 没反应……看看 PHP 在干什么
7654
2016-07-18 11:54:07 +08:00
所以说这是个做挂的网站?
LT
2016-07-18 12:06:52 +08:00
@realpg 朋友上班业务搞的网站。。哪来的专业运维。。。 另外一个写前端 js 的懂个毛线 php (笑 cry )
LT
2016-07-18 12:07:26 +08:00
@7654 不是,游戏攻略,资讯类的。。
iyaozhen
2016-07-18 12:13:20 +08:00
ifconfig eth0 down

6666666
dxwwym
2016-07-18 12:13:55 +08:00
很多福建 adsl 专门被用来干这个,别问我是怎么知道的!
LT
2016-07-18 13:53:05 +08:00
添加一些 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 吧?
lijinma
2016-07-18 14:04:42 +08:00
吸屁股是什么意思?
DT27
2016-07-18 14:11:19 +08:00
要我就网站备份出来直接重装系统重新配置。。。
lianxiaoyi
2016-07-18 14:20:13 +08:00
居然可以这么屌......服务器挂了还能安心去睡觉.......
qinxi
2016-07-18 14:23:18 +08:00
@lijinma 这算是问对人了.打守望先锋 (逃
donglemon
2016-07-18 14:55:34 +08:00
游戏网站流量还蛮大的,一般都会用 CDN 啦,运维这是就不用自己发愁了~
目前自助接入的平台还很多,如果既想要加速有想要高防的话,私人或中小网站可以考虑的网宿云的 cloudWss
http://www.wangsucloud.com/
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
Cyrils
2016-07-18 17:47:10 +08:00
发下那个人给你们发的补丁吧
asp
2016-07-18 18:23:11 +08:00
对啊,先看看补丁总可以吧。 @LT

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

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

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

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

© 2021 V2EX