Поиск по сайту:
Дружба, которая прекратилась, никогда собственно, и не начиналась (Публилий Сир).

Как защитить SSH-сервер с помощью SSHGuard: Практическое руководство

17.09.2024
Как защитить SSH-сервер с помощью SSHGuard: Практическое руководство

Это руководство по эффективной защите SSH-серверов с помощью SSHGuard от атак методом перебора — узнайте, как это сделать!

SSH (Secure Shell) служит критической точкой входа на ваш сервер, предлагая мощный зашифрованный метод удаленного администрирования. Однако его безопасность настолько высока, насколько надежны меры по его защите.

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

Но прежде чем мы перейдем к практической части, давайте прольем больше света на само программное обеспечение.

 

Что такое SSHGuard?

SSHGuard – это инструмент безопасности, который защищает серверы от атак методом перебора, в первую очередь тех, которые нацелены на SSH-сервисы. Он функционирует как система предотвращения вторжений на основе журналов, отслеживая журналы сервера на предмет признаков вредоносной активности, таких как повторяющиеся неудачные попытки входа в систему.

Когда SSHGuard обнаруживает такое подозрительное поведение, он автоматически блокирует IP-адреса нарушителей, используя правила брандмауэра.

Кроме того, он поддерживает несколько форматов ведения журнала и может быть интегрирован с различными серверными системами брандмауэра, такими как UFW, firewalld, iptables, nftables, IPFW и pf, для управления блокировкой потенциально вредоносного трафика.

Да, мы знаем. Это может напомнить вам о том, что делает Fail2Ban (ознакомьтесь с нашим руководством для получения более подробной информации). Хотя эти два инструмента имеют сходство, у них также есть ключевые различия. Итак, давайте кратко рассмотрим их, чтобы помочь вам решить, какой инструмент лучше соответствует вашим потребностям.

 

SSHGuard против Fail2Ban: ключевые отличия

SSHGuard и Fail2Ban отслеживают файлы журналов на предмет подозрительной активности, а затем принимают меры по блокировке IP-адресов-нарушителей. Однако, несмотря на схожие функциональные возможности, между ними есть различия.:

Подход к мониторингу:

  • SSHGuard напрямую отслеживает файлы журналов и может интерпретировать сами записи журнала, не требуя регулярных выражений.
  • Fail2Ban, с другой стороны, в значительной степени полагается на регулярные выражения для анализа файлов журналов и выявления моделей оскорбительного поведения. Это делает его очень гибким и настраиваемым, поскольку его можно адаптировать для мониторинга практически любой службы, которая записывает данные в файл журнала.

 

Мониторинг служб по умолчанию:

  • SSHGuard в первую очередь предназначен для защиты SSH-серверов, но поддерживает и другие службы, такие как почтовые серверы и FTP.
  • Fail2Ban можно настроить для защиты широкого спектра служб, помимо SSH, включая веб-серверы, почтовые серверы, серверы общего доступа к файлам, FTP и многое другое.

 

Реализация и производительность:

  • SSHGuard написан на C, что может обеспечить лучшую производительность в отношении скорости и использования ресурсов.
  • Fail2Ban написан на Python, что может сделать его немного медленнее, но также и более адаптируемым благодаря обширным библиотекам Python и простоте написания сценариев.

 

Механизмы блокировки:

  • SSHGuard использует более простой механизм блокировки, который напрямую интегрируется с инструментами брандмауэра, такими как UFW, firewalld, iptables, pf, IPFW и др.
  • Fail2Ban в основном использует iptables, но может быть настроен для работы с различными другими действиями, такими как отправка электронных писем, запуск пользовательских скриптов или интеграция с более сложными настройками брандмауэра.

 

Простота настройки:

  • SSHGuard обеспечивает более простую настройку для пользователей, в первую очередь связанных с SSH и несколькими другими сервисами, часто требуя меньше настроек.
  • Fail2Ban может потребовать более подробной настройки для настройки регулярных выражений и определения конкретных правил и действий для различных служб, но это также обеспечивает больший контроль и настройку.
Читать  Что такое DKIM? Объясняется запись и подпись DKIM

 

Установка SSHGuard в Linux

Ниже показано, как установить SHHGuard, в зависимости от вашего дистрибутива Linux.

