Налаштування та захист apache під windows
Увага! Налаштування apache встановленого під windows або під іншою операційною системою однакові. Відмінність лише у шляхах до файлів та деяких специфічних настройках. Тому ці налаштування підійдуть для апача встановленого під freebsd, linux, і т.д.
Якщо ви встановлювали apache за іншою схемою, то у вас можуть відрізнятися шляхи до файлів налаштувань, але самі налаштування будуть такі самі.
Якщо ви ще не встановили apache, раджу вам встановити його як розказано у цій статті (Як встановити сервер apache вдома під windows).
Всі налаштування 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
3. Типи файлів (MIME types) Коли з сервера запитується який-небудь файл, apache насамперед з'ясовує який тип має цей файл (картинка, текстовий файл, архів і т.д.). Після цього сервер посилає заголовок, в якому зазначено, який тип файлу зараз буде відданий. Браузер отримує цей заголовок і на підставі нього вирішує, що робити із цим файлом.
До недавнього часу за умовчанням в apache був відсутній тип файлів RAR, відомий всім архів. І якщо ви розмістите на своєму сайті файл rar, то, наприклад, браузер OPERA замість скачування цього файлу почне відкривати його в браузері як текстовий файл і будуть виднінезрозумілі символи. Щоб цього не було, потрібно додати тип файлів RAR на сервер. Якщо установку робили через XAMPP, то налаштування типів файлів тут /xampp/apache/conf/mime.types Потрібно додати рядок
application/x-rar-compressed rar Але спочатку переконайтеся, що цей тип ще не прописаний, оскільки в останній версії XAMPP він вже є.
4. Віртуальні хости, додаткові домени. Після встановлення сервера вам доступний лише один локальний домен localhost. За допомогою налаштування віртуальних хостів можна розмістити на вашому сервері скільки завгодно сайтів з різними доменами або піддоменами, все залежить від ресурсів вашого комп'ютера. .conf У кого немає цього файлу, можна редагувати в основному конфізі.
Початок роботи з віртуальними хостами починається такNameVirtualHost *:80 Після цього можна вказувати параметри хостів(сайтів)
# налаштування першого сайту
# налаштування другого сайту
#налаштування третього сайту
Обов'язково, перший описаний хост має бути localhost, після нього можна починати вказувати налаштування інших хостів, інакше при певних налаштуваннях сервера ваші віртуальні хости можуть не правильно оброблятися і виникне плутанина між ними.
Ось приклад мінімальних налаштувань на прикладі організації трьох хостів
ServerName localhost DocumentRoot c:/xampp/htdocs/localhost/www ServerAdmin [email protected]
ServerName webi.ru ServerAlias www.webi.ru DocumentRoot c:/xampp/htdocs/webi.ru/www ServerAdmin [email protected]
ServerName php-manual.webi.ru ServerAlias www.php-manual.webi.ru DocumentRoot c:/xampp/htdocs/php-manual.webi.ru/www ServerAdmin [email protected]
ServerName localhost Вказує, що назва домену localhost
DocumentRoot c:/xampp/htdocs/localhost/www Вказує на місце, в якому зберігаються файли сайту. Можна вказувати без використання літери диска/xampp/htdocs/localhost/www Зберігати файли сайту можна в будь-якому місці, але для зручності краще зберігати їх там же, де встановлений сервер.
ServerAdmin [email protected] Вказує email адміна цього сайту. Наприклад, при певних налаштуваннях цей email може бути видно при виникненні помилок сервера або сайту.
А третій хост – це приклад налаштувань піддомена від домену webi.ru. Як видно, налаштування піддомену нічим не відрізняються від налаштувань доменів.
Цих налаштувань хостів цілком вистачить, щоб домени та сайти нормально функціонували, але можна це все небагато покращити. Наприклад, скрипти будь-якого з цих сайтів мають доступ до всіх файлів та папок всього комп'ютера. Будь-який скрипт може випадково чи навмисно видалити будь-які файли з комп'ютера, т.к. ніщо не обмежує зону дії цього сценарію. Щоб дати обмеження існує така команда
# директорія з якої працює скрипт php_admin_value open_basedir "c:/xampp/htdocs/webi.ru/" # доступ скриптів до папки У даному прикладі PHP скрипти не будуть виходити за межі зазначеної директорії. Якщо хочете вказати кілька директорій, до яких можуть отримувати доступ скрипти із зазначеної директорії, розділяйте їх '; ', наприкладphp_admin_value open_basedir "c:/xampp/htdocs/webi.ru/ ;c:/xampp/htdocs/asd/" Зверніть увагу, пробілу між шляхами немає, всі шляхи перераховуються разом, розділяються лише крапкою з комою (; ).
А можете навіть заборонити використання PHPскриптів у певній директорії таким чином
php_admin_value engine off
Можете вказати місце зберігання логів, щоб логи кожного сайту зберігалися у своєму місці. Лог помилок та лог доступу до сайтуErrorLog "c:/xampp/htdocs/webi.ru/log/error_log.txt" CustomLog "c:/xampp/htdocs/webi.ru /log/access_log.txt" combined
І ось приклад віртуального хоста зі всіх вищеперелічених пунктів
ServerName webi.ru ServerAlias www.webi.ru DocumentRoot c:/xampp/htdocs/webi.ru/www ServerAdmin [email protected] php_admin_value open_basedir " c:/xampp/htdocs/webi.ru/" ErrorLog "c:/xampp/htdocs/webi.ru/log/error_log.txt" CustomLog "c:/xampp/htdocs/webi .ru/log/access_log.txt" combined
5. Як створювати локальні піддомени. Якщо ви використовуєте сервер для тестування і вам потрібно створювати локальні домени або піддомени, після налаштування віртуального хоста потрібно прописати цей домен локальним у файлі 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
Якщо ви прописали ці домени у віртуальних хостах, то тепер при відвідуванні цих сайтів ви потраплятимете на свій сервер, навіть якщо пропишіть будь-які домени.
6. Псевдоніми. За умовчанням, після встановлення сервера за допомогою 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/, яка знаходиться за межами директорії зі скриптами. І спрацьовувати це буде для будь-якого домену. Так як подібні псевдоніми використовуються завжди і всіма, то їх природно знають усі хулігани і коли ви відкриєте сервер для всіх, то всі ці псевдоніми будуть мацати на вразливості. Тому, як мінімум, краще перейменувати їх, а як максимум взагалі видалити та псевдоніми прописати у віртуальних хостах, для кожного хоста свій псевдонім. Наприклад так
ServerAdmin [email protected] DocumentRoot C:/xampp/htdocs/localhost/www ServerName localhost ServerAlias www.localhost
Alias /phpmyadmin123 "C:/xampp/phpMyAdmin/"
php_admin_value open_basedir "C:/xampp/htdocs/localhost/;C:/xampp/phpmyadmin/"
Зауважте, що захист виходу скриптів за межі директоріїphp_admin_value open_basedir містить ще шлях до папки phpmyadmin, інакше якщо до нього не буде доступу, то він і працювати не буде. І ще можете помітити, що виклик phpmyadmin відбувається через phpmyadmin123, щоб не одразу могли знайти.
В останніх версіях xampp доступ доадміністративним скриптам можливий лише при локальному вході, зовнішній доступ закритий, phpmyadmin теж доступний лише локально. Якщо хочете відкрити зовнішній доступ для phpmyadmin або іншим стандартним скриптам, знову дивимося файл /xampp/apache/conf/extra/httpd-xampp.conf Тут є подібна конструкція
. Ця конструкція і забороняє доступ зовні, звичайно сама заборона знаходиться всередині цієї конструкції, але якщо вам потрібно відкрити зовнішній доступ, наприклад для phpmyadmin, то просто видаліть його з цього списку.
| Статті, присвячені встановленню веб-сервера на windows. |
Коментарі
Будьте уважні, я не даю вам свій WMR, тож якщо хтось тут напише свій WMR, це не я. З цієї причини я видалив ваш номер аськи, щоб ніхто не видав себе за мене.
Залишилася одна проблемка. Мережевий диск, очевидно, підключається після запуску служби Apache. Тому доводиться стартувати Apache вручну. Пробував ставити запуск bat-ника при невдалому запуску Apachа, а потім перезапуск служби. Не допомагає. Можливо, є ще якесь рішення.
ServerName localhost DocumentRoot c:/xampp/htdocs/localhost/www ServerAdmin [email protected]
ServerName baby48.ru ServerAlias www.baby48.ru DocumentRoot c:/xampp/htdocs/baby48.ru/www ServerAdmin [email protected]
при спробі увійти на сервер видає помилку Access forbidden!Error 403 допоможіть розібратися що я роблю не так. заздалегідь дякую
у всьому іншому вам спасибі все працює. Та й ще ось у файлі hosts зробив запис 127.0.0.1 www.domen.ru 127.0.0.1 www.forum.domen.ru
стежитимемо за новинами на webi.ru
Якось у мене була проблема з однією програмою, яка при старті скидалаконфіг та переписувала його параметрами за умовчанням. Нічого не міг зробити, тоді я просто виставив на файл конфіга дозволу тільки на читання, після цього конфіг не перезаписувався, може вам спробувати?
Програма: XAMPP for Windows
Вразливість дозволяє локальному зловмиснику виконати шкідливі дії з підвищеними привілеями цільової системи. Уразливість існує через помилку у перевірці вхідних даних. Атакуючий може передати спеціально сформовані дані, що призведе до виконання довільного коду з привілеями адміністратора.
і як це усунути? завдяка дякую