如何检查 Linux 中是否应用了 seccomp 过滤器

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何检查 Linux 系统中是否应用了 seccomp 过滤器。seccomp 是一项安全功能,用于限制进程可以进行的系统调用。

你将探索三种验证 seccomp 状态的方法:检查 /proc/self/status 文件以查看进程的 seccomp 状态;使用 dmesg 命令检查内核消息,查找与 seccomp 相关的事件;检查 /sys/kernel/security 目录,获取 seccomp 配置信息。通过这些步骤,你将掌握在 Linux 环境中理解和验证 seccomp 应用的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/ls -.-> lab-558751{{"如何检查 Linux 中是否应用了 seccomp 过滤器"}} linux/cat -.-> lab-558751{{"如何检查 Linux 中是否应用了 seccomp 过滤器"}} linux/cd -.-> lab-558751{{"如何检查 Linux 中是否应用了 seccomp 过滤器"}} linux/grep -.-> lab-558751{{"如何检查 Linux 中是否应用了 seccomp 过滤器"}} end

使用 cat /proc/self/status 检查 seccomp 状态

在这一步中,我们将探讨如何检查 Linux 系统中进程的 seccomp 状态。seccomp(安全计算)是一项安全功能,它允许进程限制自身可以进行的系统调用,有助于减轻安全漏洞的影响。

我们可以通过查看 /proc/self/status 文件来检查当前进程的 seccomp 状态。该文件包含了进程的各种状态信息。

如果终端尚未打开,请打开它。你可以点击桌面左侧的 Xfce Terminal 图标来打开终端。

现在,输入以下命令并按下回车键:

cat /proc/self/status

此命令将显示 /proc/self/status 文件的内容。滚动输出结果,查找以 Seccomp: 开头的行。

你应该会看到类似以下的输出:

Name:   zsh
Umask:  0002
State:  R (running)
Tgid:   ...
Ngid:   0
Pid:    ...
PPid:   ...
TracerPid:      0
Uid:    ...
Gid:    ...
FDSize: 64
Groups: ...
NStgid: ...
NSpid:  ...
NSpgid: ...
NSsid:  ...
VmPeak: ... kB
VmSize: ... kB
VmLck:  0 kB
VmPin:  0 kB
VmHWM:  ... kB
VmRSS:  ... kB
RssAnon:        ... kB
RssFile:        ... kB
RssShmem:       ... kB
VmData: ... kB
VmStk:  ... kB
VmExe:  ... kB
VmLib:  ... kB
VmPTE:  ... kB
VmSwap: 0 kB
HugetlbPages:   0 kB
CoreDumpFilter: 00000000
Threads:        1
SigQ:   .../...
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
voluntary_ctxt_switches:        ...
nonvoluntary_ctxt_switches:     ...
Seccomp:        0

Seccomp: 行表示 seccomp 的状态。值为 0 意味着该进程未启用 seccomp。其他可能的值表示不同的 seccomp 模式。

理解 /proc/self/status 的输出是在 Linux 中检查进程信息的一项基本技能。

点击 Continue 进入下一步。

dmesg 中验证 seccomp

在这一步中,你将学习如何使用 dmesg 命令检查与 seccomp 相关的内核消息。dmesg 是一个用于显示内核环形缓冲区消息的命令。这些消息包含有关硬件、设备驱动程序和其他内核级事件的信息,其中包括像 seccomp 操作这样的安全相关事件。

当 seccomp 处于活动状态并阻止系统调用时,内核通常会将一条消息记录到环形缓冲区中。你可以使用 dmesg 查看这些消息,并筛选出与 seccomp 相关的消息。

如果终端尚未打开,请打开它。

现在,输入以下命令并按下回车键:

dmesg | grep seccomp

下面来拆解一下这个命令:

  • dmesg:此命令用于显示内核消息。
  • |:这是一个管道符号。它将左边命令(dmesg)的输出作为输入传递给右边的命令(grep)。
  • grep seccomp:此命令用于在接收到的输入中搜索包含 "seccomp" 这个词的行。

该命令的输出将显示所有包含 "seccomp" 一词的内核消息。在一些系统进程或容器使用 seccomp 的典型环境中,你可能会看到类似以下的输出:

[ ... ] audit: type=1326 audit(...): auid=... uid=... gid=... ses=... subj=unconfined seccomp=0 pid=... comm="..." exe="..." sig=0 arch=c000003e syscall=... compat=0 ip=... code=0x...
[ ... ] audit: type=1326 audit(...): auid=... uid=... gid=... ses=... subj=unconfined seccomp=2 pid=... comm="..." exe="..." sig=0 arch=c000003e syscall=... compat=0 ip=... code=0x...

这些消息表明内核审计系统正在记录与 seccomp 相关的事件。审计消息中的 seccomp= 字段显示了事件发生时进程的 seccomp 模式。

如果你没有看到任何输出,这可能意味着在这个特定环境中最近没有记录与 seccomp 相关的事件。这也是正常的,具体取决于系统的活动情况。

dmesggrep 结合使用是一种强大的方法,可以筛选内核消息、诊断问题或观察安全事件。

点击 Continue 进入下一步。

/sys/kernel/security 中检查 seccomp

在这最后一步中,我们将探索 /sys/kernel/security 目录,该目录为包括 seccomp 在内的各种内核安全模块提供了一个接口。通过这个目录,我们可以检查,有时还能配置内核与安全相关的方面。

如果终端尚未打开,请打开它。

首先,让我们使用 cd 命令导航到 /sys/kernel/security 目录:

cd /sys/kernel/security

现在我们已经进入了 /sys/kernel/security 目录,使用 ls 命令列出其内容:

ls

你应该会看到一个与不同安全模块相关的目录和文件列表。查找与 seccomp 相关的目录或文件。输出可能如下所示(具体内容会因系统而异):

apparmor  cap  device_cgroup  lockdown  lsm  selinux  seccomp  smack  tomoyo

你应该能看到一个名为 seccomp 的目录。这个目录包含的文件提供了内核层面 seccomp 配置和状态的相关信息。

让我们进入 seccomp 目录:

cd seccomp

现在,列出 seccomp 目录的内容:

ls

根据内核版本和配置的不同,你可能会看到像 policy 这样的文件或其他文件。这些文件可以提供关于系统中已加载或可用的 seccomp 策略的更详细信息。

例如,如果存在 policy 文件(文件名可能不同),你可以尝试查看其内容:

cat policy

cat policy 的输出取决于系统是否全局启用了 seccomp 策略,或者该文件是否提供了其他信息。在许多标准配置中,这个文件可能不会直接包含大量人类可读的策略细节,但它的存在表明 seccomp 是一个被识别的安全模块。

探索 /sys 文件系统,特别是 /sys/kernel/security 路径,是了解 Linux 内核中已启用和配置的安全功能的关键方法。

你现在已经学习了三种在 Linux 环境中检查 seccomp 状态及相关信息的不同方法。

点击 Continue 完成实验。

总结

在本次实验中,你学习了如何检查 Linux 中是否应用了 seccomp 过滤器。我们探索了三种方法:检查 /proc/self/status 文件以查看进程的 Seccomp: 状态;使用 dmesg 命令验证内核日志中与 seccomp 相关的消息;通过 /sys/kernel/security 文件系统检查 seccomp 状态。

这些步骤为确定进程的 seccomp 状态以及了解 Linux 内核如何报告 seccomp 提供了实用的方法,这对于安全分析和故障排除至关重要。