Debian/Ubuntu/Linux Mint

sudo apt install sshguard

Fedora

sudo dnf install sshguard

 

Имейте в виду, что выполнение приведенной выше команды также приведет к установке пакета “sshguard-firewalld”, поскольку Firewalld – это брандмауэр по умолчанию, используемый в системах Fedora. При необходимости вы также можете установить пакеты “sshguard-iptables” или “sshguard-nftables” в качестве альтернативных серверных частей брандмауэра для SSHGuard.

Включите и запустите службу:

sudo systemctl enable --now sshguard.service

 

Alma Linux/Rocky Linux

Поскольку пакет SSHGuard находится в репозитории EPEL, сначала добавьте его в свою систему (если вы еще этого не сделали) и обновите индекс пакета.

sudo dnf install epel-release
sudo dnf update

 

Затем вы можете установить SSHGuard, выполнив следующее:

sudo dnf install sshguard

 

Как и в Fedora, дополнительный пакет “sshguard-firewalld” будет установлен в качестве серверной части по умолчанию для использования SSHGuard. Также доступны два других варианта: “sshguard-iptables” и “sshguard-nftables”.

Наконец, включите и запустите службу:

sudo systemctl enable --now sshguard.service

 

 

Настройка SSHGuard

В файле “sshguard.conf” вы настраиваете параметры для SSHGuard для защиты вашего сервера. Этот файл позволяет вам указать, как ведет себя SSHGuard, что он отслеживает и как реагирует на потенциальные атаки.

В системах на базе Debian (Debian, Ubuntu и т.д.) Файл находится по адресу:

/etc/sshguard/sshguard.conf

 

В дистрибутивах на базе RHEL, таких как Alma Linux, Rocky Linux, Fedora, вы можете найти это по следующему пути:

/etc/sshguard.conf

 

Вот как это выглядит по умолчанию в Debian:

Файл конфигурации SSHGuard

Файл конфигурации SSHGuard

 

Вот объяснение его распространенных опций:

  • BACKEND: Этот параметр определяет тип серверной части брандмауэра, которую SSHGuard должен использовать для блокирования злоумышленников. Например, вы можете увидеть такие значения, как “sshg-fw-nft-sets”, “sshg-fw-firewalld”, “sshg-fw-iptables”, “sshg-fw-pf” и т.д., в зависимости от брандмауэра вашей системы.
  • LOGREADER: определяет метод, который SSHGuard использует для чтения ваших файлов журналов. Он определяет, как SSHGuard обрабатывает записи журнала для обнаружения вредоносной активности.
  • THRESHOLD: это количество неправомерных действий (например, неудачных попыток входа в систему) с одного IP-адреса, которое заставляет SSHGuard блокировать этот адрес. Установка этого значения ниже означает более быстрые баны, но будьте осторожны и не устанавливайте его слишком низко, что может заблокировать законных пользователей, которые неправильно вводят свои пароли.
  • BLOCK_TIME: определяет, на сколько (в секундах) IP-адрес будет заблокирован после достижения порога злоупотребления, с настройкой по умолчанию в две минуты (120 секунд). По истечении этого времени блокировка снимается, если только IP-адрес не вызовет новую блокировку.
  • DETECTION_TIME: устанавливает временные рамки (в секундах), в течение которых повторные нарушения с одного и того же IP-адреса учитываются для достижения порога блокировки. По сути, он устанавливает период, в течение которого SSHGuard отслеживает подозрительные действия с определенного IP-адреса.
  • WHITELIST_FILE: полный путь к файлу, в котором вы можете указать IP-адреса или диапазоны, которые никогда не должны блокироваться, независимо от того, как они себя ведут. Это полезно для гарантии того, что вы случайно не заблокируете себя или доверенные IP-адреса.
Читать  scp с использованием файла pem

 

Позвольте мне теперь показать вам, как настроить SSHGuard в зависимости от используемого вами брандмауэра.

 

Настройка SSHGuard при использовании UFW/nftables

Во-первых, мы хотим начать с важного пояснения. Во многих руководствах UFW указан в качестве серверной части для SSHGuard, что не совсем верно по одной простой причине – SSHGuard предлагает не серверную часть UFW, а, по сути, серверную часть nftables.

