Как проверить, применен ли фильтр seccomp в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как проверить, применен ли seccomp-фильтр в Linux. Seccomp (Security Computing Mode) — это функция безопасности, которая ограничивает системные вызовы, которые может выполнять процесс.

Вы изучите три метода для проверки статуса seccomp: анализ файла /proc/self/status для проверки состояния seccomp процесса, проверка сообщений ядра с помощью команды dmesg на предмет событий, связанных с seccomp, и проверка каталога /sys/kernel/security на наличие информации о конфигурации seccomp. Эти шаги предоставят вам практические навыки для понимания и проверки применения seccomp в среде Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) 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{{"Как проверить, применен ли фильтр seccomp в Linux"}} linux/cat -.-> lab-558751{{"Как проверить, применен ли фильтр seccomp в Linux"}} linux/cd -.-> lab-558751{{"Как проверить, применен ли фильтр seccomp в Linux"}} linux/grep -.-> lab-558751{{"Как проверить, применен ли фильтр seccomp в Linux"}} end

Проверка статуса seccomp с помощью команды cat /proc/self/status

На этом шаге мы узнаем, как проверить статус seccomp (Secure Computing) процесса в Linux. Seccomp — это функция безопасности, которая позволяет процессу ограничить системные вызовы, которые он может выполнять. Это может помочь уменьшить воздействие уязвимостей безопасности.

Мы можем проверить статус seccomp текущего процесса, изучив файл /proc/self/status. Этот файл содержит различную информацию о статусе процесса.

Если терминал еще не открыт, откройте его. Для этого нажмите на значок Xfce Terminal слева на рабочем столе.

Теперь введите следующую команду и нажмите Enter:

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, чтобы перейти к следующему шагу.

Проверка seccomp с помощью dmesg

На этом шаге мы узнаем, как проверять сообщения ядра, связанные с seccomp, с помощью команды dmesg. Команда dmesg отображает сообщения из кольцевого буфера ядра. Эти сообщения содержат информацию о железе, драйверах устройств и других событиях на уровне ядра, включая события, связанные с безопасностью, такие как действия seccomp.

Когда seccomp активен и блокирует системный вызов, ядро часто записывает сообщение в кольцевой буфер. Мы можем использовать команду dmesg для просмотра этих сообщений и фильтрации по тем, которые связаны с seccomp.

Если терминал еще не открыт, откройте его.

Теперь введите следующую команду и нажмите Enter:

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. Это также нормально и зависит от активности системы.

Использование dmesg с grep — это мощный способ фильтровать сообщения ядра и диагностировать проблемы или наблюдать за событиями безопасности.

Нажмите Continue, чтобы перейти к следующему шагу.

Проверка seccomp в /sys/kernel/security

На этом последнем шаге мы рассмотрим каталог /sys/kernel/security, который предоставляет интерфейс к различным модулям безопасности ядра, включая seccomp. Этот каталог позволяет нам проверять и иногда настраивать аспекты безопасности ядра.

Если терминал еще не открыт, откройте его.

Сначала перейдем в каталог /sys/kernel/security. Для этого можно использовать команду cd:

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.

Теперь вы узнали три разных способа проверки статуса seccomp и связанной информации в среде Linux.

Нажмите Continue, чтобы завершить лабораторную работу.

Резюме

В этой лабораторной работе мы научились проверять, применен ли фильтр seccomp в Linux. Мы рассмотрели три метода: проверку файла /proc/self/status для просмотра статуса Seccomp: процесса, проверку сообщений, связанных с seccomp, в журнале ядра с помощью команды dmesg и проверку статуса seccomp через файловую систему /sys/kernel/security.

Эти шаги предоставили практические способы определения статуса seccomp процессов и понимания того, как seccomp отображается ядром Linux, что является важным для анализа безопасности и устранения неполадок.