安全需求管理是WEB系统整个生命周期的关键开端,在软件开发初期就识别出安全需求能够有效防止后续出现安全问题,同时降低修复成本。WEB系统可能依赖的公共组件包括数据库、消息中间件、其他开源工具等。
这些公共组件可能存在的缺陷和漏洞都会导致WEB系统被攻击,进而大大影响系统的稳定性与可用性。因此公共组件的安全性是进行开发前需要保证的重点环节,开发团队使用的这些组件的各项信息都必须提前与安全团队进行沟通。使用经过安全性检查、认可的工具才能够降低WEB系统自身的安全风险。
本篇文章将以MySql、Redis、Rabbitmq、maven为例介绍一些组件的安全需求分析方法。
1 MySql安全需求
(1)操作系统层面:需要配置防火墙,做好安全审计;需要进行访问控制,使用强密码并定期更换。
(2)数据库层面:关注安全风险,及时更新或者打补丁;数据库本身的账号体系使用强密码并定期更换;遵循最小权限原则,做好权限分离;隔离外网降低风险;支持高可用,主备切换,需要定期备份数据,并确保备份数据可以快速恢复,以避免数据丢失或被攻击者篡改。
(3)程序代码层面:在WEB系统与数据库交互时,需要遵循机密性和完整性的要求,敏感信息加密存储,重要数据做完整性保护;代码执行安全检测,严防恶意传参和SQL注入等。需要正确处理错误和异常情况,以避免出现安全漏洞。
(4)安全审计层面:需要定期进行安全审计。
2 Redis安全需求
(1)设置网络访问权限:使用防火墙禁止外网访问,只允许业务ip访问,需要修改redis.conf进行安全加固。
(2)设置账号执行权限:redis默认是没有开启密码认证的,因此风险极高,需要手动开启认证方法。还要设置单独的账号运行,不可使用root账号,防止攻击者利用redis漏洞控制主机。
(3)修复内置redis漏洞:harbor官方提供的部署方案涉及redis组件,其中内置了redis服务供内部服务使用,并未设置密码,存在安全漏洞。在部署时需要重点关注,使用外置redis替换,降低风险。
3 Rabbitmq安全需求
(1)设置网络访问权限:使用防火墙禁止外网访问,仅开放在业务内网。
(2)修改默认密码:部署后的默认密码是guest,极易被利用。必须删除默认账号重建新账号,且按照规范设置强密码,降低风险。
4 Maven安全需求
(1)定期监测漏洞:定期对maven项目的第三方依赖进行安全检测,确认是否存在漏洞,可以使用Dependency Check对jar包进行漏洞检测。也可以使用OWASP Dependency-Check对插件和公开的漏洞库进行比对,及时识别出漏洞,尽快修复。
(2)及时更新:使用Version Maven Plugin管理插件的补丁更新。
以上是一些常见公共组件安全需求的示例,在WEB系统的开发中,如果有使用到第三方组件,必须先分析其涉及的风险项,制定组件相关的安全需求清单后,按照清单逐一核对,满足安全需求后才能将其引入到WEB系统中。