UFW (простой брандмауэр) – это просто удобный интерфейс (уровень абстракции) для управления правилами брандмауэра iptables/nftables в Linux под капотом. Он используется по умолчанию в Ubuntu.

Итак, чтобы настроить SSHGuard для работы с ним, убедитесь, что параметр “BACKEND” содержит “/usr/libexec /sshguard/sshg-fw-nft-sets” в качестве значения.

Настройка SSHGuard с помощью UFW/nftables

Настройка SSHGuard с помощью UFW/nftables

 

Однако, прежде чем SSHGuard сможет манипулировать правилами UFW, необходимо убедиться, что UFW настроен на управление внешними приложениями, такими как SSHGuard. Для этого необходимо добавить перехваты для SSHGuard в конфигурацию UFW. Для этого отредактируйте файл UFW “before.rules”:

sudo nano /etc/ufw/before.rules

 

Добавьте следующие строки после раздела “allow all on loopback”, чтобы создать новую цепочку для SSHGuard:

# Create a chain for SSHGuard
-A ufw-before-input -j SSHGUARD
-A ufw-before-output -j SSHGUARD
-A ufw-before-forward -j SSHGUARD

 

Настройка SSHGuard с помощью UFW/nftables

Настройка SSHGuard с помощью UFW/nftables

 

Сохраните файл и выйдите из него. Затем перезапустите службу UFW.

sudo systemctl restart ufw

 

Если вы изменили конфигурацию SSHGuard, перезапустите и его службу.

sudo systemctl restart sshguard

 

Вот и все. Теперь SSHGuard полностью настроен для защиты вашего сервера от SSH-атак методом перебора. Попробуйте выполнить несколько некорректных SSH-подключений к вашему серверу, чтобы проверить это. После третьей неудачной попытки (“THRESHOLD=30“) SSHGuard заблокирует ваше соединение на две минуты (“BLOCK_TIME=120“).

Хотите проверить, какие адреса были заблокированы? Самый простой способ – напрямую указать таблицу SSHGuard nftables, которая содержит список заблокированных IP-адресов.

sudo nft list table sshguard

 

Перечислите IP-адреса, заблокированные SSHGuard

Перечислите IP-адреса, заблокированные SSHGuard

 

Вы также можете отслеживать файл “/ var /log/auth.log”, чтобы просматривать записи действий SSHGuard.

sudo tail -f /var/log/auth.log

 

Действия SSHGuard также записаны в файле журнала

Действия SSHGuard также записаны в файле журнала

 

Настройка SSHGuard при использовании iptables

Можете назвать меня старомодным (мы не будем спорить, потому что вы правы), но мы предпочитаем использовать SSHGuard с брандмауэром iptables для серверной части. Вот как это сделать.

Сначала убедитесь, что SSHGuard настроен на использование iptables, проверив файл конфигурации SSHGuard, который должен содержать параметр “BACKEND”, для параметра “/usr/libexec/sshguard/sshg-fw-iptables”.”

sudo nano /etc/sshguard/sshguard.conf

 

Настройка SSHGuard с использованием iptables для серверной части

Настройка SSHGuard с использованием iptables для серверной части

 

Конечно, если вы внесли какие-либо изменения в конфигурацию SSHGuard, обязательно перезапустите ее:

sudo systemctl restart sshguard

 

Затем создайте новую цепочку iptables для SSHGuard:

sudo iptables -N sshguard

 

Убедитесь, что весь SSH-трафик проходит через цепочку “sshguard”:

sudo iptables -A INPUT -p tcp --dport 22 -j sshguard

 

Чтобы сделать внесенные изменения постоянными (доступными после перезагрузки) следуйте приведенным ниже командам:

sudo apt install iptables-persistent
sudo iptables-save -f /etc/iptables/rules.v4

 

Чтобы просмотреть список IP-адресов, заблокированных в данный момент SSHGuard, выполните следующее:

sudo iptables -L sshguard -n

 

Читать  Кто такой системный администратор и чем он занимается?

Вы также можете отслеживать действия SSHGuard в режиме реального времени, запустив:

sudo journalctl -u sshguard -f

 

 

Настройка SSHGuard при использовании firewalld

