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

5 лучших практик по предотвращению атак методом перебора входа в систему SSH


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

В этом руководстве мы рассмотрим некоторые советы, которые вы можете реализовать для защиты своих SSH-серверов от атак методом перебора на дистрибутивы Linux на основе RHEL и производные Debian.

Отключите аутентификацию по паролю SSH и включите аутентификацию по SSH-ключу

Метод аутентификации по умолчанию для SSH — аутентификация по имени пользователя и паролю. Но, как мы видели, аутентификация по паролю подвержена атакам методом перебора. На всякий случай рекомендуется реализовать аутентификацию SSH на основе ключей, где аутентификация возможна с помощью пар открытых и частных ключей SSH. Закрытый ключ остается на компьютере клиента, а открытый ключ копируется на сервер.

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

Даже после настройки аутентификации на основе ключей ваш сервер по-прежнему подвержен атакам методом перебора по той простой причине, что аутентификация по паролю все еще активна. Это необходимо отключить.

Поэтому отредактируйте файл конфигурации SSH по умолчанию.

sudo vim /etc/ssh/sshd_config

Установите для параметра PasswordAuthentication значение no, как показано.

PasswordAuthentication no

Затем сохраните файл и перезагрузите SSH, чтобы изменения вступили в силу.

sudo systemctl reload ssh

Внедрить инструмент предотвращения вторжений Fail2ban

Fail2ban, написанный на Python, представляет собой платформу предотвращения вторжений с открытым исходным кодом, которая сканирует файлы журналов служб на предмет сбоев аутентификации и блокирует IP-адреса, которые неоднократно не проходят проверку подлинности пароля, в течение определенного периода времени.

Fail2ban постоянно отслеживает файлы журналов сервера на предмет попыток вторжения и других гнусных действий. После заданного количества неудачных попыток аутентификации (в большинстве случаев 3 неудачных попыток входа в систему) Fail2ban автоматически блокирует доступ удаленного хоста к серверу и хост содержится в «тюрьме» в течение определенного периода времени.

При этом Fail2ban значительно снижает количество попыток аутентификации с неверным паролем. Ознакомьтесь с нашим руководством о том, как установить и настроить Fail2ban в Linux, чтобы защитить свой сервер от атак грубой силы.

Ограничить максимальное количество попыток аутентификации SSH

Еще один простой способ защитить ваш сервер от атак методом перебора — ограничить количество попыток входа по SSH. По умолчанию установлено значение 3, но если случайно установлено более высокое значение, установите максимум 3 попытки подключения.

Например, чтобы установить максимальное количество попыток подключения равным 3, установите для параметра MaxAuthTries значение 3, как показано.

MaxAuthTries = 3

Еще раз сохраните изменения и перезагрузите службу SSH.

sudo systemctl reload ssh

Внедрение TCP-оболочек для ограничения доступа SSH от клиентов

Оболочки TCP — это библиотека, предоставляющая основанный на хосте список управления доступом (ACL), который ограничивает доступ удаленных клиентов к службам TCP на основе их IP-адреса

Удаленные хосты от доступа к службам в системе. Оболочки TCP используют файлы конфигурации /etc/hosts.allow и /etc/hosts.deny (именно в этом порядке), чтобы определить, разрешен ли удаленному клиенту доступ к определенному обслуживание или нет.

Обычно эти файлы закомментированы, и всем хостам разрешен доступ через уровень оболочек TCP. Правила разрешения доступа к определенной службе помещаются в файл /etc/hosts.allow и имеют приоритет над правилами в файле /etc/hosts.deny.

Лучшая практика рекомендует блокировать все входящие соединения. Поэтому откройте файл /etc/hosts.deny.

sudo vim /etc/hosts.deny

Добавьте следующую строку.

ALL: ALL

Сохраните изменения и выйдите из файла.

Затем откройте файл /etc/hosts.allow.

sudo vim /etc/hosts.allow

Настройте хосты или домены, которые могут подключаться к серверу через SSH, как показано. В этом примере мы разрешаем подключение к серверу только двум удаленным хостам (173.82.227.89 и 173.82.255.55) и запрещаем остальным.

sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY

Сохраните изменения и выйдите из файла конфигурации.

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

ssh [email 

kex_exchange_identification: read: Connection reset by peer
Connection reset by 173.82.235.7 port 22
lost connection

Внедрить двухфакторную аутентификацию SSH

Двухфакторная аутентификация обеспечивает дополнительный уровень безопасности для аутентификации по паролю, тем самым делая ваш сервер более защищенным от атак методом перебора. Широко используемым решением Двухфакторной аутентификации является Приложение Google Authenticator, и у нас есть хорошо документированное руководство по настройке двухфакторной аутентификации.

Заключение

Это был обзор 5 лучших практик, которые вы можете применить, чтобы предотвратить атаки SSH Brute Force и обеспечить безопасность вашего сервера. Вы также можете прочитать Как защитить и усилить защиту сервера OpenSSH.