Таинственные сообщения ПОЛУЧАЮТ 200 с сервера NodeJS / Express

#node.js #http #express #morgan

#node.js #http #экспресс #морган

Вопрос:

Я использую небольшой Виртуальный частный сервер в облаке. (Вультр) Это простое приложение, предоставляющее html-контент для небольшой группы людей. Сервер запущен Node.js / Экспресс (с Morgan для регистрации всех http-запросов). Я сомневаюсь, что наша целевая аудитория сайта составляет даже 10 пользователей в день. Обратите внимание, что на этом сайте нет хранилища базы данных. Сайт работает в контейнере docker.

Когда я проверяю журналы сайта, я вижу очень странные вещи.

Большое количество этих:

GET https://www.cyberpolice.ir 200 38.171 ms - 32910

GWhois.org говорит мне, что это кто-то из Тегерана.

 GET https://www.tasnimnews.com/ 200 780.989 ms - 32910
GET https://www.akamai.com 200 657.255 ms - 32910
GET https://www.varzesh3.com/ 200 5.752 ms - 32910
GET https://www.incapsula.com 200 269.104 ms - 32910
  

Как правило, я вижу стопку из них по несколько сотен за раз. Их очень много, всегда размера 32910.

Кто-нибудь знает, что здесь происходит? Почему я вижу эти сообщения? Кто-то использует мой сервер для чего-то гнусного?

Есть ли лучшие настройки для Morgan, чтобы полностью определить, что здесь происходит?

Честно говоря, я не понимаю http-запроса, который сгенерирует этот ответ GET? Как выглядит этот запрос?

Ответ №1:

Первое правило заключается в том, что не предоставляйте свой сервер Node JS напрямую общедоступному трафику. Вы должны использовать обратный прокси-сервер перед вашим сервером NodeJS. Обратный прокси-сервер должен быть настроен на прием запросов только для определенного домена. Ниже приведен пример конфигурационного файла Nginx для достижения этой цели.

 server {
  listen 80;

  server_name your_domain.com;

  location / {
    proxy_pass http://localhost:5555;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
   }
}
  

Комментарии:

1. Не то чтобы это обязательно имело значение, но я не упоминал, что я запускаю это внутри контейнера docker. Вы говорите мне, что я не должен делать, но не упоминаете, почему. (См. 6 ea? выше) Большое спасибо.

2. Похоже, что ваше приложение подверглось воздействию какого-то бот-трафика. Кто-то генерирует множество HTTP-запросов к вашему приложению с различными заголовками хоста. Таким образом, вы должны настроить свой серверный стек для прослушивания определенного домена, чтобы избавиться от этих нежелательных запросов.

3. Будет действительно хорошо, если вы сможете использовать брандмауэр веб-приложений, такой как Cloudflare. Затем вы можете настроить свои iptables для взаимодействия только с IP-адресами брандмауэра. Таким образом, вы можете полностью избавиться от вредоносного трафика, поскольку внешние системы не смогут напрямую взаимодействовать с вашим сервером.