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

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

Введение

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

Понимание команды Su и базовое использование

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

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

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

Откройте терминал в вашей среде виртуальной машины LabEx. Вы можете использовать команду 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

Это не только переключает пользовательскую идентичность, но и:

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

Попробуйте эту команду и понаблюдайте за различиями:

pwd

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

/home/testuser

Выйдите из testuser, набрав:

exit

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

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

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

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

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

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

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

su: Authentication failure
  1. Попробуйте переключиться на несуществующего пользователя:
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. Проверка журналов аутентификации

При устранении неполадок сбоев аутентификации проверка системных журналов может предоставить ценную информацию:

sudo tail /var/log/auth.log

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

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

May 10 14:23:45 ubuntu su[12345]: FAILED su for root by labex

Понимание этих распространенных причин сбоев аутентификации 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" (заблокировано), учетная запись заблокирована.

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

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

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

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

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

Системные журналы могут предоставить подробную информацию о сбоях аутентификации:

sudo tail -n 20 /var/log/auth.log

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

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

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

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

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

sudo passwd testuser

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

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

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

sudo passwd -u testuser

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

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

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

sudo usermod -aG sugroup testuser2

Это добавляет testuser2 в sugroup.

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

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

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

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

Просматривайте журналы, чтобы отслеживать использование su:

sudo grep "su:" /var/log/auth.log | tail -n 10

Это показывает недавние попытки su, как успешные, так и неудачные.

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

Используйте Su с опцией тире

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

su - username

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

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

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

  1. Вместо использования su - для получения прав root, а затем запуска команды, используйте sudo:
## Вместо:
## su -
## cat /etc/shadow

## Используйте:
sudo cat /etc/shadow
  1. Переключитесь на testuser с чистой средой:
su - testuser
  1. Выйдите обратно к своему исходному пользователю:
exit
  1. Проверьте журнал аутентификации на предмет использования su:
sudo grep "su:" /var/log/auth.log | tail -n 5

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

Резюме

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

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

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