读发布!设计与部署稳定的分布式系统(第2版)笔记27_安全性下

news2024/11/18 3:40:20

 

1. 安全配置出现失误

1.1. 攻击者已经通过使用开箱默认的admin登录名和密码,进入了不少应用程序、网络设备和数据库

1.2. 出现配置的遗漏

1.2.1. 服务器默认启用不需要的特性

1.2.1.1. 我们忘记(或不知道)禁用它们,从而开放了这些未经配置和未被监控的系统入口点

1.3. 禁止在生产服务器上使用默认密码

1.4. 服务器监听了过多的内容

1.4.1. 将内部管理流量分离到独立于公共流量的专用网卡上,从而立即提高信息安全性

1.4.2. 将内部管理接口拆分出来,就能缩小攻击面

1.5. 确保每个管理员都使用个人账户,而不是组账户

1.6. 不能将示例应用程序投入生产环境

1.6.1. 某些服务器附带的示例应用程序的安全保护意识极差,并且可能会过时

2. 敏感数据泄露

2.1. 泄露并不意味着黑客破解了你的秘密

2.2. 不要存储不需要的敏感信息

2.3. 使用HSTS机制,这比优先尝试HTTPS的做法更安全

2.3.1. 它会阻止客户端通过不安全的协议使用网络

2.4. 停止使用SHA-1,再也不要用了,这个加密方法已经不够安全了

2.5. 避免明文形式存储密码

2.6. 确保敏感数据在数据库中已被加密

2.7. 在解密数据时,先获得用户而不是服务器的授权

2.8. 不要将解密密钥随便放在攻击者可以找到的位置

2.8.1. 可以考虑使用HashiCorp公司的Vault产品,相比KMS,它能管理更多种类的“秘密”

2.9. 无论选择哪种工具,都不要浅尝辄止,要将该工具作为整体安全开发过程中的一部分充分利用

3. 防范攻击不足

3.1. 如果生产环境的服务被防火墙保护起来,那么它就应该是安全的,不会受到攻击者的侵袭

3.1.1. 必须始终假设攻击者能无限制地访问防火墙后面的其他机器,可以随心所欲地对服务器发出访问请求,比如对未授权数据的格式良好的请求,以及旨在让服务本身陷入险境的格式错误的请求

3.2. 为所有服务提供允许访问的消费者白名单不太可能实现

3.3. API网关是一道有用的防线

3.3.1. 可以通过其API密钥屏蔽调用者

3.3.2. 可以抑制调用者的请求速率

3.4. 如果服务位于能够控制的数据中心内,那么网络设备就会有所帮助

3.4.1. 应用层防火墙(也称为“第7层”防火墙)可以检测并屏蔽可疑调用,也可以根据日常熟知的攻击特征阻止探测行为

4. CSRF

4.1. cross-site request forgery

4.1.1. 伪跨站请求

4.2. CSRF攻击始于另一个站点

4.2.1. 攻击者把带有JavaScript、CSS或HTML的网页当作“陷阱”,其中包含指向目标系统的恶意链接

4.2.2. 当倒霉的用户使用浏览器通过这个陷阱页面访问目标系统时,目标系统认为这是该用户的有效请求

4.2.2.1. 这个用户就成了攻击者的傀儡

4.2.3. 用户浏览器发送的所有cookie(包括会话cookie)都是正常的

4.2.3.1. 用户仅是看似拥有登录会话,并不意味着该请求是用户真正的意图

4.3. 确保你的网站不能用来发起CSRF攻击

4.4. 确保具有副作用的请求(例如更改密码、更新邮寄地址或购买)使用反CSRF攻击的令牌

4.4.1. 大多数框架已实现了这一功能,但你可能需要在服务的配置中启用CSRF保护

4.5. 可以使用相对较新的SameSite(同站点)属性来强化cookie策略

4.5.1. 同站点cookie这一功能并不是零成本的,它可能会要求你更改会话管理方法

4.6. 建议使用一对cookie

4.6.1. 会话“读取”cookie:不要求访问必须来自同站点,允许HTTP GET请求

4.6.2. 会话“写入”cookie:严格要求访问必须来自同站点,状态改变的请求需要如此设置

5. 使用含有已知漏洞的组件

5.1. 一旦知道存在漏洞,就应该更新系统的补丁版本并重新部

5.2. 让应用程序保持最新状态,这意味着要处理依赖关系树

5.3. 许多漏洞从未发布出来

5.3.1. 有些漏洞只在项目的邮件列表中或问题跟踪器上讨论过,但没有相应的CVE,所以也应该关注这些漏洞

