Основные вопросы о работе веб-сервера
Я хотел бы запустить веб-сервер для экспериментов. Я собираюсь использовать 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. Посмотрите, какой урон был нанесен ему.
========
Затем протрите его чистой полной переустановкой. Затем найдите соответствующее руководство по безопасности для вашей ОС и веб-сервера. Делай то, что он говорит, подключи его и подожди час. Если он все еще работает и с ним ничего не случилось, значит, вы в порядке. Какое-то время.;)
Безопасность - это постоянный танец. Продолжайте в том же духе, и ваша нога не наступит.
Удачи тебе.;)