前不久,我和朋友讨论了一个基本的安全问题:朋友拥有的一家公司的服务器集群被黑了,攻击者在机器上安装了远程操作程序——被肉鸡杀死了。但是经过讨论发现,机器最基本的保护都没有。
这就像一个大姑娘在大街上裸奔——即使长得丑,最终也会被炸飞。基于此讨论,本文总结了如何在工程实践中实现服务器集群的“入门级安全防护”。
本文只针对初创公司,没有资源打造完善的运维团队。本文介绍的所有方法都可以由开发人员来完成。
服务器是怎么被攻破的?
上线的服务器,无论是自建机房还是云服务,管理员都不太可能直接接触机器本身。大多数时候,管理者通过网络与服务器进行交流。这涉及到服务器必须打开一些端口来允许这种交互。作为管理员,您通过网络使用服务器的资源,同时也是一个用户。作为攻击者,当然也可以用同样的方式访问主机。毕竟都是门。如果你能进去,他也能。
因此,从攻击者的角度来看,成本最低的攻击方法是用脚本自动扫描,看看一个服务器(IP)开了多少个端口。如果使用默认端口,攻击者可以猜测该端口后面的程序是否易受攻击。比如Web默认端口是80,80后面大概率可能是nginx或者apache。但是如果这些软件的某个版本存在漏洞或者配置不当,就会造成很大的安全隐患。例如,如果apache配置不当,攻击者可以通过使用类似apache沿线的https://foo.com/../../etc这样的URL来访问非常敏感的信息,从而为下一步的权限提升、任意操作和安装黑客工具做好第一步准备。如果攻击者发现3306端口是打开的,他会直接利用弱密码或者特定版本Mysql的漏洞尝试访问Mysql,然后为所欲为。
在众多端口中,SSH服务的安全风险相当高。一旦被攻破,攻击者就可以执行执行者想要的任何命令。而其他协议,比如3306连接,都在mysql的后面,所以攻击者必须根据mysql的通信协议去尝试各种机会。在大多数情况下,他们只能对mysql本身做一些事情,而不能对机器做一些事情。但无论哪种方式,对攻击者来说都将是巨大的损失。然后所有机器都要复位,重装,部署;那么一个公司的声誉就彻底名誉扫地,崩溃了(比如大量用户信息丢失,被篡改)。
所以,认真对待。
那么如何保护呢?
整体思维
保护的整体思想是最大限度地减少生产服务器外部网络的接触面。接收所有管理类对以跳板机为中心的SSH主机的访问。其余的访问只能访问生产机器提供的服务本身。
让我们逐一解释。
受限端口
任何时候,只要是生产服务器,在投入使用之前,必须限制开放端口。如果需要打开任何服务,只需打开该服务所需的端口。例如,对于web服务,只需要打开80/443端口。为此,使用iptable命令删除除必要端口之外的所有网络输入请求。
生产机器之间最好做这种封闭,但是如果运维资源真的很紧张,那就只能限制出口了。毕竟如果攻击者可以随意进入生产机器和SSH的内网环境,就已经是一个突破口了。
切勿向外部网络打开数据库端口。我见过太多病例了。开发者在服务器上安装了mongo或者mysql就不管了。结果整个图书馆都被别人拖了。数据库是内部服务,根本不需要打开。
配置的时候记得不要屏蔽SSH端口进行管理,这样管理员自己就无法访问主机了,很尴尬...
关闭不必要的外部活动连接。
通常,该服务不需要发起外部网络连接。一些例外如支付服务、微信授权服务、第三方数据统计分析服务等。这些情况可以通过IP/域名白名单方便地处理。此外,生产机器应该不能主动发起任何外部网络访问。
修改默认端口
攻击者会试图根据端口猜测其背后的程序是什么。比如对于22端口,攻击者会猜测是SSH,然后尝试弱密码等方法进行攻击。如果您将SSH端口更改为一个随机的端口,比如4328,那么攻击者将不得不花费更多的精力来进行这种猜测。如果袭击者不是针对你的,他就不会浪费力气去猜了。毕竟不设防的机器多的是,他凭什么把你敲死。
其他服务的端口也可以类似对待,比如MySql、Redis等。但值得注意的是,浏览器访问Web时,如果没有在URL中明确写入端口,就会使用80/443,端口也可能影响Cookie的有效性。所以Web的默认端口不方便更改。
学习使用SSH
在*nix环境中,SSH是远程主机访问的标准协议。所有集群都是使用SSH管理的,所以要小心SSH配置。
总是在生产级别使用SSH认证。
SSH支持相当多的认证方法。我认为只有两个可以用于生产:
高强度的公钥-私钥对(如RSA-1024)
麻省理工学院开发的安全认证系统
高强度公钥和私钥由于其方便的配置而被广泛使用。然而,Kerberos需要复杂的配置,这在大型企业中很常见。
不要使用任何基于密码的身份验证方法。如果您使用密码,请记住它。为了记住密码必须有一定的含义,这就为字典攻击提供了条件。而且网络上的密码传输也很不安全。重复输入密码会进一步增加密码被记录的概率。记住,你和服务器之间是互联网,你永远不知道谁在中间。
2015年,有报道称RSA-1024可以被暴力破解,但消耗了相当大的计算资源。目前,RSA-1024对于小公司来说是安全的。但是,您可以轻松地使用RSA-2048来生成公钥-私钥对,这成倍地增加了破解的难度。
RSA-1024是指使用RSA算法生成一个1024位的公私钥对。公钥和私钥对越长,就越难被暴力破解。破解RSA-2048比破解RSA-1024需要大约2.32倍的计算量。详情见此。
作为入口,认证密钥要定期更换。
如果使用公钥-私钥对作为SSH身份验证,建议每季度/每六个月更换一次公钥-私钥对。如果使用Kerberos作为SSH验证,建议每季度/每六个月更改一次密码。之所以这样,是因为更换周期会比常规暴力破解的时间短很多。
对生产资源的访问总是通过跳板机。
也许你有很多服务器主机,但是如果运维资源部门人手不足,无法一一正确配置主机的SSH端口设置,那就只能打开一台机器的SSH端口对外网,允许远程访问。这种对外网开放SSH的机器俗称“跳板机”。
为什么要用跳板机?这是因为所有的安全配置都可以在一台机器上完成。当公司太小时,一个人可以手动访问这台机器上的所有访问权限。
使用跳板机:
可以使用SSH的proxy命令。它允许你通过跳板机访问远程主机。这样整个集群只需要在跳板上打开外网的SSH端口。
可以使用SSH端口转发(本地端口转发和远程端口转发)。该功能允许您用SSH封装其他协议的数据,这样您就可以通过跳板机的SSH端口访问其他主机的mysql、redis、mongodb……...
关于端口转发,这里推荐一个特别好的工具,叫做SSL隧道管理器。
当然,在一个成熟的技术团队中,除了Lead、DBA和Ops之外,其他人不应该有访问生产服务的权限。要做到这一点,需要补充大量的基础设施(比如用Audit和ACL查询生产数据库,方便查询生产服务的日志)。这篇文章主要讲的是小团队低成本的东西,我就不展开了。
确保你的软件来源是安全可靠的。
可能很多人对2015年的XCodeGhost比较熟悉。部分开发者通过非官方渠道下载XCode开发App。被恶意篡改的基础库被打包发布,最终和App一起安装在用户的设备上。这个问题不一定只发生在XCode上。
每天,开发人员使用各种开发工具构建程序,从外联网的各个地方下载各种代码包。如何保证这些事情不出错?最基本的保护就是:一定要从软件提供的官方渠道下载。再慢也要想办法。如果技术手段无法约束,就需要通过行政手段强行禁止国内各种下载网站下的软件开发。
但是如果这个官方服务的访问是断断续续的,或者是带宽被浪费了(带宽成本比较贵),就要考虑自己建“镜像”了。比如Artifactory就是一个很好的工具,可以充当内网的***ven图库。
注意门户相关程序的漏洞
网络请求需要经历从连接到执行的过程。
硬件(固件)
操作系统
系统库(比如openssl)
库(比如jdk和各种依赖jar)
你的程序
时刻关注这个链条中的漏洞信息(新闻/社交网站讨论等。),尤其是你打开端口对应服务的漏洞(比如打开443时要特别注意操作系统、openssl、nginx的漏洞)。很多时候,漏洞是有偏颇的,或者只有学术研究价值的,可以忽略。但如果发现漏洞的讨论非常普遍,说明这个漏洞影响相当大,非常容易被利用。花时间升级和修复它。
如果您正在使用云服务,一般制造商会发布受影响设施的升级公告,这可能会导致服务停止。请留意。
保管好你的秘密钥匙。
使用强认证方法后,记得好好保管。一不留神就把自己的私钥泄露到了公共场所,再强的算法也保护不了你。任何情况下都不要在网络上传递密钥。如果你想传给别人,请用纸和笔。
此外,所有私钥和密码最终都会记录在您自己的计算机上。所以如果你上厕所,别人偷偷上来,从你没上锁的电脑里获取私人信息,那么以上所有保护都没用。因此,离开座位时,请始终锁定屏幕。
如果使用Mac,建议使用“触发角度”功能。配置完成后,按下鼠标时屏幕被锁定。
摘要
本文提到的所有策略都不能保证绝对的安全。而且还有很多安全问题是本文没有考虑的,比如注入攻击、CRSF、带密码的服务配置、内网服务API的ACL、DDoS、社工作弊管理密码、短信炸弹等。
但是根据这篇文章,您的服务器将永远不会被攻击者直接攻破,而不需要扫描成本。攻击者必须为您制定定制的攻击计划才能成功。这样会大大增加攻击成本。如果你的公司还是一个不起眼的小公司,不会引起太多关注——太不划算了。
值得注意的是,创业公司预算再紧,也要有人负责运营维护。哪怕是顶级开发或者***,机器也不能没人管,不管是自建集群还是云服务。只有这个人存在,上面说的这些事情才能做好。
随着业务的扩展,服务的商业价值增加,这导致更多的关注和更多的定向攻击风险。这个时候,或许公司已经有能力雇佣一个专门负责安全的团队,购买防护软件/硬件,或者在安全领域找一个可靠的合作机构来应对更复杂的安全攻击。企鹅1798493198
本文来自柠萌先森ζ投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/626843.html