Это руководство по эффективной защите SSH-серверов с помощью SSHGuard от атак методом перебора — узнайте, как это сделать!
SSH (Secure Shell) служит критической точкой входа на ваш сервер, предлагая мощный зашифрованный метод удаленного администрирования. Однако его безопасность настолько высока, насколько надежны меры по его защите.
Введите SSHGuard — надежный инструмент, предназначенный для защиты вашего SSH-сервера от атак методом перебора и других распространенных уязвимостей. В этом руководстве будут показаны практические шаги по его реализации, что повысит безопасность вашего сервера и даст вам душевное спокойствие.
Но прежде чем мы перейдем к практической части, давайте прольем больше света на само программное обеспечение.
SSHGuard — это инструмент безопасности, который защищает серверы от атак методом перебора, в первую очередь тех, которые нацелены на SSH-сервисы. Он функционирует как система предотвращения вторжений на основе журналов, отслеживая журналы сервера на предмет признаков вредоносной активности, таких как повторяющиеся неудачные попытки входа в систему.
Когда SSHGuard обнаруживает такое подозрительное поведение, он автоматически блокирует IP-адреса нарушителей, используя правила брандмауэра.
Кроме того, он поддерживает несколько форматов ведения журнала и может быть интегрирован с различными серверными системами брандмауэра, такими как UFW, firewalld, iptables, nftables, IPFW и pf, для управления блокировкой потенциально вредоносного трафика.
Да, мы знаем. Это может напомнить вам о том, что делает Fail2Ban (ознакомьтесь с нашим руководством для получения более подробной информации). Хотя эти два инструмента имеют сходство, у них также есть ключевые различия. Итак, давайте кратко рассмотрим их, чтобы помочь вам решить, какой инструмент лучше соответствует вашим потребностям.
SSHGuard и Fail2Ban отслеживают файлы журналов на предмет подозрительной активности, а затем принимают меры по блокировке IP-адресов-нарушителей. Однако, несмотря на схожие функциональные возможности, между ними есть различия.:
Подход к мониторингу:
Мониторинг служб по умолчанию:
Реализация и производительность:
Механизмы блокировки:
Простота настройки:
Ниже показано, как установить SHHGuard, в зависимости от вашего дистрибутива Linux.
sudo apt install sshguard
sudo dnf install sshguard
Имейте в виду, что выполнение приведенной выше команды также приведет к установке пакета “sshguard-firewalld”, поскольку Firewalld — это брандмауэр по умолчанию, используемый в системах Fedora. При необходимости вы также можете установить пакеты “sshguard-iptables” или “sshguard-nftables” в качестве альтернативных серверных частей брандмауэра для SSHGuard.
Включите и запустите службу:
sudo systemctl enable --now sshguard.service
Поскольку пакет 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.conf” вы настраиваете параметры для SSHGuard для защиты вашего сервера. Этот файл позволяет вам указать, как ведет себя SSHGuard, что он отслеживает и как реагирует на потенциальные атаки.
В системах на базе Debian (Debian, Ubuntu и т.д.) Файл находится по адресу:
/etc/sshguard/sshguard.conf
В дистрибутивах на базе RHEL, таких как Alma Linux, Rocky Linux, Fedora, вы можете найти это по следующему пути:
/etc/sshguard.conf
Вот как это выглядит по умолчанию в Debian:
Вот объяснение его распространенных опций:
Позвольте мне теперь показать вам, как настроить SSHGuard в зависимости от используемого вами брандмауэра.
Во-первых, мы хотим начать с важного пояснения. Во многих руководствах UFW указан в качестве серверной части для SSHGuard, что не совсем верно по одной простой причине – SSHGuard предлагает не серверную часть UFW, а, по сути, серверную часть nftables.
UFW (простой брандмауэр) — это просто удобный интерфейс (уровень абстракции) для управления правилами брандмауэра iptables/nftables в Linux под капотом. Он используется по умолчанию в Ubuntu.
Итак, чтобы настроить SSHGuard для работы с ним, убедитесь, что параметр “BACKEND” содержит “/usr/libexec /sshguard/sshg-fw-nft-sets” в качестве значения.
Однако, прежде чем 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
Сохраните файл и выйдите из него. Затем перезапустите службу 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
Вы также можете отслеживать файл “/ var /log/auth.log”, чтобы просматривать записи действий SSHGuard.
sudo tail -f /var/log/auth.log
Можете назвать меня старомодным (мы не будем спорить, потому что вы правы), но мы предпочитаем использовать SSHGuard с брандмауэром iptables для серверной части. Вот как это сделать.
Сначала убедитесь, что SSHGuard настроен на использование iptables, проверив файл конфигурации SSHGuard, который должен содержать параметр “BACKEND”, для параметра “/usr/libexec/sshguard/sshg-fw-iptables”.»
sudo nano /etc/sshguard/sshguard.conf
Конечно, если вы внесли какие-либо изменения в конфигурацию 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
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, если вы внесли какие-либо изменения в саму конфигурацию:
sudo systemctl restart sshguard
Заблокированные злоумышленники добавляются к двум правилам, названным “sshguard4” (для адресов IPv4) и “sshguard6” (для адресов IPv6), соответственно, добавленным в зону брандмауэра по умолчанию (“public“).
Чтобы просмотреть список IP-адресов, заблокированных в данный момент SSHGuard, выполните следующее:
sudo firewall-cmd --info-ipset=sshguard4
Соответственно, для 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-адресов в SSHGuard позволяет гарантировать, что определенные IP-адреса никогда не будут заблокированы, независимо от их активности. Это может быть важно для IP-адресов, которым вы доверяете, таких как системные администраторы или автоматизированные процессы, которые могут иметь частый законный доступ по SSH. Вот как вы можете внести IP-адреса в белый список в SSHGuard.
Сначала убедитесь, что параметр “WHITELIST_FILE” в файле “sshguard.conf” активен и не закомментирован.
Расположение файла со списком адресов, внесенных в белый список, может отличаться в зависимости от вашего дистрибутива Linux. Для тех, кто использует системы на базе Debian, такие как Ubuntu, он находится по адресу:
/etc/sshguard/whitelist
Для систем на базе RHEL, таких как Alma, Rocky и Fedora:
/etc/sshguard.whitelist
Здесь вы можете ввести хосты, которые, по вашему мнению, никогда не будут блокироваться SSHGuard, тремя различными способами:
Например:
192.168.0.34 192.168.0.0/24 myhost.domain.com
Итак, откройте файл в текстовом редакторе, введите нужные адреса, сохраните файл и выйдите. Конечно, после этого не забудьте перезапустить службу SSHGuard.
sudo systemctl restart sshguard
Защита вашего SSH-сервера с помощью SSHGuard обеспечивает надежный уровень защиты от атак методом перебора и других попыток несанкционированного доступа. Помните, ключ к поддержанию безопасности заключается не только в начальной настройке, но и в постоянном мониторинге и обновлении ваших конфигураций по мере появления новых угроз.
Для получения дополнительной информации посетите веб-сайт проекта или обратитесь к документации SSHGuard.
Спасибо за ваше время! Если у вас есть какие-либо вопросы, пожалуйста, оставьте их в разделе комментариев ниже.