diff --git a/articles/2016/03/17/f2b/index.markdown b/articles/2016/03/17/f2b/index.markdown new file mode 100644 index 0000000..62d270d --- /dev/null +++ b/articles/2016/03/17/f2b/index.markdown @@ -0,0 +1,42 @@ +--- +tags: devel, репост +title: Новый проект - f2b, легковесная замена fail2ban +--- + +Идея "переписать fail2ban" периодически приходила в голову. +Хоть они и пишут, что "кроме питона ничего не надо", но сам по себе питон тянет уже дохрена всего. + +Кроме того, на типовой роутер fail2nan вкорячить конечно можно, но места под что-либо другое уже не хватит. + +--- + +В типовом роутере с openwrt на его 4Мб ROM остаётся максимум 700кб свободного места (это без нифига), +и ~350 - с вебмордой и минимумом софта. Тулить туда "всего лишь питон" - затея изначально дикая. + +Потребление памяти: RES - 8Mb, VIRT - 400Mb, а у роутера - всего 16-32Мб. "Точно-точно будет работать?" + +**Возможности**: + +Сейчас оно умеет 2 типа регекспов (posix/pcre), через подгружаемые модули и (пока) 1 backend - +exec (выполнение одной или нескольких произвольных команд на указанное действие). + +Коллекция паттернов пока небогатая, но легко портируется. + +Документации сейчас почти нет, ни отдельной, ни в виде doxygen'а, но будет. + +Исходники брать тут: [f2b](http://www.linuxdv.org/git/?p=f2b.git;a=summary) + +В планах: перечитывание конфига, backend для redis, backend для ipset (через библиотеку), +источник-данных-как-модуль (сейчас - только файлы), простенький клиент для конфигурации на лету, без рестарта. + +Также есть мысль добавить своеобразный teaming на базе igmp. +Чтобы забаненный на одном хосте, также банился и на остальных. +Впринципе, этого можно добиться и через тот же redis. + +Справедливости ради, упомяну ещё похожую софтину - [sshguard](http://sshguard.sourceforge.net). +С ней проблема в том, что там команды бана/разбана хардкодятся при компиляции, +а сама она ориентирована на "обнаружение атак" ))). + +Причём сам "детектор" написан на yacc/lex, что-то там поправить - это просто верх удобства, +по сравнению с обычным файликом со списком регекспов. +Ну и опять же - работает только с файлами.