Лучший способ внедрить систему белого списка IP-адресов в режиме реального времени

Я хочу настроить систему белого списка IP-адресов для защиты своего веб-сервера.

Есть 3 уровня, которые я могу защитить: (Интернет =>) Брандмауэр => Nginx Обратный прокси => Сервер Node.js

С точки зрения практичности, я защищаю свой сервер Node.js, потому что я могу динамически разрешать/запрещать IP-адреса в таблице Firebase в реальном времени, которую я редактирую через собственный веб-интерфейс. Но это не предотвращает DDoS чисто, потому что даже если я верну ошибку на неавторизованные IP-адреса, мой сервер узла будет обрабатывать нагрузку напрямую, что нехорошо...

Я бы предпочел защитить свой сервер на более высоком уровне, таком как Nginx или брандмауэр. Однако списки IP-адресов — это файлы на сервере, и кажется сложным реализовать решение, столь же удобное, как то, которое я использую сейчас.

Что вы предлагаете и что вы думаете о моем текущем решении?

Спасибо !


person Elie Zgala    schedule 05.06.2017    source источник


Ответы (1)


Существует два способа построения «динамического» IP-фильтра:

  1. При каждом запросе Nginx спрашивает Firebase (или другой источник белого списка IP-адресов) «есть ли этот клиент в белом списке IP-адресов?». Для этого вам понадобится один из модулей, который позволяет создавать сценарии для nginx, например https://github.com/openresty/lua-nginx-module#name. , http://nginx.org/en/docs/http/ngx_http_perl_module.html или nginScript;
  2. При каждом обновлении белого списка Firebase запускает событие, затем какое-то приложение фиксирует событие и перестраивает правила брандмауэра или IP-фильтр nginx.

Второй способ кажется более сильным, чтобы противостоять DDoS, но менее применимым, когда белый список ip очень большой и частые изменения.

person sempasha    schedule 09.06.2017
comment
Мне очень нравится ваш ответ, nginScript выглядит очень многообещающе :) - person Elie Zgala; 11.06.2017