Основные настройки и защита apache под windows

Автор: genadie от 10-02-2012, 17:35, посмотрело: 12090

0

Настройки apache установленного под windows или под другой операционной системой одинаковые. Отличие только в путях к файлам и в некоторых специфических настройках.
Поэтому эти настройки подойдут для апача установленного под freebsd, linux, и т.д.

В этой статье я затрону не все, а наиболее важные настройки apache установленного под windows. Это минимум, который необходим для запуска нового сервера.


В предыдущей статье я рассказал как быстро установить apache на windows с помощью xampp и эта статья является ее продолжением.

Если вы устанавливали apache по другой схеме, то у вас могут отличаться пути к файлам настроек, но сами настройки будут такие же.



Все настройки apache как правило сконцентрированы в одном файле httpd.conf, но в случае установки с помощью xampp, конфигов становится больше, где они лежат я буду указывать.

1. Скрываем лишнюю информацию.
По умолчанию сервер выдает слишком много информации, просто сливает нужную информацию хаккерам.
Например в заголовках сервера, а так же при выводе стандартных служебных страниц типа 404 можно видеть подобное:

Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0


То есть абсолютно любой прохожий знает какой версии стоит апач, какая операционка, какие модули и т.д.
Всю эту информацию не стоит всем светить, особенно когда сервер стоит под windows.
Если вы устанавливали apache с помощью xampp, тогда открывайте файл конфига
/xampp/apache/conf/extra/httpd-default.conf

(если нет такого файла, открывайте файл httpd.conf)

здесь находите команду "ServerTokens", это и есть объем показываемой информации о сервере.
Меняем значение на такое ServerTokens Prod.
В этом случае светится будет только название сервера.

Кроме этого заголовка сервер выдает еще один не приятный заголовок
X-Powered-By:
Этот заголовок появляется когда информация выводится с помощью PHP скрипта.
Если запросить статический html документ, то этого заголовка не будет, но если информацию на страницу выведет PHP скрипт, то в этом заголовке будет подобное:

X-Powered-By: PHP/5.2.5


То есть заголовок объясняет всем, что страница создана с помощью PHP и показывает версию PHP.
Даже если вы используете mod rewrite и обращаетесь к страницам как к статическим документам, то этот заголовок все равно расскажет всем, что страница создана с помощью PHP.
Лучше всего убрать этот заголовок. Полезно, если вы хотите замаскировать свой сайт под полностью статический, ну и хулиганы лишний раз не узнают версию PHP.
Для этого потребуется конфиг php.ini
Обычно он лежит в папке php, но может быть и в других местах, да еще и в нескольких экземплярах.
Чтобы точно найти нужный php.ini, выполните phpinfo(); в скрипте и найдите параметр Loaded Configuration File, тут и будет путь до конфига php.
Открываем php.ini и находим:

expose_php = on


меняйте значение на off

2. Листинг директории.
Если в директории нет индексного файла, то по умолчанию сервер покажет список всех файлов и директорий.
Во многих случаях этого делать не нужно, зачем всем показывать, что лежит в вашей папке.
Чтобы запретить листинг директорий открываем файл
/xampp/apache/conf/httpd.conf
Внутри тега должен быть Options с различными параметрами. Среди этих параметров должен быть Indexes, вот именно Indexes удалите.
Теперь при попытке просмотреть директорию без индексного файла будет получена ошибка 403.

3. Виртуальные хосты, дополнительные домены.
После установки сервера вам доступен только один локальный домен localhost.
С помощью настройки виртуальных хостов можно разместить на вашем сервере сколько угодно сайтов с разными доменами или поддоменами, все зависит от ресурсов вашего компьютера.
Вам потребуется файл
/xampp/apache/conf/extra/httpd-vhosts.conf
У кого нет этого файла, можно редактировать в основном конфиге.

Начало работы с виртуальными хостами начинается так
NameVirtualHost *:80
После этого можно указывать параметры хостов(сайтов)

