这博客很久没更新了,一方面是由于手里有两台VPS、一个域名,一直没有想好怎么分配,怕有一天心情不好将这个WP撤掉;另一方面是因为感觉写博客有点浪费时间,平常的日子有点不太愿意写。

今天终于配置好了域名分配、CDN加速等等事项,再也不用担心第一个问题。现在也正好是国庆,也有写博客的时间了,于是就有了这篇东西。

最近踩了不少的坑,但是最令我痛心的是我的两次VPS误操作。为什么用痛心这么严肃的词语呢?因为这两次误操作让我不得不重装VPS的系统,直接使得我暑假对它的经营付诸东流。

先看看第一次误操作吧。记得那天我将VPS上的auth.log下载到了本地,用ruby写了个脚本随便分析了一下,发现居然有1000多个ip曾经试图登录过我的主机,其中欺人最甚的218.92.0.186居然试了1192次……又联想到我的密码很弱、用户名和域名有关系,我果断将ssh的密码登录关闭了,改用公钥登录。增加安全性当然是好事情,但有时候过于追求安全反而会发生一些意想不到的情况。为了进一步提高安全性,我决定将SSH监听的端口由22改到一个大端口上。就在我修改、重启ssh完成后,敲下 ^D的一刹那,我意识到出大事了。为什么呢?我的VPS配置了防火墙,只允许几个端口入站,而我刚刚改成的那个端口,不在此列!

也就是说,这次改动过后,我就无法用SSH登录了。我联系了superVPS的工作人员,得知他们也无法处理,于是只好重装系统……

其实也许有一个解决问题的方法。我的VPS上不是部署了V2RAY吗?如果我们配置了

iptables -A INPUT -i lo -j ACCEPT

那么就是可以使用V2RAY做代理在内部访问ssh的端口的。SSH命令如下:

ssh -o ProxyCommand="nc -X 5 -x localhost:YourPort %h %p" [email protected]

当然上面的-X 5 socks5代理,要是http代理就是其他的选项了。

这就是第一次误操作。如果说第一次误操作的源头是不小心的话,那么第二次误操作的源头恐怕是对于Linux的了解不足了。

再讲故事之前,容我先问一句。能看到这里的读者们想必都是知道在Linux中,..表示上层目录。那么这个“表示”,究竟只是一种“表示”,还是“就是”呢?也许这种问法可能还比较晦涩。读者想必也知道目录就是一种特殊的文件,那么 .. 和上层目录的关系,究竟是一个链接(先不论软硬),还是只是将上层目录的一些特性复制了过来呢?

无论读者有什么答案,我先讲故事。为了传输一些文件,我配置了ftp。作为一个立志于搞安全的人,我绝对不会做直接用日常用户登录家目录的事。因为ftp密码明文传输,非常危险。基于此我创建了一个用户,并且把他的家目录权限设为了755。感觉这似乎不很过瘾,最理想的情况是该用户登陆后不能进入上层目录。那么,为了尽可能简单,我直接输入了

sudo chmod 700 ..

打下这命令后我就感觉事情似乎有点不妙,因为700似乎有点严厉了。事情和我想得一点不差,在敲下这命令后,无论我做什么,都会出现权限错误。最后,我只好重装了系统。

这是为什么呢?参考https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html的说法,..文件是上层文件夹的一个硬链接。这也就是说,他们的权限是一样的,你改变一个的权限,另一个的权限也会跟着改变,而这个时候,我们的上层文件夹,叫做 /

因为这个时候/已经不能读取,所以所有基于/的路径都不能读取,无论我们是想要用su还是sudo su来变成root用户,在这之前bash都要去exec对应的可执行文件,而这个时候就会用到基于/的绝对路径,在开始读取/的时候,我们就会遇到权限错误了。换句话说,除非你^alt+F[1-6]用root来登录,否则都是在做无用功。而VPS是不可能做到这一点的……

这两次误操作,都是由于我过度追求安全,而忽视了其他潜在问题导致的。话又说回到森口阿姨的那句歌词“ 見知らぬ力に流されて 心がどこかへはぐれてく ”,哈哈,对于不很了解的力量,我们还是谨慎使用吧!

发表评论

电子邮件地址不会被公开。 必填项已用*标注