Грамотная настройка веб-сервера Apache

Данная статья будет полезна как администраторам домашних сетей, которые наверняка имеют внутрисетевую страничку (а порой и огромный медиа-портал), так и закоренелым сисадминам некоторых веб-хостингов. Я рассмотрю самый популярный на данный момент и успешно зарекомендовавший себя web-server Apache. Из плюсов сразу же хочется выделить надёжность, функциональность, открытость исходного кода, кроссплатформенность и гибкость настройки. Из минусов - только отсутствие единого стандартного интерфейса для администрирования. Также Apache позволяет подключать внешние модули, такие, как PHP, MySQL, Perl, SSL и многие другие. На данный момент существует три ветки разработки сервера: 2.2.*, 2.0.* и 1.3.* Рекомендуется ветка 2.2.*, т.к. в оставшихся не реализуются нововведения, а лишь исправляются мелкие уязвимости, в основном, связанные с DDoS атакой (отказ в обслуживании). Я рассмотрю Apache 2.2.4 под управлением Windows 2003 Server. Пожалуй, начнём...


Основа

Первое, что нам потребуется, - это, собственно, сам веб-сервер. Он распространяется свободно под лицензией GPL, так что "взять" его можно без проблем по ссылке httpd.apache.org.

Инсталляция не займёт особого труда, могу лишь посоветовать установить его на отдельный логический диск в целях безопасности (пример пути: d:\usr\local\apache). Этот путь был выбран не случайно, ибо такая иерархия принята в *nix семействах. При установке вводим имя домена, название сайта и почтовый адрес (необходимо для связи с администраторам в случае неполадки). Если необходимо, чтобы наш сервер был доступен извне (Internet), мы должны ввести зарегистрированное доменное имя (например, site.by). При успешной установке должен появиться значок в системном трее и при наборе в браузере адреса: http://localhost (стандартное доменное имя) мы увидим стартовую страничку веб-сервера Apache. Сейчас откроем основной конфигурационный файл - d:\usr\local\apache\conf\httpd.conf. Сразу же бросаются в глаза строки, помеченные символом "#", - это комментарии. Чтобы любые изменения вступили в силу, требуется перезагрузка сервера. Первое, что нам необходимо, это указать путь для нашего сайта в строке DocumentRoot (по умолчанию это d:/usr/local/Apache/htdocs). В принципе, это делается по желанию, но лучше указать, к примеру, d:/home/localhost/www (не забудьте создать данную папку на диске). Далее, если мы сменили рабочую директорию сайта, следует изменить в конфигурационном файле строчку <Directory/> на <Directory "d:/home/localhost/www">. Делаем то же самое, но для CGI-скриптов: создаём папку d:/home/localhost/cgi-bin и меняем строку <Directory/> на <Directory "с:/home/localhost/cgi-bin">. Если мы напортачили при установке с почтой или названием сайта, всегда можно изменить это в строках ServerAdmin и ServerName.

Сейчас займёмся наладкой виртуальных хостов, эта опция будет необходима, если у нас будет более одного сайта. Для этого добавляем в httpd.conf следующие строки:

 
NameVirtualHost test.by
<VirtualHost test.by>
ServerAdmin <почта_администратора_test.by>
DocumentRoot c:/home/test.by/www
ServerName TEST.BY
ErrorLog logs/error.log
CustomLog logs/access.log common
ScriptAlias /cgi-bin/ "с:/home/test.by/cgi-bin/"
</VirtualHost>

Создаём папку d:/home/test.by и стартовую страницу index.html Перезагружаем Apache и проверяем.

Мы настраивали Apache вручную, редактируя конфигурационные файлы. А вообще, существуют графические оболочки для конфигурирования, наиболее известная из них - ApacheConf.

Если наш сайт не будет ограничен только HTML и JavaScript, то основные модули, такие, как PHP, можно взять здесь: www.php.net/downloads.php. Точно такая же процедура, как и при установке веб-сервера: выбор платформы и версии (на данный момент рекомендуется версия 5, т.к. 6-я ещё нестабильна). В зависимости от ваших целей, можно установить модули MySQL (СУБД) и SSL (протокол безопасной передачи данных), доступные по адресам www.mysql.com и www.openssl.org, соответственно.