<VirtualHost *:80>
# настройки первого сайта
</VirtualHost>

<VirtualHost *:80>
# настройки второго сайта
</VirtualHost>

<VirtualHost *:80>
#настройки третьего сайта
</VirtualHost>


Обязательно, первый описанный хост должен быть localhost, после него можно начинать указывать настройки других хостов, иначе при определенных настройках сервера ваши виртуальные хосты могут не правильно обрабатываться и возникнет путаница между ними.

Вот пример минимальных настроек на примере организации двух хостов

NameVirtualHost *:80

<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/xampp/htdocs/localhost/www
ServerAdmin adm@washsait
</VirtualHost>

<VirtualHost *:80>
ServerName washsait
ServerAlias www.washsait
DocumentRoot c:/xampp/htdocs/washsait/www
ServerAdmin adm@washsait
</VirtualHost>


ServerName localhost
Указывает, что название домена localhost

DocumentRoot c:/xampp/htdocs/localhost/www
Указывает на место в котором хранятся файлы сайта.
Можно указывать без использование буквы диска /xampp/htdocs/localhost/www
Хранить файлы сайта можно в любом месте, но для удобства, лучше хранить их там же, где установлен сервер.

ServerAdmin adm@washsait
Указывает email админа этого сайта.
Например при определенных настройках этот email может быть виден при возникновении ошибок сервера или сайта.

Во втором хосте все тоже самое, только добавлен еще один параметр
ServerAlias www.adm@washsait
Это хост, являющийся зеркалом основного хоста.
Можно перечислить несколько зеркал, и все они будут иметь такие же параметры как основной хост и в конкретном случае при наборе адреса сайта хоть с www, хоть без wwww, будет обработан основной хост washsait

А третий хост, это пример настроек поддомена от домена washsait
Как видно, настройки поддомена ничем не отличаются от настроек доменов.

Этих настроек хостов вполне хватит, чтобы домены и сайты нормально функционировали, но можно это все не много улучшить.
Например, скрипты любого из этих сайтов имеют доступ ко всем файлам и папкам всего компьютера.
Любой скрипт может случайно или намеренно удалить любые файлы с вашего компьютера, т.к. ничто не ограничивает зону действия этого скрипта.
Чтобы дать ограничение существует такая команда

<Directory c:/xampp/htdocs/washsait> # директория из которой работает скрипт
php_admin_value open_basedir "c:/xampp/htdocs/washsait/" # доступ скриптов к папке
</Directory>


В данном примере PHP скрипты не будут выходить за пределы указанной директории.
Если хотите указать несколько директорий, к которым могут получать доступ скрипты из указанной директории, разделяйте их ';', например
php_admin_value open_basedir "c:/xampp/htdocs/washsait/;c:/xampp/htdocs/asd/"

Обратите внимание, пробела между путями нет, все пути перечисляются слитно, разделяются лишь точкой с запятой (;). А можете даже запретить использование PHP скриптов в определенной директории таким образом

<Directory c:/xampp/htdocs/washsait>
php_admin_value engine off
</Directory>


Можете еще указать место хранения логов, чтобы логи каждого сайта хранились в своем месте.
Лог ошибок и лог доступа к сайту
ErrorLog "c:/xampp/htdocs/washsait/log/error_log.txt"
CustomLog "c:/xampp/htdocs/washsait/log/access_log.txt" combined


И вот пример виртуального хоста из всех вышеперечисленных пунктов

<VirtualHost *:80>
ServerName washsait
ServerAlias www.washsait
DocumentRoot c:/xampp/htdocs/washsait/www
ServerAdmin adm@washsait
<Directory c:/xampp/htdocs/washsait>
php_admin_value open_basedir "c:/xampp/htdocs/washsait/"
</Directory>
ErrorLog "c:/xampp/htdocs/washsait/log/error_log.txt"
CustomLog "c:/xampp/htdocs/washsait/log/access_log.txt" combined
</VirtualHost>


