Как защитить SSH на Linux-серверах Ubuntu/CentOS/Fedora

Что такое SSH?

Протокол Secure Shell (SSH) — это криптографический сетевой протокол для безопасной работы с сетевыми службами в незащищенной сети. Его наиболее заметными приложениями являются удаленный вход в систему и выполнение командной строки.

Программа-клиент SSH обычно используется для установления соединения с демоном SSH, принимающим удаленные соединения. Обе программы обычно присутствуют в большинстве современных операционных систем, включая macOS, Linux, OpenBSD, FreeBSD…

В этом руководстве вы защитите порт SSH и отключите вход пользователя root.

Файл конфигурации находится в /etc/ssh/sshd_config.

Шаг 1: Изменение порта SSH

Большинство сценариев атак используют только порт 22, который является стандартным портом SSH по умолчанию. Очевидно, что изменение порта SSH по умолчанию должно обеспечить значительный дополнительный уровень защиты.

Откройте файл конфигурации и измените Порт 22 на Порт 2445.

...
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.
Include /etc/ssh/sshd_config.d/*.conf
Port 22
Port 2445
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
...

Если вы хотите использовать SSH для доступа к своим серверам, номер порта необходимо запомнить или записать.

Перезапустить OpenSSH сервер.

В Debian / Ubuntu Linux:

$ sudo service ssh restart
# using systemd:
$ sudo systemctl restart ssh

CentOS / RHEL / Fedora / Redhat Linux:

$ sudo service sshd restart
# using systemd:
$ sudo systemctl restart sshd

Теперь, чтобы подключиться к нашему ssh-серверу, мы добавляем -p параметр с новым номером порта 2445.

$ ssh root@SERVER_IP -p 2445

Далее мы отключим вход root.

Шаг 2: Отключение входа в систему root через SSH

Если у вас еще нет пользователя с поддержкой Sudo, вы можете следовать нашему руководству по созданию нового пользователя с поддержкой sudo-.

Далее, используйте пользователя sudo, которого вы добавили на свою машину, а не root для подключения к серверу через SSH, если таковой имеется.

Изменив PermitRootLogin и установите значение «нет», вы предотвратите вход root в систему:

...
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
...

Перезапустите SSH-сервер, и теперь вы должны иметь возможность подключиться к нашему серверу следующим образом:

$ ssh bob@SERVER_IP -p 2445
# To switch to root user use:
$ sudo su
[sudo] password for bob:

Шаг 3: Отключение входа в систему SSH на основе пароля

Чтобы избавиться от постоянных атак грубой силы, вы можете выбрать только SSH-логин на основе ключей.

Следуйте нашему руководству о том, как использовать закрытый ключ для аутентификации по SSH.

Перед этим необходимо учесть следующие соображения:

  1. Чтобы хотя бы убедиться, что вы сможете войти на свой сервер, создайте пару ключей SSH на своем личном или рабочем компьютере и добавьте этот открытый ключ SSH на свой сервер.
  2. Когда аутентификация на основе пароля отключена, неавторизованные машины не могут войти на ваш сервер.
  3. Вы не сможете снова получить доступ к серверу, если вы заблокированы.

Теперь вы знаете об опасностях, связанных с удалением парольных SSH-логинов.

Давайте посмотрим, как это сделать.

Отключить проверку подлинности пароля путем изменения PasswordAuthentication и установите значение «Нет», чтобы предотвратить вход по паролю:

...
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PasswordAuthentication no
#PermitEmptyPasswords no
...

Заключение

Мы привели список полезных методов защиты SSH. Существует множество других методов защиты SSH и вашего Linux-сервера. Невозможно представить полный список в одной статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *