SSHGuard
Установка security/sshguard
SSHGuard - инструмент для защиты хостов от атак на SSH и другие сервисы.
SSHGuard проверяет сообщения журналов приложений, на основании которых определяет возможные атаки на сетевые службы. Затем блокирует IP-адреса тех, кто пытался злоупотреблять. Через некоторое время, определённое в файле настроек, он снимает блокировку, если попыток атак больше не обнаружено. Или может заблокировать IP-адрес злоумышленника навсегда.
Подробная информация на сайте https://www.sshguard.net/
Установка из пакета (предварительная установка менеджера пакетов PKG не требуется, дополнительная информация о котором в статье PKG):
# pkg install sshguard
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
sshguard: 2.4.3_3,1
Number of packages to be installed: 1
The process will require 4 MiB more space.
529 KiB to be downloaded.
Proceed with this action? [y/N]: y
[1/1] Fetching sshguard-2.4.3_3,1.pkg: 100% 529 KiB 541.4kB/s 00:01
Checking integrity... done (0 conflicting)
[1/1] Installing sshguard-2.4.3_3,1...
[1/1] Extracting sshguard-2.4.3_3,1: 100%
=====
Message from sshguard-2.4.3_3,1:
--
To enable SSHGuard at startup, add the following line to your 'rc.conf':
sshguard_enable="YES"
Starting SSHGuard through syslogd(8) is discouraged and not supported.
Configure SSHGuard by editing BACKEND in '/usr/local/etc/sshguard.conf'. See
sshguard-setup(7) for instructions on setting up your firewall.
Please note that a few rc script parameters have been renamed to
better reflect the documentation:
sshguard_safety_thresh -> sshguard_danger_thresh
sshguard_pardon_min_interval -> sshguard_release_interval
sshguard_prescribe_interval -> sshguard_reset_interval
Менеджер пакетов предложит установить пакет sshguard. Примерный вывод выполнения команды после согласия на установку представлен выше.
Проверка установки SSHGuard:
# pkg version -v | grep sshguard sshguard-2.4.3_3,1 = up-to-date with remote
Контроль доступа с помощью IPFW
Настройки пакета sshguard находятся в файле /usr/local/etc/sshguard.conf.
Включение автозапуска IPFW в /etc/rc.conf:
# sysrc firewall_enable="YES" firewall_enable: NO -> YES # sysrc firewall_type="open" firewall_type: UNKNOWN -> open # sysrc firewall_logging="YES" firewall_logging: NO -> YES
Запуск IPFW:
# service ipfw start &
Символ "&" в данном случае необходим. Без него будет добавлено единственное правило IPFW, запрещающее весь трафик, и дальнейшее выполнение скрипта запуска IPFW будет прекращено (в случае удалённого управления, например по SSH).
Проверка на консоли:
# ipfw show 65535 4 400 deny ip from any to any
Правильный запуск прервёт текущий сеанс SSH, но выполнение запуска IPFW будет продолжено:
# ipfw show 00100 0 0 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 00300 0 0 deny ip from 127.0.0.0/8 to any 00400 0 0 deny ip from any to ::1 00500 0 0 deny ip from ::1 to any 00600 0 0 allow ipv6-icmp from :: to ff02::/16 00700 0 0 allow ipv6-icmp from fe80::/10 to fe80::/10 00800 0 0 allow ipv6-icmp from fe80::/10 to ff02::/16 00900 0 0 allow ipv6-icmp from any to any icmp6types 1 01000 0 0 allow ipv6-icmp from any to any icmp6types 2,135,136 65000 142 19406 allow ip from any to any 65535 4 400 deny ip from any to any
Установка автозапуска sshguard в /etc/rc.conf:
# sysrc sshguard_enable="YES" sshguard_enable: -> YES
Установка способа ограничения доступа к сетевым сервисам с помощью IPFW в файле настройки /usr/local/etc/sshguard.conf:
BACKEND="/usr/local/libexec/sshg-fw-ipfw"
Выбор файла, содержащего чёрный список, в файле настройки /usr/local/etc/sshguard.conf:
BLACKLIST_FILE=120:/var/db/sshguard/blacklist.db
Создание папки для чёрного списка (сам файл будет создан автоматически при старте SSHGuard):
# mkdir /var/db/sshguard
Выбор файла, содержащего белый список, в файле настройки /usr/local/etc/sshguard.conf:
WHITELIST_FILE=/usr/local/etc/sshguard.whitelist
Создание файла белого списка с добавлением доверенных адресов (в данном примере указан адрес 10.10.10.10):
# echo '10.10.10.10' >> /usr/local/etc/sshguard.whitelist
Запуск SSHGuard:
# service sshguard start
При запуске SSHGuard создаётся таблица "22" (пока она пуста):
# ipfw table 22 list
Добавление запрещающего правила на основе таблицы "22" IPFW в автозапуск с помощью /etc/rc.local:
#!/bin/sh ipfw add 5000 deny ip from table\(22\) to any
SSHGuard, установленный из пакета проверяет два файла:
# grep FILES /usr/local/etc/sshguard.conf FILES="/var/log/auth.log /var/log/maillog"
SSHGuard в соответствии с данной строкой настройки обнаруживает неудачные попытки аутентификации по SSH, зафиксированные в файле журнала /var/log/auth.log. И разбирает обращения к почтовому сервису в основной ОС, записанные в файле журнала /var/log/maillog