安全的价值之一,便是为业务保驾护航。
建立坚固的壁垒,让攻击者进不来;构建纵深防御体系,让攻击者即使能进来也拿不走。
然而,影响业务的连续性、可用性不止是避免遭受攻击,安全隐患也可能潜伏在应用的上线流程中。
应用发布上线的情况比较多,比如应用申请配置域名,应用申请配置nginx外网转发,应用申请与外部合作伙伴进行接口联调;其中又会涉及到测试环境与生产环境,内部应用访问外部应用与内部应用接口被外部访问...稍有不甚将带来不容忽视的安全隐患:
安全合规,今年上级部门的检查明显有所加强。除了常规的网络安全防护检查,还会涉及到《非经营性互联网信息服务备案管理办法》相关的域名备案信息类检查。
最近公司的一个域名就因为备案信息有问题,导致同一条光纤上的网站都被关停。事件流程大致如下:
某网站信息变更但未及时进行ICP备案信息更新,备案管理系统仍可查到原始备案信息-->上级相关部门发现备案信息不一致-->ICP备案管理系统中备案信息被清空-->上级部门下发指令整改或择日关停-->运营商接收指令并通知用户或直接关停。
简而言之,即:域名实际信息与备案信息不符、域名未注册将会面临网站被封的风险。然而,受影响的可能不止是备案信息不符的网站,还可能导致一大波网站中断服务。据某运营商解释道:关停只能是通过光纤来操作,在接收到指令时将关停不合规网站所在光纤;如果光纤上还有其他站点,将一并受牵连。
在每个新业务上线时,安全组或相关人员检查待发布系统是否正确配置备案信息。一般而言,域名注册指一级域名,比如xxyy.com ;当业务方申请使用二级域名或其他多级域名时,比如zzz.xxyy.com,无需另行备案可直接使用xxyy.com的备案号。
另提供官方的备案信息查询地址:http://www.miibeian.gov.cn/icp/publish/query/icpMemoInfo_showPage.action
最近,应用组的运维同学会收到这样的工单需求:申请将应用通过nginx配置发布到外网。如果没有特别需求,这是很合理的需求。
但是在沟通后,实际需求原来是:该应用需要访问外网。
即:该应用同时具备访问外网与提供外网服务权限(对外开放,增加攻击面)?
专业的人,可能连基本的需求也会弄不清楚。
面对申请对外网开放的操作,作为上线前的最后一道管卡,需要谨慎处之。
同样是来自应用运维同学的反馈:unsafe.war已经挂在线上环境www.xxyy.com下,现在业务方为了调试方便想申请将unsafe.war发布到线上环境www.zzxx.com中。
即:同一个应用将会有多个互联网入口?
面对这种“不安全”的需求,给力的运维同学在通知安全后,毅然决然的对业务方说No。无论是从应用运维合规性,还是从安全性来说,都是不太合理的需求。
不过,此类情况可能会被“绕过”,如果业务方将包名稍加变动或运维同学记不住已经发布过,都将会被当做新应用来进行处理。对于安全方面而言,所有应用上线都应该经过安全评估(落地版SDL),这个“绕过”风险实则是可控可接受的;但是对于运维而言,可能会对日常的运营工作带来挑战。
众所周知,测试环境可能会比较复杂,被攻击的概率也会高于生产系统。但是在实际的工作中,的确有一些应用需要将测试环境发布到公网,进行联调,进行测试。
首先,毫无疑问的是扩大了攻击面;
其次,若业务后续在该域名下申请挂更多war包,运维记不住,将会带来更大的攻击面,更多潜在的安全隐患。
由此可见,安全不仅只对业务有所要求(上线前的安全评估,落地版SDL),对于运维的操作规范或把关仍要求需注意。此外,定期的安全扫描与资产发现,针对外网开放测试环境的安全监控与风险评估,将会是及时准确发现安全问题的重要利器。