2 min read

Защита FreeBSD: Установка SSHGuard против брутфорс-атак

Находясь в Багдаде и управляя сервером в Европе, ты наверняка замечаешь в логах бесконечные попытки подбора пароля к SSH. Это «шум» интернета, но он создает лишнюю нагрузку и риски.

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

В отличие от громоздких решений, SSHGuard написан на C, потребляет минимум ресурсов и идеально работает в связке с файрволом PF.


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

SSHGuard мониторит системные логи, распознает неудачные попытки входа и автоматически добавляет IP-адрес атакующего в «черный список» файрвола на определенное время. Если атакующий проявляет настойчивость, время блокировки увеличивается в геометрической прогрессии.


Шаг 1: Установка

На FreeBSD установка выполняется одной командой:

Bash

pkg update
pkg install sshguard

Шаг 2: Настройка файрвола (PF)

SSHGuard не блокирует пакеты сам — он дает команду файрволу. Мы будем использовать PF, который уже настроили в прошлых статьях для VPN и BGP.

Перезагрузи PF:Bash

service pf reload

Добавь правило блокировки (сразу после определений интерфейсов, но до разрешающих правил pass):Plaintext

block in quick on vtnet0 from <sshguard> to any

Здесь quick означает, что если IP в таблице, пакет будет сброшен немедленно, не проверяя остальные правила.

Открой /etc/pf.conf и добавь в начало таблицу sshguard:Plaintext

table <sshguard> persist

Шаг 3: Настройка SSHGuard

Теперь укажем SSHGuard, как именно блокировать нарушителей. Отредактируй /etc/rc.conf:

Bash

sysrc sshguard_enable="YES"
# Указываем использовать PF и нашу таблицу
sysrc sshguard_flags="-a /usr/local/etc/sshguard.whitelist"

Белый список (Важно!)

Чтобы не заблокировать самого себя (например, если ты трижды ошибся в пароле, подключаясь из отеля в Багдаде), создай файл /usr/local/etc/sshguard.whitelist:

Plaintext

# Твой домашний IP в Киеве
1.2.3.4
# IP твоего VPN сервера (если есть статика)
5.6.7.8

Шаг 4: Запуск и мониторинг

Запускаем службу:

Bash

service sshguard start

Как проверить работу?

Посмотреть список заблокированных в данный момент «злодеев» можно командой PF:

Bash

pfctl -t sshguard -T show

Если ты видишь там IP-адреса — значит, SSHGuard уже в бою.


Почему это важно для пилота и трейдера?

Когда ты работаешь через нестабильные сети (отельный Wi-Fi, мобильный интернет в роуминге), лишняя нагрузка на SSH-демон от ботов может привести к задержкам в консоли. SSHGuard делает твой сервер «тихим» для сканеров: после нескольких неудачных попыток сервер просто перестает отвечать на запросы атакующего.

Совет: Для максимальной безопасности я рекомендую вообще отключить вход по паролю в /etc/ssh/sshd_config(PasswordAuthentication no) и использовать только SSH-ключи. Но даже в этом случае SSHGuard полезен, так как он защищает и другие сервисы (Dovecot, Sendmail и т.д.).


Safe flight and secure servers!