Что вы порекомендуете для настройки общего сервера с PHP [закрыто]

StackOverflow https://stackoverflow.com/questions/176013

Вопрос

Что вы порекомендуете для настройки общего сервера с PHP с точки зрения безопасности/производительности?

  • Apache mod_php (как это защитить?кроме Safe_mode, поскольку его не будет в PHP6)
  • Apache CGI + suexec
  • Lighttpd и создание FastCGI для каждого пользователя

ЛЕ:Меня не интересует использование уже готовой панели управления, поскольку я пытаюсь написать свою собственную, поэтому хочу знать, как лучше всего настроить ее самостоятельно.Я подумывал использовать Lighttpd и создать fastcgi для каждого размещенного пользователя, запустив процесс fcgi под его учетными данными (для этого есть руководство на вики Lighttpd).Это было бы в некоторой степени безопасно, но не повлияет ли это на производительность (для каждого fcgi требуется много пользователей/памяти) настолько, что это станет нежизнеспособным решением?

Это было полезно?

Решение

Лично, хотя с Lighttpd все в порядке, я бы выбрал Nginx + FastCGI, если в конечном итоге вы выберете легкое решение веб-сервер + FastCGI.Я запустил тесты и прочитал весь код, и Nginx на порядок быстрее/стабильнее под нагрузкой — это очень хорошо.

Но это не то, что вы спросили.По сути, я бы сказал, что существует целый спектр безопасности/масштабируемости и безопасности.компромиссы по скорости в трех перечисленных вами вариантах, и вам просто нужно решить, где вы хотите быть.Если вы являетесь провайдером общего хостинга, где ненадежные пользователи устанавливают бог знает какие PHP-приложения, вы больше склоняетесь к безопасности, а если это распространяется среди более доверенных пользователей, вы можете склоняться к производительности.Вот мои мысли:

CGI + suexec: Это, безусловно, самый безопасный и наиболее эффективный/масштабируемый вариант с точки зрения количества пользователей/сайтов в среде общего хостинга.Процессы создаются, а память используется только по мере поступления запросов.Конечно, создание CGI делает это самым медленным по времени выполнения отдельных сценариев.Насколько медленнее?Ну, вам придется провести тестирование, но, как правило, если люди используют долго работающие приложения (т. е.что-то вроде WordPress, которому требуется 0,25-0,5 секунды только для загрузки своих библиотек и инициализации при каждом запросе), тогда штраф за создание CGI начинает выглядеть довольно незначительным в контексте.

ФастCGI: Проблема здесь (и не имеет значения, является ли ваш веб-сервер Apache, Lighttpd или Nginx) заключается в том, сколько дочерних процессов FCGI вы позволяете каждому пользователю оставить запущенными, поскольку каждый процесс потребляет память, равную размеру интерпретатора PHP (в Линукс не весь в нем конечно зашит, но я отвлекся).И, в отличие от mod_php, эти процессы не распределяются между пользователями, поэтому вам придется ограничивать количество пользователей.Например, Dreamhost ограничивает это значение до 3 для своих клиентов — теперь для клиента, управляющего веб-сайтом, который получает более 2-5 просмотров страниц в секунду, это на самом деле очень плохо, потому что эти запросы просто накапливаются, и сайт зависает.Теперь мне нравится FastCGI с легким веб-сервером, когда я запускаю приложения на преданный сервер/кластер, когда я могу дать приложению сотни дочерних элементов FCGI (конечно, все с правами веб-сервера, а-ля Apache/prefork + mod_php).Но я не думаю, что это имеет смысл для общего хостинга, где вам приходится выделять/ограничивать дочерние элементы FCGI для каждого пользователя.

Апач + mod_php: Наименее безопасно, поскольку все работает с правами веб-сервера, но ваш пул живых процессов PHP является общим, поэтому это лучше всего с точки зрения производительности.С точки зрения разработчика, я не могу терпеть режим php_safe, а с точки зрения системного администратора это всего лишь иллюзия безопасности (он защищает от глупых пользователей, но не защищает от реальной атаки), поэтому я бы предпочел использовать CGI, если бы мой другой вариант должен включать безопасный_режим.

Dreamhost представляет собой своего рода гибрид: по умолчанию они используют Apache CGI + suexec, но позволяют (небольшому) проценту более искушенных пользователей выбирать использование FCGI, если они этого хотят, с учетом ограничений и собственного мониторинга использования памяти. .Это экономит массу ресурсов памяти по сравнению с включением FCGI для всех по умолчанию.

Другая проблема, если вы говорите о стандартном коммерческом виртуальном хостинге, заключается в том, что Apache является полнофункциональным, имеет модули практически для всего (включая такие вещи, как mod_security, которые могут вам понадобиться), и вашим пользователям он понравится, потому что все их конфигурации .htaccess будут работать. и т. д.- вы столкнетесь с головной болью в поддержке по поводу чего-либо еще, когда они начнут устанавливать Drupal, WordPress или что-то еще (гораздо меньшая проблема, если мы говорим о внутренних пользователях).

Лично я бы рекомендовал просто начать и использовать CGI + suexec для лучшей безопасности и масштабируемости.Если вашим пользователям нужен FCGI или mod_php, и у вас есть хороший канал, открытый для предложений/общения с ними, они попросят об этом, но любой из этих вариантов станет для вас гораздо большей головной болью, поскольку для них будет лишь незначительное улучшение производительности, поэтому мое предложение было бы сначала не делать ни одного из них, но реагировать, если они этого требуют.

Я сочувствую желанию сделать что-нибудь «интересное» вроде Lighttpd + FCGI вместо стандартного Apache + CGI + suexec, но в глубине души рекомендовать это действительно не могу.

Если вы используете несколько серверов, вы можете в конечном итоге разместить CGI на одних и что-то еще для опытных пользователей на других.И обязательно запустите cron grep во всех каталогах www для таких вещей, как старые версии phpBB!

Другие советы

Я рекомендую Сухосин

Что касается PHP + FastCGI и безопасности, проверьте этот пост в блоге.

Задача с защитой общего хостингового сервера заключается в том, как защитить веб -сайт от атаки как извне, так и изнутри.У PHP есть встроенные функции, чтобы помочь, но в конечном итоге это неправильное место для решения проблемы.

Я уже писал о ряде решений, которые работают, но один вариант, который мне снова и снова просили, - это использование PHP + FastCGI.Вера состоит в том, что использование FASTCGI преодолеет проблемы с производительностью Suexec или MOD_SUPHP от Apache, потому что процессы FastCGI сохраняются между представлениями страниц.

Но прежде чем мы сможем посмотреть на производительность, первый вопрос:Как именно мы получаем PHP и FastCGI, которые в первую очередь работают как разные пользователи на одном веб -сервере?

я использовал ИнтерВоркс уже около года и очень впечатлены.Он поддерживает сервер LAMP с chroot-окружением ваших сценариев в целях безопасности.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top