Традиционно многие приложения в Linux используют полные права root при запуске, что не всегда оправдано. Возможно, им требуется лишь одна конкретная привилегия, чтобы, например, привязаться к порту 80. Избегайте устаревшей практики использования setuid и полномочий root без необходимости, используя file capabilities, которые делят полномочия root на более узкие права.
Что такое file capabilities
File capabilities — это режим прав доступа, который позволяет назначать узкие полномочия приложению. Например, вместо того чтобы предоставить полные привилегии root, можно активировать только CAP_NET_BIND_SERVICE для привязки к портам ниже 1024. Это ограничит доступ и повысит безопасность системы.
Как настроить в Linux
Для работы с file capabilities на Debian или Ubuntu установите пакет libcap2-bin, если он у вас еще не установлен. Выполните команды:
sudo apt update
sudo apt install -y libcap2-bin
Затем проверьте файлы, уже имеющие привилегии, с помощью команды:
sudo getcap -r / 2>/dev/null
Для использования file capabilities вы можете настроить, например, службу, которая слушает на port 80, следующим образом:
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/myapp
После этого проверьте настройки:
getcap /usr/local/bin/myapp
Ожидается вывод: /usr/local/bin/myapp cap_net_bind_service=ep.
Сравнение с setuid
Часто разработчики применяют setuid для запуска приложений с привилегиями root, что создает уязвимости. Подобный подход не — оптимальным, особенно когда возможно применение только одной права. Использование file capabilities снижает риски, позволяя процессу работать с необходимыми правами без лишних полномочий. Не забывайте, что не стоит добавлять права к интерпретатору, чтобы не расширять привилегии ненужным образом.
Практические выводы для разработчиков
Настройка file capabilities — это разумный шаг на пути к повышению безопасности в Linux. В условиях постоянного увеличения угроз важно минимизировать полномочия, предоставляемые вашим приложениям. Если ваша команда разрабатывает приложения, работающие с сетью или системными ресурсами, рекомендуется внедрить file capabilities для повышения безопасности.
Следующий шаг — продолжить изучение других доступных возможностей управления правами в Linux, чтобы улучшить безопасность ваших приложений и минимизировать риски.