简介
本文档介绍什么是例外项,如何识别例外项,以及在思科安全终端上创建例外项的最佳实践。
免责声明
本文档中的信息基于Windows、Linux和macOS操作系统。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
概述
阅读本文档后,您应了解:
- 什么是例外以及思科安全终端可用的不同类型的例外项。
- 如何准备连接器以进行排除调整。
- 如何识别潜在的强排除项。
- 如何在Cisco Secure Endpoint Console中创建新例外项。
- 创建排除项的最佳实践是什么。
什么是排除项?
排除集是一个目录、文件扩展名、文件路径、进程、威胁名称、应用或不希望连接器扫描或证实的危害指示符的列表。当启用终端保护(例如安全终端)时,需要精心编制例外项,以确保计算机上的性能和安全性达到平衡。本文描述安全终端云、TETRA、SPP和MAP的例外情况。
每个环境都是独一无二的,其控制实体也各不相同,从严格的策略到开放的策略。因此,例外情况必须针对每种情况量身定制。
例外项可采用两种方式分类:思科维护的例外项和自定义例外项。
思科维护的例外项
思科维护的例外项是根据研究创建并对常用操作系统、程序和其他安全软件进行严格测试的例外项。要显示这些例外情况,请在例外情况
页的安全终端控制台中选择思科维护的例外情况
。
思科监控防病毒(AV)供应商发布的推荐排除列表,并更新思科维护的排除项以包括推荐排除项。
注意:某些AV供应商可能不会发布其建议的排除项。在这种情况下,客户可能需要联系AV供应商请求推荐的排除项列表,然后提交支持案例以更新思科维护的排除项。
自定义排除
Custom Exclusions是由用户为终端上的自定义使用案例创建的例外项。在Exclusions
页面的“Secure Endpoint Console”中选择Custom Exclusions
可显示这些例外项。
排除的类型
进程排除
进程排除允许管理员从支持的引擎排除进程。下表中列出了支持每个平台上的进程排除的引擎:
操作系统 |
引擎 |
文件扫描 |
系统进程保护 |
恶意活动保护 |
行为保护 |
Windows 窗口版本 |
✓ |
✓ |
✓ |
✓ |
Linux |
✓ |
✗ |
✗ |
✓ |
macOS |
✓ |
✗ |
✗ |
✓ |
MacOS和Linux
创建进程例外项时,必须提供绝对路径,也可以提供可选用户。如果同时指定路径和用户,则必须满足两个条件才能排除进程。如果不指定用户,则进程排除将应用于所有用户。
注意:在macOS和Linux上,进程排除项适用于所有引擎。
进程通配符:
安全终端Linux和macOS连接器支持使用进程排除中的通配符。这允许更宽泛的覆盖范围,但排除的内容更少,但如果太多未定义就很危险。您只能使用通配符包含提供所需排除项所需的最小字符数。
进程通配符用于macOS和Linux:
- 通配符用单个星号字符(*)表示
- 可以使用通配符代替单个字符或完整目录。
- 将通配符置于路径开头无效。
- 通配符在两个定义的字符(斜杠或字母数字)之间工作。
示例:
排除 |
预期结果 |
/Library/Java/JavaVirtualMachines/*/java |
排除JavaVirtualMachines 的所有子文件夹中的java |
/Library/Jibber/j*bber |
不包括jabber 、jibber 、jobber 等进程 |
Windows 窗口版本
创建进程排除时,您可以提供进程可执行文件的绝对路径和/或SHA-256。如果同时指定路径和SHA-256,则必须满足这两个条件才能排除进程。
在Windows中,还可以在路径中使用CSIDL或KNOWNFOLDERID创建进程例外项。
注意:默认情况下不排除已排除进程创建的子进程。要在创建进程排除时排除其他进程,请选择“应用于子进程”
。
限制:
- 如果进程的文件大小大于策略中设置的最大扫描文件大小,则不会计算进程的SHA-256,并且排除将不起作用。对大于最大扫描文件大小的文件使用基于路径的进程排除。
- Windows连接器对所有进程排除类型强制实施500个进程排除项限制。
注意:在Windows上,进程例外项按引擎应用。如果相同排除应用于多个引擎,则在此情况下必须为每个适用的引擎复制进程排除。
进程通配符:
安全终端Windows连接器支持使用进程排除中的通配符。这允许更宽泛的覆盖范围,但排除的内容更少,但如果太多未定义就很危险。您只能使用通配符包含提供所需排除项所需的最小字符数。
Windows进程通配符的使用:
- 通配符用单个星号字符()和双星号(*)表示
- 单个星号通配符(*):
- 可以使用通配符代替单个字符或完整目录。
- 将通配符置于路径开头无效。
- 通配符在两个定义的字符(斜杠或字母数字)之间工作。
- 将通配符放在路径末尾会排除该目录中的所有进程,但不排除子目录。
- 双星号通配符(**):
- 只能放置在路径的末尾。
- 在路径末尾放置通配符将排除该目录中的所有进程和子目录中的所有进程。
- 这允许使用最小输入获得大得多的排除集,但也会为可视性留下很大的安全漏洞。请谨慎使用此功能。
示例:
排除 |
预期结果 |
C:\Windows\*\Tiworker.exe |
排除在Windows 子目录中找到的所有Tiworker.exe 进程 |
C:\Windows\P*t.exe |
不包括Pot.exe 、Pat.exe 、P1t.exe 等 |
C:\Windows\*keys.exe |
排除Windows 目录中以keys.exe 结尾的所有进程 |
C:\* |
排除C: 驱动器中的所有进程,但不排除子目录中 |
C:\** |
排除C: 驱动器上的每个进程 |
威胁排除
通过威胁排除,您可以排除特定威胁名称触发事件。只有当您确定事件是误报检测的结果时,才应使用威胁排除。在这种情况下,请使用事件的确切威胁名称作为您的威胁排除。请注意,如果使用此类排除,则即使威胁名称为真正,也不会被检测、隔离或生成事件。
注意:威胁例外项不区分大小写。示例:W32.Zombies.NotAVirus
和w32.zombies.notavirus都匹配相同的威胁名称。
警告:除非经过彻底调查确认威胁名称为误报,否则不要排除威胁。已排除的威胁不再填充events(事件)选项卡以供审阅和审核。
路径排除
路径排除最常用,因为应用冲突通常涉及目录排除。可以使用绝对路径创建路径排除。在Windows中,还可以使用CSIDIL或KNOWNFOLDERID创建路径例外项。
例如,要在Windows上排除Program Files
目录中的AV应用程序,排除路径可以是以下任意路径:
C:\Program Files\MyAntivirusAppDirectory
CSIDL_PROGRAM_FILES\MyAntivirusAppDirectory
FOLDERID_ProgramFiles\MyAntivirusAppDirectory
部分路径匹配(仅限Windows)
如果路径排除中未提供尾随斜杠,则Windows连接器对路径执行部分匹配。Mac和Linux不支持部分路径匹配。
例如,如果您在Windows上应用以下路径例外项:
C:\Program Files
C:\test
然后排除以下所有路径:
C:\Program Files
C:\Program Files (x86)
C:\test
C:\test123
将排除项从"C:\test"
更改为"C:\test\"
将防止排除"C:\test123"
。
文件扩展名排除项
文件扩展名排除允许排除具有特定扩展名的所有文件。
关键点
- 安全终端控制台的预期输入是
.extension
- 如果没有添加任何文件扩展名,安全终端控制台会自动在文件扩展名前预置一个句点。
- 扩展名不区分大小写。
例如,为了排除所有Microsoft Access数据库文件,可以创建以下排除:
.MDB
注意:标准文件扩展名排除项在默认列表中可用,不建议删除这些排除项,这样做可能导致终端上的性能更改。
通配符排除项
通配符例外项与路径或文件扩展名例外项相同,但可以使用星号字符(*)表示路径或扩展名中的通配符。
例如,如果您希望将macOS上的虚拟机排除在扫描范围之外,可以输入以下路径排除范围:
/Users/johndoe/Documents/Virtual Machines/
但是,此排除只适用于一个用户,因此请用星号替换路径中的用户名,并创建通配符排除来排除所有用户的此目录:
/Users/*/Documents/Virtual Machines/
注意:通配符排除不只限于路径分隔符,这可能会导致意外排除。例如,C:\*\test
排除C:\sample\test和
C:\1\test** 或C:\sample\test123
。
警告:以星号字符开始排除可能会导致严重的性能问题。删除或更改所有以星号字符开头的例外项,以缓解CPU影响。
Windows 窗口版本
在Windows上创建通配符例外项时,有一个Apply to all drive letters
选项。选择此选项会将通配符排除应用到所有已装载的驱动器。
如果您手工创建相同的例外项,则需要使用^[A-Za-z]
在前面添加相应的例外项,例如:
^[A-Za-z]\testpath
这两个示例中都排除了C:\testpath和D:\testpath。
如果选择Apply to all drive letters
进行通配符排除,安全终端控制台将自动生成^[A-Za-z]
。
可执行文件排除项(仅限Windows)
可执行文件排除项仅适用于已启用防攻击的Windows连接器。可执行文件排除将某些可执行文件排除在利用漏洞防御的保护范围之外。如果您遇到问题或性能问题,您应该只将可执行文件从防漏洞攻击中排除。
您可以检查受保护进程的列表,并通过在应用程序排除字段中指定其可执行名称来从保护中排除任何进程。可执行文件排除必须与name.exe
格式的可执行文件名称完全匹配。不支持通配符。
注意:只能通过安全终端控制台使用可执行排除排除来排除应用。与DLL相关的任何排除都需要打开支持案例才能创建排除。
查找漏洞预防的正确排除项是一个比其他任何排除类型都要密集的过程,需要进行大量测试以尽量减少任何有害的安全漏洞。
IOC排除(仅限Windows)
通过IOC排除,可以排除云危害表现。如果自定义或内部应用未签名并导致某些IOC频繁触发,则此功能非常有用。安全终端控制台提供要从IOC排除项中选择的指示器列表。您可以通过下拉列表选择要排除的指示器:
注意:如果排除高或关键严重性IOC,您将无法看到它,并可能使您的组织面临风险。仅当您遇到大量误报检测时,才应排除这些IOC。
CSIDL和KNOWNFOLDERID(仅Windows)
在编写Windows路径和进程排除项时,接受和鼓励CSIDL和KNOWNFOLDERID值。CSIDL/KNOWNFOLDERID值对于为使用备用驱动器号的环境创建进程和路径排除项非常有用。
在使用CSIDL/KNOWNFOLDERID时,需要考虑一些限制。如果您的环境在多个驱动器盘符上安装程序,则CSIDL/KNOWNFOLDERID值仅指标记为默认或已知安装位置的驱动器。
例如,如果操作系统安装在C:\
上,但Microsoft SQL的安装路径已手动更改为D:\
,则已维护的排除列表中的基于CSIDL/KNOWNFOLDERID的排除不适用于该路径。这意味着由于CSIDL/KNOWNFOLDERID的使用无法对其进行映射,因此必须为不在C:\
驱动器上的每个路径或进程排除输入一个排除。
有关详细信息,请参阅以下Windows文档:
注意:仅Windows连接器8.1.7及更高版本支持KNOWNFOLDERID。早期版本的Windows连接器使用CSIDL值。
注意:KNOWNFOLDERID值区分大小写。例如,您必须使用valueFOLDERID_ProgramFiles
,而不能使用无效的valueFolderID_programfiles
。
准备连接器以进行排除调整
要准备连接器以进行排除调整,您需要:
- 设置策略和组以在调试模式下运行。
- 按照正常业务操作运行新Debug组中的计算机,以便有时间获取足够的连接器日志数据。
- 在连接器上生成诊断数据,用于识别排除项。
有关启用调试模式和收集不同操作系统上的诊断数据的说明,请参阅以下文档:
识别例外项
MacOS和Linux
在调试模式下生成的诊断数据提供了两个可用于创建排除的文件:fileops.txt和execs.txt。fileops.txt文件用于创建路径/文件扩展名/通配符排除项,execs.txt文件用于创建进程排除项。
创建进程例外项
execs.txt文件列出触发Secure Endpoint执行文件扫描的可执行路径。每条路径都有一个相关计数,它指示扫描的次数,并且列表按降序排序。您可以使用此列表确定具有大量执行事件的进程,然后使用进程路径创建排除项。但是,不建议排除常规实用程序(例如/usr/bin/grep)或解释程序(例如/usr/bin/ruby)。如果通用实用程序或解释程序生成大量文件扫描,您可以进行更多调查以尝试和创建更有针对性的排除项:
- 排除父进程:确定哪个应用程序正在执行进程(例如,查找执行grep的父进程)并排除此父进程。当且仅当父进程可以安全设置为进程排除时,才应执行此操作。如果父代排除适用于子代,则从父代进程到任何子代的调用也将被排除。
- 排除给定用户的进程:确定执行进程的用户。如果某个特定用户正在大量执行进程,则可以只为该特定用户排除该进程(例如,如果某个进程正在大量由用户“root”调用,则可以排除该进程,但只能为指定用户“root”执行,这将允许安全终端监控非“root”的任何用户执行给定进程)。
execs.txt的输出示例:
33 /usr/bin/bash
23 /usr/bin/gawk
21 /usr/bin/wc
21 /usr/bin/sleep
21 /usr/bin/ls
19 /usr/bin/pidof
17 /usr/bin/sed
14 /usr/bin/date
13 /usr/libexec/gdb
13 /usr/bin/iconv
11 /usr/bin/cat
10 /usr/bin/systemctl
9 /usr/bin/pgrep
9 /usr/bin/kmod
7 /usr/bin/rm
6 /usr/lib/systemd/systemd-cgroups-agent
6 /usr/bin/rpm
4 /usr/bin/tr
4 /usr/bin/sort
4 /usr/bin/find
创建路径、文件扩展名和通配符例外项
fileops.txt文件列出文件创建、修改和重命名活动触发“安全终端”执行文件扫描的路径。每条路径都有一个相关计数,它指示扫描的次数,并且列表按降序排序。开始使用Path Exclusions的方法之一是从fileops.txt查找最常扫描的文件和文件夹路径,然后考虑为这些路径创建规则。虽然高计数并不一定意味着必须排除路径(例如,可以经常扫描存储电子邮件的目录,但不能排除该目录),但列表提供了识别排除候选目录的起点。
fileops.txt的输出示例:
31 /Users/eugene/Library/Cookies/Cookies.binarycookies
24 /Users/eugene/.zhistory
9 /Users/eugene/.vim/.temp/viminfo
9 /Library/Application Support/Apple/ParentalControls/Users/eugene/2018/05/10-usage.data
5 /Users/eugene/Library/Cookies/HSTS.plist
5 /Users/eugene/.vim/.temp/viminfo.tmp
4 /Users/eugene/Library/Metadata/CoreSpotlight/index.spotlightV3/tmp.spotlight.state
3 /Users/eugene/Library/WebKit/com.apple.Safari/WebsiteData/ResourceLoadStatistics/full_browsing_session_resourceLog.plist
3 /Library/Logs/Cisco/supporttool.log
2 /private/var/db/locationd/clients.plist
2 /Users/eugene/Desktop/.DS_Store
2 /Users/eugene/.dropbox/instance1/config.dbx
2 /Users/eugene/.DS_Store
2 /Library/Catacomb/DD94912/biolockout.cat
2 /.fseventsd/000000000029d66b
1 /private/var/db/locationd/.dat.nosync0063.arg4tq
一个好的经验法则是,任何具有日志或日志文件扩展名的事物都应视为适当的排除候选。
行为保护引擎
行为保护引擎在Linux连接器版本1.22.0和macOS连接器版本1.24.0中引入;从这些版本开始,连接器可以检测极高的系统活动,然后引发故障18。
进程排除项应用于所有引擎和文件扫描。将进程排除应用于非常活跃的良性进程以修复此故障。top.txt文件由调试模式诊断数据生成,可用于确定系统中最活跃的进程。有关详细的补救步骤,请参阅安全终端Mac/Linux连接器故障18指南。
此外,进程排除可以阻止良性软件的误报行为保护检测。对于Secure Endpoint Console中的误报检测,可以排除该进程以改进报告。
Windows 窗口版本
Windows操作系统更加复杂,由于父进程与子进程的不同,有更多排除选项可用。这表示需要更深入的审查,以确定已访问的文件以及生成这些文件的程序。
有关使用安全终端如何分析和优化Windows性能的详细信息,请参阅思科安全解决方案的GitHub页的此Windows优化工具。
在安全终端控制台中创建排除规则
注意:在写入例外项之前,请始终了解文件和进程,以避免终端上的安全漏洞。
完成以下步骤,使用安全终端控制台创建新的排除规则:
- 在安全终端控制台中,通过选择
Management
-> Exclusions
导航到“Policies”页。(A)找到您要修改的排除集并单击Edit
,或者(B)单击+新排除集……
。
- 在
New Exclusion Set
弹出窗口中,选择要为其创建排除集的操作系统。Click Create
.
- 系统会将您重定向到
新的排除集
页面。单击+ Add Exclusion
,然后从Select Type
下拉列表中选择排除类型。
Windows 窗口版本:
Mac/Linux:
- 填写所选排除类型的必填字段。
- 重复步骤2和3以添加更多规则,或者单击
Save
以保存例外项集。
最佳实践
创建例外项时要小心,因为它们会降低思科安全终端提供的保护级别。排除的文件不会进行散列、扫描或在缓存或云中可用,活动不受监控,并且后端引擎、设备轨迹和高级分析中缺少信息。
排除项只能用于目标实例,例如特定应用程序的兼容性问题或无法通过其他方式改进的性能问题。
创建排除项时要遵循的一些最佳实践包括:
- 仅为已证实的问题创建例外项
- 不要认为排除是不必要的,除非已经证明这是一个无法通过其他方式解决的问题。
- 在应用排除之前,必须彻底调查和缓解性能问题、误报或应用程序兼容性问题。
- 首选进程例外项而不是路径/文件扩展名/通配符例外项
- 与结合使用路径、文件扩展名和通配符排除来实现相同结果相比,进程排除提供了一种更直接的方法来排除良性软件活动。
- 建议尽可能使用相应的进程排除替换目标程序可执行文件的路径、文件扩展名和通配符排除项。
- 避免广泛排除
- 避免过度使用通配符排除项
- 使用通配符创建例外项时要小心。尽可能使用更具体的例外项。
- 在排除项中使用通配符的最小数量;只有真正可变的文件夹才应使用通配符。
- 避免排除通用程序和口译员
- 建议不要排除一般实用程序或口译员。
- 如果确实需要排除某个排除的常规实用程序或解释程序,则提供一个进程用户(仅限macOS/Linux)。
- 例如,避免编写包括python、
java
、ruby
、bash
、sh
等在内的例外项。
- 避免重复排除
- 在创建排除之前,请检查该排除是否已存在于自定义排除或思科维护的排除中。
- 删除重复排除可提高性能并减少排除的运营管理。
- 确保路径/文件扩展名/通配符排除不包括进程排除中指定的路径。
- 避免排除已知在恶意软件攻击中常用的进程
- 删除过时的排除项
- 定期检查和审核您的排除列表,并记录添加某些排除的原因。
- 删除危害时的排除项
- 当连接器遭到入侵时,必须删除例外项才能重新获得最佳的安全性和可视性。
- 自动操作可用于在感染后对连接器应用更安全的策略。如果连接器受损,应将其移至包含策略的组,且没有任何例外情况,以确保应用最高级别的保护。
- 有关如何主动设置“在受到侵害时将计算机移动到组”自动操作的更多详细信息,请参阅识别在安全终端中触发自动操作的条件。
- 增强对已排除项目的保护
- 当排除项绝对有必要时,请考虑可以采取哪些缓解策略,例如启用写保护以便为排除项添加一些保护层。
- 智能地创建例外项
- 通过选择可唯一标识要排除的应用程序的最高级别父进程来优化规则,并使用
Apply to Child Process
选项最小化规则数。
- 从不排除启动过程
- 启动进程(在macOS上为
launchd
,在Linux上为init
或systemd
)负责启动系统上的所有其它进程,它位于进程层次结构的顶端。
- 排除启动进程及其所有子进程将有效禁用安全终端监控。
- 尽可能指定进程用户(仅限macOS/Linux)
- 如果用户字段留空,则排除项适用于运行指定程序的任何进程。
- 虽然适用于任何用户的例外项更具灵活性,但此广泛的范围可能会无意中排除必须监控的活动。
- 对于应用于运行时引擎(例如,
java
)和脚本解释器(例如,bash
、python
)等共享程序的规则,指定用户尤其重要。
- 指定用户可限制范围,并指示安全终端在监控其他实例时忽略特定实例。
不推荐的排除项
尽管不可能知道攻击者可能使用的每个攻击媒介,但有一些核心攻击媒介需要监控。为了保持良好的安全状态和可视性,不建议使用以下排除项:
AcroRd32.exe |
addinprocess.exe |
addinprocess32.exe |
addinutil.exe |
bash.exe |
bginfo.exe |
bitsadmin.exe |
cdb.exe |
csi.exe |
dbghost.exe |
dbgsvc.exe |
dnx.exe |
dotnet.exe |
excel.exe |
fsi.exe |
fsiAnyCpu.exe |
iexplore.exe |
java.exe |
kd.exe |
lxssmanager.dll |
msbuild.exe |
mshta.exe |
ntkd.exe |
ntsd.exe |
outlook.exe |
psexec.exe |
powerpnt.exe |
powershell.exe |
rcsi.exe |
svchost.exe |
schtasks.exe |
system.management.automation.dll |
windbg.exe |
winword.exe |
wmic.exe |
wuault.exe |
.7z |
.bat |
.bin |
.cab |
.cmd |
.com |
.cpl |
.dll |
.exe |
.fla |
.gif |
.gz |
.hta |
.inf |
.java |
.jar |
.job |
.jpeg |
.jpg |
.js |
.ko |
.ko.gz |
.msi |
.ocx |
.png |
.ps1 |
.py |
.rar |
.reg |
.scr |
.sys |
.tar |
.tmp |
.url |
.vbe |
.vbs |
.wsf |
.zip |
bash |
java |
python |
python3 |
sh |
zsh |
/ |
/bin |
/sbin |
/usr/lib |
C: |
C:\ |
C:\* |
|
D:\ |
D:\* |
C:\Program Files\Java |
C:\Temp\ |
C:\Temp\* |
C:\Users\ |
C:\Users\* |
C:\Windows\Prefetch |
C:\Windows\Prefetch\ |
C:\Windows\Prefetch\* |
C:\Windows\System32\Spool |
C:\Windows\System32\CatRoot2 |
C:\Windows\Temp |
C:\Windows\Temp\ |
C:\Windows\Temp\* |
C:\Program文件\<公司名称>\ |
C:\Program文件(x86)\<公司名称>\ |
C:\Users\<UserProfileName>\AppData\Local\Temp\ |
C:\Users\<UserProfileName>\AppData\LocalLow\Temp\ |
注意:这不是要避免的详尽的例外项列表,但提供了对核心攻击媒介的见解。保持对这些路径、文件扩展名和进程的可视性至关重要。
相关信息