Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

DOCKER_PRIVILEGE_ESCALATION Linux / DevOps

Безопасность Docker: Rootless режим, сброс Linux Capabilities и Seccomp

Обновлено: 21.08.2026
  • Уязвимость Breakout/Container Escape из-за запуска демона Docker от пользователя root.
  • Процессы внутри контейнера имеют избыточные привилегии ядра (CAP_SYS_ADMIN, CAP_NET_RAW).
  • Претензии аудита безопасности и CIS Docker Benchmark.

1. Сброс всех привилегий ядра и выдача только необходимых

# Сброс всех возможностей и выдача только разрешения привязки портов < 1024
docker run -d \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --read-only \
  --security-opt=no-new-privileges:true \
  nginx

2. Запрет повышения привилегий через SUID

Добавьте флаг no-new-privileges для предотвращения эскалации через утилиты sudo/suid:

docker run --security-opt=no-new-privileges:true my_untrusted_app

3. Применение кастомного профиля фильтрации системных вызовов Seccomp

docker run --security-opt seccomp=/etc/docker/seccomp/custom_profile.json my_app

4. Установка и запуск Rootless Docker (без прав root на хосте)

# Установка пакетов
apt-get install -y uidmap dbus-user-session

# Запуск скрипта настройки от обычного пользователя (не root!)
dockerd-rootless-setuptool.sh install

# Экспорт переменных окружения
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
💡 Практика специалистов: Всегда запускайте контейнеры с флагом --security-opt=no-new-privileges:true. Это гарантирует, что даже скомпрометированный бинарник внутри контейнера не сможет получить дополнительные возможности ядра через бит SUID.

Частые вопросы (FAQ)

Чем опасен флаг --privileged?

Флаг --privileged передает контейнеру все возможности ядра (Linux Capabilities) и отключает профили AppArmor/Seccomp. С ним root в контейнере имеет полный доступ к хосту и дисковым накопителям.

Каких ограничений требует флаг --read-only?

Он монтирует корневую ФС контейнера только на чтение. Если приложению нужны временные каталоги для работы, их монтируют через tmpfs: --tmpfs /tmp --tmpfs /run.

Полезные материалы
Рекомендуем