Здраствуйте. В данном уроке, я расскажу как защитить
Apache на сервере
XAMMP. Для начала скроем всю информацию о
Apache, выглядит эта информация примерно так:
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
. Для того что-бы её убрать, находим файл конфигурации
Apache. Как правило, на сервере
XAMMP он называется httpsd.conf и расположен
/xampp/apache/conf/extra/httpsd-default.conf. После того как открыли файл конфигурации
Apache, найдите в нём параметр
ServerTokens, этот параметр и есть обьём показываемой информации о сервере. После того как нашли этот параметр, меняем его значение на
ServerTokens Prod. В этом случае светится будет только название сервера. Так, идём дальше. Теперь мы разберёмся с листингом директорий на вашем сервере. Если в директории нет индексного файла, то по умолчанию сервер покажет список всех файлов и директорий.
Во многих случаях этого делать не нужно, зачем всем показывать, что лежит в вашей папке.
Чтобы запретить листинг директорий открываем файл
/xampp/apache/conf/httpsd.confВнутри тега
[Directory] должен быть
Options с различными параметрами. Среди этих параметров должен быть
Indexes, вот именно
Indexes удалите.
Теперь при попытке просмотреть директорию без индексного файла будет получена ошибка 403. Так, с листингом директорий разобрались. Теперь нам нужно прописать "
Типы файлов (MIME types)". Как вам должно быть известно, до недавнего времени по умолчанию в
apache отсутствовал тип файлов
RAR. Если у вас старый
XAMMP, то соответственно
RAR не прописан, а для этого мы идём в
/xampp/apache/conf/mime.types и в этом файле, в любое место добовляем строку
application/x-rar-compressed rar. Но прежде убедитесь, что этот тип еще не прописан, так как в последней версии
XAMPP он уже присутствует. Теперь нам нужно разобратся с виртуальными хостами. Вам потребуется файл
/xampp/apache/conf/extra/httpsd-vhosts.confУ кого нет этого файла, можно редактировать в основном конфиге.
Начало работы с виртуальными хостами начинается так
NameVirtualHost *:80После этого можно указывать параметры хостов(сайтов)
[VirtualHost]
# настройки первого сайта
[/VirtualHost]
[VirtualHost]
# настройки второго сайта
[/VirtualHost]
[VirtualHost]
#настройки третьего сайта
[/VirtualHost]
Обязательно, первый описанный хост должен быть
localhost, после него можно начинать указывать настройки других хостов, иначе при определенных настройках сервера ваши виртуальные хосты могут не правильно обрабатываться и возникнет путаница между ними.
Вот пример минимальных настроек на примере организации трех хостов
NameVirtualHost *:80
[VirtualHost]
ServerName localhost
DocumentRoot c:/xampp/htdocs/localhost/www
ServerAdmin schok89@mail.ru
[/VirtualHost]
[VirtualHost]
ServerName skripter.info
ServerAlias www.skripter.info
DocumentRoot c:/xampp/htdocs/skripter.info/www
ServerAdmin schok89@mail.ru
[/VirtualHost]
[VirtualHost]
ServerName php-manual.skripter.info
ServerAlias www.php-manual.skripter.info
DocumentRoot c:/xampp/htdocs/php-manual.skripter.info/www
ServerAdmin schok89@mail.ru
[/VirtualHost]
ServerName localhostУказывает, что название домена
localhostDocumentRoot c:/xampp/htdocs/localhost/wwwУказывает на место в котором хранятся файлы сайта.
Можно указывать без использование буквы диска
/xampp/htdocs/localhost/wwwХранить файлы сайта можно в любом месте, но для удобства, лучше хранить их там же, где установлен сервер.
ServerAdmin schok89@mail.ruУказывает
email админа этого сайта.
Например при определенных настройках этот
email может быть виден при возникновении ошибок сервера или сайта.
Во втором хосте все тоже самое, только добавлен еще один параметр
ServerAlias www.skripter.infoЭто хост, являющийся зеркалом основного хоста.
Можно перечислить несколько зеркал, и все они будут иметь такие же параметры как основной хост и в конкретном случае при наборе адреса сайта хоть с www, хоть без wwww, будет обработан основной хост skripter.info.
А третий хост, это пример настроек поддомена от домена skripter.info.
Как видно, настройки поддомена ничем не отличаются от настроек доменов.
Этих настроек хостов вполне хватит, чтобы домены и сайты нормально функционировали, но можно это все не много улучшить.
Например, скрипты любого из этих сайтов имеют доступ ко всем файлам и папкам всего компьютера.
Любой скрипт может случайно или намеренно удалить любые файлы с вашего компьютера, т.к. ничто не ограничивает зону действия этого скрипта.
Чтобы дать ограничение существует такая команда
# директория из которой работает скрипт
php_admin_value open_basedir "c:/xampp/htdocs/skripter.info/" # доступ скриптов к папке
В данном примере
PHP скрипты не будут выходить за пределы указанной директории.
Если хотите указать несколько директорий, к которым могут получать доступ скрипты из указанной директории, разделяйте их ';', например
php_admin_value open_basedir "c:/xampp/htdocs/skripter.info/;c:/xampp/htdocs/asd/"
Обратите внимание, пробела между путями нет, все пути перечисляются слитно, разделяются лишь точкой с запятой (;).
А можете даже запретить использование
PHP скриптов в определенной директории таким образом
[Directory]
php_admin_value engine off
[/Directory]
Можете еще указать место хранения логов, чтобы логи каждого сайта хранились в своем месте.
Лог ошибок и лог доступа к сайту
ErrorLog "c:/xampp/htdocs/skripter.info/log/error_log.txt"
CustomLog "c:/xampp/htdocs/skripter.info/log/access_log.txt" combinedИ вот пример виртуального хоста из всех вышеперечисленных пунктов
[VirtualHost]
ServerName skripter.info
ServerAlias www.skripter.info
DocumentRoot c:/xampp/htdocs/skripter.info/www
ServerAdmin schok89@mail.ru
[Directory]
php_admin_value open_basedir "c:/xampp/htdocs/skripter.info/"
[/Directory]
ErrorLog "c:/xampp/htdocs/skripter.info/log/error_log.txt"
CustomLog "c:/xampp/htdocs/skripter.info/log/access_log.txt" combined
[/VirtualHost]
P.S Все такие скобки "[]", поменяйте на "<>" такие. Т.к. движок, их принял как теги.