服务器被黑好蛋疼 ...记录下 随便求助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
LT
V2EX    程序员

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

  •  
  •   LT
    huyinghuan 2016-07-18 01:40:39 +08:00 8105 次点击
    这是一个创建于 3454 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

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

    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

    39 条回复    2016-07-18 18:23:11 +08:00
    LT
        1
    LT  
    OP
       2016-07-18 02:01:40 +08:00
    突然想到 php 是门解释型语言,只要 php-fpm 服务一开,就有流量这是不科学的呀。 nginx 我都关掉了。。。难道是 php-fpm 被动了手脚?
    ZGLHHH
        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;
    }

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

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

    如果只是流量攻击、可以找个高手写个端口代理转发、识别出那些非正常访问的 ip 、总能屏蔽完的。
    LT
        5
    LT  
    OP
       2016-07-18 02:33:48 +08:00
    @caola 是不是直接 封 499 状态码的 ip 来的直接 宁杀错不放过。 我去 google 下相关脚本试试 感谢
    LT
        6
    LT  
    OP
       2016-07-18 02:34:20 +08:00
    @3dwelcome 我试试换个端口
    msg7086
        7
    msg7086  
       2016-07-18 02:57:01 +08:00
    如果是单个来源 IP 的攻击的话,直接喂防火墙就好了。
    再高级点,看下 nginx 的 limit_req 插件,遇到频繁访问的直接肛了。
    只要不是流量攻击,什么都好说。
    Silicon
        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)
    ```
    dxwwym
        9
    dxwwym  
       2016-07-18 08:00:39 +08:00 via iPhone
    你朋友的网站好有价值
    ershisi
        10
    ershisi  
       2016-07-18 08:40:16 +08:00
    这种事情应该先抓包不是?
    asp
        11
    asp  
       2016-07-18 08:55:11 +08:00
    乌云都没通过审核,那你这厂商肯定也大不到那去,好奇是什么洞?发网址出来看看呗
    rzer0
        12
    rzer0  
       2016-07-18 11:02:03 +08:00
    php ddos
    LT
        13
    LT  
    OP
       2016-07-18 11:10:56 +08:00
    @asp 网站 现在一打开就挂
    LT
        14
    LT  
    OP
       2016-07-18 11:11:22 +08:00
    @dxwwym 游戏网址日均 pv 30w-50w 左右
    LT
        15
    LT  
    OP
       2016-07-18 11:11:43 +08:00
    @asp jx3pve.com 现在我已经把它停掉了
    LT
        16
    LT  
    OP
       2016-07-18 11:12:28 +08:00
    @ershisi 抓过包了 很多 ip , status 499. 上了 阿里云的 web 防火墙 还是不行。
    LT
        17
    LT  
    OP
       2016-07-18 11:14:45 +08:00
    @Silicon 我试试 感谢
    LT
        18
    LT  
    OP
       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
        19
    LT  
    OP
       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
        20
    suckli  
       2016-07-18 11:19:18 +08:00
    试试 iptable?
    LT
        21
    LT  
    OP
       2016-07-18 11:22:00 +08:00
    @suckli 好多 ip 。。
    LT
        22
    LT  
    OP
       2016-07-18 11:30:47 +08:00
    错误日志里面有很多条这个

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

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

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

    6666666
    dxwwym
        30
    dxwwym  
       2016-07-18 12:13:55 +08:00 via iPhone
    很多福建 adsl 专门被用来干这个,别问我是怎么知道的!
    LT
        31
    LT  
    OP
       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
        32
    lijinma  
       2016-07-18 14:04:42 +08:00
    吸屁股是什么意思?
    DT27
        33
    DT27  
       2016-07-18 14:11:19 +08:00
    要我就网站备份出来直接重装系统重新配置。。。
    lianxiaoyi
        34
    lianxiaoyi  
       2016-07-18 14:20:13 +08:00
    居然可以这么......服务器挂了还能安心去睡觉.......
    qinxi
        35
    qinxi  
       2016-07-18 14:23:18 +08:00
    @lijinma 这算是问对人了.打守望先锋 (逃
    donglemon
        36
    donglemon  
       2016-07-18 14:55:34 +08:00
    游戏网站流量还蛮大的,一般都会用 CDN 啦,运维这是就不用自己发愁了~
    目前自助接入的平台还很多,如果既想要加速有想要高防的话,私人或中小网站可以考虑的网宿云的 cloudWss
    http://www.wangsucloud.com/
    rootit
        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
    Cyrils
        38
    Cyrils  
       2016-07-18 17:47:10 +08:00
    发下那个人给你们发的补丁吧
    asp
        39
    asp  
       2016-07-18 18:23:11 +08:00
    对啊,先看看补丁总可以吧。 @LT
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2365 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:41 PVG 19:41 LAX 03:41 JFK 06:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86