|
|
|
---
|
|
|
|
title: Отчёт о ходе разработки f2b
|
|
|
|
tags: devel, f2b
|
|
|
|
---
|
|
|
|
|
|
|
|
Jan 4 19:52:33 f2b[4090]: jail 'portknock': restored ban of ip 85.121.165.15 (23.9hrs remain)
|
|
|
|
Jan 4 19:52:33 f2b[4090]: jail 'portknock': restored ban of ip 95.154.82.19 (23.9hrs remain)
|
|
|
|
Jan 4 19:52:33 f2b[4090]: jail 'portknock': restored ban of ip 78.171.148.130 (24.0hrs remain)
|
|
|
|
Jan 4 19:52:33 f2b[4090]: jail 'portknock': restored ban of ip 221.194.47.224 (24.0hrs remain)
|
|
|
|
# ... сидеть, обезьяны, срок ещё не вышел!
|
|
|
|
|
|
|
|
С момента предыдущего [отчёта](/projects/f2b/2016-09-11/) сделано следующее:
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
source сделан загружаемым модулем
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
... по аналогии с фильтром и бакендом. Ранее было прибито к файлам.
|
|
|
|
|
|
|
|
Тоже через libdl, интерфейс смотреть в sources/source.h, примеры реализации - в том же каталоге, любой /*.c/
|
|
|
|
|
|
|
|
redis source/backend
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
Предыдущий пункт позволил реализовать source для redis.
|
|
|
|
|
|
|
|
Это позволило "делиться" банами с другими хостами.
|
|
|
|
Сейчас оно работает уже пару месяцев без перерыва, 4 хоста с f2b + 1 redis-сервер.
|
|
|
|
|
|
|
|
mcast source/backend
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
Также добавлен аналог предыдущего модуля, но работающий через multicast,
|
|
|
|
что позволяет обойтись без redis-сервера, но ограничивает расположение
|
|
|
|
хостов одним multicast-доменом (т.е. одна и та же сеть, если не применять
|
|
|
|
костыль в виде igmpproxy и подобного).
|
|
|
|
|
|
|
|
Пока недостаточно оттестировано.
|
|
|
|
|
|
|
|
portknock source
|
|
|
|
----------------
|
|
|
|
|
|
|
|
Для выявления заведомых ботов. Позволяет повесить, например, /типа/ открытый telnet,
|
|
|
|
а по коннекту -- банить подключившегося, ибо нехер.
|
|
|
|
|
|
|
|
Если скомбинировать с вышеупомянутым redis'ом - получим распределённый honeypot.
|
|
|
|
Любой пидорас, спаленный за сканированием этого "telnet"'а будет немедленно забанен на всех хостах с f2b
|
|
|
|
(а то и во всей защищаемой сети в случае граничного роутера).
|
|
|
|
|
|
|
|
Приготовьтесь сразу юзать ipset или нечто подобное, хостов будет много.
|
|
|
|
За три часа часа работы в таком режиме набегает под две сотни, а за сутки - тысяча-полторы хостов (при бане на сутки).
|
|
|
|
|
|
|
|
doxygen и прочая документация
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
В всех заголовках добавлены doxygen'овы комментарии для структур, дефайнов и функций.
|
|
|
|
Вобщем, задокументировано всё, на что оно ругалось при генерации доков.
|
|
|
|
|
|
|
|
Также, существенно расширены доки по установке и настройке, добавлены примеры конфигов.
|
|
|
|
|
|
|
|
state
|
|
|
|
-----
|
|
|
|
|
|
|
|
Добавлена возможность хранить и восстанавливать список банов при рестарте.
|
|
|
|
Сделано тупо через файлик с записямии, когда какой ip был забанен и когда его выпускать.
|
|
|
|
|
|
|
|
Особой производительности там не требуется, файлик переписывается только при очередном бане.
|
|
|
|
Если будет тормозить - тогда будем думать.
|
|
|
|
|
|
|
|
Клиент / управление
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
Реализована команда set для jail'ов. Теперь порог срабатывания и прочие параметры можно поменять без рестарта.
|
|
|
|
Реализована перезагрузка списка regexp'ов для фильтра (аналогично).
|
|
|
|
|
|
|
|
Для пришедшего пакета теперь проверяется количество аргументов.
|
|
|
|
Сделано с прицелом на будущую реализацию управления по igmp.
|
|
|
|
|
|
|
|
Утилиты
|
|
|
|
-------
|
|
|
|
|
|
|
|
Переработаны утилитки для тестов различных компонентов.
|
|
|
|
Также, они переименованы для приведения к одному виду /f2b-*-test/.
|
|
|
|
Все утилиты сейчас могут использовать тот же кусок конфига,
|
|
|
|
что и сам демон (с минимальными исправлениями, вроде пути к библиотеке).
|
|
|
|
|
|
|
|
Переименованы некоторые команды, в частности:
|
|
|
|
|
|
|
|
* ban -> ip ban
|
|
|
|
* show -> ip status
|
|
|
|
* release -> ip release
|
|
|
|
* regex stats -> filter stats
|
|
|
|
* regex add -> regex reload
|
|
|
|
|
|
|
|
TODO
|
|
|
|
----
|
|
|
|
|
|
|
|
Что ещё надо будет в ближайшее время.
|
|
|
|
|
|
|
|
* select() вместо sleep() -- при большом списке файлов плывёт время обработки.
|
|
|
|
* белый список для подсетей (реализация ipv4-only сложности не представляет, но хотелось бы её сделать и для ipv6 тоже)
|
|
|
|
* реорганизовать имена загружаемых модулей (сложности с cmake, оно очень сильно хочет сделать именование вида libFOO.so)
|
|
|
|
* reload для конкретного jail'а
|
|
|
|
* добавить возможность использовать как просто udp, так и udp multicast для клиента (сейчас - только unix-сокет)
|
|
|
|
|
|
|
|
P.S. Качать, как обычно, из [git'а](https://git.linuxdv.org/ad_user/f2b)
|