转载

服务器被黑给我上了一课

当你作为一个独立开发者的时候总要面临这样那样的问题,以前认为的小概率事件也总是某个时间点蜂拥而至考验你的耐心,前一阵阵刚刚经历了一次木马惊魂 (参见文章 猎豹清理大师值得我们信任么? ),这次又遇到了服务器被黑。

部署服务器及一般的服务配置管理对于一个写代码的人自然不在话下,但是相对专业的运维人员程序员确少的却是一个安全意识,总以为服务器被攻击是一个小概率的事件。以前是这么考虑的“互联网上的主机那么多偏偏你的主机被黑客盯上? 这不跟重大奖一样么,我有那么幸运么?”虽然前一段时间自己的产品被当成木马已经是中了一次大奖了。所以心存侥幸心理,能省事就省事,先把服务部署起来能用就行,这也倒是符合我的极简主义行事风格。只有经历才能成长,这句话说的一点没错,感谢这个不太聪明的黑客给我上了一课,从此在做任何服务器部署和管理的时候我的脑袋里也多了一根弦儿“安全意识"。 事情是这样的 。。。

前几日像往常一样,访问我的产品网站 http://xbrowser.me , 突然页面出现了404页面未找到。奇怪,怎么会这样?我有检查了一下输入的域名,没错确实是自己的网站。这时我心理突然一惊,倒吸一口冷气,莫非是因为前几天发布了一篇文章 纪念我要废弃的产品功能-一键翻墙 这么快就被GFW注意到了? 给我来了一个DNS劫持? 为了验证这一想法我马上打开了电脑的VPN程序,通过VPN再次访问我的网站(这样可以避免GFW的DNS劫持) 。网页呈现出来的依然是“404页面未找到”,这说明不是DNS劫持的问题,GFW并没有注意到我。这时候我不知道是喜还是忧,但是这究竟是什么原因造成的呢?为了查找真相我立刻登录了自己的服务器。

首先我进入到了webserver根目录查看,果然看到网站文件被删掉了。还好我的程序有备份,这点损失我还是能够承受的,关键黑客的意图是什么呢?篡改主页?没有道理啊,对于我这个一没有知名度二没有影响力的小站点没有意义啊。好吧,不猜测原因了,这个哥们动作那么大我反而要庆幸,否则就凭我那点儿安全意识被当成肉鸡肯定毫无察觉。这时候我赶紧看看都有谁登录了服务器

$ last | more  chengkai pts/0        111.199.208.96   Mon May 18 14:41   still logged in    chengkai pts/4        192.154.200.61   Mon May 18 12:39   still logged in    chengkai pts/4        111.199.208.96   Sun May 10 02:40 - 14:39 (1+11:59)    chengkai pts/4        111.199.208.96   Sat May  9 14:02 - 14:03  (00:00)     chengkai pts/9        111.199.208.96   Sat May  9 00:15 - 02:31  (02:15)

从日志上看,都是我自己的用户名,但是很明显有一个不一样的IP地址来源,我赶紧查了一下ip地址来源, 处理了北京网通的IP另外一个不同的IP来着台湾。很显然黑客已经攻破了我的root密码然后为了掩人耳目使用我的用户名进行线上操作,但是更让人惊愕的是此时这哥们竟然正在线上。

chengkai pts/4        192.154.200.61   Mon May 18 12:39   still logged in

尼玛这真是大姑娘出嫁头一遭啊,这是要现场对决啊。第一闪念我要先把这下家伙给踢下去,可是又一想不行,这家伙已经拿到了我的root权限,被我踢下去很可能会气急败坏的重新登录破坏系统,还是先修改root密码及看看有没有留下什么后门再说,先看看对方有没有启动什么特殊的服务进程。

$ netstat -nl

80、22、1723 这些端口是我知道的webserver,ssh和vpn。剩下的几个大端口号尤其值得怀疑.

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      tcp        0      0 0.0.0.0:1723            0.0.0.0:*               LISTEN      tcp        0      0 127.0.0.1:48988         0.0.0.0:*               LISTEN      tcp        0      0 127.0.0.1:52732         0.0.0.0:*               LISTEN

那么接下来我用"lsof" 命令来看看这几个大的端口号是什么进程启动的?

lsof -i :48988 ruby    13727 chengkai    9u  IPv4 98307068      0t0  TCP localhost:58185 (LISTEN) lsof -i  :52732 ruby    18258 chengkai    9u  IPv4 97802878      0t0  TCP localhost:52732 (LISTEN)

还好都是ruby进程,我猜想应该是passenger 转发http请求到rails的监听端口,为了证明我的猜想我停掉了nginx服务,果然ruby进程占用的端口号没有了。

排除了黑客监听端口的嫌疑后,接下来看看黑客会不会拿我的服务器当"肉鸡"使用,检测这一问题的最好办法就是查看外面的流量出口,这时候我想到了iftop命令。

$iftop -np                                     195kb                               391kb                              586kb                               781kb                          977kb └──────────────────────────────────┴───────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┴─────────────────────────────────── 96.126.127.11:7000                                                          => 101.219.21.98:50726                                                         30.1kb  6.03kb  1.51kb  <=  1.12kb   230b     57b 96.126.127.11:ssh                                                           => 111.199.216.183:63446                                                       5.09kb  5.91kb  6.13kb  <=   416b    291b    250b 96.126.127.11:7000                                                          => 101.219.21.98:54488                                                         25.3kb  5.06kb  1.27kb  <=  1.12kb   230b     58b 96.126.127.11:7000                                                          => 101.219.21.98:36312                                                         24.3kb  4.87kb  1.22kb  <=  1.12kb   230b     58b 96.126.127.11:ssh                                                           => 222.186.21.250:56628                                                        5.20kb  2.61kb   668b  <=  3.14kb  1.44kb   368b 96.126.127.11                                                               => 187.184.246.118                                                             8.39kb  3.65kb  3.65kb  <=     0b      0b      0b 96.126.127.11:7000                                                          => 101.219.21.98:34993                                                         15.8kb  3.17kb   811b  <=  1.13kb   231b     58b 96.126.127.11:7000                                                          => 103.254.203.177:58825                                                       8.54kb  1.71kb   437b 

[1]  [2]  下一页

正文到此结束
Loading...