ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

Как защитить 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 в 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

 

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

 

Позвольте мне теперь показать вам, как настроить 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, тремя различными способами:

 

Например:

192.168.0.34
192.168.0.0/24
myhost.domain.com

 

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

sudo systemctl restart sshguard

 

Заключение

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

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

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

Exit mobile version