目录
防篡改与网站安全方案
1. 什么是威胁建模
2. 微软STRIDE模型建模方法
2.1. 基本步骤
2.2. 六类威胁
2.3. 威胁评价
2.4. 四个核心组件
2.5. 确定组件面对的威胁
2.6. 制定消减措施
3. 网站防止篡改方案
3.1. 网站篡改危害
3.2. 网页篡改途径
3.3. 阿里云安全产品
3.4. 云服务器维护
3.5. 设计开发注意事项
防篡改与网站安全方案
- 什么是威胁建模
威胁建模是一个非常有用的工具,它的核心是像攻击者一样思考。威胁建模可以在产品设计阶段、架构评审阶段或者产品运行时开展。强迫我们站在攻击者的角度去评估产品的安全性,分析产品中每个组件是否可能被篡改、仿冒,是否可能会造成信息泄露、拒绝攻击。威协建模的作用更偏向于确保产品架构、功能设计的安全,无法保证编码的安全,但是输出的威胁建模报告中包含了全面的安全需求,这些安全需求不仅包括大的方案设计,如要认证、鉴权、审计,也可以包括安全细节的实现,比如具体的认证方式、密码使用哪种安全算法存储,使用什么方法生成安全随机数等。所以威胁建模虽不能保证编码的安全,但可以指导研发人员编写出安全的代码,同时也可以辅助渗透测试人员开展安全测试。
简单的来说,威胁建模就是通过结构化的方法,系统的识别、评估产品的安全风险和威胁,并针对这些风险、威胁制定消减措施的一个过程。
- 微软STRIDE模型建模方法
- 基本步骤
- 六类威胁
STRIDE是从攻击者的角度,把威胁划分成 6 个类别,分别是 Spooling(仿冒)、Tampering(篡改)、Repudiation(抵赖)、InformationDisclosure(信息泄露)、Dos(拒绝服务) 和 Elevation of privilege (权限提升)。
随着全球对隐私保护重视程度的加大,隐私安全也成了产品的一个重要威胁,因此 STRIDE的6个威胁也添加了一项隐私(Privacy),也就变成了ASTRIDE,A代表 Advanced。
- 威胁评价
- 四个核心组件
STRIDE威胁建模的四个核心组件是:
- 处理过程(进程):一个过程执行一个任务时的逻辑表示,例如Web Server 、ftp server、LMT server 。
- 数据存储:表示文件、数据库、注册表项、内存等。
- 数据流:数据在系统中的移动方向,如网络通讯、共享内存、函数调用等。
- 外部交互方(外部实体):能驱动系统业务,但不受系统控制的人和物(如用户、管理员、第三方系统等)。通常表示目标系统的输入、输出。
- 确定组件面对的威胁
具体的对应关系如下图所示,并不是每个元素都会面临6个威胁,比如外部实体只有仿冒和抵赖两类威胁,我们不用关心外部实体会不会被篡改、会不会发生信息泄露、以及拒绝服务等,因为外部实体本来就是我们控制范围之外的。
其中进程(处理过程)会面临全部的 6 个威胁,数据存储中 Repudiation(抵赖)是红色,表示只有存储的数据是审计类日志才会有抵赖的风险,存储其他数据的时候无抵赖。
- 制定消减措施
制定威胁消减措施,并落入软件安全开发生命周期,确保措施有效落地执行。
常见的消减措施如下:
- 网站防止篡改方案
- 网站篡改危害
所谓的网站篡改,就是网站被黑客攻击以后,网站页面被修改成其它内容的网站,不仅影响企业的外在形象,同时也造成了违法,需要承担相应的责任。
目前网站篡改事件不在少数,尤其是公共、大型企业单位网站更容易受到网站篡改攻击。
- 网页篡改途径
- SQL注入后获取Webshell
黑客通过web应用程序的漏洞,通过SQL语句提交非法的语句到数据,通过系统以及第三方软件的漏洞获取web的控制权限或者服务器权限;
- XSS漏洞引入恶意HTML界面
被动的跨站攻击可以在合法的地方引入非法的HTML或者JS代码,从而让访问者“正常”的改变页面内容;例如:校内网蠕虫;
- 控制Web服务器
攻击者可能通过服务器或者第三方的漏洞,获取了服务器权限、数据库管理权限进而修改页面。
- 阿里云安全产品
阿里云作为世界级头部服务公司,具有全面完整的安全保障与服务能力。
阿里云服务器ECS由阿里云云安全中心提供云服务器ECS的基础安全服务,包括异常登录检测、漏洞扫描、基线配置核查等,帮助用户收集并呈现安全日志和云上资产指纹,主要提供免费版的漏洞检测、安全告警和基线检查服务。用户可以在ECS控制台或者云安全中心看到自己云服务器安全状态。对于企业商业应用还可以购买阿里更为强大的安全服务产品,阿里云安全产品清单如下:
- 阿里云基础安全类产品
- DDoS高防IP
DDoS高防IP是针对互联网服务器(包括非阿里云主机)在遭受大流量DDoS 攻击后导致服务不可用的情况下,推出的付费服务,用户可通过配置高防IP ,将攻击流量引流到高防IP,确保源站的稳定可靠。
- Web应用防火墙
对网站或者APP的业务流量进行恶意特征识别及防护,将正常、安全的流量回源到服务器。避免网站服务器被恶意入侵,保障业务的核心数据安全,解决因恶意攻击导致的服务器性能异常问题。
- 安骑士
安骑士(服务器安全护卫):一款经受百万级服务器稳定性考验的安全加固产品,拥有自动化实时入侵威胁检测、病毒査杀、漏洞智能修复、基线一键核査、网页防篡改等功能,是构建服务器安全防线的统一管理平台。
- 态势感知
阿里云态势感知是基于全网大数据的自动化云安全运营中心。支持全面的威胁感知,全面覆盖网络、主机、云产品的安全检测及AK泄露检测;提供一键隔离、一键修复和一键核查的安全闭环能力;集成SLS日志,提供丰富的日志分析和报表。
- 云防火墙
集中管理公网IP的访问策略,内置威胁入侵防御模块( IPS ),支持失陷主机检测、主动外联行为的阻断、业务间访问关系可视,是业务上云的第一个网络安全基础设施。
- 堡垒机
集中管理资产权限,全程记录操作数据,实时还原运维场景,助力企业用户构建云上统一、安全、高效运维通道;保障云端运维工作权限可管控、操作可审计、合规可遵从。
- 阿里云数据安全类产品
- SSL证书
SSL证书,在云上签发各品牌数字证书,实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听。并进行统一生命周期管理,简化证书部署,一键分发到CDN、负载均衡、OSS等其它云上产品。
- 数据库审计
智能解析数据库通信流量,细粒度审计数据库访问行为,帮助企业精准识别、记录云上数据安全威胁,为云端数据库提供全方位的安全、诊断及维护能力。
- 加密服务
加密服务基于国家密码局认证的硬件加密机,提供了云上数据加解密解决方案,用户能够对密钥进行安全可靠的管理,也能使用多种加密算法来对云上业务的数据进行可靠的加解密运算
- 敏感数据保护
敏感数据保护是一款发现,分类和保护敏感数据的阿里云安全服务。该服务从海量数据中自动发现,记录并分析敏感数据的使用情况,及时发现数据使用是否存在安全违规并对其进行风险预警,帮助用户防止数据泄露和满足合规要求。
- 密钥管理服务
密钥管理服务是一款安全易用的管理类服务。您无需花费大量成本来保护密钥的保密性、完整性和可用性,借助密钥管理服务,您可以安全、便捷的使用密钥,专注于开发您需要的加解密功能场景。
- 阿里云安全产品报价参考
- 云服务器维护
- 网站数据定期备份:定期备份网站数据可以用来恢复被攻击的网站,即便网站被攻击或误操作删除一些网站信息,可随时恢复。为此网站运维,网站备份才是硬道理。
- 定期查杀网站病毒:定期查杀网站病毒可以防止黑客的进一步破话或窃取网站数据,也可以及时删除入侵的网站后门漏洞文件
- 网站文件权限设置:对网站服务器文件合理的设定权限,比如部分执行程序的重要文件应当取消写入或执行权限,可避免黑客篡改网站数据。
- 使用服务器的中的安全软件waf,WAF功能:扫描漏洞拦截漏洞攻击,预防爬虫,防SQL注入、XSS跨站,后门隔离保护、Webshell上传、非法HTTP协议请求、代码审计等。
- 安全加固
远程登录业务系统云服务器上,对外网或内网主机进行全方位的基线加固和组件升级,提前修补系统潜在的各种高危漏洞和安全威胁。
- 服务器管理规范
- 网站程序的版别太低,存在许多漏洞和漏洞:定期升级。
- 服务器暗码太简略,易于被扫描破解:咱们建议您修改它。
- 空间服务商在安全方面存在问题,很简单遭到跨站点的进犯;对购买服务器的要求并不高,他们不知道它的安全性怎么样。建议购买独立主机。
- 破解版的FTP软件,这些破解版很简单走漏FTP账号信息,不建议去一些不知名的网站下载这些工具。
- 第三方安装服务组件数据库、redis等密码未设置,或者密码太简单:
如redis被攻破,植入挖矿病毒。
- 定期修改用户密码、密码规则有一定的复杂度。
- 例行安全检查,定期升级。
- 设计开发注意事项
产品设计开发过程对于安全的管控主要包括了安全需求范围、安全功能设计、编码实现、安全测试以及安装部署方案、安全运维等工作。
- SQL注入解决办法
对于 SQL 注入,我们可以采取适当的预防措施来保护数据安全。下面是避免 SQL 注入的一些方法。
- 过滤输入内容,校验字符串
检测和防护SQL注入攻击;通过过滤SQL危险字符如:“’、select、where、insert、,、;”等等将其进行无害化编码或者转码,从源头遏止;对提交到web服务器的数据报进行过滤检测是否含有“eval、wscript.shell、iframe”等等;
过滤输入内容就是在数据提交到数据库之前,就把用户输入中的不合法字符剔除掉。可以使用编程语言提供的处理函数或自己的处理函数来进行过滤,还可以使用正则表达式匹配安全的字符串。
如果值属于特定的类型或有具体的格式,那么在拼接 SQL 语句之前就要进行校验,验证其有效性。比如对于某个传入的值,如果可以确定是整型,则要判断它是否为整型,在浏览器端(客户端)和服务器端都需要进行验证。
- 参数化查询
参数化查询目前被视作是预防 SQL 注入攻击最有效的方法。参数化查询是指在设计与数据库连接并访问数据时,在需要填入数值或数据的地方,使用参数(Parameter)来给值。
MySQL 的参数格式是以“?”字符加上参数名称而成,如下所示:
UPDATE myTable SET c1 = ?, c2 = ?, c3 = ? WHERE c4 = ?
在使用参数化查询的情况下,数据库服务器不会将参数的内容视为 SQL 语句的一部分来进行处理,而是在数据库完成 SQL 语句的编译之后,才套用参数运行。因此就算参数中含有破坏性的指令,也不会被数据库所运行。
有些人认为存储过程可以避免 SQL 注入,存储过程在传统行业里用得比较多,对于权限的控制是有一定用处的,但如果存储过程用到了动态查询,拼接 SQL,一样会存在安全隐患。
下面是在开发过程中可以避免 SQL 注入的一些方法。
- 避免使用动态SQL
避免将用户的输入数据直接放入 SQL 语句中,最好使用准备好的语句和参数化查询,这样更安全
- 不要将敏感数据保留在纯文本中
加密存储在数据库中的私有/机密数据,这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。
- 限制数据库权限和特权
将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。
- 避免直接向用户显示数据库错误
攻击者可以使用这些错误消息来获取有关数据库的信息。
- XSS攻击解决办法
过滤输入和转义输出。具体执行的方式有以下几点:
- 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括 URL 、查询关键字、 http 头、 post 数据等。
- 在输出方面,在用户输内容中使用标签、标签内的内容不会解释,直接显示。
- 严格执行字符输入字数控制。
- 在脚本执行区中,应绝无用户输入。
- 服务器被控制
- linux用户、数据库用户权限:分用户、合理授权、最小化授权。
- 服务器客户端设置白名单, 定期安全扫描、及时升级产品相关的安全补丁。
- 减少外网端口暴露,尽量只暴露web服务器给外网。
- 数据流交互客户端
- 客户端敏感数据加密
- 使用安全证书
- 数据加密
- 数据库表敏感信息加密
- 日志文件中敏感信息加密
- 传输过程HTTPS加密
- 安全审计
操作过程记录安全日志、安全审计
- 安全测试、安全扫描
除了开发规范,还需要合适的工具来确保代码的安全。我们应该在开发过程中应对代码进行审查,在测试环节使用工具进行扫描,上线后定期扫描安全漏洞。