我的一个VPS貌似是被黑了

前一阵给一个朋友买了一个ubuntu的vps,做ssh proxy用。今天收到短信,说上不去了。

然后吧,比较悲剧的是我发现我也连不上这个服务器了。然后只好从grub修改启动方式,进去改root密码。顺便吐槽下,ubuntu的reset root password的方式千变万化,不同的版本必须用不同的方式,你要是想像以前那样,直接加single进入单用户模式,sorry,bye-bye 。。。

进去之后,发现/var/log是被清掉的。root的.ssh目录下的authorized_keys已经被改掉了。真是个悲剧吖。

然后我赶紧把sshd的配置文件review了一遍,把基于密码的登录方式禁用掉,把root的远程登陆也禁用掉。把每个用户的密码挨个改一遍,但是……/etc/passwd下有很多用户的shell不是/sbin/nologin,而是/sbin/sh,比如

games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh

这些东西混杂其中使得我心惊胆颤,不知道这种账户到底能不能通过远程登录。

最后,我觉得这件事情最可怕的在于,我不知道hacker到底改了什么。如果他偷偷替换了某个so,然后趁我最初登录服务器抓狂的时候,把我输入过的密码挨个记录下来并发送走……嗯,这还没完,总之只要这个so还在,他就能继续控制这台服务器(设想他改的是libc.so.x)。而Linux并没有Windows那样的sfc /scan的命令,所以,此时唯一正确的方式就是重装系统。

是这样吗? 第一次被黑,求指点。

p.s.我怀疑是因为我装了一个wordpress,但是从来没搭理它,也没用。但是wordpress的安全漏洞是层出不穷,如果再配合上Linux kernel的某个权限提升漏洞,就嗝屁了。附:我的防火墙设置

# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
DROP all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

另外,我想把ssh也封掉。专门找一个socks proxy,或者http proxy。不晓得http proxy在公网上进行身份认证和密钥交换的过程是否安全。

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