6. API保护不足

6.1. REST和富客户端的崛起将API提升为主要的架构关注点

6.2. API难以区分攻击者

6.2.1. API就是供程序使用的,而攻击工具也是程序,这一点让保护API变得更加困难

6.3. 关键点

6.3.1. 要做好舱壁隔离

6.3.1.1. 如果一个客户的授权证书被盗,那很糟糕

6.3.1.2. 如果攻击者可以使用这个客户的证书获取其他客户的数据,那简直是灾难

6.3.2. API必须对开放出去的链接进行授权,然后当请求返回时还要重新对该请求授权

6.3.3. API应该使用最安全的通信方式

6.3.3.1. 对于面向公众的API,这意味着要使用TLS

6.3.3.2. 一定要将其配置为拒绝协议降级

6.3.3.3. 保持根证书颁发机构文件的最新状态

6.3.3.3.1. 损害证书行为发生的频率会超出你的想象

6.3.3.4. 企业对企业的API最好使用双向证书,这样每个端点都能验证另一端的安全性

6.3.4. 无论使用哪种数据解析器(JSON、YAML、XML、Transit、EDN、Avro、Protobufs或莫尔斯码等),都要确保解析器能够抵御恶意的输入

6.3.5. 用Fuzz方法测试API尤其重要

6.3.5.1. API应该尽快响应更多的请求,这样的测试能帮助API抵御自动化破解器的攻击

7. 最小特权原则

7.1. 要求进程只具有完成其任务所需的最低特权级别

7.2. 任何应用程序服务都须如此,应该以非管理员的用户身份工作

7.3. root级别软件中的任何漏洞都会自动成为关键问题

7.3.1. 如果攻击者破解了shell来获得root权限,那么确保服务器安全的唯一方法是重新格式化硬盘并重新安装系统

7.4. 容器为系统的彼此隔离创造了很好的条件

7.4.1. 将容器镜像视为“易腐货物”

7.4.2. 务必为那些已经过了开发活跃期的应用程序配置定时构建任务

7.4.2.1. 这样做可以修补安全漏洞

8. 密码的配置

8.1. 以密码安全的绝对最低标准来看,生产数据库的密码应独立于其他任何配置文件单独保存,尤其要放在软件安装目录之外

8.2. 包含密码的文件应仅对密码所有者可读,这个密码所有者应该是应用程序用户

8.3. 密码保管库将密码保存在加密文件中,这将安全问题降低到了保护单个加密密钥,而不是保护多个文本文件

8.4. 在任何情况下,尽快删除内存中的密钥都非常重要

9. 安全即持续的过程

9.1. 保证安全是一项持续的活动,必须是系统架构的一部分,关于加密通信、静态数据加密、身份验证和鉴权的关键决策

9.2. 用新API的新技术将会存在漏洞,但这并不意味着应该放弃其提供的优势

9.3. 意味着你需要及时给它打补丁,确保可以立即重新部署服务器

9.4. 既要考虑组件级行为,也要考虑整个系统的行为

9.5. 两个安全的组件混合在一起,不一定能构成一个安全的系统

9.6. 攻击者眼中最常见的价值目标是用户数据,特别是信用卡信息

9.7. 工业间谍活动真实存在,这些活动有时看起来毫无杀伤力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 多线程编程导论(下)

文章目录 参考资料线程安全(续)门闩与屏障——latch 对象与 barrier 对象门闩(latch)屏障(barrier) 一次性调用——once_flag 对象与 call_once 函数 异步任务未来与承诺——future 对象与 promise 对象fut…

Ubuntu网络设置之固定IP详解

尊敬的家人们,欢迎观看我的文章!今天,我们将为您介绍Ubuntu22.04操作系统中固定IP的设置方法,帮助您更好地管理网络连接并提高网络稳定性。 什么是固定IP? 在网络中,IP地址是设备在网络上的唯一标识。通常…

用html+javascript打造公文一键排版系统9:主送机关排版

一、主送机关的规定 公文一般在标题和正文之间还有主送机关,相关规定为: 主送机关 编排于标题下空一行位置,居左顶格,回行时仍顶格,最后一个机关名称后标全角冒号。如主送机关名称过多导致公文首页不能显示正文时&…

哨兵模式原理

哨兵模式原理 一、定义二、作用三、故障转移机制主节点的选举: 哨兵的模式一、哨兵对主从复制集群进行监控二、哨兵与哨兵之间互相进行监控三、监控的目的 故障切换的原理?cluster模式cluster模式同步两种方式 一、定义 哨兵(sentinel):是一个分布式系统,用于对主…

