Защита 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!
Member discussion