2017年在线技术分会——运维/DevOps在线技术峰会上,来自阿里云云平台安全的天公分享了企业上云安全加固最佳实践。他首先分析了云安全存在的问题,然后从网络架构安全、基础设施安全、账号安全、应用安全四个方面详细分享了企业利用阿里云进行云安全加固的具体方法。
以下内容根据直播视频整理而成。
存在问题
我们的系统不管是部署在IDC机房(自建的IDC、租用的IDC),还是部署在阿里云的云平台上,都会面临安全问题。黑客入侵导致的应用漏洞、系统被黑、数据泄露,DDOS攻击导致网站不可用。对于一个企业来说,没有专门的安全团队是没有办法解决上述问题的。在公有云平台,我们可以利用云计算帮我们解决安全方面的风险:利用VPC、云WAF、DDOS防御、入侵检测即可解决前面提到的问题。
如何解决
利用好公有云提供的安全能力,对这些能力进行最优化的使用,相当于有一支专业的安全团队来帮我们解决相关的安全问题。在网络架构安全方面,通过选择VPC 网络结构,而不是经典网络结构可以将系统与外部网络进行隔离;在基础设施安全方面,云计算为我们提供了很多安全防护的能力,比如对ECS(用于系统计算)、RDS(用于数据存储)、OSS(用于文件的离线存储)提供相应的防护;在账号安全方面,保管好钥匙是非常重要的;在应用安全方面,云计算提供的防御手段可以保护好我们的应用。
网络架构安全
网络架构方面,有两种选择。VPC是私有专有网络,从安全角度出发比较推荐此架构,因为它可以和公网有网络隔离的能力。它可以通过VPC专线与企业私网进行打通,比较方便的构建混合云,同时支持自定义的网段,安全组的隔离可以做到企业系统内网隔离的功能。对于经典网络,每个ECS默认都是暴露在公网上,与其他用户都是处于同一平面。如果用经典网络保护自己的话需要使用经典网络提供的安全组的功能来做一些网络防护控制,需要做比较多的工作才能达到与VPC相同的网络安全防护的能力。
基础设施安全
ECS安全(计算)
ECS面临的一些问题包括:远程登录会被黑客暴力破解攻击,开放的服务会被黑客入侵攻击,对外提供的服务可能遭受到DDOS攻击造成服务的不可用。针对上述问题,ECS提供了一些安全防御的能力:在远程登录方面,从互联网登录ECS建议使用ssh key验证,避免通过密码被暴力破解的风险,如果使用密码登录的话,建议使用强密码,12位以上,同时包含数字、大小写字母、特殊符号;端口开放限制方面,建议只开放必要的服务(公网开放80、443等,内网访问全部拒绝),高危端口(MySQL、Redis、Memcache等)只允许本机访问;部分服务设定IP白名单,如SSH、RDP、安全组;DDOS防御方面,阿里云平台默认提供了云盾5G免费清洗,商业用户建议购买云盾高防。
RDS安全(DB)
任何一个系统最终存储的系统的业务数据都是放在RDS数据库中。所以,如果RDS不安全的话,会增加系统数据泄露的风险。RDS存在的安全问题和解决方案如下:
在密码安全方面,由于远程连接需要提供用户名和密码进行远程登录,而应用登录没办法通过类似于证书这种办法进行远程登录,所以建议RDS的远程登录密码必须使用强密码(12位以上,同时包含数字、大小写字母、特殊符号)。在应用中会连接数据库进行数据的读写操作,不可避免的将数据库的连接串和连接密码编码到应用中,应用被入侵之后,密码可能泄露,建议接入阿里云提供的秘钥管理服务KMS。
数据库提供了账号权限控制机制,可以针对不同角色、不同应用建立不同账号,建议针对每个账号设置不同权限,用户可以灵活控制权限。
RDS本身支持VPC网络,在经典网络和VPC网络下都支持设置IP白名单,通过这个功能可限制只允许合法的发起数据库连接的地址连接我们的数据库。
RDS提供了SQL日志审计的功能,在控制台上可以查到所有SQL执行过的语句。用户可以针对日志进行查询和审计,同时云盾的WAF可以防止应用层的SQL注入攻击。
RDS也提供了数据备份和恢复的功能,可以防止在某些特殊的情况下(被黑客攻击或者误操作情况)导致的数据丢失。
OSS安全(存储)
OSS最核心的是提供了访问控制的功能,可以根据不同的bucket设置网络访问控制的策略。建议系统需要对外对用户提供直接访问资源的话,比如页面的js、css样式文件、图片等静态资源,设置对应的bucket为公共读的权限。对于系统比较敏感的文件,数据库的备份和系统的其他不让外部用户下载的数据(比如云上云下的系统数据中转),建议存放在bucket里面,设置为私有的bucket。从安全角度来看,不建议使用公共读写。OSS提供了防盗链功能,防止资源被其他网站盗用,日志审计可以记录文件的上传和下载。
账号安全
系统部署在公有云上之后,需要注意一些其他额外的问题来防止系统不被黑客攻击到。
云账号安全(云计算平台的钥匙)
云账号在阿里云上是通过密码进行登录,必须使用一个比较强的密码策略。由于互联网经常存在一些撞库、爆破攻击,建议定期更换密码,并且与其他网站使用不同密码。此外,还可以利用阿里云提供的二次保护产品,比如保密邮箱、保密问题等在密码丢失之后及时找回。阿里云提供了二次验证的功能,MFA可以绑定手机设备,类似于随机动态口令进行登陆验证。为了防止密码丢失之后黑客对云资源进行高危操作,控制台提供了高危操作短信二次验证功能。阿里云提供的ActionTrail可以用于后期审计。
AK安全(云产品API的钥匙)
对于访问公有云上的云产品,风险主要集中在AK泄露(github上传等场景),导致数据泄露。所以,建议禁用主账号AK,因为主账号AK拥有访问所有产品的权限。采用RAM产品提供的子账号功能,每个子账号分配一个子账号AK,对每个子账号AK通过RAM进行权限划分,授予对应的权限,减少泄露某个AK对全局带来的影响。子账号AK也提供了IP维度的访问控制的功能,即设置发起调用访问来源IP、VPC ID作为访问控制,即使AK泄露也有额外多一层的保护。
应用安全
网站服务可能遭受DDOS攻击导致不可访问,对于某些业务场景来说可能是灾难性的影响, 建议采取SLB+云盾高防组合来保障网络的可用性。云盾提供web攻击防御,WAF云防护可以防御常见的SQL注入、XSS、代码执行等。为了减少黑客的攻击,需要尽量在我们的系统上线之前把应用层的漏洞发现和修复。云盾的态势感知提供了主机基线漏洞扫描、web漏洞扫描。入侵检测功能可以及时发现系统或者主机上存在的webshell和肉鸡行为,防止远程爆破。自主日志分析功能可以将web访问日志记录下来,上传到ODPS供用户离线分析。如果企业需要有高级的安全需求(SRC、众测),或利用白帽子尽快发现系统的漏洞,先知平台可以帮助搭建自己威胁情报的能力。
对于更加个性化的安全需求,比如堡垒机、VPN、业务风控、内容安全、安全托管,阿里云平台上都有对应的产品供选择。
总结
上云之后,企业整个的安全责任是企业和云平台共同承担的。云平台需要提供基础安全功能,给企业赋能安全能力。企业则需要做好安全管理,打好平台安全能力组合拳,以最小化成本,来最大化提升安全水位。