白名单(whitelist)是一种计算机网络安全机制,用于限定允许访问或授权成员资格的实体列表,而拒绝所有其他实体的访问请求。它在
计算机领域起到了重要的保护作用,有助于防范潜在的威胁和不良内容,并提高网络和计算机系统的安全性。根据白名单中实体的类型,白名单可分为资产白名单、防火墙白名单、应用程序白名单、用户白名单、行为白名单、电子邮件白名单等。而与白名单相反的黑名单(blacklist),除了在黑名单中的实体没有访问权限,其它实体均允许访问。
在更广泛的语义中,白名单可以表示一份授权、认可或信任的列表,列出被认为具备特定条件或特质的人、组织、产品或服务。这样的列表允许或推荐特定实体或事物进行特定活动、参与特定领域或受到特定待遇,适用于各种场景,如政府机构、政府政策、商业合作等。
定义
白名单是一个计算机网络安全相关术语,用于描述一种访问控制机制或安全策略。
白名单通常是一个实体的列表,这些实体被赋予了特别的操作权限、移动性、接入和认可,使得被纳入白名单的实体拥有允许访问的权限,能够进入
计算机中某些特定的区域。这些实体可能是
电子邮件地址、IP地址、
域名或是应用程序等。
分类
根据不同的应用场景,白名单技术可以应用于不同的领域中。在网络安全应用场景中,可以分为资产白名单、防火墙白名单以及电子邮件白名单,其中防火墙白名单中又分为IP地址白名单、域名白名单、URL白名单等;在软件应用场景中,白名单可以用于指定允许访问的程序、文件、文件夹等;在数据库应用场景中,白名单可以用于指定允许访问数据库的用户或IP地址等。
网络安全场景
资产白名单
在工业控制领域中,资产白名单是一种重要的安全措施,用于识别和管理工业控制系统(ICS)网络中的设备和资产。在ICS网络中,很多攻击或误伤行为都是因为非法接入其他设备而导致的。为了应对这个问题,可利用自动化网络扫描工具或手工方法快速获取ICS中已知的设备清单,还可利用工控安全检测装备检测设备中存在的已知及未知漏洞和后门,以全面掌握设备的安全性。
防火墙白名单
防火墙白名单是一种基于白名单技术的过滤机制,用于控制网络流量和数据包的访问权限,以确保只有经过授权的应用和IP地址能够访问网络或系统资源,从而提高安全性并减少潜在的攻击风险。
防火墙白名单的规则表针对特定的应用或协议进行定义。例如,例如在工控网络中使用的Modbus TCP协议,这些规则可以包括多个数据特征,例如源IP地址、目标IP地址、源MAC地址、目标MAC地址、协议标识符、端口号、功能代码以及线圈或寄存器地址范围等。
通过防火墙白名单,管理员可确保只有经过授权的应用和IP地址能够访问网络或系统资源,从而提高安全性并减少潜在的攻击风险。
域名白名单
域名白名单用于限制对特定域名的访问。管理员将白名单文件放置在网站的
根目录中,并以特定的名称(WhiteDomain)命名,以确保只有包含在白名单中的域名或IP地址可以访问网站的指定路径。
IP地址白名单
IP地址白名单用于限制对特定IP地址或IP地址范围的访问。管理员可以设定白名单规则,仅允许列出的IP地址或范围内的IP地址进行通信,而拒绝其他IP地址的访问。
URL白名单
URL白名单用于限制对特定URL地址或URL地址模式的访问。管理员可以配置URL白名单规则,以确保只有符合规则的URL能够访问网络或系统资源,其他URL则被禁止访问。
例如,假设某公司仅允许员工访问及其下层网页,则需要在URL过滤
配置文件中配置如下两项。
电子邮件白名单
电子邮件白名单是一种常用于处理新到达邮件的过滤算法,该算法首先查看邮件头部的发送方地址,对于地址在白名单中的邮件将完全接收,而对于处于黑名单中的邮件则直接拒收。
在电子邮件过滤技术中,基于样本检测和规则匹配的原理,可以将过滤技术分为规则过滤、合作式过滤和地址列表过滤三类。规则过滤技术通过设定匹配规则来实现过滤,尽管能有效阻止垃圾邮件,但误判率较高,容易受到干扰信息的影响。统计过滤是规则过滤技术的升级,通过使用统计规律计算垃圾邮件附加特征出现的可能性来区分邮件的合法性,这种方法误判率较低。地址列表过滤技术则是根据建立的黑名单和白名单来判断是否接收电子邮件,黑名单包含已知的垃圾邮件发送者的IP地址或邮件地址,而白名单包含可信任的发送者IP地址或邮件地址。
白名单算法的优点在于简单明确,但存在两个缺点:一是在设定黑白名单时需要准确无误,否则可能导致误判;二是需要不断更新和维护,并且通常无法涵盖所有情况,因此白名单算法的过滤效率并不高,只能过滤掉不超过50%的垃圾邮件。
软件应用场景
应用程序白名单
应用程序白名单(Application Whitelisting, AWL)是一种用于防止未经认证的应用程序运行的安全措施,包含了一组应用程序列表,在其中的应用程序允许在系统中运行而不受控制。
传统的病毒查杀软件的病毒库通常是一个黑名单,即将已知的恶意软件隔离或清除。然而,这种方式只能防御已知的威胁和病毒,对于新型的未知威胁则无法提供充分保护,即所谓的“零日”漏洞攻击。另外,随着已知病毒和木马的增多,这将会导致黑名单的无限扩大,进而产生
计算机安装杀毒软件后变得相对缓慢。而应用程序白名单只允许预先授权的应用程序被执行和运行,有效防止了“零日”漏洞攻击,从系统应用的层次保证了系统的安全性。
在特定的应用场景中,为了确保业务系统的正常运行,需要对所需的所有软件和应用程序进行统计,并进行详尽的代码审计、安全测试和分析。此外,还可以应用完整性检查方法,常用的方法是使用散列值进行验证,以确保应用程序已通过认证并是安全的。
行为白名单
行为白名单是一项重要的安全措施,类似于资产白名单,它记录了应用程序的每个行为,并通过明确定义来区分正常业务行为和恶意或无关的行为。
相较于基于应用程序或设备的资产白名单,行为白名单提供了更细粒度、更贴合业务的定义方式。行为白名单系统可以基于网络行为进行区分,它会与预定义的授权命令行为白名单进行比较,从而轻松发现这些恶意操作和行为,并将其通知给管理人员或直接进行阻断,还可以基于工控操作信息、工控操作流程信息进行检测,其中工控操作信息包含工控协议应用层的网络数据包,通常包含有操作码、访问地址以及 数据信息,而工控操作流程信息主要体现在工控流量数据包出现的时间与次序上。
数据库场景
用户白名单
用户白名单是一种重要的安全措施,用于识别和管理系统中用户的身份和权限。它起到了发现潜在威胁的作用,特别是针对一般用户和管理员的活动。许多渗透攻击都是通过获取一定权限的用户或管理员账号后进行恶意行为的,例如攻击者可能直接滥用管理员账户,或者利用管理员账户提升其他恶意账户的权限,使其具有与管理员相同的权力。
使用用户白名单管理即在系统中引入额外的权限管理措施,由于用户白名单具有独立于系统自身用户管理措施的技术实现,它的规则强度与系统自身的用户权限相当甚至更高,相当于在系统之外添加了一道防线,可以自动化实现部分审计控制功能。而结合黑名单规则一同使用能够实现未授权 IP 违规访问、合法用户对关键服务器的非法访问、服务器违规互联等业务流异常违规行为的监控和报警,保证系统的安全。
例如,使用开源数据库防火墙DBProxy进行IP地址过滤是一种功能,它允许用户对连接DBProxy的用户的IP地址进行限制。DBProxy系统提供了一个白名单功能,即在"%用户"下配置的主机白名单。此外,每个用户还可以在其用户名下配置私有的白名单。
SQL命令白名单
SQL命令白名单是一个包含授权的SQL命令列表,只有该列表中列出的命令才能在数据库中执行,其他未列出的命令将被阻止或拒绝执行。它能有效防止未授权的命令对数据库造成意外或恶意的影响。
例如,在
阿里云原生数据库
PolarDB控制台中新增、启用或禁用白名单规则。由于实际业务中使用的SQL语句可能会很多,单个SQL语句录入会相当耗时,Proxy提供了三种白名单模式以提升工作效率和使用体验,分别是训练模式、检验模式和防护模式。其中,训练模式下Proxy只收集
SQL,而不进行SQL语句拦截和报警;检验模式下,当检测到不包含在白名单中的SQL语句时,只记录不进行SQL拦截;而防护模式下,当检测到不包含在白名单中的SQL语句时,进行SQL拦截并记录。
工作原理
白名单的工作原理是基于一种筛选机制,它通过验证实体是否在预定义的白名单中,来决定是否允许其进行特定操作或访问资源。
具体来说,白名单基于一个定义了外部可信主机的IP地址和应用协议的列表来实现。白名单通常分为两部分存放:第一部分是允许不进行协议分析的可信主机,可同时附加TCP/UDP端口号作为约束条件。第二部分是允许部分应用协议的可信主机。
当进行数据包的状态检测处理完成后,系统首先检查该数据包是否处于白名单的第一部分中。如果是,系统会直接允许通过。否则,系统将继续进行协议分析操作。
在进入协议分析阶段后,系统会将通信双方的地址和应用协议与白名单的第二部分进行对比。通常需要检查一个会话的前几个数据包才能确定所使用的应用协议。因此,之前的数据包会被按未知协议进行处理。对于已知协议,系统只匹配与该协议相关的特征库;对于未知协议,系统会匹配所有的特征库。
白名单的匹配过程并没有像包过滤规则处理中那样严格的顺序要求。因此,可以采用类似状态检测时使用的散列算法来提高处理速度。这种方式能够加快白名单的匹配过程,提高系统对访问请求的响应效率。
技术优势与局限性
技术优势
更高的安全性
白名单技术通过限制只有经过授权的软件、工具和进程可以在系统上运行,提供了更高的安全性。默认情况下,任何未经批准的应用程序都会被拒绝运行,这有助于抵御各种攻击,包括“零日”漏洞攻击和有针对性的攻击。
提供实时警示
白名单可以检测到用户在终端上意外安装恶意程序或文件的非法行为,并及时给出警报,这使得安全人员能够立即采取行动,阻止潜在的安全风险。
提高工作效率和系统性能
通过阻止未经授权的应用程序和恶意软件在系统中运行,白名单技术可以保持系统以最佳性能运作。例如,当支持人员接收到用户对系统运行缓慢的投诉时,他们可以调查并发现恶意软件正在占用
内存和处理器资源,从而能够立即采取行动解决问题。而在工业企业生产业务中,白名单保障了工业生产网的
可用性和实时性,且系统资源开销低,不会影响正常
工控软件的运行。
提供全面的系统可视性
白名单技术可以提供对正在运行的应用程序、工具和进程的全面可视性,如果相同的未经授权的程序试图在多个端点上运行,这些数据可用于追踪攻击者的路径,帮助识别和应对潜在的威胁。
抵御高级内存注入攻击
白名单技术可以验证内存中运行的所有经过授权的进程,并确保在运行时没有被修改,这有助于防止高级内存注入攻击,保护系统免受针对内存漏洞的利用。
局限性
难以防止内部威胁
白名单技术虽然能够限制仅允许授权的应用程序执行,但仍存在安全风险。即使某些IP地址、端口和功能代码被授权,仍有可能被恶意用户用于发送非法交易、转换非法协议的数据或传播病毒等,这些风险是白名单技术本身无法解决的。
维护更新困难
保持白名单的有效性需要进行频繁的维护和更新工作。编制初始白名单需要详细了解用户任务及所需应用程序,这可能需要大量的工作量。而当系统中应用程序经常更替或新增时,维护白名单列表可能会变得复杂和耗时。此外,无法完全排除未知或未列入白名单的对象,这可能导致误判和阻止合法的应用程序运行。
限制性较高
白名单技术对应用程序的执行具有较高的限制性,只允许经过明确授权的应用程序运行,这可能对用户的灵活性和自由性造成一定程度的限制。在某些情况下,合法但未经授权的应用程序可能会被错误地视为不可信,导致其受限制。
技术难点
白名单的安全性问题
由于白名单是基于已知的可信主机和应用协议列表,如果黑客或恶意用户能够篡改或伪造白名单数据,就有可能绕过安全软件的检测,进而访问系统或网络资源。因此,确保白名单的完整性和可信性对于保护
系统安全非常重要。
白名单的隐私保护问题
维护白名单需要及时收集、验证和添加新的可信主机和应用协议信息,同时删除不再可信或有安全风险的条目。这个过程需要确保数据的来源可靠,并遵循适当的数据保护和隐私政策,以确保用户信息的安全和保密。
白名单的维护更新问题
白名单技术的关键是建立一个完整、准确的白名单软件数据库。然而,全球有上亿计的软件数量,白名单中收录的软件数量远远不及此,这导致用户在安装白名单之外的软件时,可能会遭受安全软件的误报。高误报率给用户带来不便和困扰。此外,由于互联网上每周都会发布大量新的软件版本和全新的应用和游戏,及时更新白名单变得至关重要。传统的人工样本采集方法很难应对海量的软件样本,因此需要借助现代互联网技术如搜索引擎和软件开放平台,来提高样本收集的效率和全面性。
与黑名单比较
与白名单的概念相反,黑名单是指禁止使用特定软件或文件类型的列表。它限制了可使用的选项,除了被列入黑名单的内容,其他均允许使用。黑名单的功能在于排除不安全或不受信任的元素,如禁止安装、运行或访问特定软件或文件。
相比之下,白名单是指只允许使用列入列表中的软件或文件类型,它限制了可接受的选项,除非明确列入白名单,否则一律禁止。白名单的功能在于明确规定哪些软件或文件是被信任和允许的,其他一律被拒绝,以确保安全性和控制性。
应用案例
网络安全场景
在网络安全应用场景中,白名单可以在高级安全 Windows Defender 防火墙中使用。白名单的目的是允许仅经过授权的流量通过防火墙,阻止未经授权的流量进入和离开本地设备。
例如,通过配置防火墙的白名单规则,可以限制只有特定的IP地址或
域名可以建立入站连接到本地设备。这样可以有效地阻止未经授权的连接尝试,提高设备的安全性。此外,白名单可以用于限制本地设备向外部服务器建立连接的流量。只有列入白名单中的目标地址才能连接成功,这可以避免设备与潜在危险的服务器建立联系,减少受到恶意软件或攻击的风险。
又如,电子邮件白名单是一种用于确保特定电子邮件收件人或域名永远不会被视为垃圾邮件的机制。它通常在电子邮件客户端中使用,如 Microsoft 365 专属
Outlook、Outlook 2021、Outlook 2019 等。通过将特定
电子邮件地址或
域名添加到“安全发件人列表”中,可以确保收件箱始终接收来自这些地址的邮件,并避免它们被错误地标记为垃圾邮件。无论邮件内容如何,这些来自安全发件人列表的邮件都会被视为可信任的,并不会移动到垃圾邮件文件夹。
软件应用场景
在软件应用场景中,白名单用于排除被误判为恶意的文件、文件类型、文件夹或进程,以确保正常的程序运行,同时减少误报和虚警。
例如,在 Windows 系统中,如果用户对某个文件、文件类型、文件夹或进程完全信任,并且不希望 Windows 安全中心对其发出警报或阻止程序运行,可以将其添加到排除项列表中。通过这种方式告知 Windows 安全中心将其视为安全的,不会对其进行进一步的检测和干预。
数据库场景
在数据库应用场景中,白名单用于限制对数据库的访问和连接。通过设置白名单,只有列入白名单的IP地址或网络范围才被允许与数据库建立连接和进行操作,其他未列入白名单的IP地址则被拒绝。
例如,如果用户使用的数据源来自
阿里云RDS数据库,为了确保安全访问,可以在RDS数据库配置中添加白名单。
引申含义
在更广泛的语义中,白名单可以表示一份授权、认可或信任的列表,列出被认为具备特定条件或特质的人、组织、产品或服务。
如对于商业机构而言,白名单是一份被认为合格或适合就业的人员的列表。又如对于个人、组织等而言,白名单是一份拥有政府官员安全审批的人员、组织等的列表。