NodeJS TLS / TCP-сервер нуждается во внешнем брандмауэре - PullRequest
0 голосов
/ 24 января 2019

Проблема: У меня есть экземпляр AWS EC2, на котором работает FreeBSD.Там я использую сервер NodeJS TLS / TCP.Я хотел бы создать набор правил (в моем приложении NodeJS), чтобы иметь возможность индивидуально блокировать IP-адреса программно на основе нескольких логических условий.

Я хотел бы запустить внешний (не на том же компьютере / экземпляре) брандмауэр или балансировщик нагрузки, которым я могу управлять из NodeJS программно, чтобы при определенных условиях я мог заблокировать определенныйудаленный адрес (IP), прежде чем он достигнет экземпляра NodeJS.

Вещи, которые я пробовал: Сначала я рассмотрел nginx в качестве опции, запустил его во втором экземпляре и разместил свой сервер NodeJS за ним, ноизучив расширенные рецепты поваренной книги NGINX Advanced Recipes для высокопроизводительной балансировки нагрузки , я узнал, что только NGINX Plus (платная версия) позволяет осуществлять удаленный контроль и настройку API.Хотя я считаю, что платить 3500 долларов США за лицензию не слишком много (учитывая все функции NGINX Plus), я просто не могу позволить себе купить ее в данный момент;кроме того, единственной функцией, которую я бы использовал (на данный момент), было бы удаленное управление API и блокировка IP-адреса .

Моя вторая мысль былапойти с AWS / ELB (балансировка упругой нагрузки), интегрировав AWS SDK в мой проект.Это казалось возможным, к сожалению, после прочтения нескольких веток форума и части их документации (если я не ошибаюсь) кажется, что эти две функции, которые мне нужны, не доступны в AWS / ELB.AWS, похоже, предлагает совершенно другую услугу под названием WAF, которую я, честно говоря, не очень хорошо понимаю (как услугу, так и с точки зрения функциональности).

Я также (кратко) изучил CloudFlare, как это было рекомендовано в одном из постов, здесь, на Sackoverflow, хотя я не могу точно сказать, будет ли их брандмауэр позволять этот уровень (удаленного) управления.

Вопрос: Какие у меня варианты?Что бы вы, ребята, порекомендовали мне?

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, что Nginx обеспечивает такую ​​функциональность, пожалуйста, обратитесь к ссылке Если вы хотите заблокировать IP с помощью Node TCP, вы можете просто отредактировать файл конфигурации nginx и отказать в IP-адресе.

Честно говоря, на вашем месте я бы использовал AWS WAF, но если вы не хотите его использовать, вы можете просто использовать Node JS

В узле JS У вас должна быть глобальная переменная массива, в которой вы будете хранить все заблокированные IP-адреса, а при подключении вы будете проверять, находится ли IP-адрес подключенного хоста в переменной заблокированных IP-адресов. Однако при перезапуске компьютера или приложения возникает проблема, и вы потеряете всю информацию о заблокированных IP-адресах. В качестве решения этой проблемы вы можете просто установить Redis (это база данных значений ключей, но есть и другие типы данных) и хранить там заблокированные IP-адреса. Поскольку Redis DB находится в оперативной памяти, все взаимодействие с базой данных будет происходить мгновенно, и, пока машина или узел перезагружается, Redis создает резервную копию на жестком диске, синхронизируется с ней и продолжает работать в оперативной памяти со старыми базами данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...