Firewalld – это инструмент управления брандмауэром для Linux. В основном он используется в дистрибутивах на базе RHEL, таких как Alma Linux, Rocky Linux и Fedora. Инструмент поддерживает зоны брандмауэра, которые определяют уровень доверия к сетевым подключениям или интерфейсам. Чтобы узнать больше об этом и о том, как им пользоваться, посетите наше подробное руководство “Firewalld в примерах”. Теперь вернемся к теме.

Чтобы указать SSHGuard использовать firewalld в качестве серверной части, убедитесь, что для параметра “BACKEND” в файле “sshguard.conf” установлено значение “/usr/ libexec /sshguard /sshg-fw-firewalld”.

sudo nano /etc/sshguard.conf

 

Настройка SSHGuard с использованием firewalld для серверной части

Настройка SSHGuard с использованием firewalld для серверной части

 

Кроме того, не забудьте перезапустить службу SSHGuard, если вы внесли какие-либо изменения в саму конфигурацию:

sudo systemctl restart sshguard

 

Заблокированные злоумышленники добавляются к двум правилам, названным “sshguard4” (для адресов IPv4) и “sshguard6” (для адресов IPv6), соответственно, добавленным в зону брандмауэра по умолчанию (“public“).

Название правил брандмауэра SSHGuard

Название правил брандмауэра SSHGuard

 

Чтобы просмотреть список IP-адресов, заблокированных в данный момент SSHGuard, выполните следующее:

sudo firewall-cmd --info-ipset=sshguard4

 

Перечислите IP-адреса, заблокированные серверной частью firewalld SSHGuard

Перечислите IP-адреса, заблокированные серверной частью firewalld SSHGuard

 

Соответственно, для IPv6-адресов команда:

sudo firewall-cmd --info-ipset=sshguard6

 

Наконец, вы можете отслеживать действия SSHGuard в режиме реального времени, запустив:

sudo journalctl -u sshguard -f

 

Однако, если вы используете другую зону брандмауэра, вы можете настроить ее, следуя приведенным ниже инструкциям. Просто замените “<zone-name>” на ваше конкретное название зоны.

sudo firewall-cmd --zone=<zone-name> --permanent --add-rich-rule="rule source ipset=sshguard4 drop" 

sudo firewall-cmd --zone=<zone-name> --permanent --add-rich-rule="rule source ipset=sshguard6 drop"

 

Белый список IP-адресов

Белый список IP-адресов в SSHGuard позволяет гарантировать, что определенные IP-адреса никогда не будут заблокированы, независимо от их активности. Это может быть важно для IP-адресов, которым вы доверяете, таких как системные администраторы или автоматизированные процессы, которые могут иметь частый законный доступ по SSH. Вот как вы можете внести IP-адреса в белый список в SSHGuard.

Сначала убедитесь, что параметр “WHITELIST_FILE” в файле “sshguard.conf” активен и не закомментирован.

Опция “WHITELIST_FILE” должна быть активна

Опция “WHITELIST_FILE” должна быть активна

 

Расположение файла со списком адресов, внесенных в белый список, может отличаться в зависимости от вашего дистрибутива Linux. Для тех, кто использует системы на базе Debian, такие как Ubuntu, он находится по адресу:

/etc/sshguard/whitelist

 

Для систем на базе RHEL, таких как Alma, Rocky и Fedora:

/etc/sshguard.whitelist

 

Здесь вы можете ввести хосты, которые, по вашему мнению, никогда не будут блокироваться SSHGuard, тремя различными способами:

  • Один IP-адрес
  • Диапазон сети
  • Полное доменное имя (FQDN) хоста

 

Например:

192.168.0.34
192.168.0.0/24
myhost.domain.com

 

Итак, откройте файл в текстовом редакторе, введите нужные адреса, сохраните файл и выйдите. Конечно, после этого не забудьте перезапустить службу SSHGuard.

sudo systemctl restart sshguard

 

Заключение

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

Для получения дополнительной информации посетите веб-сайт проекта или обратитесь к документации SSHGuard.

Спасибо за ваше время! Если у вас есть какие-либо вопросы, пожалуйста, оставьте их в разделе комментариев ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:



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

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

11 + 2 =

**ссылки nofollow

Это может быть вам интересно


Рекомендуемое
На мероприятии Open Source Summit (OSS) Europe в Вене, Австрия,…

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: