Захищаємо apache 2

При виборі Web сервера, Apache дуже часто перемагає своїх конкурентів з-за стабільності, високої продуктивності, відкритого вихідного коду та багато інших переваг. Зараз Apache існує у вигляді двох версій - стійка версія 1.3, яка використовується мільйонами користувачів і, з іншого боку, вдосконалена і перепроектована версія 2.0.

Хоча нова версія має ряд суттєвих доповнень і особливостей, багато адміністраторів все ще використовують старішу версію 1.3, вважаючи її більш стійкою і безпечною. Множествофактовпотверждают це. Так як версія 1.3 використовувалася мільйонами користувачів протягом довгого часу, більшість проломів в захисті в цій версії, по всій, було вже виявлені. У той же самий час версія 2.0 може бути має безліч поки ще не виявлених вразливостей.

У світі безпеки, існує кілька золотих принципів, які зобов'язані завжди дотримуватися. Один з таких принципів - правило, яке говорить, що повинні використовуватися тільки необхідні частини програмного забезпечення. Всі інші компоненти повинні бути заблоковані, зроблені недоступними або навіть не повинні взагалі бути встановлені.

Логіка цього правила дуже проста - якщо є програмне забезпечення з безліччю компонентів, які включені за замовчуванням, то виявлена ​​уразливість захисту тільки в одному з цих компонентів, може поставити під загрозу цілу систему під загрозу успішного злому. З іншого боку, якщо використовуються тільки кілька вкрай необхідних компонентів, виявлена ​​нова уразливість захист не обов'язково робить програмне забезпечення вразливим - тому що виявлена ​​уразливість може зачіпати компоненти, які відключені або не встановлені. Імовірність успішного злому в цьому випадку очевидно набагато нижче, ніж в разі заданої за замовчуванням інсталяції.

Тому, перед установкою Apache 2, дуже важливо знати, які функціональні можливості ми дійсно очікуємо від Web сервера. Це дозволить нам підготувати список модулів, які ми залишимо включеними, а решта будуть відключені в процесі установки.

Щоб забезпечити найбільш можливий рівень захисту, і в той же самий час зробити це рішення стерпним серед різних Linux / BSD систем, ми будемо використовувати такі рівні захисту:

Операційна система

  • операційна система повинна бути укріплена в максимально можливій мірі; всі непотрібні компоненти повинні бути вилучені із системи.
  • Операційна система не повинна дозволяти виконувати програми на стеку (якщо підтримується).
  • Всі непотрібні мережеві служби повинні бути заблоковані.
  • Число SUID / SGID файлів має бути мінімізовано.

Apache web server

  • Включені бути тільки абсолютно необхідні модулі Apache; Решта має бути заблоковано в процесі компіляції
  • Повинні бути виключені всі діагностичні web-сторінки і автоматична служба індексації каталогу.
  • Сервер повинен розкрити найменшу кількість кількості інформації про себе наскільки можливо - політика заплутування. Хоча це - не реальний рівень захисту, його застосування уможливлює проникнення важко здійсненними.
  • Web сервер повинен виконуватись під виділеним UID / GID, який не використовується іншими системними процесами.
  • Apache процес повинен мати обмежений доступ до файлової системи (chrooting).
  • В Apache chrooted середовищі не повинно бути ніяких програмних оболонок (/ bin / sh, / bin / csh і т.п.) - це дозволяє набагато ускладнити процес виконання шкідливого коду.

Установка операційної системи

Перш за все, ми повинні вибрати операційну систему, на якій буде виконуватися Web сервер. Основна частина цієї статті описує захист Apache на FreeBSD (5.1), однак читачі можуть вільно використовувати їх улюблену Unix, BSD, Linux або Linux-подібну операційну систему.

