Способы ограничения возможности входа пользователей в Ubuntu
Ubuntu, VPS | Комментировать запись
Вступление
Основная часть системного администрирования – конфигурирование и управление пользователями и группами. Эта задача включает в себя мониторинг возможностей получения доступа в систему всех ее подразделений.
Данное руководство описывает основные понятия об управлении пользователями и регистрации их авторизации.
Эти понятия изучаются на Ubuntu 12.04 VPS, но данные действия можно выполнить на любом современном дистрибутиве Linux.
Как известно, некоторые из пользователей сервера могут быть связаны с сервисами, а потому они не предназначены для использования в качестве обычных учетных записей.
Данное руководство рассматривает несколько способов ограничения возможности входа в систему таких пользователей.
Как ограничить доступ с помощью /etc/passwd
Один из способов ограничения возможности входа – это задать регистрационной оболочке учетной записи специальное значение.
Примером этому является пользователь «messagebus» в файле «/etc/passwd»:
less /etc/passwd | grep messagebus
messagebus:x:102:104::/var/run/dbus:/bin/false
последнее значение – это оболочка или команда, которая запускается в случае успешного входа. Сейчас это «/bin/false».
Если войти в учетную запись messagebus как root-пользователь, ничего не произойдет, так как переключиться на этого пользователя не получится:
sudo su messagebus
Попробуйте переключиться на пользователя sshd:
sudo su sshd
This account is currently not available.
Это уведомление появилось потому, что оболочка пользователя sshd помещена в «/usr/sbin/nologin».
less /etc/passwd | grep sshd
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
Итак, как же ограничить вход пользователей с помощью этих методов?
Нужно использовать инструмент «usermod», изменяющий легитимное значение оболочки фиктивным:
sudo usermod -s /usr/sbin/nologin username
Как ограничить вход с помощью /etc/shadow
Другой подобный способ ограничения доступа – использование файла «/etc/shadow». Данный файл содержит хешированные пароли каждого пользователя системы.
Чтобы просмотреть хешированные пароли, введите:
sudo less /etc/shadow
root:$6$r79Dod3Y$3hi3QklpGEQMxwQGEss4ueNNPkoUrqUe3SwyAacaxl.Lmgq1r9i4mTblV1z6NfKMNXH1Cpnq.4iKhOiQd7Riy1:15953:0:99999:7:::
daemon:*:15455:0:99999:7:::
bin:*:15455:0:99999:7:::
sys:*:15455:0:99999:7:::
sync:*:15455:0:99999:7:::
games:*:15455:0:99999:7:::
man:*:15455:0:99999:7:::
. . .
Второе поле (которое начинается с «$6$r79Dod3Y#3…» в первой строке) содержит хешированное значение пароля.
Как можно видеть, учетные записи системы вместо сложного хешированного значения имеют звездочку (*). Учетным записям со звездочкой во втором поле пароль не был установлен и они не могут пройти регистрацию при помощи пароля.
Значение пароля можно деактивировать (сделав его, по сути равным значению «*»), установив перед хешированным значением восклицательный знак (!).
Два инструмента могут заблокировать указанную учетную запись.
Команда passwd может быть заблокирована с помощью флага «-l» и разблокирована флагом «-u»:
sudo passwd -l username
sudo less /etc/shadow | grep username
username:!$6$vpNJ3oFe$5GSh2aU2BDcpdjvQeNFzh0zTgyRUl26x4dn77mFE/vaoXwd19m7okX44jO8TWaVqNRL8vUVTAcZVmgUT8dR.4.:15953:0:99999:7:::
Как видно, хешированный пароль сохранился, но стал недействительным благодаря символу ! перед ним.
Учетная запись может быть разблокирована при помощи:
sudo passwd -u username
Подобные операции можно выполнить при помощи команды «usermod», которая использует флаги «-L» и «-U» для блокировки и разблокировки соответственно.
sudo usermod -L username
sudo usermod -U username
Примечание: данные методы могут заблокировать доступ только учетным записям на основе пароля, пользователи без пароля (к примеру, ssh-ключи) по-прежнему могут войти в систему.Рассмотрите возможность использования других методов блокировки таких учетных записей.
Как ограничить вход с помощью /etc/nologin
В экстренных ситуациях бывает необходимо запретить вход всем аккаунтам, кроме root.
Это может случиться из-за углубленного технического обслуживания, или потому, что одна или несколько учетных записей были взломаны.
В любом случае, это легко сделать, создав файл «/etc/nologin»:
sudo touch /etc/nologin
Это действие блокирует вход любого пользователя, не имеющего привилегий root.
Пустой файл просто сбрасывает пользователей обратно в локальную оболочку без объяснения причин.
Дело в том, что пользователю просто возвращается содержимое файла. Если добавить в файл сообщение, то пользователи получат объяснение ошибки входа:
sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'
Попробуйте войти в систему с помощью пароля, тогда будет выведено установленное сообщение:
ssh user@host
user@host's password:
Planned maintenance. Log in capabilities will be restored at 1545 UTC
Connection closed by host
Root-пользователь по-прежнему может войти в систему. Чтобы отменить ограничения входа, просто удалите файл «/etc/nologin»:
sudo rm /etc/nologin
Итоги
Идентификация пользователей в Linux – достаточно гибкая область управления системой, так как одни и те же задания можно выполнить при помощи различных простых инструментов.
Tags: Linux, passwd, Ubuntu, usermod, VPS