Сервер Торнадо на порту 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... Балансировщик нагрузки не предотвращает их.