Пункт 2.11 Рекомендаций по безопасной настройке операционных систем Linux Федеральной службы по техническому и экспортному контролю (ФСТЭК) говорит, что необходимо «Не допускать использование учётных записей пользователей с пустыми паролями. Настроить учётные записи таким образом, чтобы каждый пользователь системы либо имел пароль, либо был заблокирован по паролю». В данном мануале разберём, как закрыть доступ для пользователей без пароля в Linux.
Как закрыть доступ для пользователей без пароля
Доступ к виртуальной машине, работающей на Linux, можно получить, подключившись к ней либо по SSH, либо с помощью консоли, роль которой на сайте RUVDS играет терминал аварийного доступа к серверу.
По умолчанию подключение по SSH под именем пользователя, не имеющего пароля, закрыто в настройках SSH. Данная настройка содержится в конфигурационном файле SSH, а именно /etc/ssh/sshd_config
.
В файле конфигурации за запрет доступа учётным записям с пустым паролем отвечает значение no
параметра PermitEmptyPasswords
:
PermitEmptyPasswords no
По умолчанию на создаваемых серверах эта строка закомментирована, но значение параметра установлено как no
. Это означает, что доступ пользователям, не имеющим пароля, по SSH запрещён.
Но при этом существует возможность подключиться к серверу без пароля через терминал аварийного доступа.
В качестве эксперимента мы создали учётную запись your-user
и удалили у неё пароль:
# useradd your-user
# passwd -d your-user
Чтобы убедиться, что пользователь не имеет пароля, достаточно найти соответствующую ему строку в файле /etc/shadows
:
Также для вывода списка всех учётных записей с пустым паролем можно применить команду:
# awk -F: '($2 == "" ) {print $1}' /etc/shadow
Таким образом, мы создали, а затем «нашли» в нашей системе пользователя, который может авторизоваться исключительно при помощи имени своей учётной записи. После чего открыли терминал, ввели имя пользователя, нажали Enter
и, как следствие, получили доступ к нашей системе:
Чтобы установить запрет на возможность аутентификации подобным способом, необходимо перейти в каталог /etc/pam.d/
, который содержит файлы конфигурации для PAM (Pluggable Authentication Modules). Данный каталог используется для управления аутентификацией, авторизацией и учётом в Linux. Каждая программа, использующая PAM для аутентификации, например, SSH, sudo или login, имеет свой отдельный файл конфигурации в этом каталоге. Эти файлы содержат инструкции для модуля PAM о том, как обрабатывать процесс аутентификации.
В каталоге /etc/pam.d/
необходимо найти и отредактировать соответствующий файл:
- для CentOS – это файл
system-auth
; - для Ubuntu и Debian – это файл
common-auth
.
В файле system-auth
(в случае с CentOS) нужно отыскать строку:
auth sufficient pam_unix.so try_first_pass nullok
В файле common-auth
(если вы используете Debian или Ubuntu) строку:
auth [success=1 default=ignore] pam_unix.so nullok
В любом из этих случаев следует удалить запись nullok
, находящуюся в конце строки.
Проверка доступа пользователя с пустым паролем
После сохранения внесённых в файл изменений мы можем снова открыть консоль и попробовать зарегистрироваться в системе при помощи пользователя, не имеющего пароля.
Как видите, теперь система просит ввести пароль для нашего пользователя. Какой бы пароль мы ни вводили, даже пустой, мы получаем сообщение о некорректности введённых учётных данных.
Таким образом, мы увидели, как закрыть доступ для пользователей без пароля на серверах и рабочих станциях, работающих под управлением операционных систем семейства Linux.