Процесс действительно прост, но обратите внимание, что тюрьмы, ищущие несуществующие источники журналов (например, файлы), могут привести к тому, что fail2ban не запустится.
Я не знаю подробностей об Ubuntu, но для Centos я бы сделал:
- выберите мой брандмауэр (который в конечном итоге будет firewalld, потому что это CentOS7 по умолчанию)
- установить fail2ban и правильные привязки брандмауэра
- запустите fail2ban и убедитесь, что он работает (по умолчанию в нем будет активна SSH-тюрьма).
- подумай, что тебе нужно дальше
Одна вещь, которую вы могли бы рассмотреть, - это просто расширить блок, установленный SSH-тюрьмой, чтобы полностью заблокировать любой источник-нарушитель (т.е. не просто заблокировать порт 22, а весь трафик).
Если вы обнаружите, что вам нужны другие тюрьмы и / или фильтры, я бы:
- используйте /etc/fail2ban/jail.d для хранения своих настроек jail, чтобы убедиться, что я могу удалить все, что вызывает проблемы, без необходимости проходить через большой конфигурационный файл
- убедитесь, что вы тестируете новые тюрьмы, в частности, изначально не используя их для SSH, и убедитесь, что они применяются только к службам, журналы которых контролирует тюрьма.
У меня есть небольшой пример в ANSIBLE онлайн, см. Https://github.com/iwaseatenbyagrue/ansible/blob/master/roles/fail2ban/tasks/suricata.yml и https://github.com/iwaseatenbyagrue/ansible/blob/master/role /fail2ban /templates / (например, https://github.com/iwaseatenbyagrue/ansible/blob/master/roles/fail2ban/templates/jail.suricata.j2)
Общий код еще не обязательно соответствует форме, поэтому я не могу рекомендовать его использовать (по крайней мере, не будучи уверенным на 100%, что вы все понимаете), но, надеюсь, эти фрагменты пригодятся.