Безопасность SSH · 4 min read · Dec 28, 2025
Руководство по усилению безопасности OpenSSH для Linux

SSH является одним из самых широко используемых протоколов для администрирования систем на платформах Linux. Он доступен для многих операционных систем на базе Unix, Linux и MacOS. Он основан на модели клиент-сервер, где одна машина запускает серверный компонент, а другая использует клиентский инструмент для доступа к нему.
Как работает SSH?
Клиент (ssh) инициирует соединение, отправляя запрос на сервер. Сервер слушает входящие запросы, используя демон сервера (sshd). Он использует свой открытый ключ для аутентификации перед клиентом, который пытается к нему подключиться:
Таким образом, клиент уверен, что он подключается к правильному SSH-серверу. Когда это сделано, клиент может получить доступ к серверу. Если вы находитесь на клиенте Windows, вам придется использовать такие инструменты, как putty, чтобы подключиться к серверу. Как клиент, так и сервер могут быть установлены на одной и той же системе, это означает, что вы можете использовать клиентский инструмент для доступа к другим машинам или ваша система может быть самим сервером, к которому могут получить доступ другие. В таком случае файл конфигурации размещается в той же директории, но с немного другим именем. Расположение директории — ‘/etc/ssh’, а имя файла конфигурации клиента ssh — ‘ssh_config’, а имя файла конфигурации сервера — ‘sshd_config’:

В случае, если у вас есть оба файла на вашей системе, вам следует разумно выбрать, какой файл вам нужно настроить. В большинстве случаев это сервер, который необходимо настроить для безопасности, так как он открывает дверь для потенциального доступа к системе.
Сначала мы начинаем с проверки статуса демона SSH или sshd на нашем сервере. Таким образом, мы можем увидеть, работает ли он и включен ли он для автоматического запуска при загрузке. Ниже приведена команда для проверки статуса sshd:
$ systemctl status ssh.service
Или используйте следующую:
$ systemctl status sshd.service

Из скриншота мы можем видеть, что служба активна и включена. Она работает последние 6 часов. Когда вы развернете представление терминала, нажав правую стрелку, вы заметите, что он слушает на порту по умолчанию 22.
Иногда мы вносим изменения в файл конфигурации SSH удаленной системы, пока мы подключены к ней, используя сам SSH. В таком случае мы должны использовать команду перезагрузки вместо перезапуска. Таким образом, мы менее вероятно отключимся.
Настройка SSH с использованием лучших практик
Я думаю, что сейчас пришло время начать настраивать конфигурацию сервера SSH. Прежде чем мы начнем работать с файлом конфигурации SSH, мы должны сделать резервную копию файла с настройками по умолчанию:
$ sudo cp /etc/ssh/sshd_config ~/sshd_config.bkp
После выполнения резервного копирования мы уверены, что если мы испортим основной файл и сломаем наш SSH, мы можем использовать резервный файл, чтобы вернуться к нормальному состоянию.
1. Изменение порта по умолчанию
Демон sshd по умолчанию слушает на порту 22 сервера. Рекомендуется изменить это значение на другое число, чтобы уменьшить вероятность автоматизированных атак с использованием скриптов. Этот подход называется безопасностью через неясность. Для этого откройте указанный ниже файл и найдите строку, содержащую текст ‘#Port 22’.
$ sudo nano /etc/ssh/sshd_config
Уберите комментарий со строки ‘#Port 22’ и измените ‘22’ на другой номер порта, который не используется на вашей системе. Мы изменим его на ‘222’ и перезапустим службу. Теперь используйте команду ssh с опцией ‘p’, чтобы указать новый порт:
$ ssh user@system_ip -p 222
2. Отключение входа как пользователь Root
Root — это главный пользователь на любой системе Linux с доступом ко всем ресурсам вашей системы. Если вам не требуется строгий доступ root, вы должны отключить возможность входа root на вашем сервере. Для этого откройте тот же файл:
$ sudo nano /etc/ssh/sshd_config
и установите параметр ‘PermitRootLogin’ в ‘no’. Это обеспечит защиту сервера от случайных атак, нацеленных на учетную запись root. Опция по умолчанию — ‘prohibit-password’, которая позволяет входить на основе аутентификации с использованием открытого ключа, но запрещает вход с использованием пароля.
3. Установка версии протокола
Старая версия протокола SSH — 1, и она менее безопасна по сравнению с SSH2, и у них разные сетевые реализации, и они также несовместимы друг с другом. Чтобы проверить, какая версия протокола активна на вашем сервере, снова откройте файл sshd_config и найдите строку ‘Protocol’:
$ cat /etc/ssh/sshd_config | grep ‘Protocol’
В случае, если у вас пустой вывод, OpenSSH, вероятно, использует версию 2, так как это было в нашем случае. Другой способ — использовать утилиту команды netcat:
$ nc localhost 22
Пример вывода:
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4
Из вывода мы можем видеть, что SSH2 активен на нашей системе.
Чтобы проверить, какие версии протоколов использует удаленный сервер, попробуйте подключиться к нему, используя клиент ssh с опцией -Q (запрос):
$ ssh -Q protocol-version user@server_name

На изображении выше показана версия SSH 2 при доступе к серверу ssh Ubuntu с Kali Linux.
4. Сложность пароля
Слабые пароли всегда уязвимы для эксплуатации, поэтому пустые пароли более подвержены эксплуатации. Поэтому опция PermitEmptyPasswords должна быть установлена в ‘no’ в файле sshd_config. Таким же образом количество попыток входа с неправильным паролем должно быть ограничено, чтобы уменьшить вероятность атаки методом перебора. Это можно достичь с помощью опции ‘MaxAuthTries’, установленной на меньшее значение, например 3.

Из изображения выше мы можем видеть, что когда мы устанавливаем значение ‘MaxAuthTries’ на 3, нам отказывают в доступе по SSH после трех неправильных паролей. Еще один важный аспект безопасности — использовать аутентификацию с открытым ключом для входа. Модели аутентификации на основе ключей менее уязвимы для атак методом перебора. Аналогично, мы можем использовать модуль аутентификации PAM для еще большей защиты сервера SSH.
Заключение
В этом руководстве мы попытались охватить самые важные моменты для обеспечения безопасности сервера SSH и суммировать их в четыре основных момента. Хотя это руководство не является полным, вы можете найти еще больше областей для дальнейшего укрепления вашего сервера SSH. Например, вы можете попробовать добавить сообщение баннера, чтобы предупредить пользователей о использовании вашей системы через SSH. Вы также можете запретить вход с паролем и использовать аутентификацию на основе ключей для входа без пароля. Еще одна интересная вещь заключается в том, что вы можете ограничить количество пользователей SSH и их время подключения.
Get new posts in your inbox
No spam. Unsubscribe anytime.