一、前言
本报告介绍了总体网络安全和保护网络设备的最佳实践,管理员可以此为参考防止攻击者利用其网络。虽然本文提供的是通用指导,适用于各种网络设备,但仅以思科互联网络操作系统(IOS)设备为例,就所提建议给出了一些示例命令。
二、网络架构与设计
NSA建议根据安全最佳实践在网络边界配置和安装安全设备:
- 安装边界路由器,实现对外部网络(例如互联网服务提供商(ISP))的连接。
- 在整个网络中部署多层下一代防火墙,限制出入流量,检查网络区域之间的所有内部活动。每一层都应该利用不同厂商来防止攻击者利用同一个未修补漏洞进入内部网络。
- 将可公开访问的系统和出站代理放置在一个或多个非军事区(DMZ)子网的防火墙层之间,这样便可合理控制外部设备、DMZ设备和内部系统之间的访问。
- 实施网络监控方案,例如网络入侵检测系统(NIDS)、流量探针或全包捕获设备,记录和跟踪出入流量。
- 部署多个专用远程日志服务器,以便关联不同设备的活动,检测横向移动。
- 在核心区域部署冗余设备,确保可用性。若配置为负载均衡模式,可提高网络吞吐量,降低延时。
NSA建议将相似系统划分到子网或虚拟局域网(VLAN),或通过防火墙或过滤路由器物理分隔各子网。工作站、服务器、打印机、电信系统和其他网络外围设备应相互隔离。运营技术,如工业控制系统,通常需要与其他信息技术和高风险网络(如互联网)隔离开来。这种物理隔离提供了更强的保护,因为攻击者要绕过访问限制必须突破子网之间的中间设备。在内部路由器、交换机或防火墙上配置访问限制,仅允许必要端口和协议以执行网络操作或有效完成任务。访问控制列表(ACL)可能需要复制并直接应用于交换机以限制VLAN之间的访问,或者应用于在内部子网之间执行路由的核心路由器。
NSA建议清除所有后门网络连接,并谨慎连接具有多个网络接口的设备。检查设备的所有网络接口是否具有相似安全级别,或者中间设备是否对不同网络区域进行了逻辑和物理隔离。
NSA建议,审慎考虑可以建立哪些连接,配置规则集仅允许哪些连接,同时拒绝其他所有连接。使用这种方法,可以用一条规则拒绝多种连接,而不需要为每个连接创建单独的拒绝规则。若需要动态应用其他边界规则集终止或中断攻击,NSA建议使用入侵防护系统(IPS)。
NSA还建议,此类规则集的日志应至少包括拒绝或丢弃网络流量的所有规则,并包括管理员访问关键设备的成功或失败信息。
NSA建议采用NAC方案识别和验证连接到网络的各台设备。端口安全机制可在交换机上实现,及时发现通过设备的媒体访问控制(MAC)地址连接到网络的未授权设备。
然而,端口安全会很难管理。合法网络端口(例如时常更改的联网设备,如会议室)可能被拦截,增加支持工作量。此外,攻击者也能通过欺骗MAC地址绕过这种机制。更稳健的方案是利用802.1X,基于安装在设备上的可信数字证书对设备进行认证。虽然证书的生成和安装加大了方案的实现难度,但它比端口安全更容易管理,提供了更高级别的保证。
NSA建议,根据需要限制VPN网关对用户数据报协议(UDP) 500端口、UDP 4500端口、封装安全负载(ESP)等端口的访问。
尽可能仅接受已知VPN对端IP地址发来的流量。若远程对端IP地址未知,就无法将远程访问VPN添加到静态过滤规则中。若无法将流量匹配到具体IP地址,在VPN网关前面部署IPS来监视畸形IPsec报文,检查IPsec会话协商。
所有IPsec VPN都需要配置IPsec策略和互联网密钥交换(IKE)策略,确定在建立IPsec隧道时的各阶段协商方法。如果将任一阶段配置为允许弱加密,则整个VPN都可能面临风险,数据机密性受到影响。每条IKE策略至少包括三个关键部分:
1. Diffie-Hellman算法/组
2. 加密算法
3. 哈希算法
以下是国家安全系统委员会15号政策(CNSSP 15)的建议最低设置:
- Diffie-Hellman组:16,具有4096位模幂(MODP)
- Diffie-Hellman组:20,具有384位椭圆曲线群(ECP)
- 加密:高级加密标准(AES)-256
- 哈希:安全哈希算法(SHA)-384
可以在两个端点之间建立VPN隧道,为不可信网络(如互联网)提供加密信道。在建立VPN方案、策略或转换集时,确保其遵循CNSSP 15建议。CNSSP 15要求在互联网工程任务组(IETF)的《商业国家安全算法(CNSA)套件互联网协议安全(IPsec)加密》文件草案中进行了解释。
为了防止它们无意中被使用,请使用以下配置命令禁用互联网安全关联和密钥管理协议(ISAKMP)和IKEv2的默认策略和提议:
no crypto isakmp default policy
no crypto ikev2 policy default no crypto ikev2 proposal default
no crypto ipsec transform-set default
注意:如果禁用默认策略,则仅使用明确配置的策略。
使用以下示例配置命令建立IKEv2提议、策略和配置文件:
crypto ikev2 proposal
encryption aes-gcm-256 group [16|20]
crypto ikev2 policy
proposal
crypto ikev2 profile match identity remote … authentication remote … authentication local …
配置文件的配置将取决于为其配置的网络,并且必须具有本地和远程身份验证方法以及match语句。还可以建立单独的密钥环,应用于为多个预共享密钥创建的配置文件。
使用以下示例配置命令建立IPsec转换集:
crypto ipsec transform-set esp-gcm 256
mode tunnel
使用以下示例配置命令创建IPsec配置文件,利用上面定义的IKEv2配置文件和IPsec转换集:
crypto ipsec profile
set transform-set
set pfs group16
set ikev2-profile
IPsec配置文件应使用以下配置命令应用于隧道接口:
interface
tunnel protection ipsec profile
no shutdown
三、安全维护
NSA建议,将文件的加密哈希与厂商发布的已知合法哈希进行比较,验证设备上安装和运行的操作系统文件的完整性。升级操作系统文件时,在安装前后对文件执行相同的完整性验证,确保未进行任何篡改。可以使用以下exec命令在操作系统映像文件上计算基本的在线哈希:
verify /sha512
较老的设备可能只支持消息摘要5(MD5)哈希,可以使用以下exec命令计算这种哈希:
verify /md5
可以将计算出的哈希与https://www.cisco.com/网站支持页面的相关文件信息进行比较。
这些软件修改操作较为复杂,攻击者一般选择更改配置,因为这会比较简单。配置更改可能意味着设备已被入侵。
NSA还建议实施配置更改控制过程,安全创建设备配置备份,用以检测恶意更改。需要更改配置时,记录更改并描述授权、目的和任务理由。将当前设备配置与最近的备份进行比较,定期验证是否存在修改。若发现可疑更改,验证是否经过授权。
copy running-config startup-config
针对临时性更改,NSA建议,在更新的配置行之前插入注释,说明更改原因和计划删除时间,之后根据实际情况删除注释和临时更改。若设备不支持注释,在配置的备份副本中插入注释,与设备上的版本进行比较。远程复制配置时使用加密协议,例如安全文件传输协议(SFTP)或安全复制协议(SCP)。必须保护此备份或归档配置机制以及备份存储库,防止未授权访问。
NSA还建议,检查各台设备上是否存在未使用或不必要的文件,若有,使用以下exec命令删除:
dir /recursive all-filesystems
delete
设备上存储的较老的操作系统文件或备份配置文件很可能不再需要,应予删除。设备上若存在多个版本的软件,攻击者就可能重新加载老旧版本,在较新版本的操作系统中再次引入修补过的漏洞。
NSA建议,将所有设备上的操作系统和软件升级到厂商提供的最新稳定版本。升级操作系统可能需要额外的硬件或内存升级,获得新软件版本可能需要与厂商签订维护或支持合同。大多数网络基础设施设备不支持自动更新功能,需要向厂商申请并安装最新软件。
有关最新思科操作系统的文件列表,参见https://www.cisco.com/网站的支持页面。
NSA建议,一旦厂商发布生命周期终止(End-of-Life)通知或宣布不再支持某个设备,根据厂商建议制定计划,升级为较新设备或更换受影响设备。应立即升级或更换老旧或已停止支持的设备,确保网络服务和安全支持的可用性。
有关思科尚在支持的设备列表,参见https://www.cisco.com/网站的支持页面。
四、认证、授权和记账(AAA)
aaa new-model
应用上述配置后,设备将不再使用传统的身份认证和授权方法。
- 配置为使用专门的复杂预共享密钥对设备进行认证,确保只有经过授权的设备才能使用AAA服务(参见5.6 创建强密码)。
- 配置为使用相同协议(如TACACS+、RADIUS或LDAP)以保证一致性,并尽可能使用加密传输(例如RadSec、DIAMER、LDAPS或IPsec封装)。
- 相互同步,确保用户凭证和访问控制的一致性。
aaa group server {tacacs+ | radius | ldap}
server-private key
server-private key
一些较老的设备可能在配置中使用关键字tacacs-server或radius-server,这就没法为每个服务器分配单独的密钥。
NSA建议,用上述配置格式替换这些行,并为每个服务器分配一个单独的预共享密钥。若攻击者获得一台服务器的预共享密钥,则需要撤销该密钥,但设备可以继续使用具有不同密钥的其他服务器。
NSA建议,将login和enable(特权)访问配置为集中式认证,并作为主要方法,如以下配置命令所示:
aaa authentication login default group local
aaa authentication enable default group enable
使用default关键字可以确保在未明确指定认证列表的情况下,在所有实例中全局应用配置。如果改用自定义命名列表,则需要明确配置将此列表应用于使用AAA的所有实例,这可能导致某些管理服务配置不正确,并存在入侵风险。若未明确配置应用自定义命名列表,则始终应用default列表。
<GROUP_NAME>应该是AAA服务器组(之前定义)的自定义名称,其中包括集中式AAA服务器的IP地址及相关密钥。
不要使用line关键字,因为这些密码未安全存储在配置中,无法问责。
切勿使用none关键字,因为它会禁用身份认证。
NSA建议,合理限制合法管理员的操作权限,防止攻击者使用已入侵账号执行非法操作。大多数管理员使用1级权限进行用户级访问,使用15级权限进行特权级访问。通过以下配置命令对这两个级别以及管理员使用的任何其他权限级别进行授权:
aaa authorization exec default group local
aaa authorization commands 1 group local
aaa authorization commands 15 group local
aaa authorization config-commands
应使用default列表来确保配置全局应用。
应该是AAA服务器组(之前定义)的自定义名称,其中包括集中式AAA服务器的IP地址及相关密钥。
必要时,可在local关键字之后应用if-authenticated关键字。如果管理员成功登录,但所有集中式AAA服务器都不可用,则这些服务器将无权再执行命令。if-authenticated关键字确保已认证用户继续执行命令。但是,要谨慎使用此关键字,因为它可能会为管理员提供非集中式AAA服务器上配置的访问权限。
切勿使用none关键字,因为这会禁用授权。
NSA建议,集中记录系统配置更改,并按流程定期审查这些记录,发现潜在的恶意活动。至少应在启动和停止exec会话(Shell)以及启动和停止Shell命令时收集记账记录。
与授权类似,必须使用以下配置命令对所有管理员权限级别应用commands记账:
aaa accounting exec default start-stop group
aaa accounting commands 1 default start-stop group
aaa accounting commands 15 default start-stop group
应使用default列表来确保配置全局应用。
应该是AAA服务器组(之前定义)的自定义名称,其中包括集中式AAA服务器的IP地址及相关密钥。
NSA建议,将所有账号的权限级别设置为1或0,管理员若需要更高权限执行特定任务,则需要输入额外凭证。应定期检查权限级别,删除不必要的访问权限,防止较低权限用户无意中使用了特权级别命令。
可以使用privilege关键字更改单个本地账号的权限级别。使用以下配置命令为本地账号户分配1级权限:
username privilege 1
注意:这并不会更改账号密码。
所有以1级权限登录的管理员账号都需要执行enable命令,要提升到更高权限需要提供额外凭证。除了检查所有本地管理员账号并确保只有最低级别权限外,还需要检查在集中式AAA服务器上配置的所有账号。
同样,这也适用于控制台(CON)、辅助(AUX)和虚拟终端(VTY)线路。AAA授权若配置正确,不应依赖于线路配置。但是,最佳实践是使用以下配置命令将线路配置为最低级别权限:
line con 0
privilege level 1
line aux 0
privilege level 1
line vty 0 4
privilege level 1
line vty 5 15
privilege level 1
根据设备的不同,可能还需要将类似配置应用于其他线路。如果特定设备上不存在VTY线路5到15,则无需执行这些命令。
NSA建议,将远程管理登录失败次数限制为3次或更少,以下配置命令以思科IOS设备为例:
aaa authentication attempts login 3
用以下配置命令对安全外壳(SSH)会话进行类似配置:
ip ssh authentication-retries 3
NSA还建议,使用以下配置命令在两次登录尝试之间设置至少1秒延迟,这会大大缓解暴力破解:
login delay 1
五、本地管理员账号和密码
本节主要关注本地账号和密码。传统的网络设备使用老方法来管理本地账号,可能不支持建议的密码设置、更改和验证机制。这些本地账号过于简单,需要采用其他方法进行保护。这与集中式AAA服务器不同,在集中式AAA服务器中可以有效实现多因素身份认证、复杂密码、历史密码比较等机制。
NSA建议,删除所有默认配置,为每台设备配置不同的安全管理员账号。在未更改默认管理设置和账号的情况下,请勿将任何新设备接入网络。请注意,某些设备上的默认用户账号无法删除。
NSA建议,删除所有默认密码,为不同的访问级别(包括用户和特权级别)设置复杂、安全的不同密码。此外,引入新设备时,需要在设备联网之前更改默认用户密码和特权级别密码。
NSA建议,仅保留必要的设备登录账号,其他应删除。当管理员离开组织或改变角色时,应禁用或删除关联账号。在思科IOS设备上,使用以下配置命令删除本地账号:
no username
NSA建议,禁用所有共享或组管理员账号,并为每个管理员分配一个不同的账号进行配置更改,确保每台设备都可问责到人。如果确需组账号,NSA建议对这些账号进行监控,及时发现可疑活动。为每个管理员创建备份本地账号可能不够现实,但所有管理员共享单个组账号的话,无法问责到人。
NSA还建议,仅在集中式AAA服务器不可用的紧急情况下才使用本地账号。在这种情况下,本地紧急账号密码应由无设备直接访问权的可信个人维护。管理员可以请求使用本地账号和密码,紧急情况结束后,可信个人可随之更改密码。这会防止密码被重复使用,确保责任到人。所有其他的身份认证请求都应通过集中式AAA服务器进行。
- 0类密码:以明文存储,不应使用
- 4类密码哈希:容易破解,不应使用
- 5类(MD5)密码哈希:仅限于不支持6、8或9类的老操作系统,其他系统避免使用
- 6类密码:AES加密,仅用于需要加密而不是哈希的情况(例如VPN密钥),或不支持8类的系统上(这通常意味着9类也不可用)
- 7类密码:即使加密也容易逆向,不应使用
- 8类(SHA-256 PBKDF2)密码哈希:建议使用
- 9类(Scrypt)密码哈希:未经国家标准与技术研究院(NIST)批准
创建用户账号或分配密码时,某些设备需要指定算法。应特别注意特权账号,但本指南也适用于用户账号、管理口、经过认证的路由协议、VPN密钥以及设备配置中可能指定密码的任何地方。
使用以下配置命令防止明文密码:
service password-encryption
使用以下配置命令存储本地账号的8类密码哈希:
username algorithm-type sha256 secret
注意,algorithm-type关键字未存储在保存的nvram:/startup-config配置中;相反,在哈希密码之前,将secret关键字替换为secret 8。
如果需要可逆加密密码(例如VPN密钥),使用以下配置命令设置6类AES而不是7类密码:
password encryption aes
key config-key password-encrypt
应为唯一且复杂的密码,用于生成加密6类密码的密钥。不要将它设置为容易猜测的弱密码,且不应默认,也不要在其他地方复用。攻击者一旦猜出密钥,就能解密存储在配置中的所有6类密码。密钥设置后,通常不需要保留。
注意:key config-key password-encrypt配置命令未存储在保存的nvram:/startup-config配置中。
由于无需保留,NSA建议为每个设备配置单独的密钥,防止攻击者使用相同的密钥解密所有设备上的6类密码。请注意,密钥更改后,需要重新手动设置6类加密密码。
NSA建议,为不同的访问级别(包括用户和特权级别)设置不同的复杂密码。这同样适用于路由身份认证、时间同步、VPN隧道、简单网络管理协议(SNMP)团体名,以及配置中存储的任何其他密码。密码应满足以下复杂性要求:
- 使用多种类型的字符(大写、小写、数字和特殊字符)
- 至少包含15个字符
- 不使用未修改的单词或首字母缩略词
- 非相邻按键组合
- 与用户名不同
- 与网络、组织、位置、当地运动队或其他功能标识符无关
- 与其他地方使用的最后一个或多个密码不相同或类似
- 非默认密码、空白密码或众所周知的密码
NSA强烈反对使用SNMPv1或v2c。更多信息,参见7.1禁用明文管理服务和7.8删除SNMP读写团体名。
了解网络、位置、程序等的攻击者可以轻松猜出(或知道)相关术语,进而破解密码。
NSA还建议,定期检查弱密码,强制执行组织的密码策略。在设置新密码之前,检查密码的复杂性,网络管理员应定期检查网络设备配置,了解弱密码算法的使用情况。
将同一密码分配给多个设备,攻击者能够轻而易举地同时入侵多台设备。如果将同一密码分配给大多数设备,攻击者只需破解一个密码即可获得对所有这些设备的特权访问。
NSA建议,为每台设备的不同账号和特权级别分别分配复杂、安全的密码。
NSA还建议,检查不同账号和访问级别以及多个设备是否复用同一密码。相同的哈希可能表示存在密码复用情况。
NSA建议,如果密码或密码哈希已被泄露,要立即更改密码,并按照5.5 用安全算法 存储密码所述妥善保存。若有足够的时间和资源,每个密码都能被猜出或暴力破解(即尝试各种可能的字符组合)。密码泄露后若未及时修改,攻击者就能趁机进行暴力破解。此外,千方百计破解旧密码后,攻击者可能会对旧密码进行各种变换,若当前密码是基于之前密码,就有可能被猜出。
实际上,很难知道密码何时被泄露,尤其是存储在配置中的本地密码。传统网络设备在存储和传输配置(包括密码和密码哈希)的方式上要简单得多。此外,通过电子邮件发送网络设备配置或将其存储在不受保护的文件共享中会带来泄露风险,因为存储在配置中的密码和密码哈希无任何保护措施。另外,使用弱算法存储的密码非常容易破解,应视为已泄露。
如果无法维护密码的机密性,或者组织希望定期驱逐暗中窃取密码的攻击者,NSA建议制定密码使用期限策略,要求定期修改密码。修改本地密码比集中式密码麻烦得多,因此需要选择一个合理可行的时间段,既方便管理员操作,又能降低攻击者利用已泄露密码作乱的可能性。如果设备不支持长密码,建议增加密码修改频次,防止攻击者破解仍在使用的密码。
注意:如果使用复杂的9类密码,其中secret 9密码哈希以$14$开始,则表示密码近期没有修改,而是在上一次操作系统升级期间从5类转换而来。通过使用algorithm-type sha256关键字将密码更改为8类密码来删除复杂的9类密码,如5.5 用安全算法存储密码所述。
发布日期:2022年3月1日
原文链接:https://media.defense.gov/2022/Mar/01/2002947139/-1/-1/0/CTR_NSA_NETWORK_INFRASTRUCTURE_SECURITY_GUIDANCE_20220301.PDF