Безопасность

Самое первое правило - это ограничение прав в операционной системе. Под Администратором необходимо чётко определить права на запись, чтение и выполнение веб-сервера, ни в коем случае эти три пункта не должны выходить за пределы своей корневой папки, с внутренними файлами проще - всё зависит от веб-приложения. В *nix необходимо Apache выделить в отдельную группу и пользователем root необходимо выполнить команду chmod 0777 на папку www, и chmod 0600 - на корневую. Каждая папка в директории сайта должна иметь индексовую страницу (index.html или index.php). Это позволит избежать просмотра содержимого папок. Очень важной особенностью будет создание файла доступа .htaccess (например, можно запретить доступ к папке по маске: DA deny from 195.114.*.*). Не следует также забывать, что в httpd.conf содержится информация о правах доступа к объектам.

Рассмотрим конфигурацию интерпретатора PHP. Конфигурационный файл - php.ini (/usr/local/php5/php.ini). Основная переменная, отвечающая за безопасность выполнения приложений, - это safe_mode=on(off). С одной стороны, частичная безопасность, с другой - функциональные ограничения. Вам придётся выбирать настройки в зависимости от функциональности веб-приложения (так, многие форумы не могут работать при safe_mode=on). Рекомендуется установить переменные register_globals=off и allow_url_fopen=off (они запрещают передавать параметр к определённому файлу, что часто способствует атаке типа php-including). Также необходимо запретить опасные функции: system, exec, shell_exec, passthru (выполняют удалённые команды) и phpinfo (полная информация о php.ini). Осуществляется это путём добавления их в переменную disable_functions=...

Напоследок пользователям Windows платформы хочу посоветовать проект Denwer.ru - дистрибутив для отладки веб-приложений, cgi-скриптов и баз данных. "Денвер" версии 3 - это многофункциональное приложение, содержащее веб-сервер Apache, со встроенными многочисленными модами вплоть до Ajax, которое оптимизировано и готово к работе с первых секунд. Однако, не рекомендую его использовать в качестве полноценного веб-сервера, ибо в него включены некоторые приложения, открывающие потенциально уязвимые места.

Максим ГУРСКИЙ

Версия для печатиВерсия для печати

Номер: 

09 за 2008 год

Рубрика: 

Internet
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Аватар пользователя Dervish
>>""Денвер" версии 3 - это многофункциональное приложение, содержащее веб-сервер Apache, со встроенными многочисленными модами вплоть до Ajax, которое оптимизировано и готово к работе с первых секунд<<

Небольшое дополнение.

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

Минусы: Нелюбовь "Денвер" к ZendOptimizer.

"Денвер" я бы рекомендовал начинающим.

Раз мы заговорили об Веб-серверах вспомним альтернативы Денверу.

Vertrigo - простой в установке набор, состоящий из Apache, PHP, MySQL, SQLite, SQLiteManager, PhpMyAdmin и Zend Optimizer для Windows. Установочный пакет "все в одном"

Минусы: Нет русского языка, Нет Perl (все попытки прикрутить Perl к VertrigoServ успехом так и не увенчались, спишем на мои кривые ручки ;), письмо разработчику осталось без ответа - может ему не понравился мой польский???)

Убогий форум.

Но вцелом сборка оставляет хорошее впечатление.

XAMPP - нашпигованный всем что только можно англоязычный пакет с версиями под Lin, Win, Mac и солярку. Может запускать сервера как службами, так и по образцу Денвера

Для Windows,Windows 98, NT, 2000, 2003, XP и Vista.

Включает в себя: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System for Win32 and NetWare Systems v3.32, Ming, JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, and WEB-DAV + mod_auth_mysql.

На мой взгляд самый лучший из представленных здесь веб-серверов.

WLMP - легковесная сборка веб-сервера.

