Поиск по сайту:

Как ограничить возможности входа пользователей в Ubuntu


Введение

Фундаментальной частью системного администрирования является настройка и управление пользователями и группами. Часть этой задачи включает в себя мониторинг возможностей входа в систему всех системных объектов.

В этом руководстве мы представим идеи, лежащие в основе управления пользователями и ведения журнала аутентификации.

Мы будем изучать эти концепции на сервере Ubuntu 22.04, но вы можете использовать любой современный дистрибутив Linux. Вы можете настроить сервер Ubuntu 22.04 для этого руководства, следуя нашему руководству по начальной настройке сервера в Ubuntu 22.04.

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

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

Как ограничить доступ с помощью /etc/passwd

Одним из способов ограничения возможностей входа в систему является установка специального значения для оболочки входа в учетную запись.

Примером этого является пользователь messagebus, которого вы можете использовать grep для поиска в файле /etc/passwd:

  1. less /etc/passwd | grep messagebus
Output
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin

Последнее значение — это оболочка или команда, которая запускается при успешном входе в систему. В этом случае устанавливается значение /usr/sbin/nologin.

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

  1. sudo su messagebus
Output
This account is currently not available.

Вы получаете это сообщение, поскольку оболочка для messagebus установлена в /usr/sbin/nologin.

Вы можете использовать инструмент usermod, чтобы изменить оболочку входа пользователя по умолчанию (обычно /bin/bash) на несуществующую оболочку, такую как nologin, когда вам нужно чтобы они не вошли в систему.

  1. sudo usermod -s /usr/sbin/nologin username

Как ограничить доступ с помощью /etc/shadow

Другой похожий метод ограничения доступа — использовать файл /etc/shadow. Этот файл содержит хешированные значения паролей каждого пользователя в системе.

Вы можете использовать less для просмотра всего файла:

  1. sudo less /etc/shadow
Output
. . . uuidd:*:19105:0:99999:7::: tcpdump:*:19105:0:99999:7::: sshd:*:19105:0:99999:7::: pollinate:*:19105:0:99999:7::: landscape:*:19105:0:99999:7::: lxd:!:19180:::::: sammy:$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7:::

Второе поле (начинающееся с $y$j9T$4gyO… в последней строке) содержит хешированное значение пароля.

Системные учетные записи имеют звездочку (*) вместо сложного хеш-значения. Учетные записи со звездочкой во втором поле не имеют установленного пароля и не могут пройти аутентификацию по паролю без его изменения.

Вы можете отключить значение пароля (по сути, создав учетную запись с паролем, эквивалентным значению звездочки), поставив перед значением хеша восклицательный знак (!).

Два инструмента могут сделать это, «заблокировав» указанную учетную запись.

Команду passwd можно заблокировать с помощью флага -l и разблокировать с помощью флага -u:

  1. sudo passwd -l sammy
  1. sudo less /etc/shadow | grep sammy
Output
sammy:!$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7::::::

Как видите, хешированный пароль сохраняется, но становится недействительным, если перед ним поставить !.

Аккаунт можно снова разблокировать, набрав:

  1. sudo passwd -u sammy

Эквивалентные операции доступны с помощью команды usermod. Соответствующие флаги: -L для блокировки и -U для разблокировки:

  1. sudo usermod -L sammy
  2. sudo usermod -U sammy

Примечание. Хотя этот метод ограничения доступа будет корректно работать для всех входов в систему на основе пароля, методы входа без пароля (например, с ключами ssh) останутся доступными.

Как ограничить доступ с помощью /etc/nologin

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

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

В любом случае это можно сделать, создав файл в /etc/nologin:

  1. sudo touch /etc/nologin

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

С пустым файлом /etc/nologin это просто выгружает пользователя обратно в его локальную оболочку без каких-либо объяснений.

На самом деле происходит то, что содержимое файла возвращается пользователю. Если вы добавите сообщение, пользователи получат объяснение сбоя входа в систему:

  1. sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'

Теперь при попытке войти с паролем вы получите такое сообщение:

  1. ssh sammy@host
Output
sammy@host's password: Planned maintenance. Log in capabilities will be restored at 1545 UTC Connection closed by host

Пользователи root по-прежнему могут нормально входить в систему. Удалите файл \/etc/nologin, чтобы отменить ограничение на вход:

  1. sudo rm /etc/nologin

Заключение

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

Теперь вы должны знать, как ограничить использование различными способами.

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