Linux песочница с C, безопасная?
Я разрабатываю общий honeypot для служб TCP как часть моей дипломной работы.
В настоящее время я использую Chroot, пространства имен Linux, безопасные вычисления и возможности для создания своего рода песочницы.
Мой вопрос: есть ли какие-то моменты, о которых я должен знать? Так как мне нужно монтировать / proc в песочнице, мне любопытно, повлияет ли это на общую безопасность хост-системы.
(Кстати, пространства имен пользователей не являются опцией.)
/* РЕДАКТИРОВАТЬ */
Чтобы быть более ясным: я использую возможности (7) и libseccomp, чтобы ограничить доступ к таким функциям, как системные вызовы для пользователей root и не-root.
Но как насчет файлов в / proc, например, /proc/sys/*? Должен ли я занести в черный список файлы / каталоги с пустым bind-mount, как это делает firejail?
1 ответ
Как прокомментировал Янн Дроно, чтение src systemd-nspawn очень помогло.
Я нашел следующие подкаталоги /proc, которые должны быть подключены только для чтения / недоступны:
/* Make these files inaccessible to container payloads: they potentially leak information about kernel
* internals or the host's execution environment to the container */
PROC_INACCESSIBLE("/proc/kallsyms"),
PROC_INACCESSIBLE("/proc/kcore"),
PROC_INACCESSIBLE("/proc/keys"),
PROC_INACCESSIBLE("/proc/sysrq-trigger"),
PROC_INACCESSIBLE("/proc/timer_list"),
/* Make these directories read-only to container payloads: they show hardware information, and in some
* cases contain tunables the container really shouldn't have access to. */
PROC_READ_ONLY("/proc/acpi"),
PROC_READ_ONLY("/proc/apm"),
PROC_READ_ONLY("/proc/asound"),
PROC_READ_ONLY("/proc/bus"),
PROC_READ_ONLY("/proc/fs"),
PROC_READ_ONLY("/proc/irq"),
PROC_READ_ONLY("/proc/scsi"),