小编运维出身,虽不敢自诩水平,但日积月累,也发现了许多运维新手的坏习惯极大地削弱了网络的安全性。现杂谈一二,以期对新手有所裨益。
保存密码的框框、自动登录的按钮,抑或是直接在 shell 命令中输入密码,以免随后的交互式登录……这些在个人电脑上尚无可指摘,但若是在服务器上这么做,就可能会埋下严重的安全隐患。
方便自己,方便黑客
网管经常会有一台内网中的服务器,作为各项服务的控制台,上面部署了各种管理软件,例如 XShell、Navicat 等等。在个人电脑上进行管理时,我们通常会保存会话的密码,而不少人将这个习惯也带到了服务器上。渴求方便之心,很容易理解:在登录数据库、打开 SSH 时,只需要选中目标一点,就能自动连上,好不快活。但问题是,假如黑客也拿到了这一台机器呢?
当黑客进行内网渗透的时候,往往会从一台机器入手,最终目标是逐步蚕食整个内网。第一台机器的获得途径有很多:0 day、1 day、病毒木马。作为网管经常直接使用的机器,上面时常会运行各类程序、打开各种网页,无疑增加了被黑客收入囊中的风险。
而一台保存了各种凭据的机器,一旦落入黑客手中,极可能导致内网中大量的服务乃至服务器沦陷。这是黑客最喜闻乐见的,也是网管最不愿看到的一幕。
密码的一百种泄露方式
许多软件都提供了自动保存凭据的功能,有时网管会主动勾上,有时是下意识勾上,有的时候甚至会被自动保存。泄露密码的常见名录,就能列出一长串。
浏览器:当我们登录某个网站的管理后台、某个交换机的 web 管理界面时,是否会贪图方便选择保存密码呢?保存在浏览器的密码可谓是毫无安全性,不要看着 Chrome 在你要显示保存的密码时,会先验证你系统账户的密码,其实网上随便有很多小工具就能直接提取出各种浏览器保存的网站密码。值得注意的是,浏览器的自动补全往往不会征求你的同意才进行记录,而是偷偷地就自动保存了。如果你会在非密码框中输入敏感信息,那么还需要额外的安全措施(例如浏览器的隐身模式)。
历史记录与 Cookies:探寻网管的浏览器历史记录,可以发现其活动规律、探索内网服务,而有的时候 URL 本身也会泄漏机密信息。所以如果你需要访问什么机密的 URL,最好的方法还是启用浏览器的隐身模式。Cookies 也一样,如果网站记住了你的登录身份,那么下一次打开此页面就会自动登录,隐身模式是最好的选择。
远程管理软件:各类的远程管理软件一般也有保存密码的功能。就比如 Windows 自带的远程桌面客户端,其保存的密码可以轻而易举地提取出来。XShell 保存的密码默认经过了加密,但网上已有开源的代码可以将其解密——毕竟它自己也需要解密才能发送到服务器进行认证。VNC 之类的客户端也是同理。
Linux 的 shell 日志:这是很容易遭到忽略的一点——Linux 的大多数 shell 会自动保存你输入的每一行语句!就以最常用的为例,它会在中记录你在 bash 里输入的每一句。有时候,网管就是这样被自己的 bash 出卖了,他们在使用某些命令行工具的时候,直接在 shell 里敲入了密码,被 bash 偷偷记住雪藏了起来。某名拿到 shell 的黑客 cat 了一下用户主目录下的……呜呼哀哉。
密码本:我恨不能理解密码本这种东西为什么会出现在服务器上——一个记录着各个服务器、数据库等服务管理账户和密码的文件。这种东西完全不应该被上传到服务器,但事实情况是,服务器上的这类事物并不罕见……
以上就是最常见的密码被明文记录(或可轻易解密)的地方。安全意识不高的网管往往会在日常运维的过程中在这些地方留下自己的密码,给了入侵者可乘之机。在搜集到密码之后,黑客完全可以进行撞库、提权等操作,如果这个网管还喜欢到处使用相同的密码,那黑客就更爱他了。
少留痕迹,时刻警惕
完全的不留痕迹是不可能的,不能祈求网管每次登录数据库都手动输一次从 IP 到密码的所有信息。安全性与便利性向来是负相关的属性,我们要做到的就是选取一个平衡之地。
首先,保存密码是不应当的(当然更不要保存密码本)。一个网管首先应该是一名熟练的电脑用户,知道自己的哪些行为会被记录,哪些行为会带来风险。就如浏览器无事先提醒的自动补全、Linux 的 shell 日志。再者就是不能贪图方便,可以在运维的途中时时询问自己:如果现在把键鼠的控制权交给黑客,能造成多大的后果?
安全是一种习惯,愿与各位运维共勉。
我们是电子科技大学百度校园菁英俱乐部。
如果你有兴趣与我们一起学习、分享知识,或与我们一起出去见见外面的世界,欢迎加入我们!
请实时关注我们的动态,同时也可以在公众号内留言。
领取专属 10元无门槛券
私享最新 技术干货