Устранение неполадок аутентификации su в Linux

LinuxBeginner
Практиковаться сейчас

Введение

Команда su (substitute user) в Linux — это мощный инструмент, позволяющий пользователям временно переключаться на другую учетную запись, чаще всего на пользователя root, для выполнения административных задач. Однако иногда возникают ошибки аутентификации su, которые приводят к отказу в доступе и создают потенциальные риски безопасности. В этом руководстве вы пройдете процесс устранения неполадок при аутентификации su в Linux, изучите распространенные причины, параметры конфигурации и лучшие практики безопасного использования этой команды.

Понимание команды Su и основы работы

На этом этапе вы узнаете, как команда su в Linux позволяет пользователям переключаться на другую учетную запись. Это особенно полезно для выполнения административных задач, требующих повышенных привилегий.

Давайте рассмотрим базовое использование команды su и принципы её работы.

Базовое использование Su

Откройте терминал в вашей среде LabEx VM. Вы можете использовать команду su со следующим синтаксисом:

su [options] [username]

Если запустить su без указания имени пользователя, по умолчанию будет выбран пользователь root:

su

Вас попросят ввести пароль root. Однако во многих современных дистрибутивах Linux, включая Ubuntu, учетная запись root по умолчанию отключена из соображений безопасности.

Давайте создадим тестового пользователя для практики:

sudo adduser testuser

Введите необходимую информацию при появлении запроса. Для простоты можно использовать "password" в качестве пароля для этого тестового пользователя.

Теперь попробуем переключиться на этого пользователя:

su testuser

При появлении запроса введите пароль, созданный для testuser. После успешной аутентификации приглашение командной строки изменится, указывая на то, что теперь вы работаете от имени testuser.

Чтобы убедиться, что вы успешно сменили пользователя, выполните:

whoami

Вывод должен быть таким:

testuser

Чтобы вернуться к исходному пользователю, просто введите:

exit

Использование Su с параметрами

Команда su поддерживает несколько параметров. Наиболее распространенным является - (дефис), который обеспечивает полноценное окружение входа в систему:

su - testuser

Это не только меняет идентификатор пользователя, но и:

  • Переходит в домашний каталог целевого пользователя
  • Настраивает переменные окружения целевого пользователя
  • Предоставляет оболочку входа (login shell)

Попробуйте выполнить эту команду и заметьте разницу:

pwd

Вывод должен показать домашний каталог testuser:

/home/testuser

Выйдите из учетной записи testuser, введя:

exit

Это базовое понимание команды su поможет нам устранять ошибки аутентификации на следующих этапах.

Распространенные ошибки аутентификации Su и их причины

На этом этапе вы создадите и изучите типичные ошибки аутентификации su. Понимание этих ошибок — первый шаг к их устранению.

Тестирование ошибок аутентификации

Давайте намеренно создадим несколько ошибок аутентификации, чтобы лучше их понять.

Сначала попробуйте переключиться на testuser с неверным паролем:

su testuser

Введите неправильный пароль. Вы увидите сообщение об ошибке, похожее на:

su: Authentication failure

Затем попробуйте переключиться на несуществующего пользователя:

su nonexistentuser

Вы увидите сообщение об ошибке:

su: user nonexistentuser does not exist

Распространенные причины ошибок аутентификации

1. Неверный пароль

Самая частая причина ошибки аутентификации — просто неверно введенный пароль. Это может произойти из-за:

  • Опечаток
  • Включенной клавиши Caps Lock
  • Забытого пароля

2. Ограничения учетной записи

Некоторые учетные записи могут быть настроены так, чтобы запрещать вход, или иметь истекший срок действия пароля.

Давайте изменим нашего тестового пользователя, чтобы продемонстрировать это:

sudo passwd -l testuser

Это блокирует пароль для testuser. Теперь попробуйте:

su testuser

Вы увидите ошибку аутентификации, даже если введете правильный пароль.

Разблокируйте учетную запись командой:

sudo passwd -u testuser

3. Проблемы с конфигурацией PAM

