Назад | Перейти на главную страницу

Брандмауэр прикладного уровня для WebSockets?

Моя команда построила портал интрасети в Amazon AWS для клиента, и на нем мы использовали WebSockets для таких вещей, как уведомления и другие мелочи. В основном мы отправляем события с сервера, но мы также используем его, чтобы клиент мог быстро уведомить сервер о присутствии пользователя.

Одно из требований клиента заключалось в том, чтобы мы использовали брандмауэр на уровне приложения, чтобы отсеивать вредоносные запросы и тому подобное. Для этого мы установили Sophos UTM. Для HTTP-трафика это отлично работает. Однако UTM не поддерживает WebSockets, и поэтому нам в основном пришлось настроить его так, чтобы запросы прокси проходили вслепую. По причинам, которые я не совсем понимаю (даже после нескольких часов отладки), это было огромным узким местом, и все замедлялось (даже несмотря на то, что использование процессора и памяти было в порядке).

Затем мы решили, что если UTM все равно не фильтрует трафик, давайте добавим nginx, чтобы разделить трафик сокетов, и позволить UTM обрабатывать обычный трафик. Эта установка работает очень хорошо, а производительность фантастическая.

Однако охранник клиента обеспокоен тем, что трафик WebSocket не проверяется.

Таким образом, у меня есть три связанных вопроса:

  1. Это беспокоит? Если нет, могу ли я показать что-нибудь, что объяснит это лучше, чем я?

  2. Если это вызывает беспокойство, могут ли нам помочь брандмауэры приложений? Я действительно не знаю, против чего мы будем фильтровать, но, надеюсь, это работа брандмауэра.

РЕДАКТИРОВАТЬ: Я был неправ, мы фактически осуществляем двунаправленную связь по сокетам, хотя это все еще довольно тривиально. Это такие вещи, как "просматривает ли пользователь эту вкладку", "подтвердил ли пользователь получение уведомления" и т. Д.

Если вам нужен WAF с поддержкой Websocket, загляните в Валарм Он устанавливается непосредственно в NGINX как программный модуль и может анализировать Websocket, начиная с версии 2.0. Больше информации Вот