При заказе новой виртуальной машины с образом Debian 12 необходимо произвести предварительную настройку системы, чтобы максимально обезопасить свой сервер, упростить его администрирование, а также снизить вероятность компрометации и потери данных.
Минимальной рекомендацией при первоначальной настройке системы является создание дополнительного пользователя с привилегиями администратора, ограничение доступа учётной записи суперпользователя, настройка брандмауэра и организация более безопасной аутентификации с использованием SSH-ключей.
При этом, применение данных настроек на Debian может оказаться недостаточным, если администратор планирует вывести безопасность системы на более высокий уровень.
Как изменить номер порта, используемый SSH
Одна из дополнительных мер повышения уровня безопасности в операционных системах Linux — изменение порта, используемого по умолчанию, для подключения по SSH. Дефолтный TCP-порт для SSH-подключений имеет номер 22.
Данный номер указан в файле конфигурации — /etc/ssh/sshd_config
. Для его изменения откройте конфигурационный файл, после чего найдите строку с параметром Port
, удалите установленный в её начале символ комментария (#
) и установите значение параметра в соответствии с тем, какой номер порта вы планируете использовать для подключения по SSH. Например:
Port 50022
Для вступления в силу новой настройки перезагрузите конфигурацию службы ssh
:
$ sudo systemctl reload ssh
Вместе с тем, добавьте разрешающее правило для нового порта в брандмауэр UFW:
$ sudo ufw allow 50022/tcp
А также удалите из брандмауэра разрешающее правило для профиля SSH, используемого по умолчанию:
$ sudo ufw delete allow OpenSSH
В дальнейшем вам нужно будет подключаться к виртуальной машине, учитывая изменённый номер TCP-порта. Например, если вы используете такой SSH-клиент, как PuTTY, то при подключении измените номер порта в соответствующей строке:
Если же вы подключаетесь к серверу из командной строки, используйте опцию -p
в сочетании с номером порта:
ssh -p 50022 your-user@192.168.1.101
Как ограничить доступ для пользователей, не имеющих пароля
В соответствии с пунктом 2.11 Рекомендаций по безопасной настройке операционных систем Linux Федеральной службы по техническому и экспортному контролю (ФСТЭК) рекомендуется «Не допускать использование учётных записей пользователей с пустыми паролями. Настроить учётные записи таким образом, чтобы каждый пользователь системы либо имел пароль, либо был заблокирован по паролю».
В конфигурационном файле /etc/ssh/sshd_config
, который определяет параметры аутентификации, шифрования, портов и других аспектов работы SSH, за доступ учётных записей, не имеющих пароля, отвечает параметр PermitEmptyPasswords
. Значение no
устанавливает запрет на подключение таких пользователей по SSH.
По умолчанию перед данной строкой установлен символ #
, означающий, что строка является комментарием. При этом в качестве значения установлено no
, что говорит о запрете доступа по SSH пользователям с пустым паролем.
Несмотря на это, сохраняется возможность подключения беспарольных пользователей с использованием терминала аварийного доступа.
Для установки запрета на возможность аутентификации таким методом необходимо перейти в директорию /etc/pam.d/
. В данном каталоге находятся конфигурационные файлы для управления модульной аутентификацией PAM (Pluggable Authentication Modules). Эти файлы определяют правила аутентификации, авторизации и учёта для различных сервисов системы, таких как SSH, sudo и login.
Здесь необходимо внести изменения в файл common-auth
. А именно, найдите в файле строку:
auth [success=1 default=ignore] pam_unix.so nullok
И в ней удалите запись nullok
, которая расположена в конце строки. После чего закройте файл, сохранив внесённые изменения.
Как установить ограничение на срок действия паролей
В операционных системах семейства Linux для настройки ограничения срока действия паролей, как правило, используется файл /etc/login.defs
, а также команда chage
.
Настройка с использованием файла login.defs
Файл login.defs
, расположенный в каталоге /etc/
, используется для настройки параметров системы, связанных с аутентификацией пользователей и управлением учётными записями. В нём определены глобальные настройки, которые применяются при создании новых пользователей, входе в систему и управлении паролями. Данный файл также используется утилитами useradd
, usermod
и passwd
для автоматического применения стандартных настроек.
Максимальное количество дней, в течение которых пароль действителен, определяется параметром PASS_MAX_DAYS
. Например:
PASS_MAX_DAYS 120
Минимальное количество дней между сменами пароля указано в параметре PASS_MIN_DAYS
. Например:
PASS_MIN_DAYS 3
Параметр PASS_WARN_AGE
отвечает за количество дней до истечения пароля. В примере ниже система начнёт предупреждать пользователя о необходимости произвести смену пароля за 14 дней до его истечения:
PASS_WARN_AGE 14
Настройка с использованием команды chage
При использовании ключа -l
команда выводит информацию о дате последней смены пароля, минимальном и максимальном сроке действия пароля, количестве дней до истечения пароля для предупреждения пользователя об этом.
$ sudo chage -l your-user
Чтобы установить максимальный срок действия пароля пользователя your-user
, следует использовать ключ -M
. В данном случае, команда устанавливает этот срок в 120 дней:
$ sudo chage -M 120 your-user
Минимальный же срок действия пароля можно установить при помощи опции -m
:
$ sudo chage -m 3 your-user
Установить, за сколько дней до истечения срока действия пароля пользователь получит предупреждение, можно при помощи ключа -W
:
$ sudo chage -W 16 your-user
В свою очередь, ключ -I
определяет, через сколько дней после истечения срока действия пароля учётная запись будет деактивирована:
$ sudo chage -I 10 your-user