Введение
Команда "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 вы можете столкнуться со сбоями аутентификации по разным причинам. Понимание этих сбоев – первый шаг к их устранению.
Тестирование сбоев аутентификации
Давайте намеренно создадим несколько сбоев аутентификации, чтобы лучше их понять:
- Попробуйте переключиться на 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. Проверка журналов аутентификации
При устранении неполадок сбоев аутентификации проверка системных журналов может предоставить ценную информацию:
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
Давайте попрактикуемся в этих лучших практиках:
- Вместо использования
su -для получения прав root, а затем запуска команды, используйте sudo:
## Вместо:
## su -
## cat /etc/shadow
## Используйте:
sudo cat /etc/shadow
- Переключитесь на testuser с чистой средой:
su - testuser
- Выйдите обратно к своему исходному пользователю:
exit
- Проверьте журнал аутентификации на предмет использования su:
sudo grep "su:" /var/log/auth.log | tail -n 5
Следуя этим лучшим практикам, вы можете безопасно использовать команду su, минимизируя потенциальные риски безопасности для вашей системы.
Резюме
В этой лабораторной работе мы изучили команду su в Linux и узнали, как устранять распространенные сбои аутентификации. Мы рассмотрели:
- Понимание базового использования команды
suи принципа ее работы - Определение распространенных причин сбоев аутентификации su, включая неверные пароли, ограничения учетных записей и проблемы с конфигурацией PAM
- Настройка контроля доступа для команды
suдля повышения безопасности - Устранение неполадок и решение проблем со сбоями аутентификации su посредством систематической диагностики
- Реализация лучших практик безопасного использования su, включая использование sudo, когда это возможно, настройку надежных политик паролей и регулярный аудит использования su
Применяя эти методы и лучшие практики, вы можете убедиться, что команда su функционирует правильно, сохраняя при этом безопасность вашей системы Linux. Помните, что надлежащее управление аутентификацией является важным аспектом администрирования системы и безопасности.



