Настройка fail2ban для запрета запросов 403 Forbidden в Nginx

Thank you for reading this post, don't forget to subscribe!

Для того что­бы запре­тить опре­де­лен­ные пути или URL – адре­са в Nginx для защи­ты содер­жи­мо­го, вы може­те исполь­зо­вать fail2ban, что­бы запре­тить запро­сы 403 в Nginx. Напри­мер, если вы пере­име­но­ва­ли стра­ни­цу вхо­да, исполь­зуя пла­гин, то, как пра­ви­ло, хакер­ские боты будут полу­чать ошиб­ку 403 forbidden при попыт­ке вой­ти в систе­му. Точ­но так же, если у вас есть пол­но­стью отклю­чить xmlrpc.php.

Это руко­вод­ство пока­жет вам, как исполь­зо­вать fail2ban, что­бы запре­тить ботам на уровне сер­ве­ра с помо­щью IPTables авто­ма­ти­че­ски. Будь­те осто­рож­ны, убе­ди­тесь, что вы не запре­ща­е­те Google или дру­гим поис­ко­ви­кам индек­са­цию сайта!

Настройка fail2ban для запрета запросов в Nginx 403 Forbidden

Обзор уста­нов­ки

  • Гене­ра­ция дан­ных журнала
  • Настрой­ка Fail2ban филь­тра и jail

Генерация данных журнала для 403 ошибки

Перей­ди­те на URL, кото­рый запре­щен вашим вир­ту­аль­ным хостом Nginx, что­бы сге­не­ри­ро­вать дан­ные журнала

Пока­за­жи­те послед­ние 50 строк ваше­го фай­ла жур­на­ла Nginx

 

Мы нашли эти запи­си, кото­рые будут исполь­зо­вать­ся в каче­стве осно­вы для филь­тра fail2ban для бана поль­зо­ва­те­лей, кото­рые гене­ри­ру­ют ошиб­ку 403 forbidden

 

Теперь, когда у нас есть дан­ные жур­на­ла мы можем создать фильтр для fail2ban.

Настройка fail2ban для ошибки в Nginx 403 Forbidden

Нам нуж­но создать фильтр Fail2ban, кото­рый будет соот­вет­ство­вать ошиб­ки из фай­ла жур­на­ла. Затем мы созда­ем jail  что­бы исполь­зо­вать этот фильтр и запре­тить пользователей.

Создание фильтра Fail2ban для запросов forbidden в Nginx

Создать затем фильтр для Nginx

 

Добавь­те это регу­ляр­ное выра­же­ние, кото­рое будет соот­вет­ство­вать ошиб­ке 403 forbidden в жур­на­лах Nginx

 

Ctrl + X, Y + Enter, что­бы сохра­нить изме­не­ния и выйти.

Теперь мы можем про­ве­рить фильтр аутен­ти­фи­ка­ции Nginx HTTP, ска­ни­руя жур­нал оши­бок, ука­зан­ный в вир­ту­аль­ном хосте Nginx.

 

Вы уви­ди­те этот вывод, кото­рый пока­зы­ва­ет, что нашел неудач­ные попыт­ки вхо­да, кото­рые мы сге­не­ри­ро­ва­ли ранее.

 

Создание Jail в Fail2ban для запретных запросов в Nginx

Убе­ди­тесь, что у вас есть в Fail2ban пап­ка jail

 

Создай­те кон­фи­гу­ра­ци­он­ный файл jail Fail2ban в Nginx для HTTP аутентификации

 

Вставь­те эту кон­фи­гу­ра­цию, кото­рая исполь­зу­ет фильтр, кото­рый мы созда­ли ранее, кото­рый ска­ни­ру­ет все фай­лы жур­на­лов Nginx и запре­ща­ет поль­зо­ва­те­лям в тече­ние 6000 минут, кото­рые сге­не­ни­ро­ва­ли ошиб­ку 3 раза в 60-секунд­ный период.

 

Теперь, когда мы зна­ем, сде­ла­ем jail, про­ве­рим син­так­сис Fail2ban, что­бы убе­дить­ся, что это все работает

 

Если вы не види­те каких-либо оши­бок (пре­ду­пре­жде­ния OK), то мож­но пере­за­пу­стить fail2ban

Проверка состояния nginx на запрещеное в fail2ban

Кли­ент Fail2ban может быть исполь­зо­ван, что­бы пока­зать ста­ти­сти­ку сво­их мест заключения

 

Во вре­мя тести­ро­ва­ния на вир­ту­аль­ных маши­нах, мне уда­лось полу­чить заба­нен­ный шлюз.

 

Вы так­же може­те пере­чис­лить IPTables

 

Это пока­зы­ва­ет цепоч­ку Iptables для Nginx запре­щен­ных  в jail

Любые боты, кото­рые ска­ни­ру­ют и вызы­ва­ют ошиб­ку 403 forbidden в Nginx, теперь будут авто­ма­ти­че­ски запре­ще­ны в Fail2ban.