Система Pluggable Authentication Modules (PAM) управляет аутентификацией в Linux. Проблемы с конфигурацией PAM могут привести к сбоям su.

Давайте изучим конфигурацию PAM для команды su:

cat /etc/pam.d/su

Этот файл содержит конфигурацию PAM, специфичную для команды su. Ищите строки, которые могут ограничивать доступ, например:

auth       required   pam_wheel.so

Эта строка, если она раскомментирована, ограничивает доступ к su только для членов группы wheel.

4. Проблемы с правами доступа к бинарному файлу Su

Бинарный файл команды su должен иметь правильные права доступа для корректной работы:

ls -l $(which su)

Вывод должен выглядеть примерно так:

-rwsr-xr-x 1 root root 71816 Apr 18  2022 /usr/bin/su

Буква s в правах доступа указывает на то, что установлен бит setuid, позволяющий программе выполняться с привилегиями её владельца (root), а не пользователя, который её запускает.

5. Изучение журналов аутентификации

При устранении неполадок аутентификации в этой виртуальной машине LabEx проверяйте записи о неудачных попытках входа с помощью lastb:

sudo lastb | head

Эта команда считывает /var/log/btmp и отображает недавние неудачные попытки аутентификации, включая попытки su, если они были зафиксированы системой.

Например, неудачная попытка su может отобразить запись, включающую целевого пользователя и сеанс терминала.

Понимание этих распространенных причин ошибок аутентификации su поможет вам более эффективно выявлять и решать проблемы на следующих этапах.

Настройка контроля доступа для команды Su

Linux предоставляет несколько механизмов для контроля того, кто может использовать команду su. На этом этапе мы изучим, как настроить эти элементы управления для повышения безопасности.

Понимание конфигурации PAM

Система Pluggable Authentication Modules (PAM) отвечает за аутентификацию в Linux. Конфигурация для команды su хранится в файле /etc/pam.d/su.

Давайте подробно изучим этот файл:

cat /etc/pam.d/su

Файл содержит различные директивы, управляющие процессом аутентификации. Одна важная строка, на которую стоит обратить внимание:

auth       required   pam_wheel.so

