Попробую, наконец, подробнее изложить свою установку fail2ban.
Исходное у меня: Asus RT-N16, Tomato USB by Shibby, Entware, но кроме последнего это не принципиально.
1. Ставим нужный для работы пакет python и качаем fail2ban, являющийся набором скриптов на этом языке.
Я закачивал в папку /opt/root/ Вы можете использовать, другую, например, /tmp/
Я использовал версию fail2ban 0.8.14 - very-stable, вы можете более свежую. Последняя - fail2ban-0.9.3-1.
Встроенный в прошивку wget не работает с https протоколом, поэтому собственно fail2ban я приложил к данному сообщению. Ссылка в коде ниже именно на это вложение. Вы можете скачать его сами с первоисточника либо с GitHub, либо с сайта fail2ban.org , например, с помощью браузера, а затем доступным для вас способом (FTP, SAMBA, SFTP) передать его на роутер.
Code:
opkg install python
mkdir /opt/root
cd /opt/root
wget ftp://101.noip.me/fail2ban-0.8.14.tar.gz
2. Распаковываем fail2ban
Code:
tar xvzf fail2ban-0.8.14.tar.gz
3. Правим конфиг и скрипт установки, т.е. пару файлов /opt/root/fail2ban-0.8.14/setup.cfg и /opt/root/fail2ban-0.8.14/setup.py , по сути меняя расположение прописанных в них директорий на /opt/то-что-было-до-замены. Если вы решили также использовать версию 0.8.14, то можете просто скачать эти файлы с заменой на мои уже исправленные из вложения:
Code:
wget -P /opt/root/ ftp://101.noip.me/setup.tar.gz
tar xzvf /opt/root/setup.tar.gz -C /opt/root/fail2ban-0.8.14/
4. Запускаем собственно установку
Code:
cd /opt/root/fail2ban-0.8.14
python setup.py install
5. Правим пути аналогично п.3 в исполняемых скриптах Можете также скачать мои поправленные файлы:
Code:
wget -P /opt/root/ ftp://101.noip.me/bin.tar.gz
tar xzvf /opt/root/bin.tar.gz -C /opt/bin/
В принципе, это всё, можно пользоваться (лучше все же дочитайте до конца прежде), запустив fail2ban командой
Code:
fail2ban-client -x start
Ключ "-x" рекомендую использовать, чтобы при некорректном завершении своей работы fail2ban при последующем старте удалял "подвисший" сокет.
Справка вызывается остановка/перезагрузка конфигов/статус/проверка доступности сервера соответственно выполняются командами:
Code:
fail2ban-client stop
fail2ban-client reload
fail2ban-client status
fail2ban-client ping
Команда
Code:
fail2ban-regex /opt/var/log/messages /opt/etc/fail2ban/filter.d/dropbear.conf
полезна при проверке/правке ваших фильтров поиска в логах сообщений об ошибках аутентификации. Например, в указанном варианте она проверит лог-файл messages на совпадение с регулярными выражениями, описанными в файле фильтра dropbear.conf для демона ssh. При наличии сообщений об ошибке аутентификации в итоге будет выдано кол-во проанализированных строк записей в логе, распознанный формат даты и времени и количество совпадений с фильтром.
Команда
Code:
fail2ban-client status dropbear
покажет статистику для JAIL (что такое - ниже) dropbear: имя анализируемого лога, кол-во совпадений с фильтром в текущем периоде и всего, кол-во забаненых IP в текущем периоде и всего, список забаненых IP. fail2ban в комплекте имеет массу готовых настроек для анализа логов популярных сервисов - vsftpd, ssh, asterisk, apache и т.п. Каждый комплект настроек называется JAIL и состоит из файла фильтра на основе регулярных выражений + файла действий, описывающего как реагировать на обнаруженные совпадения. Описания JAIL-ов для популярных служб находятся в файле /opt/etc/fail2ban/jail.conf В нем описаны общие для всех (секция [DEFAULT] настройки (период, за который анализируются неудачные попытки авторизации, время бана, игнорируемые IP, кол-во допустимых ошибок авторизации и т.п.) и частные для конкретного сервиса (секция [ИМЯ_JAIL]), например, включен он или выключен, какой фильтр для него используется и какие действия выполняются, какой файл логов анализируется. Например, можно заблокировать для IP сразу все порты или только один, или диапазон, либо просто отправить e-mail админу. Подробности смотрите в папке /opt/etc/fail2ban/action.d, фильтры - в папке /opt/etc/fail2ban/filter.d Для внесения своих изменений в настройки рекомендуется содержимое указанных папок и файла /opt/etc/fail2ban/jail.conf не трогать, а использовать для этого файлы /opt/etc/fail2ban/jail.local + при необходимости файл(ы), соответствующий файлу фильтра из папки /opt/etc/fail2ban/filter.d/, например, common.local
Я привожу здесь свой комплект настроек, в котором у меня задействуются jail для служб dropbear, vsftpd и asterisk. Кроме того пришлось добавить свой файл /opt/etc/fail2ban/common.local из-за чуть другого формата записей в лог messages встроенного в прошивку logger-а. Можете его использовать (updated: файл common.local внесенных изменений в общий фильтр почему-то упорно не хочет работать в основной директории настроек fail2ban. Пришлось его переместить в папку со всеми фильтрами. Добавил третью команду):
Code:
wget -P /opt/root/ ftp://101.noip.me/conf.tar.gz
tar xzvf /opt/root/conf.tar.gz -C /opt/etc/fail2ban/
mv /opt/etc/fail2ban/common.local /opt/etc/fail2ban/filter.d/
Если вы используете syslog-ng или что-то еще, смотрите ваш формат вывода сообщений. Команда fail2ban-regex в помощь! Также посмотрите примеры анализируемых сообщений в журналах логов, под которые настроены стандартные фильтры в папке /opt/root/fail2ban-0.8.14/testcases/files/logs/
Ну и в заключение скрипт автозапуска fail2ban. Несколько излишен и кривоват (буду признателен, если кто его доведет до ума), но, как будто работает:
Code:
wget -P /opt/etc/init.d/ ftp://101.noip.me/S92fail2ban
Рассчитан на стандартный механизм запуска из папки /opt/etc/init.d с помощью rc.unslung и rc.func Последний в данном случае по ряду причин решил не использовать, а нужное из него просто позаимствовать. Не забываем проверить/сделать файл исполняемым:
Code:
chmod +x /opt/etc/init.d/S92fail2ban
За помощь в освоении премудростей Linux вообще и прошивки для роутера + fail2ban в частности отдельное спасибо ryzhov_al! Разумеется, в приведенной здесь инструкции могут быть ошибки, но результат точно достижим.
PS Прошу прощения за "левые" ссылки на файлы. Я не сообразил, как их разместить на форуме, чтобы корректно можно было сразу качать wget-ом на роутер, а на сторонних популярных сервисах везде https, который wget встроенный, как говорилось выше, не поддерживает :-( Если админы помогут сделать вложения доступными wget-ом именно с форума, я только за.
Updated Ну вот, "левый" ftp сервер недолго прожил. Ссылки на него пока не удаляю, вдруг, оживет. Все файлы прикладываю к данному сообщению одним архивом. Как их содержимое передать на роутер, вы уж сами, пожалуйста, сообразите (копи-пасте, sftp, samba, ...).