Использование capabilities вместо root

Идея

Разбить «root» на микропривилегии, дать процессу только то, что нужно.

Пример угрозы

Сервис работает от root → RCE → полный контроль системы.

Пример безопасной схемы

Было (опасно):

sudo ./server

Стало (безопаснее):

setcap cap_net_bind_service=+ep ./server

Теперь бинарь может слушать порт ниже 1024 без root.

Основные capabilities

CapabilityОпасность
CAP_SYS_ADMINпочти root
CAP_NET_ADMINуправление сетью
CAP_SYS_PTRACEчтение памяти процессов
CAP_DAC_OVERRIDEобход прав файлов

Аудит

getcap -r / 2>/dev/null

Best practice

  • Никогда не давать CAP_SYS_ADMIN, если можно избежать
  • Capabilities ≠ безопасность, а снижение ущерба