Если эта строка раскомментирована (не начинается с #), она ограничивает доступ к su только для членов группы wheel.

Ограничение доступа Su для определенных групп

Мы можем ограничить использование su для переключения на root только членами определенной группы. Это распространенная практика безопасности.

Сначала создадим новую группу с названием sugroup:

sudo groupadd sugroup

Затем добавим нашего тестового пользователя в эту группу:

sudo usermod -aG sugroup testuser

Теперь нам нужно изменить конфигурацию PAM, чтобы ограничить доступ к su членами этой группы:

sudo cp /etc/pam.d/su /etc/pam.d/su.bak

Теперь откройте файл конфигурации PAM в редакторе nano:

sudo nano /etc/pam.d/su

Найдите строку, похожую на:

## auth       required   pam_wheel.so

Раскомментируйте эту строку (удалите ## в начале) и измените её, чтобы использовать нашу группу sugroup вместо wheel:

auth       required   pam_wheel.so group=sugroup

Нажмите Ctrl+O для сохранения файла, затем Ctrl+X для выхода из nano.

Тестирование конфигурации

Давайте протестируем нашу конфигурацию, попытавшись использовать su от имени пользователя, который не входит в sugroup.

Сначала создайте еще одного тестового пользователя:

sudo adduser testuser2

Введите необходимую информацию при появлении запроса.

Теперь попробуйте переключиться на пользователя root, используя testuser2:

su - testuser2

Введите пароль для testuser2 при появлении запроса.

Теперь попробуйте переключиться на пользователя root:

su -

Вы должны получить сообщение об ошибке аутентификации, даже если введете правильный пароль root. Это происходит потому, что testuser2 не является членом группы sugroup.

Теперь вернитесь к исходному пользователю:

exit

И попробуйте использовать su с testuser, который является членом sugroup:

su - testuser

Введите пароль для testuser при появлении запроса.

Теперь попробуйте переключиться на пользователя root:

su -

Если вы введете правильный пароль root, вы сможете успешно переключиться на пользователя root.

Отмена изменений

Для завершения остальной части этой лабораторной работы давайте вернем изменения в конфигурацию PAM:

sudo cp /etc/pam.d/su.bak /etc/pam.d/su

Эта конфигурация позволяет вам контролировать, кто может использовать команду su для переключения на пользователя root, повышая безопасность вашей системы.

Устранение неполадок и решение проблем аутентификации Su

На этом этапе вы будете использовать систематический подход для устранения ошибок аутентификации su.

Диагностика ошибок аутентификации

Когда вы сталкиваетесь с ошибкой аутентификации su, выполните следующие систематические шаги для диагностики проблемы:

Шаг 1: Проверьте сообщение об ошибке

Сообщение об ошибке может дать ценные подсказки о характере сбоя. Распространенные сообщения об ошибках:

  • su: Authentication failure — обычно указывает на неверный пароль.
  • su: user username does not exist — указанная учетная запись пользователя не существует.
  • su: permission denied — ограничения контроля доступа блокируют операцию.

Шаг 2: Проверьте учетную запись пользователя

Убедитесь, что целевая учетная запись пользователя существует и не заблокирована:

grep testuser /etc/passwd

Это должно отобразить запись для testuser в файле паролей, подтверждая существование учетной записи.

Проверьте, заблокирована ли учетная запись:

sudo passwd -S testuser

Вывод включает статус учетной записи. Если там указано "L" (locked), значит, учетная запись заблокирована.

Шаг 3: Проверьте ограничения контроля доступа

Как мы узнали на предыдущем этапе, конфигурация PAM может ограничивать доступ к su. Проверьте наличие таких ограничений:

grep -v "^#" /etc/pam.d/su | grep pam_wheel

Если эта команда возвращает строку, содержащую pam_wheel.so, доступ к su может быть ограничен членами определенной группы.

Шаг 4: Изучите системные журналы

Записи о неудачных попытках входа могут предоставить полезную информацию об ошибках аутентификации:

sudo lastb | head

Ищите записи, связанные с вашими неудачными попытками su, которые могут дать дополнительный контекст.

Решение распространенных ошибок аутентификации Su

Теперь давайте разберемся, как устранить распространенные ошибки аутентификации su:

1. Неверный пароль

Если вы вводите правильный пароль, но все равно получаете ошибки аутентификации, возможно, пароль нужно сбросить:

sudo passwd testuser

Введите новый пароль для testuser при появлении запроса.

2. Учетная запись заблокирована

Если учетная запись заблокирована, разблокируйте её:

sudo passwd -u testuser

3. Ограничения контроля доступа

Если ограничения контроля доступа блокируют доступ к su, вы можете:

а. Добавить пользователя в требуемую группу:

sudo usermod -aG sugroup testuser2

Это добавит testuser2 в группу sugroup.

б. Временно отключить ограничение, закомментировав соответствующую строку в конфигурации PAM:

sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su

Эта команда комментирует строку, содержащую pam_wheel.so, в конфигурации PAM для su.

4. Проблемы с правами доступа к файлам

Если бинарный файл su имеет неверные права доступа, исправьте их:

sudo chmod u+s $(which su)

Это гарантирует, что бит setuid установлен на бинарном файле su.

Тестирование исправлений

После применения исправлений проверьте, правильно ли работает аутентификация su:

su - testuser

Введите пароль для testuser при появлении запроса. В случае успеха вы должны войти в систему как testuser.

Попробуйте переключиться на пользователя root:

su -

Если у вас есть пароль root и ограничения контроля доступа были правильно устранены, вы сможете успешно переключиться на пользователя root.

Эти шаги по устранению неполадок решают большинство распространенных ошибок аутентификации su. Систематически диагностируя и решая эти проблемы, вы обеспечите корректную работу команды su в вашей системе.

Лучшие практики безопасного использования Su

На этом этапе вы изучите лучшие практики безопасного использования команды su. Соблюдение этих правил помогает минимизировать риски безопасности, позволяя при этом эффективно выполнять административные задачи.

Используйте Sudo вместо Su, когда это возможно

Команда sudo обычно считается более безопасной, чем su, потому что:

  • Она позволяет более детально контролировать права доступа
  • Она ведет журнал команд, выполненных с повышенными привилегиями
  • Она не требует передачи пароля root

Пример использования sudo вместо su:

## Вместо:
su -
## Затем выполнение команд от имени root

## Используйте:
sudo command

Попробуйте этот пример:

sudo ls /root

Это выполняет команду ls с привилегиями root без переключения на пользователя root.

Правильно настройте доступ Sudo

Убедитесь, что sudo настроен правильно для предоставления только необходимых привилегий:

sudo visudo

Это открывает файл sudoers в безопасном редакторе. Файл должен содержать записи, подобные этим:

## User privilege specification
root    ALL=(ALL:ALL) ALL

## Members of the sudo group may gain root privileges
%sudo   ALL=(ALL:ALL) ALL

Нажмите Ctrl+X для выхода без внесения изменений.

Ограничьте прямой вход под пользователем root

Не поощряйте прямой вход под пользователем root, особенно через SSH. Вместо этого пользователи должны входить в систему под своими обычными учетными записями и использовать su или sudo при необходимости.

Проверьте, отключен ли прямой вход root через SSH:

grep "PermitRootLogin" /etc/ssh/sshd_config

Если команда возвращает PermitRootLogin no, прямой вход root успешно отключен.

Внедрите надежные политики паролей

Убедитесь, что пароль root и пароли пользователей с доступом к su являются надежными:

sudo apt-get install -y libpam-pwquality

Это устанавливает модуль PAM для проверки качества паролей.

Настройте политики паролей, отредактировав конфигурацию PAM:

sudo nano /etc/pam.d/common-password

Найдите строку, содержащую pam_pwquality.so, и убедитесь, что она имеет соответствующие параметры, например:

password requisite pam_pwquality.so retry=3 minlen=12 difok=3

Нажмите Ctrl+X для выхода без внесения изменений, так как мы просто изучаем конфигурацию.

Регулярно проводите аудит использования Su

Просматривайте записи о неудачных попытках входа, когда вам нужно расследовать неудачные попытки аутентификации:

sudo lastb | head

Это показывает недавние неудачные попытки аутентификации, записанные в /var/log/btmp.

Подумайте о настройке автоматических оповещений о нескольких неудачных попытках su, что может указывать на атаку.

Используйте Su с параметром Dash

При использовании su для переключения на другого пользователя, особенно на root, используйте параметр дефис (-), чтобы получить чистое окружение:

su - username

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

Практическое занятие - Безопасное использование Su

Давайте попрактикуемся в этих лучших практиках.

Сначала, вместо использования su - для получения прав root и последующего выполнения команды, используйте sudo:

## Вместо:
## su -
## cat /etc/shadow

## Используйте:
sudo cat /etc/shadow

Затем переключитесь на testuser с чистым окружением:

su - testuser

Затем выйдите обратно к исходному пользователю:

exit

Наконец, проверьте записи о неудачных попытках входа:

sudo lastb | head

Следуя этим лучшим практикам, вы сможете безопасно использовать команду su, минимизируя потенциальные риски безопасности для вашей системы.

Резюме

В этой лабораторной работе мы изучили команду su в Linux и научились устранять распространенные ошибки аутентификации. Мы рассмотрели:

  1. Базовое использование команды su и принципы её работы
  2. Определение распространенных причин ошибок аутентификации su, включая неверные пароли, ограничения учетных записей и проблемы с конфигурацией PAM
  3. Настройку контроля доступа для команды su для повышения безопасности
  4. Устранение неполадок и решение проблем аутентификации su с помощью систематической диагностики
  5. Внедрение лучших практик безопасного использования su, включая использование sudo, настройку надежных политик паролей и регулярный аудит использования su

Применяя эти методы и лучшие практики, вы можете обеспечить корректную работу команды su, сохраняя при этом безопасность вашей системы Linux. Помните, что надлежащее управление аутентификацией является важнейшим аспектом системного администрирования и безопасности.