Поиск по сайту:

Руководство по усилению безопасности OpenSSH для Linux


На этой странице

  1. Как работает SSH?
  2. Настройка SSH с использованием лучших практик
    1. 1. Изменение порта по умолчанию
    2. 2. Отключение входа в качестве пользователя Root
    3. 3. Установка версии протокола
    4. 4. Сложность пароля

    SSH — один из наиболее широко используемых протоколов для системного администрирования на платформах Linux. Он доступен для многих операционных систем на базе Unix, Linux и MacOS. Он основан на модели клиент-сервер, где на одной машине работает серверный компонент, а на другой для доступа к нему используется клиентский инструмент.

    Как работает SSH?

    Клиент (ssh) инициирует соединение, отправив запрос на сервер. Сервер прослушивает входящие запросы с помощью демона сервера (sshd). Он использует свой открытый ключ для аутентификации клиента, пытающегося к нему подключиться:

    Таким образом, клиент уверен, что он подключается к нужному SSH-серверу. Когда это сделано, клиент может получить доступ к серверу. Если вы используете клиент Windows, вам придется использовать такие инструменты, как шпатлевка, для подключения к серверу. И клиент, и сервер могут быть установлены в одной и той же системе, это означает, что вы можете использовать клиентский инструмент для доступа к другим машинам, или ваша система может быть самим сервером, к которому могут получить доступ другие. В таком случае файл конфигурации помещается в тот же каталог, но с немного другим именем. Расположение каталога — «/etc/ssh», имя файла конфигурации клиента ssh — «ssh_config», а имя файла конфигурации сервера — «sshd_config»:


    Если у вас есть оба файла в вашей системе, вы должны мудро выбрать, какой файл вам нужно настроить. В большинстве случаев это сервер, который нам нужно настроить для обеспечения безопасности, поскольку он открывает дверь для потенциального доступа к системе.

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

    $systemctl статус ssh.service

    Или используйте приведенный ниже:

    $systemctl статус sshd.service

    На скриншоте мы видим, что служба активна и включена. Он работает последние 6 часов. Когда вы развернете вид терминала, нажав стрелку вправо, вы заметите, что он прослушивает порт 22 по умолчанию.

    Иногда мы вносим изменения в файл конфигурации SSH удаленной системы, когда мы подключены к ней с помощью самого SSH. В таком случае мы должны использовать команду перезагрузки вместо перезапуска. Таким образом, у нас меньше шансов отключиться.

    Настройка SSH с использованием лучших практик

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

    $sudo cp /etc/ssh/sshd_config ~/sshd_config.bkp


    После выполнения резервного копирования мы уверены, что если мы испортим основной файл и сломаем наш SSH, мы сможем использовать файл резервной копии, чтобы вернуться к нормальной жизни.

    1. Изменение порта по умолчанию

    Демон sshd по умолчанию прослушивает порт 22 сервера. Рекомендуется изменить это значение на какое-либо другое число, чтобы уменьшить объем автоматических атак с использованием скриптов. Такой подход называется безопасностью через неизвестность. Для этого откройте файл ниже и найдите строку, содержащую текст «#Port 22».

    $судо нано /etc/ssh/sshd_config

    Раскомментируйте строку «#Port 22» и измените «22» на другой номер порта, не используемый в вашей системе. Мы должны изменить его на 222 и перезапустить службу. Теперь используйте команду ssh с параметром p, чтобы указать новый порт:

    $ssh [электронная почта защищена]_ip -p 222

    2. Отключение входа в качестве пользователя root

    Root — это конечный пользователь в любой системе Linux с доступом ко всем ресурсам в вашей системе. Если вам не требуется строгий root-доступ, вам следует отключить возможность root-входа на вашем сервере. Для этого откройте тот же файл выше:

    $судо нано /etc/ssh/sshd_config

    и установите для параметра «PermitRootLogin» значение «нет». Это гарантирует, что сервер будет защищен от случайных атак, направленных на учетную запись root. Параметр по умолчанию — «запретить пароль», который разрешает вход на основе аутентификации с открытым ключом, но запрещает вход на основе пароля.

    3. Установка версии протокола

    Более старая версия протокола SSH — 1, и она менее безопасна по сравнению с SSH2, и они имеют разные сетевые реализации, а также несовместимы друг с другом. Чтобы проверить, какая версия протокола активна на вашем сервере, снова откройте файл sshd_config и найдите строку Protocol:

    $кошка /etc/ssh/sshd_config | протокол grep

    Если у вас пустой вывод, возможно, OpenSSH использует версию 2, как это было в нашем случае. Другой способ — использовать командную утилиту netcat:

    $nc локальный хост 22

    Пример вывода:

    SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.4

    Из вывода мы видим, что SSH2 активен в нашей системе.


    Чтобы проверить, какая версия протокола работает на удаленном сервере, попробуйте подключиться к нему с помощью ssh-клиента с параметром -Q (запрос):

    $ssh -Q версия-протокола [электронная почта защищена]_имя

    На изображении выше показан SSH версии 2 при доступе к ssh-серверу Ubuntu из Kali Linux.

    4. Сложность пароля

    Слабые пароли всегда уязвимы для использования, поэтому вероятность использования пустых паролей выше. Поэтому для параметра PermitEmptyPasswords в файле sshd_config должно быть установлено значение «нет». Точно так же количество попыток входа с неправильным паролем должно быть ограничено, чтобы уменьшить вероятность атаки методом грубой силы. Этого можно добиться, установив для параметра «MaxAuthTries» меньшее значение, например 3.


    Из рисунка выше видно, что когда мы устанавливаем значение «MaxAuthTries» равным 3, нам отказывают в SSH после трех неправильных паролей. Еще одним важным аспектом безопасности является использование аутентификации с открытым ключом для входа в систему. Модели аутентификации на основе ключей менее уязвимы для атак методом грубой силы. Точно так же мы можем использовать модуль аутентификации PAM для еще большей защиты SSH-сервера.

    Заключение

    В этом руководстве мы попытались охватить наиболее важные аспекты защиты SSH-сервера и свести их к четырем основным пунктам. Хотя это руководство не является полным, вы даже можете найти дополнительные области для дальнейшего усиления вашего SSH-сервера. Например, вы можете попробовать добавить баннерное сообщение, чтобы предупредить пользователей об использовании вашей системы через SSH. Вы также можете запретить вход с паролем и использовать аутентификацию на основе ключа для входа без пароля. Еще одна интересная вещь заключается в том, что вы можете ограничить количество пользователей SSH и время их подключения.