快速浏览内部
将其视为从头开始构建和保护现代软件系统和网络的实用实践指南。
本指南的不同之处在于我们的方法。 我将通过每天生活和呼吸这些东西的四个人的眼睛来审视整个技术堆栈,从物理网络电缆到应用程序代码:
- 构建基础的 网络工程师。
- 必须保护网络安全的网络安全卫士。
- 试图破坏它的 进攻性黑客。
- 编写在其上运行的代码的软件工程师。
您将全面了解基本的安全主题,而无需枯燥的学术废话。 我将介绍以下内容:
- 设计一个从一开始就难以攻击的网络。
- 分层防御,使一次失败不再是一场灾难(纵深防御)。
- 通过遵循网络杀伤链,像攻击者一样思考。
- 从第一天开始编写安全代码(安全 SDLC)。
第一部分:基石 - 安全网络的基础
第 1 章:通过安全视角重新审视网络模型
安全架构之旅始于所有数据通信的起点:网络。 对 OSI 或 TCP/IP 模型的肤浅理解是不够的[1]。 安全专业人员必须了解每一层,不仅要了解其功能,还要了解其攻击面。
1.1 第 1 层 - 物理层:有形威胁
- 网络工程师的观点: 这一层是电缆、光纤、交换机和集线器的世界。 主要关注的是物理连接、信号完整性和硬件配置。 它是一切事物建立的基础。
- 黑客的观点: 如果可访问,物理层是最终的攻击媒介。 攻击通常是明目张胆但非常有效:
- 窃听: 直接连接到网线以拦截未加密的流量[2]。
- 硬件植入: 将恶意设备(例如,Raspberry Pi)放置在防火墙后面、安全网络内,以建立持久的 C2(命令和控制)通道。
- 端口访问: 只需将笔记本电脑插入会议室或大厅中不安全的活动网络插孔即可。
- 防御者的观点: 物理安全就是网络安全。 防御措施包括程序性和物理性:上锁的服务器机房、禁用未使用的墙壁端口、严格的访问控制策略以及硬件上的防篡改密封。 从技术角度来看,IEEE 802.1X 网络访问控制 (NAC) 可以实施为要求任何物理连接到网络的设备进行身份验证[3]。
1.2 第 2 层 - 数据链路层:本地网络战场
- 网络工程师的观点: 这是 MAC 地址、交换机和局域网 (LAN) 的领域。 主要协议是以太网和ARP(地址解析协议),它将 IP 地址(第 3 层)映射到 MAC 地址(第 2 层)[4]。 该层负责将帧发送到“同一”本地网段上的正确设备。
- 黑客的观点: 第 2 层是一个丰富的攻击环境,因为它是采用隐式信任模型设计的。
- ARP 欺骗/中毒: 攻击者将伪造的 ARP 消息发送到 LAN 上。 他们可以告诉网络网关攻击者的MAC地址属于受害者的IP,并告诉受害者攻击者的MAC地址属于网关的IP。 这将攻击者置于对话的中间(中间人,MitM),允许他们拦截或修改受害者的所有流量[5]。
- MAC 洪泛: 针对网络交换机的攻击。 攻击者发送大量具有不同源 MAC 地址的以太网帧,填满交换机的 CAM(内容可寻址内存)表。 当表已满时,交换机无法再智能地将帧转发到特定端口,并进入“故障开放”模式,在该模式下,交换机充当集线器,将所有帧广播到所有端口。 这使得攻击者能够嗅探交换网络上的所有流量[6]。
- VLAN 跳跃: 一种攻击,连接到一个 VLAN 的攻击者可以访问他们不应该访问的另一个 VLAN 上的流量。 这通常是通过利用错误配置的中继端口来完成的[7]。
- 防御者的观点: 交换机提供了许多安全功能来对抗这些攻击:
- 端口安全: 限制单个交换机端口上可以使用的 MAC 地址数量,并且可以配置为仅允许特定的 MAC 地址[8]。
- DHCP 侦听: 防止恶意 DHCP 服务器引入网络。
- 动态 ARP 检测 (DAI): 验证网络中的 ARP 数据包,通过将 ARP 请求/响应与 DHCP 监听绑定表进行比较来防止 ARP 欺骗。
1.3 第 3 层 - 网络层:路由棋盘
- 网络工程师的观点: 这是IP 地址和路由层。 它是关于在不同网络之间移动数据包。 路由器在这一层运行,根据目标 IP 地址做出决策,将数据包转发到最终目的地。 这里存在诸如ICMP(用于 ping 和跟踪路由)和 IGMP 之类的协议[9]。
- 黑客的观点: 第 3 层攻击的重点是破坏路由和欺骗身份。
- IP 欺骗: 攻击者使用伪造的源 IP 地址创建 IP 数据包。 这是拒绝服务 (DoS) 攻击中使用的主要技术。 在 Smurf 攻击中,攻击者向网络的广播地址发送大量 ICMP 回显请求 (ping),将源 IP 欺骗为受害者的 IP。 然后网络上的所有主机都会回复受害者,使其不堪重负[10]。
- 路由劫持(BGP 劫持): 一种复杂的攻击,攻击者通过破坏互联网路由表,特别是由 边界网关协议 (BGP) 维护的路由表,非法控制 IP 地址组。 这可用于重定向流量,使其成为间谍活动或大规模 MitM 攻击的强大工具[11]。
- 防御者的观点: 这一层的防御是关于过滤和验证的。
- 入口/出口过滤: 防火墙应配置为丢弃来自互联网的具有内部网络内源 IP 地址的传入数据包(入口过滤)。 它们还应该配置为丢弃来自内部网络的没有源 IP 的传出数据包(出口过滤)。 这有助于防止 IP 欺骗,如 BCP 38 / RFC 2827 中所述[12]。
- 访问控制列表 (ACL): 路由器和防火墙使用 ACL 根据源/目标 IP、端口和协议来允许或拒绝流量。 这是网络访问控制的基本构建块。
1.4 第 4 层 - 传输层:连接契约
- 网络工程师的观点: 该层提供主机到主机的通信服务。 两个最重要的协议是 TCP(传输控制协议) 和 UDP(用户数据报协议)[13]。
- TCP: 面向连接、可靠且有序的传送。 它通过**三向握手(SYN、SYN-ACK、ACK)**建立连接,并确保所有数据正确到达。 用于 HTTP、FTP、SMTP。
- UDP: 无连接、不可靠、无序。 这是一种“即发即忘”协议,速度更快,但不提供交付保证。 用于 DNS、VoIP、在线游戏。
- 黑客的观点: 这一层的攻击通常集中在资源耗尽和侦察上。
- TCP SYN Flood: 经典的 DoS 攻击。 攻击者向受害服务器发送大量 TCP SYN 数据包,欺骗源 IP 地址。 服务器用 SYN-ACK 进行响应,并为新连接分配资源,等待最终的 ACK,但该 ACK 永远不会到达(因为源 IP 是假的)。 这会留下大量半开连接,耗尽服务器的连接表并阻止合法用户连接[14]。
- 端口扫描: 攻击者使用 nmap 等工具向目标主机上的一系列端口发送探测,以发现哪些服务正在运行。 “开放”端口表示侦听服务可能成为潜在的利用目标[15]。
- 防御者的观点: 防御侧重于状态管理和扫描检测。
- 状态防火墙: 这些防火墙跟踪 TCP 连接的状态。 它们仅在看到相应的 SYN 数据包时才允许 SYN-ACK 数据包通过,并且仅在看到 SYN-ACK 时才允许 ACK。 这使得它们比无状态数据包过滤器更加安全。
- SYN Cookie: 一种缓解 SYN 洪水的技术。 服务器不是在收到 SYN 时分配资源,而是将有关连接的信息编码到 SYN-ACK 数据包的序列号中并将其发回。 它仅在客户端发送包含“cookie”的最终 ACK 时分配资源,证明它是合法来源[16]。
- 入侵检测系统 (IDS): IDS 可配置为检测端口扫描活动并发出警报,从而为防御者提供潜在攻击的早期预警。
第 2 章:设计可防御的网络架构
扁平网络(每个设备都可以与其他设备通信)是黑客的天堂。 一旦他们破坏了单个低价值主机(如打印机或工作站),他们就可以轻松横向移动到高价值目标,如域控制器或数据库。 可防御的架构是分段架构[17]。
2.1 分割原则:构建内墙
- 网络工程师的观点: 分段是将网络分割成更小的、孤立的子网的做法。 这是通过以下方式实现的:
- 子网划分: 将大的 IP 地址块分成更小的块。 流量在子网之间移动需要路由器。
- VLAN(虚拟 LAN): 一种在同一物理交换基础设施上创建逻辑上独立的网络的方法。 可以将交换机配置为 VLAN 10 中的端口只能与 VLAN 10 中的其他端口通信,即使它们位于不同的物理交换机上[18]。
- 分层架构: 一种经典的设计模式,根据应用程序功能分离网络,通常为面向互联网的服务创建 DMZ(非军事区)[19]。
- Web 层 (DMZ): 最外层,可通过 Internet 访问。 包含 Web 服务器和反向代理。
- 应用程序层: 中间层,只能从 Web 层访问。 包含应用程序服务器和业务逻辑。
- 数据层: 最里面、最受保护的层,只能从应用程序层访问。 包含数据库。
- 防御者的观点: 细分是纵深防御的基石。 它直接支持网络级别的最小权限原则。 Web 服务器不需要直接与域控制器通信,因此防火墙规则应阻止该通信路径。 如果 Web 服务器遭到破坏,攻击者横向移动的能力就会受到严重限制。 目标是让攻击者的每一步——从 DMZ 到应用程序层,从应用程序层到数据层——成为一个困难且受到严格监控的瓶颈。
2.2 微分段和零信任
- 网络工程师的观点: 微分段是分段的更细粒度的演变。 您可以围绕各个工作负载或应用程序创建安全边界,而不是按大区域 (VLAN) 进行分段。 在虚拟化或云环境中,这通常通过**软件定义网络(SDN)**和虚拟防火墙来实现。
- 网络安全专业人士的观点: 微分段是 零信任 网络架构的最终体现。 零信任的核心原则是“永不信任,始终验证”。 它假设攻击者已经在网络内部[20]。 因此,两个虚拟机之间的通信(即使它们位于同一子网中)也不是隐式信任的。 它必须得到安全策略的明确允许。 这使得攻击者的横向移动变得极其困难。
- 软件工程师的观点: 这对开发人员有影响。 应用程序的设计必须假设网络连接无法得到保证。 它们需要能够适应连接故障,并配置正确的服务发现机制。 Kubernetes 网络策略 是开发人员在代码 (YAML) 中定义微分段规则的一个主要示例,指定允许哪些 pod 与哪些其他 pod 进行通信[21]。
第 3 章:核心网络安全控制详细信息
3.1 防火墙:网络看门人
- 无状态与有状态: 正如第 1 章中所讨论的,有状态防火墙非常优越,因为它可以理解连接的上下文。
- 下一代防火墙 (NGFW): NGFW 是一种“深度数据包检查”防火墙,超越了简单的端口/协议检查。 它包括以下功能:
- 应用程序感知: 它可以根据应用程序识别和控制流量(例如,阻止 Facebook 但允许 Salesforce),而不仅仅是端口号(因为许多应用程序在端口 443 上运行)[22]。
- 集成入侵防御 (IPS): 它可以主动阻止与已知攻击特征匹配的流量。
- 威胁情报源: 它可以与基于云的威胁情报服务集成,以阻止来自已知恶意 IP 地址或域的流量。
- Web 应用程序防火墙 (WAF): WAF 是在第 7 层(应用程序层)运行的专用防火墙。 它旨在保护 Web 应用程序免受常见的基于 Web 的攻击,例如 OWASP Top 10 中列出的攻击[23]。
- 开发人员的观点: WAF 是至关重要的防御层,但它不能替代安全编码。 这是一个安全网。 WAF 可能会阻止基本的 SQL 注入攻击,例如
OR 1=1,但熟练的攻击者通常可以找到使用编码、混淆或更复杂的查询来绕过 WAF 规则的方法。 主要防御必须在代码本身中(使用参数化查询)。 - 黑客的观点: WAF 规避是一项完善的规则。 攻击者使用工具来探测 WAF、识别供应商和规则集,并制作语法有效但不会触发 WAF 签名的有效负载[24]。
3.2 IDS/IPS:网络瞭望塔
- 入侵检测系统 (IDS): 一种被动监控设备。 它分析网络流量的副本,并在检测到可疑活动时发送警报。 它不会阻塞交通。
- 入侵防御系统 (IPS): 一种主动的串联设备。 它分析流量,并可以在与恶意签名匹配的数据包到达目标之前主动阻止或丢弃它们。
- 检测方法:
- 基于签名: 像防病毒软件一样工作。 它有一个已知攻击模式(“签名”)的数据库。 这对于对抗已知威胁非常有效,但无法检测新的“零日”攻击。
- 基于异常: 系统首先构建“正常”网络流量的基线。 然后,它会对任何明显偏离此基线的活动发出警报。 这可以检测新的攻击,但误报率通常很高[25]。
- 黑客的观点: 规避技术包括对数据包进行分段、使用加密(IDS/IPS 无法检查加密流量,除非执行 SSL/TLS 解密,这在计算上是昂贵的)以及修改攻击负载以避免匹配已知签名。
第二部分:防御者的堡垒 - 整体防御策略
第 4 章:纵深防御的哲学
纵深防御是现代网络安全的核心理念。 人们认识到任何单一的安全控制都可能而且将会失败。 目标是创建分层、冗余的防御,提供多种机会来检测、减慢和阻止攻击者[26]。
4.1 城堡的各层
中世纪城堡提供了一个完美的比喻:
- 护城河(周边安全): 这是第一道防线。 它对应于边界路由器和外围防火墙。 它的工作是阻止那些不成熟的、机会主义的攻击者。
- 外墙(网络安全): 更坚固的屏障。 这对应于内部分段、IDS/IPS 和强访问控制列表。 它旨在遏制突破边界的威胁。
- 墙上的弓箭手(监视和检测): 这些是哨兵。 这对应于安全运营中心(SOC)、SIEM系统和日志分析。 他们正在积极寻找袭击迹象。
- 内堡(主机和端点安全): 戒备森严的据点。 这对应于服务器和工作站本身的安全控制:端点检测和响应 (EDR)、基于主机的防火墙、防病毒和文件完整性监控。
- 皇冠上的宝石(应用程序和数据安全): 终极奖品,受到最强大控制的保护。 这对应于安全的应用程序代码、强大的身份验证和授权以及静态和传输中的数据加密。
- 守卫(人员、流程和政策): 人的因素。 这包括安全意识培训、事件响应计划和强大的操作安全程序。
- 黑客的观点: 攻击者将这些层视为需要克服的一系列障碍。 他们的目标是找到每一层中最薄弱的环节。 如果员工点击网络钓鱼链接(绕过外围和网络层),那么强大的防火墙就毫无用处。 如果安全应用程序运行在可能在主机层受到损害的未打补丁的服务器上,那么它就毫无用处。
第 5 章:威胁建模 - 像攻击者一样思考
威胁建模是一个结构化过程,用于在构建系统之前识别系统中的潜在威胁和漏洞。 这是一种主动而非被动的安全实践[27]。
5.1 STRIDE 方法
STRIDE 由 Microsoft 开发,是威胁分类的助记符[28]:
- Spoofing:非法冒充其他用户或组件的身份。
- 防御: 强身份验证 (MFA)、数字签名。
- T篡改:未经授权修改数据,无论是传输中的还是静态的。
- 防御: 散列、访问控制、数据加密。
- Repudiation:用户否认自己执行了某项操作。
- 防御: 安全审计日志、数字签名。
- I信息披露:将敏感信息暴露给未经授权的个人。
- 防御: 加密、访问控制。
- D拒绝服务:阻止合法用户访问系统。
- 防御: 速率限制、负载平衡、弹性架构。
- **特权提升:用户或组件获得他们无权获得的权限。
- 防御: 最小权限原则,强大的授权检查。
5.2 实用的威胁建模练习
- 软件工程师的观点: 想象一个用于更新用户配置文件的简单 API 端点:
PUT /api/users/{id}。 开发团队将与安全专业人员一起执行威胁模型。
- 分解应用程序: 绘制数据流图。 用户的浏览器将 HTTPS 请求发送到 API 网关,API 网关将其转发到用户服务,然后更新 PostgreSQL 数据库。
- 使用 STRIDE 识别威胁:
- (欺骗): 一个用户是否可以通过更改
{id}在网址中? (这是一个典型的授权缺陷)。 - (篡改): 处于 MitM 位置的攻击者是否可以修改传输中的配置文件数据? (防御:HTTPS/TLS 可以防止这种情况发生)。
- (信息泄露): API 响应是否泄露敏感数据,例如用户的密码哈希或其他 PII?
- (拒绝服务): 攻击者能否用大量请求淹没此端点以淹没服务或数据库? (防御:速率限制)。
- (权限提升): 更新逻辑中是否存在允许攻击者获得管理员权限的漏洞(例如 SQL 注入)?
此过程将安全性从抽象概念转变为工程任务和测试用例的具体列表。
第 6 章:安全运营中心 (SOC) - 可见性和响应
如果深度防御是策略,那么 SOC 就是执行该策略的指挥中心。
6.1 SOC 的核心:SIEM
- 安全信息和事件管理 (SIEM): SIEM 是 SOC 的中枢神经系统。 它的工作是:
- 聚合日志: 从数百或数千个来源(防火墙、服务器、应用程序、云服务等)收集日志数据。
- 标准化数据: 将这些不同的日志格式解析为通用模式。
- 关联事件: 这是关键功能。 SIEM 使用关联规则将来自不同来源的看似无害的单个事件连接到有意义的安全事件。
- 警报: 当触发关联规则时,SIEM 会生成高保真警报供安全分析师进行调查[29]。
- 开发人员的观点: 您的应用程序日志是 SIEM 的关键数据源。 良好的日志记录是一项安全功能。 日志应该是结构化的(例如 JSON),包含相关上下文(用户 ID、源 IP、请求 ID),并记录成功和失败的安全相关事件(例如登录、密码更改、授权失败)。
6.2 事件响应生命周期
当警报被确认为真实事件时,SOC 会遵循结构化事件响应 (IR) 计划,该计划通常基于 NIST 等框架[30]:
- 准备: 在事件发生之前*完成的工作(拥有计划、工具和经过培训的人员)。
- 识别: 确定事件是否为安全事件。
- 遏制: 当务之急是止血。 这可能涉及将受感染的主机与网络隔离或禁用受感染的用户帐户。
- 根除: 消除环境中的威胁(例如,删除恶意软件、修补漏洞)。
- 恢复: 将系统恢复到正常运行状态。
- 经验教训: 事后分析以确定事件的根本原因并确定改进措施以防止其再次发生。
第三部分:攻击者的策略 - 进攻方法
要想建立强大的防守,就必须了解进攻。 这部分剖析了攻击者的心态和方法,为其他地方讨论的防御措施提供了背景。
第 7 章:网络杀伤链 - 攻击蓝图
网络杀伤链由洛克希德·马丁公司开发,对典型网络攻击的各个阶段进行建模。 防御者可以将他们的控制映射到每个阶段,目标是尽早打破链条[31]。
- 侦察: 攻击者收集有关目标的信息。
- 被动侦察: 使用公开信息(OSINT - 开源情报)。
- 主动侦察: 直接探测目标的基础设施。 这包括端口扫描 (nmap)、DNS 枚举以及使用 Shodan 等工具查找面向互联网的设备。
- 武器化: 攻击者创建恶意有效负载以传递给目标。
- 传输: 如何将武器化有效载荷传输到目标。 常见的媒介包括鱼叉式网络钓鱼电子邮件或偷渡式下载。
- 利用: 武器化有效负载被触发,利用目标系统中的漏洞。
- **安装:攻击者在受害者的计算机上安装恶意软件或远程访问木马(RAT)**以建立立足点。
- 命令与控制 (C2): 安装的恶意软件“呼叫”到攻击者控制的 C2 服务器。 这将创建一个持久通道。
- 目标行动: 攻击者实现其最终目标,例如数据泄露或部署勒索软件。
第 8 章:深入探讨常见的利用向量
8.1 超越基础的 Web 应用程序漏洞
8.2 人的因素:社会工程
- 黑客的观点: 人类往往是最薄弱的环节。 社会工程是操纵人们采取行动或泄露机密信息的艺术。
- 网络钓鱼: 发送看似来自合法来源的欺诈性电子邮件,以诱骗受害者泄露敏感信息或部署恶意软件。 鱼叉式网络钓鱼是一种针对特定个人或组织的高度针对性的网络钓鱼形式[34]。
- 借口: 编造一个场景(借口)以获得受害者的信任。
- 防御者的观点: 针对社会工程的防御是多层次的:
- 技术控制: 扫描恶意链接和附件的电子邮件网关。
- 用户培训: 最关键的防御。 定期进行安全意识培训。
- 流程: 敏感操作需要多人批准。
第 9 章:后开发 - 靠土地为生
一旦攻击者有了初步立足点,他们的工作才刚刚开始。 下一阶段是扩大他们的访问范围并在不被发现的情况下实现他们的目标,这一过程在 MITRE ATT&CK 等框架中进行了详细介绍[35]。
- 横向移动: 从受感染的主机移动到同一网络内的其他主机的过程。
- 黑客的观点: 在 Windows Active Directory 环境中,这是一个定义明确的过程。 攻击者将从第一台机器的内存中转储凭证(使用像 Mimikatz 这样的工具)[36]),寻找域管理员帐户。 他们可能会使用诸如传递哈希之类的技术,他们可以使用用户的密码哈希向其他计算机进行身份验证,而无需明文密码。
- 持久性: 在网络中建立长期存在。 攻击者将创建机制来确保即使初始漏洞已修补或受感染的计算机重新启动,他们也可以重新获得访问权限。
- 靠地生活 (LotL): 逃避检测的关键技术。 攻击者不会使用自己定制的恶意软件,而是使用受害者系统上已有的合法工具。 例如,使用 PowerShell 进行脚本编写或 PsExec 进行远程命令执行[37]。
- 防御者的观点: 检测 LotL 攻击非常困难。 这就是端点检测和响应 (EDR) 解决方案至关重要的地方。 EDR 使用行为分析来标记可疑活动,例如 Word 文档生成 PowerShell 进程,然后与可疑 IP 地址建立网络连接。
第四部分:建造者的责任 - 设计安全
安全不能是事后才想到的。 构建安全系统的最有效方法是将安全性集成到软件开发生命周期的每个阶段。
第 10 章:安全软件开发生命周期 (SSLDLC)
SSDLC,通常称为**“左移”**,旨在将安全实践移至开发时间线的较早位置(向左)[38]。
- 需求阶段: 安全需求应与功能需求一起定义。
- 设计阶段: 这是威胁建模(第 5 章)发生的地方。
- 实施(编码)阶段:
- 开发人员的观点: 这涉及遵循安全编码最佳实践以避免常见漏洞。
- 静态应用程序安全测试 (SAST): SAST 工具分析应用程序的源代码而不执行它,寻找潜在的安全缺陷[39]。
- 测试阶段:
- 动态应用程序安全测试 (DAST): DAST 工具是“黑盒”测试器,可探测正在运行的应用程序是否存在漏洞。
- 渗透测试: 道德黑客尝试主动利用漏洞的手动或半自动过程。
- 部署和维护阶段: 这涉及保护生产环境、持续监控以及制定修补漏洞的计划。
第 11 章:深入应用程序安全 (AppSec)
11.1 身份验证和授权详细信息
11.2 开发者密码学:基本规则
11.3 供应链安全:新领域
第 12 章:保护现代云原生堆栈
12.1 容器安全
- 安全基础镜像: 从最小的、可信的基础镜像开始(例如,
distroless或者alpine) 减少攻击面[47]。 - 不要以 root 身份运行: 默认情况下,容器以 root 身份运行
root用户。 使用USERDockerfile 中的指令以非特权用户身份运行应用程序。 - 图像扫描: 将 Trivy 或 Clair 等工具集成到 CI/CD 管道中,以在将容器图像推送到注册表之前扫描容器图像是否存在已知漏洞。
12.2 Kubernetes 安全性
Kubernetes 是一个功能强大但复杂的系统,具有很大的攻击面。
- 基于角色的访问控制 (RBAC): 使用 RBAC 为集群内的用户和服务帐户强制执行最小权限原则[48]。
- 网络策略: 默认情况下,集群中的所有 Pod 都可以与所有其他 Pod 通信。 你必须实施
NetworkPolicy基于“默认拒绝”立场来限制通信的资源。 - 秘密管理: 不要将秘密以纯文本形式存储在 ConfigMap 中。 使用内置的 Kubernetes Secrets 对象,但为了获得更高的安全性,请与 HashiCorp Vault 等外部机密管理器集成[49]。
- Pod 安全标准: 使用 Pod 安全标准来防止 pod 以危险配置运行,例如以 root 身份运行或访问主机网络[50]。
12.3 基础设施即代码 (IaC) 安全性
- 开发人员的观点: 像 Terraform 这样的 IaC 工具允许您在代码中定义您的基础设施。 在部署之前可以扫描此代码是否存在错误配置。
- IaC 静态分析: 在 CI/CD 管道中使用 Checkov 或 tfsec 等工具来扫描 Terraform 代码中的常见安全问题,例如创建可公开访问的 S3 存储桶或允许从整个互联网进行 SSH 的安全组(
0.0.0.0/0)[51]。
结论:学科综合
这本三卷本的旅程带我们从后端开发的基础知识到分布式系统的复杂性,最后到安全架构的包罗万象的学科。 最终的教训是,这些并不是独立的领域。 不了解网络和安全性的软件工程师将构建脆弱且易受攻击的应用程序。 不了解网络上运行的应用程序的网络工程师无法有效保护网络。 不懂开发和运维的安全专业人员无法提供有效的指导。 真正意义上的现代系统工程师必须是一位博学者。 他们必须能够在每个抽象层推理系统,从网络数据包到应用程序逻辑,从防火墙规则到容器配置。 他们必须同时像建设者、防守者和破坏者一样思考。 安全性不是一种产品或功能;而是一种功能。 它是一个精心设计的系统的特性。 面对不断变化的威胁形势,这是一个持续的设计、防御和适应过程。 这项工作中详述的有原则的、整体的方法不仅仅是一种方法论,它是构建我们的数字世界所依赖的有弹性和值得信赖的系统的基本要求。
参考文献
- 云耀。 (日期不详)。 什么是 OSI 模型? 检索自 https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/ 2.克雷布斯,B.(2012)。 来自微小、无声网络窃听器的日益增长的威胁。 克雷布斯谈安全。 检索自 https://krebsonsecurity.com/2012/03/the-growing-threat-from-tiny-silent-network-taps/ 3.思科。 (日期不详)。 什么是 802.1X? 检索自 https://www.cisco.com/c/en/us/products/security/what-is-802-1x.html 4.微软。 (2021)。 地址解析协议。 微软学习。 检索自 https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/network-subsystem/address-resolution-protocol
- 开放式安全计划。 (日期不详)。 地址解析协议欺骗。 检索自 https://owasp.org/www-community/attacks/ARP_Spoofing 6、无敌。 (日期不详)。 MAC 洪水。 检索自 https://www.imperva.com/learn/application-security/mac-flooding/ 7.思科。 (日期不详)。 VLAN 跳跃攻击。 检索自 https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4500/12-2/15-02SG/configuration/guide/config/dhcp.html#wp1102555 8.极客们的极客们。 (2023)。 计算机网络中的端口安全。 检索自 https://www.geeksforgeeks.org/port-security-in-computer-networks/
- 云耀。 (日期不详)。 什么是互联网协议? 检索自 https://www.cloudflare.com/learning/network-layer/internet-protocol/
- 云耀。 (日期不详)。 Smurf DDoS 攻击。 检索自 https://www.cloudflare.com/learning/ddos/smurf-ddos-attack/
- 云耀。 (日期不详)。 什么是 BGP 劫持? 摘自 https://www.cloudflare.com/learning/security/glossary/bgp-hijacking/ 12.互联网工程任务组。 (2000)。 RFC 2827:网络入口过滤:击败采用 IP 源地址欺骗的拒绝服务攻击。 检索自 https://datatracker.ietf.org/doc/html/rfc2827 13.互联网工程任务组。 (1981)。 RFC 793:传输控制协议。 检索自 https://datatracker.ietf.org/doc/html/rfc793
- 云耀。 (日期不详)。 SYN 洪水攻击。 检索自 https://www.cloudflare.com/learning/ddos/syn-flood-ddos-attack/ 15.Nmap。 (日期不详)。 官方 Nmap 项目网站。 检索自 https://nmap.org/
- 维基百科。 (日期不详)。 SYN cookie。 检索自 https://en.wikipedia.org/wiki/SYN_cookies 17.SANS 研究所。 (2016)。 实施网络分段。 检索自 https://www.sans.org/white-papers/37232/
- 互联网工程任务组。 (2003)。 RFC 3069:用于高效地址分配的 VLAN 聚合。 检索自 https://datatracker.ietf.org/doc/html/rfc3069 19.帕洛阿尔托网络。 (日期不详)。 什么是 DMZ? 检索自 https://www.paloaltonetworks.com/cyberpedia/what-is-a-dmz 20.美国国家标准技术研究所。 (2020)。 SP 800-207:零信任架构。 检索自 https://csrc.nist.gov/publications/detail/sp/800-207/final
- 库伯内特斯。 (日期不详)。 网络政策。 检索自 https://kubernetes.io/docs/concepts/services-networking/network-policies/ 22.帕洛阿尔托网络。 (日期不详)。 什么是下一代防火墙 (NGFW)? 检索自 https://www.paloaltonetworks.com/cyberpedia/what-is-a-next-generation-firewall-ngfw
- OWASP。 (日期不详)。 OWASP 前 10 名。 检索自 https://owasp.org/www-project-top-ten/ 24.OWASP。 (日期不详)。 WAF 规避技术。 检索自 https://owasp.org/www-community/attacks/WAF_Evasion_Techniques 25.SANS 研究所。 (2001)。 了解入侵检测系统。 检索自 https://www.sans.org/white-papers/27/
- 国家安全局(NSA)。 (2021)。 纵深防御。 检索自 https://www.nsa.gov/portals/75/documents/what-we-do/cybersecurity/professional-resources/csg-defense-in-depth-20210225.pdf
- OWASP。 (日期不详)。 威胁建模。 检索自 https://owasp.org/www-community/Threat_Modeling
- 微软。 (2022)。 STRIDE 威胁模型。 微软学习。 检索自 https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats
- 斯普兰克。 (日期不详)。 什么是 SIEM?。 检索自 https://www.splunk.com/en_us/data-insider/what-is-siem.html 30.美国国家标准技术研究所。 (2012)。 SP 800-61 Rev. 2:计算机安全事件处理指南。 检索自 https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final 31.洛克希德·马丁公司。 (日期不详)。 网络杀伤链。 检索自 https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html 32.OWASP。 (日期不详)。 服务器端请求伪造。 检索自 https://owasp.org/www-community/attacks/Server_Side_Request_Forgery 33.OWASP。 (日期不详)。 A08:2021 – 软件和数据完整性故障(与不安全反序列化相关)。 检索自 https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/
- CISA。 (日期不详)。 避免社会工程和网络钓鱼攻击。 检索自 https://www.cisa.gov/uscert/ncas/tips/ST04-014
- 米特雷。 (日期不详)。 ATT&CK 框架。 检索自 https://attack.mitre.org/
- Depy, B.(日期不详)。 咪咪卡兹。 GitHub。 检索自 https://github.com/gentilkiwi/mimikatz
- 微软。 (2022)。 靠土地为生。 微软安全博客。 检索自 https://www.microsoft.com/en-us/security/blog/2022/05/26/living-off-the-land-a-technical-and-strategic-overview-of-lolbins/ 38.OWASP。 (日期不详)。 左移。 检索自 https://owasp.org/www-community/Shift_Left
- OWASP。 (日期不详)。 静态应用程序安全测试(SAST)。 检索自 https://owasp.org/www-community/Static_Application_Security_Testing_(SAST) 40.国家标准技术研究所。 (2017)。 SP 800-63B:数字身份指南:身份验证和生命周期管理。 检索自 https://pages.nist.gov/800-63-3/sp800-63b.html 41.OWASP。 (日期不详)。 A01:2021 – 访问控制损坏(与 IDOR 相关)。 检索自 https://owasp.org/Top10/A01_2021-Broken_Access_Control/
- 谷歌。 (日期不详)。 Tink 密码库。 检索自 https://developers.google.com/tink
- Argon2 密码哈希函数。 (日期不详)。 Argon2 官方网站。 检索自 https://www.password-hashing.net/ 44.AWS。 (日期不详)。 什么是密钥管理服务? 检索自 https://aws.amazon.com/kms/what-is-kms/
- CISA。 (日期不详)。 Apache Log4j 漏洞指南。 检索自 https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance 46.NTIA。 (日期不详)。 软件物料清单 (SBOM)。 检索自 https://www.ntia.gov/SBOM
- 谷歌云平台。 (日期不详)。 无发行版 Docker 镜像。 GitHub。 检索自 https://github.com/GoogleCloudPlatform/distroless
- 库伯内特斯。 (日期不详)。 使用 RBAC 授权。 检索自 https://kubernetes.io/docs/reference/access-authn-authz/rbac/
- HashiCorp。 (日期不详)。 金库。 检索自 https://www.vaultproject.io/
- 库伯内特斯。 (日期不详)。 Pod 安全标准。 检索自 https://kubernetes.io/docs/concepts/security/pod-security-standards/ 51.桥接人员。 (日期不详)。 契科夫。 检索自 https://www.checkov.io/