Основные вопросы о работе веб-сервера

Я хотел бы запустить веб-сервер для экспериментов. Я собираюсь использовать Mongoose, потому что он выглядит легковесным и достаточно простым, чтобы понять все, что он делает.

У меня есть коробка Debian для запуска.

Мои вопросы

  • Целесообразно ли запускать веб-сервер от имени пользователя root? Если нет, то почему? (Как могут непривилегированные учетные записи прослушивать порты 80,443?)

  • Существует ли стандартная директория для размещения "корня сайта" для обслуживания? Имеет ли значение, где это касается соображений безопасности?

8 ответов

Решение

Веб-сервер обычно запускается от имени пользователя root. Хороший веб-сервер затем изменит пользователя, под которым запускаются отдельные процессы. Таким образом, вы можете использовать стандартные порты.

Где разместить корень вашего документа не очень важно. Конечно, вам нужен доступ для записи в этот каталог (без прав root). Часто вы можете найти корневой документ по умолчанию под /var/www или же /srv/www,

PS: я бы порекомендовал Apache, легкий или нет. Существует огромное количество информации, легко доступной для его конфигурации, и ее файлы конфигурации совсем не сложны для понимания.

Повторяй за мной:

НИКОГДА не запускайте веб-сервер от имени пользователя root.

НИКОГДА не запускайте веб-сервер от имени пользователя root.

НИКОГДА не запускайте веб-сервер от имени пользователя root.

НИКОГДА не запускайте веб-сервер от имени пользователя root.

Это как оставить свой дом незапертым и уехать в отпуск на 6 месяцев.

Что касается того, где разместить ваш веб-корень. Я рекомендую то, что имеет смысл для вас. Я большой поклонник того, чтобы поместить его где-нибудь в НЕСТАНДАРТ просто потому, что это помогает защитить от всех различных сценариев. (Все еще не делает вас в безопасности, но это помогает.)

Версия по умолчанию apache2 в репозитории Debian запускается как root, но порождает реальные процессы Apache как пользователь www-data,

Я бы порекомендовал запустить ваш экспериментальный сервер в качестве виртуальной машины под Xen или KVM. Таким образом, вы начинаете с абсолютно чистой среды, которую можно безопасно обстреливать, если у вас есть проблемы. Вы также можете изменить общесистемные настройки или установить программное обеспечение для тестирования в ВМ, не портя реальную систему.

Как сказал кто-то другой, никогда не запускайте веб-сервер под учетной записью root. К счастью, большинство веб-серверов сразу после привязки к порту 80 сбрасывают учетную запись в учетную запись без полномочий root.

Другой способ справиться с этим - запустить программу веб-сервера на порту более 1024 и использовать внешний интерфейс (например, лак или nginx) для прослушивания порта 80 и пересылки на внутренний веб-сервер.

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

Когда вы запускаете сервер, вы обычно переходите к полномочиям root с помощью sudo (sudo apache2ctl start), а затем Apache связывается с указанными портами, а затем возвращается к более низким разрешениям.

Из-за моей истории Mac и моей любви к читабельности мои сайты расположены в /var/WebServer, Внутри у меня есть default и многие другие сайты, работающие как виртуальные хосты.

Об Apache широко говорят, и доступно множество документов, лучший и самый простой из которых (на мой взгляд) предоставляется Slicehost (хотя это не зависит от VPS). Я бы прочитал их статьи, чтобы узнать, как быстро и безопасно настроить Apache.

Я должен согласиться с Манни в этом, apache - ваш лучший выбор для начала.

  • Он имеет наибольшее количество документации и помощи для новых пользователей.
  • Он поставляется с разумными настройками по умолчанию и пакетами от Debian, которые они хорошо поддерживают и обеспечивают быстрое обновление безопасности.
  • Большинство людей используют где-то apache, поэтому знание основ может быть очень полезным
  • Apache - это в значительной степени веб-сервер швейцарского армейского ножа, большинство других разработано для работы в определенных условиях и / или очень хорошо работает с меньшими ресурсами. Imo, это причина, чтобы узнать это раньше других, но некоторые могут не согласиться.

Что касается конкретных вопросов, которые вы задали:

  • Вы должны запустить свой веб-сервер как root, чтобы он связывался с портом 80. Обычно вы настраиваете сервер на удаление этих привилегий и запуск от имени другого пользователя, как только он будет привязан к порту (в Debian Apache этот пользователь является www-user, и это настройка по умолчанию). Программы, которые запускают свои собственные веб-серверы для определенных приложений, которые не имеют этой функциональности, обычно проксируются через больший веб-сервер, такой как apache или nginx.
  • / var / www является местоположением по умолчанию в Debian для корня сайта. Это должно быть хорошо для любого веб-сервера, который вы выберете.

Версия 1:

  • создать другого пользователя в системе, без лишних привилегий (даже без входа в систему)
  • в скрипте запуска веб-сервера сделайте su my.web.server.sh (просто в качестве примера)
  • создайте папку (например, в домашней папке нового пользователя) и добавьте ее только что созданному пользователю
  • предоставьте себе права на запись в эту папку
  • установить эту новую папку как веб-корень

Версия 2: (моя любимая)

  • sudo apt-get установить apache2/httpd
  • у вас есть /var/www/[html] в качестве корневого веб-узла. Это должно позаботиться обо всем за вас - создать пользователя, правильные разрешения для папок и т. д.

С риском повторения всех остальных выше: НИКОГДА НЕ БЕГИТЕ КАК КОРНИ:)

Вот как ты учишься.

Шаг 1. Установите сервер с настройками по умолчанию. Не ставьте НИЧЕГО значения на него.

Шаг 2. Подключите его к сети.

Шаг 3. Подождите 15 минут

Шаг 4. Посмотрите, какой урон был нанесен ему.

========

Затем протрите его чистой полной переустановкой. Затем найдите соответствующее руководство по безопасности для вашей ОС и веб-сервера. Делай то, что он говорит, подключи его и подожди час. Если он все еще работает и с ним ничего не случилось, значит, вы в порядке. Какое-то время.;)

Безопасность - это постоянный танец. Продолжайте в том же духе, и ваша нога не наступит.

Удачи тебе.;)

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