intDataBlog
← ЖурналМаршруты обучения ↗

Linux-аудит привилегий: где искать лишний root-доступ

Повышение привилегий в Linux чаще начинается не с магии, а с хозяйственных ошибок: широкий sudo, забытый SUID, writable-скрипт в сервисе или секрет в домашнем каталоге.

Этот чеклист нужен администратору после развёртывания сервера, миграции или инцидента. Цель - найти места, где обычный пользователь может стать владельцем системы из-за неверной настройки.

Sudo и группы

sudo -l
getent group sudo
getent group docker
  • Не выдавайте NOPASSWD: ALL сервисным пользователям.
  • Группа docker практически равна root-доступу на хосте.
  • Разрешайте конкретные команды с полными путями, а не широкие shell-шаблоны.

SUID и capabilities

find / -perm -4000 -type f -not -path '/proc/*' 2>/dev/null
getcap -r / 2>/dev/null

Любой новый SUID-файл или capability вроде cap_setuid требует объяснения. Если объяснения нет, это технический долг или след инцидента.

Сервисы и writable-path

  • Проверьте, от какого пользователя запущен systemd unit.
  • Скрипты, которые запускаются от root, не должны лежать в writable-директориях.
  • PATH в unit-файлах лучше не использовать для критичных команд: указывайте абсолютные пути.
  • Секреты в /home, /tmp и рабочих каталогах сервисов должны иметь минимальные права.
systemctl cat app.service
namei -l /opt/app/deploy.sh