Сервер Торнадо на порту 80/443, есть проблемы?

Я хотел бы запустить приложение на основе веб-сервера Tornado в производственной среде. Требования к производительности низкие.

Поскольку мне не нужен балансировщик нагрузки, мне интересно, нормально ли это, чтобы он был напрямую доступен через порты 80 и 443. Это нормально с точки зрения безопасности, и есть ли другие проблемы? Это, конечно, при условии, что я найду способ запустить его как пользователь без полномочий root (authbind недоступен в RHEL).

1 ответ

Решение

Непосредственное разоблачение торнадо по HTTPS будет означать, что криптография TLS обрабатывается модулем Python ssl.

Это, вероятно, хорошо, если:

  • дистрибутив python достаточно недавний (python < 2.7.9 имеет много проблем с SSL. python >= 2.7.9 или>= 3.4 намного лучше)

  • Python и libssl предоставляются через дистрибутивы Linux

  • у вас есть полная политика обновления для дистрибутивов

Конечно, если ваше приложение содержит очень конфиденциальную информацию, лучше всего запустить прокси-сервер (например, nginx) с усиленным стеком TLS перед вашим приложением. Например, запуск nginx на обратном прокси-сервере OpenBSD, который использует LibreSSL.

Для предотвращения отказа в обслуживании, если ваше приложение закодировано в отношении приложений торнадо (никогда не блокируйте ioloop), то от асинхронного балансировщика нагрузки перед приложением мало что можно выиграть.

И, наконец, большинство проблем с безопасностью в основном коренятся в самом приложении... Аутентификация, контроль доступа, XSRF, XSS... Балансировщик нагрузки не предотвращает их.

Другие вопросы по тегам