Я бы хотел запустить приложение на основе веб-сервера Tornado в производственной среде. Требования к производительности низкие.
Поскольку я не Мне нужен балансировщик нагрузки, интересно, можно ли иметь к нему прямой доступ через порты 80 и 443. Это нормально с точки зрения безопасности, и есть ли другие проблемы? Это, конечно, при условии, что я найду способ запустить его как пользователь без полномочий root (authbind недоступен в RHEL).
Прямое раскрытие торнадо по HTTPS означало бы, что шифрование TLS обрабатывается ssl-модулем Python.
Это, вероятно, нормально, если:
дистрибутив python достаточно свежий (python <2.7.9 имеет много проблем с SSL. Python> = 2.7.9 или> = 3.4 намного лучше)
python и libssl предоставляются через пакеты распространения Linux
у вас есть тщательная политика обновления для пакетов распространения
Конечно, если ваше приложение содержит очень конфиденциальную информацию, лучше всего будет запустить прокси (как nginx) с усиленным стеком TLS в перед вашим приложением. Например, запуск nginx на обратном прокси-сервере OpenBSD, который использует LibreSSL.
Для предотвращения отказа в обслуживании, если ваше приложение закодировано в отношении приложений торнадо (никогда не блокируйте ioloop), тогда от асинхронного режима мало пользы. балансировщик нагрузки перед приложением.
И, наконец, большинство проблем безопасности в любом случае в основном коренится в самом приложении ... Аутентификация, контроль доступа, XSRF, XSS ... Балансировщик нагрузки не предотвращает их.