Первоочередная защита ssh Ubuntu сервера

Первоочередная защита ssh Ubuntu сервера
Photo by FlyD / Unsplash

Заметка для настроек нового VDS.

Создаем нерутового пользователя

Создаем нерутового пользователя, для интерактивного ввода используем команду adduser

adduser <username>

Добавляем пользователя в группу sudo:

usermod -aG sudo <username>

Редактируем ssd_config

Я не правлю дефолтовую конфигурацию, а создаю отдельный файл следующего содержания (не забудь изменить значения <port> и <username>:

#Локальная конфигурация SSHd

# What ports, IPs and protocols we listen for
Port <port>
Protocol 2

# Должен ли sshd разделять привилегии. Если да - то сначала будет создан непривилегированный дочерний
# процесс для входящего сетевого трафика. После успешной авторизации будет создан другой процесс с привилегиями
# вошедшего пользователя.
# UsePrivilegeSeparation yes

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 60
PermitRootLogin no
StrictModes yes

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes

# similar for protocol version 2
HostbasedAuthentication no

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Указывает, разрешено ли перенаправление графической  подсистемы X11.
X11Forwarding yes

# Указывает, должен ли sshd выводить на экран /etc/motd при интерактивном входе пользователя
PrintMotd no

# Указывает, должен ли sshd выводить на экран дату и время последнего севнса при интерактивном входе пользователя
PrintLastLog yes

# Указывает, нужно системе посылать TCP сообщения клиенту с целью поддержания соединения
TCPKeepAlive yes

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# Включает интерфейс PAM (Pluggable Authentication Module interface).Если задано значение "yes" - для всех типов
# аутентификации помимо обработки модуля сессии и аккаунта PAM будет использоваться аутентификация на основе
# запроса-ответа (ChallengeResponseAuthentication и PasswordAuthentication) Т.к. аутентификация запросов-ответов
# в PAM обычно выполняет ту же роль, что и парольная аутентификация, вам следует отключить либо PasswordAuthentication,
# либо ChallengeResponseAuthentication. Стоит отметить, что если директива UsePAM включена - вы не сможете запустить
# sshd от имени пользователя, отличного от root.
UsePAM yes

# Доступ определённыи пользователям
AllowUsers <username>

Сохраняю его под именем 10-sshd-savenkoff.conf, и загружаю в директорию /etc/ssh/sshd_config.d/, таким образом параметры указанной конфигурации перезапишут дефолтовые. Большинство параметров конфигурации подписано соответствующими комментариями. Для применения изменений потребуется перезагрузка sshd:

sudo service sshd reload

Установка Fail2Ban

Обновляем пакеты, устанавливаем, запускаем, добавляем в автозапуск:

sudo apt-get update
sudo apt install fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

При необходимости отредактировать дефолтовую конфигурацию /etc/fail2ban/jail.conf.