目录

防篡改与网站安全方案

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. 设计开发注意事项

防篡改与网站安全方案

  1. 什么是威胁建模

威胁建模是一个非常有用的工具,它的核心是像攻击者一样思考。威胁建模可以在产品设计阶段、架构评审阶段或者产品运行时开展。强迫我们站在攻击者的角度去评估产品的安全性,分析产品中每个组件是否可能被篡改、仿冒,是否可能会造成信息泄露、拒绝攻击。威协建模的作用更偏向于确保产品架构、功能设计的安全,无法保证编码的安全,但是输出的威胁建模报告中包含了全面的安全需求,这些安全需求不仅包括大的方案设计,如要认证、鉴权、审计,也可以包括安全细节的实现,比如具体的认证方式、密码使用哪种安全算法存储,使用什么方法生成安全随机数等。所以威胁建模虽不能保证编码的安全,但可以指导研发人员编写出安全的代码,同时也可以辅助渗透测试人员开展安全测试。

简单的来说,威胁建模就是通过结构化的方法,系统的识别、评估产品的安全风险和威胁,并针对这些风险、威胁制定消减措施的一个过程。

  1. 微软STRIDE模型建模方法
  1. 基本步骤

防篡改防重放java 防篡改设备_网络

  1. 六类威胁

STRIDE是从攻击者的角度,把威胁划分成 6 个类别,分别是 Spooling(仿冒)、Tampering(篡改)、Repudiation(抵赖)、InformationDisclosure(信息泄露)、Dos(拒绝服务) 和 Elevation of privilege (权限提升)。

防篡改防重放java 防篡改设备_安全_02

随着全球对隐私保护重视程度的加大,隐私安全也成了产品的一个重要威胁,因此 STRIDE的6个威胁也添加了一项隐私(Privacy),也就变成了ASTRIDE,A代表 Advanced。

  1. 威胁评价

防篡改防重放java 防篡改设备_安全_03

  1. 四个核心组件

STRIDE威胁建模的四个核心组件是:

  1. 处理过程(进程):一个过程执行一个任务时的逻辑表示,例如Web Server 、ftp server、LMT server 。
  2. 数据存储:表示文件、数据库、注册表项、内存等。
  3. 数据流:数据在系统中的移动方向,如网络通讯、共享内存、函数调用等。
  4. 外部交互方(外部实体):能驱动系统业务,但不受系统控制的人和物(如用户、管理员、第三方系统等)。通常表示目标系统的输入、输出。
  1. 确定组件面对的威胁

具体的对应关系如下图所示,并不是每个元素都会面临6个威胁,比如外部实体只有仿冒和抵赖两类威胁,我们不用关心外部实体会不会被篡改、会不会发生信息泄露、以及拒绝服务等,因为外部实体本来就是我们控制范围之外的。

其中进程(处理过程)会面临全部的 6 个威胁,数据存储中 Repudiation(抵赖)是红色,表示只有存储的数据是审计类日志才会有抵赖的风险,存储其他数据的时候无抵赖。

防篡改防重放java 防篡改设备_网络_04

  1. 制定消减措施

制定威胁消减措施,并落入软件安全开发生命周期,确保措施有效落地执行。

常见的消减措施如下:

防篡改防重放java 防篡改设备_数据_05

  1. 网站防止篡改方案
  1. 网站篡改危害     

所谓的网站篡改,就是网站被黑客攻击以后,网站页面被修改成其它内容的网站,不仅影响企业的外在形象,同时也造成了违法,需要承担相应的责任。

目前网站篡改事件不在少数,尤其是公共、大型企业单位网站更容易受到网站篡改攻击。

  1. 网页篡改途径
  1. SQL注入后获取Webshell

黑客通过web应用程序的漏洞,通过SQL语句提交非法的语句到数据,通过系统以及第三方软件的漏洞获取web的控制权限或者服务器权限;

  1. XSS漏洞引入恶意HTML界面

被动的跨站攻击可以在合法的地方引入非法的HTML或者JS代码,从而让访问者“正常”的改变页面内容;例如:校内网蠕虫;

  1. 控制Web服务器

攻击者可能通过服务器或者第三方的漏洞,获取了服务器权限、数据库管理权限进而修改页面。

  1. 阿里云安全产品

阿里云作为世界级头部服务公司,具有全面完整的安全保障与服务能力。

