UID 0
UID 0 это идентификатор пользователя, который в Linux имеет root, поэтому любая учётная запись с UID 0 обладает теми же правами, что и root, независимо от имени. Лишние учётные записи с UID 0 частый способ создать скрытую backdoor учётную запись администратора.
Почему имя пользователя не имеет значения
Linux не проверяет буквальную строку "root" для предоставления прав root, он проверяет, равен ли ID пользователя 0. Любой, кто создаст вторую учётную запись с UID 0, под любым именем, создаст второй аккаунт root с идентичными правами.
Почему это важно при аудите
Аудит пользователей, который ищет только учётные записи с буквальным именем "root", полностью пропустит переименованную или дублированную учётную запись с UID 0, а это именно тот механизм закрепления в системе, который может оставить злоумышленник с предыдущим root-доступом.
Если вы подозреваете скрытую учётную запись с правами root, что и в каком порядке проверять, разобрано здесь: руководство по реагированию на взлом сервера.
Чтобы проверить и сократить круг тех, кто владеет root на всём сервере, см. пользователи, sudo и минимальные привилегии.
Как вывести все учётные записи с UID 0
Числовой идентификатор пользователя хранится в третьем поле каждой строки /etc/passwd, разделённом двоеточиями, как описано на странице руководства passwd(5). Фильтруйте по этому полю, а не ищите имя "root":
awk -F: '($3 == 0) {print $1}' /etc/passwd
getent passwd | awk -F: '($3 == 0) {print $1}'
Вторая команда охватывает и записи из LDAP или SSSD, которых нет в локальном файле. На здоровом сервере выводится ровно одно имя, root. Запускайте проверку после каждого инцидента и по расписанию, потому что разовый аудит не заметит запись, добавленную на следующей неделе.
Что делать, если появилась вторая запись
Не удаляйте строку сразу. Неожиданная запись с UID 0 означает, что кто-то с root-доступом уже был здесь, поэтому считайте это инцидентом: определите, когда запись добавлена, командой stat /etc/passwd, проверьте authorized_keys и историю командной оболочки этой записи, просмотрите недавние входы и поищите другие способы закрепления. Порядок действий описан в руководстве по реагированию на взлом. После этого аудит минимальных привилегий покажет, как оставить root только одной записи, которой он нужен.
Связанные термины: Вход под root, authorized_keys, Мониторинг целостности файлов, Реагирование на инциденты, Принцип минимальных привилегий, /etc/passwd, sudoers, sudo (выполнение команд с правами root).
Часто задаваемые вопросы
Как проверить наличие дополнительных учётных записей с UID 0?
Изучите файл /etc/passwd напрямую и посмотрите на третье поле каждой строки, это и есть UID, не доверяя только именам учётных записей.
Бывает ли легитимной ситуация с двумя учётными записями UID 0?
На практике нет. Любую вторую учётную запись с UID 0 стоит считать подозрительной, пока не доказано обратное.
Убирает ли отключение sudo права root у учётной записи с UID 0?
Нет. Sudo является отдельным, дополнительным механизмом временного предоставления прав root; учётная запись с UID 0 уже имеет полные права независимо от настроек sudo.
Можно ли увидеть записи с UID 0, которых нет в /etc/passwd?
Да, если система использует службу каталогов. Выполните getent passwd и отфильтруйте третье поле по значению 0: так будут видны и записи из LDAP или SSSD, и локальные.
Является ли сама учётная запись root риском?
Она должна существовать, но быть единственной с UID 0, а прямой вход root по SSH должен быть отключён, чтобы администраторы работали под именными записями с sudo.
Хотите увидеть, в каком состоянии ваш сервер?
Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.
Получить бесплатную проверку сервераОткрыть Security Lab