Щодо наших припущень захисту, після установки операційної системи вона повинна бути захищена проти віддалених і локальних нападів. Незалежно від вибору UNIX / Linux / BSD дистрибутива, дуже важливо встановити обидві операційну систему і видалити будь-які надлишкові пакети і застосовувати на сучасному рівні виправлення до ядра і всьому встановленому програмному забезпеченню.

Також рекомендують періодично синхронізувати локальне час з довіреною сервером часів, використовуючи годинник з сервера часу, якому довіряють, використовуючи Network Time Protocol (NTP), і посилати журнали реєстрації віддаленого, виділеного реєстраційному сервера.

Далі, нам необхідно завантажити останню версію Apache Web сервера з Web сайту Apache. Так як ми хочемо відключити непотрібні модулі в процесі компіляції, дуже важливо завантажити вихідний код Apache. Також важливо перевірити завантажене програмне забезпечення проти PGP сигнатури, щоб упевнитися, що завантажена версія немодифіковані.

Вибір Apache модулів

Так як ми хочемо використовувати тільки мінімальне число модулів, ми компілюємо всі модулі статично. Завдяки цьому, ми усунемо можливість застосування уразливості ще в одному модулі - mod_so.

У цьому кроці ми конфігуруємо, компілюємо, і встановлюємо Apache Web сервер наступним чином: Після того, як Apache встановлений, ми повинні упевнитися, що використовуються тільки наступні модулі:

конфігурація Apache

Перед першим запуском Apache, ми повинні змінити файл конфігурації Apache. Ми повинні зробити це, тому що заданий за замовчуванням файл конфігурації використовує модулі, які ми відключили, і без модифікацій Apache не буде виконано.

Chrooting сервера

Далі, обмежимо доступ Apache процесу до файлової системи. Техніка chrooting докладно описана в попередній статті, тому в цьому пункті ми просто створимо структуру директорій для нашого нового Apache: Власник весь вище каталогів повинен бути root, і права доступу не повинні дозволити звичайним користувачам виконувати будь-які зміни в цих каталогах: Потім, ми створимо спеціальний файл пристрою, / dev / null: Ми також повинні створити / chroot / httpd / dev / log пристрій, який необхідно для нормальної роботи сервера. У разі нашої FreeBSD системи, потрібно додати наступну строкe до /etc/rc.conf: syslogd_flags = "- l / chroot / httpd / dev / log"

Якщо тепер ваш Apache працює належним чином, нам залишилося створити сценарій, який запустить Apache під час початкового завантаження системи. Для цього може використовуватися наступний сценарій: #! / Bin / sh CHROOT = / chroot / httpd HTTPD = / usr / local / apache2 / bin / httpd PIDFILE = / usr / local / apache2 / logs / httpd.pid echo -n "apache "case" $ 1 "in start) / usr / sbin / chroot $ CHROOT $ HTTPD ;; stop) kill `cat $ / $` ;; *) Echo "" echo "Usage:` basename $ 0` "> 2 exit 64 ;; esac exit 0 Вищезгаданий сценарій повинен бути скопійований в каталог, де знаходяться за замовчуванням сценарії запуску. У випадку з FreeBSD це - /usr/local/etc/rc.d каталог. Права доступу до того файлу повинні бути встановлені таким чином:

Головна мета цієї статті полягала в тому, щоб представити метод захисту Apache 2.0, який дозволяє читачам пом'якшувати ризик успішного злому, навіть якщо використовується нова уразливість. Було показано, як встановити Apache з мінімальним номером модулів, як встановити більш обмежувальну конфігурацію, і як здійснити захист проти великої кількості експлойтів, виконуючи Web сервер в chrooted середовищі, без використання будь-яких програм оболонки. І хоча ніякої метод не може надати 100% захисту, застосовуючи вищезгадані рекомендації, буде набагато важче виконати напад проти Apache 2.0 в порівнянні із заданою за замовчуванням інсталяцією.

  • Захищаємо apache 2
  • Захищаємо apache 2
  • Захищаємо apache 2
  • Захищаємо apache 2

Схожі статті