阿里云服务器ECS由阿里云云安全中心提供云服务器ECS的基础安全服务,包括异常登录检测、漏洞扫描、基线配置核查等,帮助用户收集并呈现安全日志和云上资产指纹,主要提供免费版的漏洞检测、安全告警和基线检查服务。用户可以在ECS控制台或者云安全中心看到自己云服务器安全状态。对于企业商业应用还可以购买阿里更为强大的安全服务产品,阿里云安全产品清单如下:

  1. 阿里云基础安全类产品
  1. DDoS高防IP

 DDoS高防IP是针对互联网服务器(包括非阿里云主机)在遭受大流量DDoS 攻击后导致服务不可用的情况下,推出的付费服务,用户可通过配置高防IP ,将攻击流量引流到高防IP,确保源站的稳定可靠。

  1. Web应用防火墙

对网站或者APP的业务流量进行恶意特征识别及防护,将正常、安全的流量回源到服务器。避免网站服务器被恶意入侵,保障业务的核心数据安全,解决因恶意攻击导致的服务器性能异常问题。

  1. 安骑士

安骑士(服务器安全护卫):一款经受百万级服务器稳定性考验的安全加固产品,拥有自动化实时入侵威胁检测、病毒査杀、漏洞智能修复、基线一键核査、网页防篡改等功能,是构建服务器安全防线的统一管理平台。

  1. 态势感知

阿里云态势感知是基于全网大数据的自动化云安全运营中心。支持全面的威胁感知,全面覆盖网络、主机、云产品的安全检测及AK泄露检测;提供一键隔离、一键修复和一键核查的安全闭环能力;集成SLS日志,提供丰富的日志分析和报表。

  1. 云防火墙

集中管理公网IP的访问策略,内置威胁入侵防御模块( IPS ),支持失陷主机检测、主动外联行为的阻断、业务间访问关系可视,是业务上云的第一个网络安全基础设施。

  1. 堡垒机

集中管理资产权限,全程记录操作数据,实时还原运维场景,助力企业用户构建云上统一、安全、高效运维通道;保障云端运维工作权限可管控、操作可审计、合规可遵从。

  1. 阿里云数据安全类产品
  1. SSL证书

SSL证书,在云上签发各品牌数字证书,实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听。并进行统一生命周期管理,简化证书部署,一键分发到CDN、负载均衡、OSS等其它云上产品。

  1. 数据库审计

智能解析数据库通信流量,细粒度审计数据库访问行为,帮助企业精准识别、记录云上数据安全威胁,为云端数据库提供全方位的安全、诊断及维护能力。

  1. 加密服务

加密服务基于国家密码局认证的硬件加密机,提供了云上数据加解密解决方案,用户能够对密钥进行安全可靠的管理,也能使用多种加密算法来对云上业务的数据进行可靠的加解密运算

  1. 敏感数据保护

敏感数据保护是一款发现,分类和保护敏感数据的阿里云安全服务。该服务从海量数据中自动发现,记录并分析敏感数据的使用情况,及时发现数据使用是否存在安全违规并对其进行风险预警,帮助用户防止数据泄露和满足合规要求。

  1. 密钥管理服务

密钥管理服务是一款安全易用的管理类服务。您无需花费大量成本来保护密钥的保密性、完整性和可用性,借助密钥管理服务,您可以安全、便捷的使用密钥,专注于开发您需要的加解密功能场景。

  1. 阿里云安全产品报价参考

防篡改防重放java 防篡改设备_防篡改防重放java_06

  1. 云服务器维护
  1. 网站数据定期备份:定期备份网站数据可以用来恢复被攻击的网站,即便网站被攻击或误操作删除一些网站信息,可随时恢复。为此网站运维,网站备份才是硬道理。
  2. 定期查杀网站病毒:定期查杀网站病毒可以防止黑客的进一步破话或窃取网站数据,也可以及时删除入侵的网站后门漏洞文件
  3. 网站文件权限设置:对网站服务器文件合理的设定权限,比如部分执行程序的重要文件应当取消写入或执行权限,可避免黑客篡改网站数据。
  4. 使用服务器的中的安全软件waf,WAF功能:扫描漏洞拦截漏洞攻击,预防爬虫,防SQL注入、XSS跨站,后门隔离保护、Webshell上传、非法HTTP协议请求、代码审计等。
  5. 安全加固

