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