Файловая система, пользователи, права и sudo
Linux для безопасности: от прав до усиленияМодель прав, специальные биты, учётные записи и риск избыточных привилегий.
Зачем это нужно
- Ошибки прав — один из самых частых путей повышения привилегий и одновременно типовой дефект конфигурации.
- Правильное разделение учётных записей — основа и администрирования, и защитного проектирования.
- Понимание sudo и специальных битов нужно и для анализа, и для усиления системы.
Теория
Права в Linux описываются тройками: владелец, группа, остальные — чтение, запись, выполнение. Существуют специальные биты: setuid и setgid (выполнение от имени владельца или группы файла) и sticky (ограничение удаления в общем каталоге). Файлы с setuid-битом заслуживают отдельного внимания: они заведомо работают с повышенными правами, и ошибка в них становится уязвимостью.
Учётные записи: пользователи, группы, служебные аккаунты без интерактивного входа, а также администратор. Пароли хранятся в виде хешей в защищённом файле с современными алгоритмами. Политики ограничивают срок жизни пароля, число попыток, требования к сложности. Модульная система аутентификации PAM настраивает блокировки, многофакторную аутентификацию, ограничения по времени и источникам.
sudo позволяет выполнять команды с повышенными правами по правилам в конфигурации. Правила должны быть максимально узкими: конкретный пользователь, конкретная команда, конкретные аргументы, по возможности без обхода через оболочку. Широкие правила, разрешающие запускать произвольные редакторы или интерпретаторы, фактически равны полным правам администратора.
Для защитника важны: инвентаризация setuid-файлов, неочевидные задачи планировщика, права на конфигурации, доступ к журналам, наличие неиспользуемых учётных записей и ключей SSH.
Ключевые концепции
- setuid, setgid, sticky
- Специальные биты прав: повышение прав при запуске и ограничение удаления в общих каталогах.
- umask
- Маска, определяющая права по умолчанию для новых файлов и каталогов.
- PAM
- Модульная система аутентификации: политики паролей, блокировки, многофакторная аутентификация.
- Правила sudo
- Делегирование привилегий; избыточные правила равны полным правам администратора.
- ACL
- Расширенные списки доступа: выдача прав отдельным пользователям и группам.
- Ключи SSH
- Аутентификация по ключам; приватный ключ без парольной фразы — серьёзный риск при потере.
Инструменты
- find — поиск файлов по правам и владельцу: аудит setuid и мировых прав на запись.
- ls -l и stat — детальный разбор прав и атрибутов.
- id, getent, last, who — сведения о пользователях и сессиях.
- visudo — правка правил sudo с проверкой синтаксиса.
- lynis и CIS-CAT — проверка конфигурации по эталонам.
Практика в легальных лабораториях
- Найдите в лабораторной системе все файлы с setuid-битом и объясните, зачем нужен каждый.
- Составьте перечень учётных записей с оболочкой и обоснуйте, кому она действительно необходима.
- Настройте узкое правило sudo для одной безобидной команды и проверьте результат.
- Проверьте ключи SSH: длину, наличие парольной фразы, дату создания, количество.
- Проверьте политику паролей и блокировку после неудачных попыток входа.
Защита, детект и защитные меры
- Удаляйте ненужные учётные записи и ключи, ограничивайте интерактивный вход служебных пользователей.
- Держите правила sudo узкими и ревьюйте их изменения как код.
- Включите аудит доступа к критичным файлам и журналам.
- Используйте централизованную аутентификацию и многофакторную аутентификацию для административного доступа.
Правовая рамка и этика
- Работа с правами и учётными записями в чужих системах возможна только в рамках согласованного теста.
- Не переносите реальные файлы с хешами паролей из чужих систем даже как «доказательство».
Типичные ошибки
- Давать широкие права sudo «чтобы удобнее».
- Оставлять неиспользуемые учётные записи с высокой привилегией.
- Хранить приватные ключи без парольной фразы на рабочей станции.
Чек-лист «умею»
- Умею читать и изменять права, включая специальные биты.
- Провожу аудит setuid и мировых прав на запись.
- Умею настраивать узкие правила sudo.
- Знаю, как проверить политику паролей и блокировок.
- Веду инвентарь учётных записей и ключей.
Вопросы на интервью
- Почему файл с setuid — потенциальная проблема?
- Как вы построите аудит учётных записей на сервере?
- Что не так с правилом sudo, разрешающим запуск произвольного редактора?