Apache2triad.net - включает в себя Apache 2, mod_python, mod_ssl, mod perl, OpenSSL 0.9.7e with SSLCert, MySQL with MyODBC, winMYSQLadmin, PostgreSQL, PHPmyadmin, pgAdmin, phpPgAdmin, PHPXMail, UebiMiau, SlimFTPd (PHPsFTd), PHP with Zend Optimizer, Dbg and Xdebug, Pear, Smarty, Perl with Apache::ASP and PPM, Python with Py2exe, MySQL-python , pyPgSQL, Boa-Constructor.

TopServer - Начиная с TopServer 2.0 в состав TopServer:

входит внутренний FTP сервер SlimFTPd, который обеспечивает FTP доступ к директориям веб-сервера. Кроме того, в состав средств администрирования входит удобный и функциональный менеджер FTP сервера, с помощью которого Вы можете управлять самим FTP сервером через панель администрирования TopServer

входит Zend Optimizer 3, внутренний редактор файлов конфигурации Apache, PHP, MySQL, набор простых PHP скриптов (~400 шт) и многое другое. Более подробно тут: хttp://www.topserver.ru/

Small HTTP server. Ничего не могу сказать - не использовал.

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

* Apache2 (Version 2.2.4)

* Apache2_SE (Version 2.2.4)

* ImageMagick (Version 4.2.9)

* MySQL5 (Version 5.0.41)

* MySQL5_SE (Version 5.0.41)

* PHP4 (Version 4.4.7)

* PHP4_SE (Version 4.4.7)

* PHP5 (Version 5.2.3)

* PHP5_SE (Version 5.2.3)

* Drupal (Version 5.3)

* GTD-PHP (Version 0.7)

* Joomla (Version 1.0.12)

* Mambo (Version 4.6)

* MediaWiki (Version 1.10.1)

* Moodle (Version 1.8.2)

* OS_Commerce (Version 2.2)

* OpenDB (Version 1.0RC6)

* PHPMyAdmin (Version 2.11.2.2)

* PunBB (Version 1.2.15)

* TYPO3 (Version 4.1.3)

* Taskfreak (Version 0.6.1)

* Wordpress (Version 2.3.1)

* knowledgeroot (Version 0.9.8.3)

* xoops (Version 2.0.16)

И напоследок выскажу личное мнение: Linux лучше всего подходит для установки WebServerа

Аватар пользователя webdev
Apache -- вчерашний день

== XXI век ==

Для продакшена -- Lighttpd / nginx

Для разработки -- встроенный в Django сервер

Аватар пользователя leave
В целом статья неплоха, но вот этот момент меня убил:

>>В *nix необходимо Apache выделить в отдельную группу и пользователем root необходимо выполнить команду chmod 0777 на папку www, и chmod 0600 - на корневую

если бы кто-то из моих подчиненных суппортов поставил 777 на докрут сайта - я бы лично оторвал руки. в лечебно-профилактических целях. 755 хватало во все времена при условии использования mod_php и знания утилиты chown; а если php_cgi+mod_fastcgi - то phpsuexec и 750.

з.ы. уважаемый webdev, nginx/lighthttpd имеет смысл использовать в случае высоконагруженных stand-alone (в основном) сайтов с большим числом статики. если у вас шаред на 500 аккаунтов по 3-4 сайта на каждом - такое решение вас не спасет.

Аватар пользователя [GuRik]
2leave: Согласен) описка... chmod 0755

p.s. для хостинг решений (только *nix) отлично подходит DirectAdmin (Apache 2, php 5, несколько mail демонов, DNS, FTP, MySQL и т.д.) "всё в одном", красивая панель, удобство конфигурации и плагины...

Аватар пользователя leave
DA - отличная панель. сам использую :) только не нравится использование proftpd, запаздывание с обновлениями софта (мускля 5.1 до сих пор нету :( ), и кривоватая работа с днс.

и с первым апачем оно тоже умеет работать - custombuild вместо customapache.

а еще у меня в контакт-листе асечном двое девелоперов ДАшных :)