Namespaces и cgroups обеспечивают изоляцию и ограничение ресурсов, но не защищают от вредоносных системных вызовов. Для этого используются seccomp и capabilities.
Capabilities разбивают монолитные привилегии root на гранулярные разрешения:
# Просмотр capabilities текущего процесса
$ getpcaps $$
1234: cap_chown,cap_dac_override,cap_fowner,...=ep
# Docker по умолчанию выдаёт ограниченный набор capabilities:
# CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_FSETID, CAP_FOWNER,
# CAP_MKNOD, CAP_NET_RAW, CAP_SETGID, CAP_SETUID,
# CAP_SETFCAP, CAP_SETPCAP, CAP_NET_BIND_SERVICE,
# CAP_SYS_CHROOT, CAP_KILL, CAP_AUDIT_WRITE
# Убираем все capabilities и добавляем только нужные
$ docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
# Проверка capabilities процесса внутри контейнера
$ docker exec container01 getpcaps 1
Seccomp (Secure Computing) фильтрует системные вызовы на уровне ядра:
# Профиль seccomp для Docker (JSON)
{
"defaultAction": "SCMP_ACT_ERRNO",
"archMap": [
{ "architecture": "SCMP_ARCH_X86_64", "subArchitectures": ["SCMP_ARCH_X86"] }
],
"syscalls": [
{
"names": [
"accept", "accept4", "bind", "brk", "close",
"connect", "dup", "dup2", "dup3", "epoll_create",
"epoll_create1", "epoll_ctl", "epoll_wait",
"execve", "exit", "exit_group", "fcntl",
"fstat", "futex", "getcwd", "getdents64",
"getpid", "getppid", "ioctl", "listen",
"lseek", "mmap", "mprotect", "munmap",
"nanosleep", "open", "openat", "pipe", "pipe2",
"poll", "read", "readlink", "recvfrom", "recvmsg",
"rename", "rt_sigaction", "rt_sigprocmask",
"sendmsg", "sendto", "set_robust_list",
"setsockopt", "socket", "stat", "uname",
"write", "writev"
],
"action": "SCMP_ACT_ALLOW"
}
]
}
# Запуск контейнера с кастомным профилем
$ docker run --security-opt seccomp=profile.json myapp
По умолчанию Docker блокирует ~44 системных вызова, включая reboot, mount, swapon, init_module. Кастомный профиль позволяет ещё больше сузить поверхность атаки.
Результаты воркшопа для «ДевКоманда»:
| Навык | До | После |
| Диагностика сетевых проблем контейнеров | Метод проб и ошибок | ip netns exec + tcpdump за 5 минут |
| Анализ OOM в контейнерах | «Что-то упало» | cgroup memory.events + dmesg |
| Отладка прав доступа | --privileged на всё | Точные capabilities + seccomp |
| Понимание слоёв образов | Чёрный ящик | OverlayFS: inspect + оптимизация |
Если вашей команде нужен глубокий практический воркшоп по контейнеризации, Linux-изоляции или Kubernetes internals — обращайтесь к специалистам itfresh.ru.
Оставить комментарий