После настройки своих хостов вам нужно будет прописать в зонах ДНС эти домены и направить их все на ip вашего сервера.
Если не знаете как настроить ДНС, читайте о настройке бесплатного ДНС сервера.

4. Как создавать локальные поддомены.
Если вы используете сервер для тестирования и вам нужно создавать локальные домены или поддомены, то после настройки виртуального хоста нужно прописать этот домен локальным в файле
C:/WINDOWS/system32/drivers/etc/hosts
В этом файле прописывайте нужный домен на локальный IP
По умолчанию там прописано 127.0.0.1 localhost
Добавьте к этой записе еще нужные домены, например
127.0.0.1 localhost
127.0.0.1 asd.ru
127.0.0.1 asd.localhost


Если вы прописали эти домены в виртуальных хостах, то теперь при посещении этих сайтов вы будете попадать на свой сервер, даже если пропишите любые домены.

5. Псевдонимы.
По умолчанию, после установки сервера с помощью xampp установлены некоторые стандартные псевдонимы.
Например, если набрать в браузере http://localhost/phpmyadmin, то вы попадете в phpmyadmin, не смотря на то, что в папке отведенной для скриптов нет phpmyadmin.
phpmyadmin будет доступен из под любого домена http://домен/phpmyadmin
Такая опция задается с помощью псевдонимов в настройке apache.
Для xampp это находится в файле /xampp/apache/conf/extra/httpd-xampp.conf,
если устанавливали сервер иначе, то редактировать можно основной конфиг apache.
В этом файле можно видеть такие строки
Alias /phpmyadmin "/xampp/phpMyAdmin/"

или
Alias /webalizer "/xampp/webalizer/"


Это и есть псевдонимы. Именно эти команды указывают серверу обрабатывать запросы и перенаправлять их в другие директории.
Например если запрашивается http://localhost/phpmyadmin, то в данном примере запрос к phpmyadmin будет перенаправлен в директорию /xampp/phpMyAdmin/, которая находится за пределами директории со скриптами.
И срабатывать это будет для любого домена.
Так как подобные псевдонимы используются всегда и всеми, то их естественно знают все хулиганы и когда вы откроете сервер для всех, то все эти псевдонимы будут щупать на уязвимости.
Поэтому, как минимум, лучше переименовать их, а как максимум вообще удалить и псевдонимы прописать в виртуальных хостах, для каждого хоста свой псевдоним.
Например так

<VirtualHost *:80>
ServerAdmin adm@washsait
DocumentRoot C:/xampp/htdocs/localhost/www
ServerName localhost
ServerAlias www.localhost

Alias /phpmyadmin123 "C:/xampp/phpMyAdmin/"

<Directory C:/xampp/htdocs/localhost>
php_admin_value open_basedir "C:/xampp/htdocs/localhost/;C:/xampp/phpmyadmin/"
</Directory>

</VirtualHost>


Обратите внимание, защита выхода скриптов за пределы директории php_admin_value open_basedir содержит еще путь до папки phpmyadmin, иначе если к нему не будет доступа, то он и работать не будет.
И еще можете заметить, что вызов phpmyadmin происходит через phpmyadmin123, чтобы не сразу могли найти.

В последних версиях xampp доступ к административным скриптам возможен только при локальном входе, внешний доступ закрыт, phpmyadmin тоже доступен только локально.
Если хотите открыть внешний доступ для phpmyadmin или другим стандартным скриптам, опять смотрим файл
/xampp/apache/conf/extra/httpd-xampp.conf
Тут есть подобная конструкция

<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
.....
</LocationMatch>


Эта конструкция и запрещает доступ снаружи, конечно сам запрет находится внутри этой конструкции, но если вам нужно открыть внешний доступ например для phpmyadmin, то просто удалите его из этого списка.

Теги: XAMPP, server, Web-server

Категория: Информация / сервер / Apache / Сервер XAMPP

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.