远程登录业务系统云服务器上,对外网或内网主机进行全方位的基线加固和组件升级,提前修补系统潜在的各种高危漏洞和安全威胁。

  1. 服务器管理规范
  1. 网站程序的版别太低,存在许多漏洞和漏洞:定期升级。
  2. 服务器暗码太简略,易于被扫描破解:咱们建议您修改它。
  3. 空间服务商在安全方面存在问题,很简单遭到跨站点的进犯;对购买服务器的要求并不高,他们不知道它的安全性怎么样。建议购买独立主机。
  4. 破解版的FTP软件,这些破解版很简单走漏FTP账号信息,不建议去一些不知名的网站下载这些工具。
  5. 第三方安装服务组件数据库、redis等密码未设置,或者密码太简单:

如redis被攻破,植入挖矿病毒。

  1. 定期修改用户密码、密码规则有一定的复杂度。
  2. 例行安全检查,定期升级。
  1. 设计开发注意事项

产品设计开发过程对于安全的管控主要包括了安全需求范围、安全功能设计、编码实现、安全测试以及安装部署方案、安全运维等工作。

  1. SQL注入解决办法

对于 SQL 注入,我们可以采取适当的预防措施来保护数据安全。下面是避免 SQL 注入的一些方法。

  1. 过滤输入内容,校验字符串

检测和防护SQL注入攻击;通过过滤SQL危险字符如:“’、select、where、insert、,、;”等等将其进行无害化编码或者转码,从源头遏止;对提交到web服务器的数据报进行过滤检测是否含有“eval、wscript.shell、iframe”等等;

过滤输入内容就是在数据提交到数据库之前,就把用户输入中的不合法字符剔除掉。可以使用编程语言提供的处理函数或自己的处理函数来进行过滤,还可以使用正则表达式匹配安全的字符串。

如果值属于特定的类型或有具体的格式,那么在拼接 SQL 语句之前就要进行校验,验证其有效性。比如对于某个传入的值,如果可以确定是整型,则要判断它是否为整型,在浏览器端(客户端)和服务器端都需要进行验证。

  1. 参数化查询

参数化查询目前被视作是预防 SQL 注入攻击最有效的方法。参数化查询是指在设计与数据库连接并访问数据时,在需要填入数值或数据的地方,使用参数(Parameter)来给值。
MySQL 的参数格式是以“?”字符加上参数名称而成,如下所示:

UPDATE myTable SET c1 = ?, c2 = ?, c3 = ? WHERE c4 = ?

在使用参数化查询的情况下,数据库服务器不会将参数的内容视为 SQL 语句的一部分来进行处理,而是在数据库完成 SQL 语句的编译之后,才套用参数运行。因此就算参数中含有破坏性的指令,也不会被数据库所运行。

有些人认为存储过程可以避免 SQL 注入,存储过程在传统行业里用得比较多,对于权限的控制是有一定用处的,但如果存储过程用到了动态查询,拼接 SQL,一样会存在安全隐患。
下面是在开发过程中可以避免 SQL 注入的一些方法。

  1. 避免使用动态SQL

避免将用户的输入数据直接放入 SQL 语句中,最好使用准备好的语句和参数化查询,这样更安全

  1. 不要将敏感数据保留在纯文本中

加密存储在数据库中的私有/机密数据,这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。

  1. 限制数据库权限和特权

将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

  1. 避免直接向用户显示数据库错误

攻击者可以使用这些错误消息来获取有关数据库的信息。
 

  1. XSS攻击解决办法

过滤输入和转义输出。具体执行的方式有以下几点:

  1. 在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括 URL 、查询关键字、 http 头、 post 数据等。
  2. 在输出方面,在用户输内容中使用标签、标签内的内容不会解释,直接显示。
  3. 严格执行字符输入字数控制。
  4. 在脚本执行区中,应绝无用户输入。
  1. 服务器被控制
  1. linux用户、数据库用户权限:分用户、合理授权、最小化授权。
  2. 服务器客户端设置白名单, 定期安全扫描、及时升级产品相关的安全补丁。
  3. 减少外网端口暴露,尽量只暴露web服务器给外网。
  1. 数据流交互客户端
  1. 客户端敏感数据加密
  2. 使用安全证书
  1. 数据加密
  1. 数据库表敏感信息加密
  2. 日志文件中敏感信息加密
  3. 传输过程HTTPS加密
  1. 安全审计

操作过程记录安全日志、安全审计

  1. 安全测试、安全扫描

除了开发规范,还需要合适的工具来确保代码的安全。我们应该在开发过程中应对代码进行审查,在测试环节使用工具进行扫描,上线后定期扫描安全漏洞。