
Централизовать или распределять чёрные списки IPset
Эта программа позволяет централизовать и распространять чёрные списки IP.
Если вы поддерживаете сервер в интернете, вы, скорее всего, сталкивались с одной или несколькими атаками методом перебора. Не проблема, просто установите fail2ban. Готово.
Но если вы управляете несколькими серверами, каждый из которых запускает свой экземпляр fail2ban, у всех них будут разные IP-адреса в списке блокировок. Разве не было бы удобно иметь общий список блокировок для всех ваших экземпляров fail2ban? Или, если все ваши машины находятся за маршрутизатором или брандмауэром, которым вы управляете сами, разве не было бы удобно блокировать вредоносный трафик на границе вашей сети?
Именно это и помогает сделать vallumd.
Vallumd подключается к брокеру MQTT, читает сообщения, содержащие IP-адреса, и добавляет или удаляет эти IP-адреса из набора ipset. Всё просто.
Это означает, что сам по себе он не полезен, но делает vallumd очень гибким. Вы сами решаете, какое правило iptables будет ссылаться на ipset. Интеграция с fail2ban проста: нужно создать новое действие, использующее mosquitto_pub для отправки сообщения на ваш MQTT-брокер. А поскольку существуют библиотеки MQTT для большинства распространённых языков, интеграция с вашей любимой IDS, IPS или Honeypot не должна быть сложной.
Название vallumd происходит от латинского слова "vallum", что означает стена. И именно это делает vallumd: строит стену для защиты вашей цифровой империи.
Самый удобный способ установить любой пакет — использовать менеджер пакетов вашего дистрибутива. Однако, поскольку этот проект очень молод, он ещё не включён во многие дистрибутивы.
Пакет, отслеживающий ветку master git, доступен в AUR.
Убедитесь, что у вас включён репозиторий EPEL.
sudo yum -y install cmake3 ipset-devel mosquitto-devel openssl-devel pkgconfig '@Development Tools'
Теперь вы можете сгенерировать RPM-пакет с помощью cpack:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake3 .
cpack3 -G RPM
sudo yum -y localinstall build/*.rpm
Сборка протестирована на CentOS 7.
Вы можете сгенерировать DEB-пакет с помощью cpack:
sudo apt-get -y install build-essential cmake file libipset-dev libmosquitto-dev libssl-dev pkg-config
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
cpack -G DEB
sudo dpkg -i build/*.deb
Сборка протестирована на Debian 10, 11, 12, 13 и Ubuntu 18.04, 20.04, 22.04, 24.04.
Вы можете найти живой ebuild для vallumd в моём Gentoo overlay
Если вы используете снимок OpenWrt DD или LEDE, vallumd доступен в фиде пакетов и может быть установлен с помощью opkg:
opkg update
opkg install vallumd
Ручная установка очень проста. Требования:
Инструкции:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
make
make install
Для использования vallumd вам нужен MQTT-брокер, например Mosquitto. В зависимости от вашей конфигурации вы можете запустить его на том же хосте, что и vallumd, но это не обязательно.
Далее вам понадобится IPset. Чтобы дать вам полный контроль над типом IPset и его параметрами, vallumd не будет создавать IPset самостоятельно. Вы можете выбрать один из следующих типов IPset:
Пример создания IPset:
ipset create blacklist hash:ip timeout 3600
Теперь вы можете запустить vallumd. Доступны следующие параметры командной строки:
-h: MQTT-хост для подключения
-p: MQTT-порт для подключения (1883)
-u: MQTT-имя пользователя
-P: MQTT-пароль
-t: MQTT-топик и имя IPset
-V: вывод номера версии и выход
-c: путь к файлу CA
-T: использование TLS
Параметры host и topic обязательны, остальные необязательны (указаны значения по умолчанию). Можно указать несколько топиков.
Запуск vallumd:
vallumd -h 192.168.0.1 -t blacklist
Это будет прослушивать сообщения на MQTT-брокере по адресу 192.168.0.1 в топике blacklist, и при получении сообщения IP-адрес из сообщения будет добавлен или удалён из IPset с именем blacklist.
Итак, теперь у нас есть всё необходимое, чтобы начать добавлять IP-адреса в чёрный список. Всё, что нам нужно сделать, — это настроить нашу IDS, IPS или Honeypot на отправку вредоносных IP-адресов на наш MQTT-брокер.
Для fail2ban это можно сделать с помощью клиента Mosquitto mosquitto_pub. Создайте новое действие в /etc/fail2ban/action.d/vallumd.conf:
[Definition]
actionban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/add -m <ip>
actionunban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/del -m <ip>
И настройте ваши тюрьмы fail2ban на использование действия vallumd.
Пакеты, сгенерированные с помощью CPack, поддерживают OpenRC, Upstart и systemd. Файлы конфигурации службы находятся там, где вы ожидаете в вашем дистрибутиве:
После редактирования файла, соответствующего вашему дистрибутиву, запустите службу vallumd так же, как вы запускаете любую другую службу в вашей системе.
Vallumd использует syslog(3) для логирования.