pytest 入门

1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…

MATLAB | 如何绘制这样的描边散点图?

part.-1 前前言 最近略忙可能更新的内容会比较简单,见谅哇,今日更新内容: part.0 前言 看到gzhBYtools科研笔记(推荐大家可以去瞅瞅,有很多有意思的图形的R语言复现!!)做了这样一张图: 感觉很…

RK3588平台开发系列讲解(LCD篇)FrameBuffer 操作步骤

文章目录 一、FrameBuffer 介绍二、屏幕参数信息的获取三、刷新 FrameBuffer四、FrameBuffer 例程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在应用程序中,操作/dev/fbX 的一般步骤进行介绍。 打开 FrameBuffer 设备;获取 FrameBuffer 设备的固定信息和可变信息;…

生成对抗网络DCGAN学习实践

在AI内容生成领域,有三种常见的AI模型技术:GAN、VAE、Diffusion。其中,Diffusion是较新的技术,相关资料较为稀缺。VAE通常更多用于压缩任务,而GAN由于其问世较早,相关的开源项目和科普文章也更加全面&#…

809协议服务端程序解码程序

809协议服务端程序解码程序 目录概述需求: 设计思路实现思路分析1.服务端2.code: 拓展实现性能参数测试:1.功能测试 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip…

【LeetCode】探索杨辉三角模型

一、题目描述 力扣原题 首先我们要来了解一下题目本身在说些什么,通过下方的动图我们可以更加清楚地看到杨辉三角是怎样一步步生成的。给到的示例中我们通过输入杨辉三角的行数,然后通过计算得到这个杨辉三角的每一行是什么具体的数值 二、模型选择 首先…

大数据技术之ClickHouse---入门篇---介绍

星光下的赶路人star的个人主页 一棵树长到它想长到的高度之后,它才知道怎样的空气适合它 文章目录 1、Clickhouse入门1.1 什么是Clickhouse1.1.1 Clickhouse的特点1.1.1.1 列示储存1.1.1.2 DBMS的功能1.1.1.3 多样化引擎1.1.1.4 高吞吐写入能力1.1.1.5 数据分区与线…

JAVA SE -- 第十三天

(全部来自“韩顺平教育”) 集合 一、集合框架体系 集合主要是两组(单列集合、双列集合) Collection接口有两个重要的子接口List 、Set,它们的实现子类都是单列集合 Map接口的实现子类是双列集合,存放的…

进阶C语言——再识结构体

1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 2 结构的声明 struct tag {member-list; }variable-list;如果下面来描述一个学生的话,我们会想到学生的姓名,成绩,性别等&#…

【序列化工具JdkSerialize和Protostuff】

序列化工具对比 JdkSerialize:java内置的序列化能将实现了Serilazable接口的对象进行序列化和反序列化, ObjectOutputStream的writeObject()方法可序列化对象生成字节数组 Protostuff:google开源的protostuff采用更为紧凑的二进制数组&#…

1-linux下mysql8.0.33安装

在互联网企业的日常工作/运维中,我们会经常用到mysql数据库,而linux下mysql的安装方式有三种: 1.mysql rpm安装 2.mysql二进制安装 3.mysql源码安装 今天就为大家讲讲linux下mysql8.0.33版本rpm方式的安装。 1.前提 1.1.系统版本 Cent…

目标识别数据集互相转换——xml、txt、json数据格式互转

VOC数据格式与YOLO数据格式互转 1.VOC数据格式 VOC(Visual Object Classes)是一个常用的计算机视觉数据集,它主要用于对象检测、分类和分割任务。VOC的标注格式,也被许多其他的数据集采用,因此理解这个数据格式是很重…

Pytest+Allure+Excel接口自动化测试框架实战

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发…

C#文件操作从入门到精通(1)——INI文件操作

点击这里:微软官方文档查看writePrivateProfileString函数定义 常见错误: 1、中文路径写入失败,为啥? 2、文件不是全路径,只有文件名也会写入失败: 3、GetLastError怎么使用? GetLastError错误代码含义: (0)-操作成功完成。 (1)-功能错误。 (2)- 系统找不到指定的文件…

62 # 借用 promise 写成类的方法

新建 62 文件夹&#xff0c;里面添加三个文件 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…

在周末,找回属于自己的时间~

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f466;&#x1f3fb;个人主页 &#xff1a; 点击这里 &#x1f4bb;推荐专栏1&#xff1a;PHP面试题专区&#xff08;2023&#xff09; PHP入门基…