Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #69, АВГУСТ 2006 г.

Корень зла

ANDREY MATVEEV

Спецвыпуск: Хакер, номер #069, стр. 069-050-1


(ANDRUSHOCK@REAL.XAKEP.RU)

WEB-СЕРВЕР В СРЕДЕ CHROOT: ПРАКТИЧЕСКАЯ ПАРАНОЙЯ

Сегодня у нас на повестке дня вопросы, касающиеся обеспечения безопасности Web-сервера на базе OpenBSD. Мы научим PHP, MySQL и Sendmail работать с Apache, который запускается в окружении chroot - измененном корневом каталоге /var/www с правами непривилегированного пользователя www. Таким образом, нам удастся обеспечить дополнительный уровень защиты и максимально снизить возможный ущерб в том случае, если злоумышленнику окажется под силу взломать нашу систему. Применив полученные знания на практике, в твоем арсенале будет настолько защищенная система, что ты сможешь совершенно спокойно взяться за разработку любого проекта, будь то личный блог, новостной сайт компании или даже интернет-магазин с мириадами клиентов.

[предварительный ликбез.]

Последняя версия ультрасекьюрной OpenBSD (3.9 на момент написания статьи) как нельзя лучше подойдет для выполнения нашей миссии. Короткая история взломов, прекрасная реализация стека TCP/IP, отличный файервол Packet Filter (pf), залатанный Apache 1.3.29 с поддержкой SSL, наличие последних версий OpenSSH и OpenSSL, тысячи добротно протестированных прекомпилированных пакетов - все это говорит в пользу сделанного выбора. Хотя стоит отметить, что в качестве используемой операционной системы может выступать любая из Free/Net/DragonFlyBSD.

За основу нашей конструкции примем PHP и MySQL. Не секрет, что за последние годы эта связка стала стандартом де-факто для интернет-проектов различного масштаба. Поэтому давай не будем на этом останавливаться и перейдем непосредственно к настройке.

[каждой службе - свой раздел.]

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

# vi /etc/fstab

/dev/wd0a / ffs rw 1 1

/dev/wd1h /backup ffs rw,nodev,nosuid,softdep 1 2

/dev/wd1a /cvs ffs rw,nodev,nosuid 1 2

/dev/wd0g /export ffs rw,nodev,nosuid,softdep 1 2

/dev/wd1i /home ffs rw,nodev,nosuid,softdep 1 2

/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec,softdep 1 2

/dev/wd0f /usr ffs rw,nodev,softdep 1 2

/dev/wd0e /var ffs rw,nodev,nosuid,softdep 1 2

/dev/wd1d /var/mail ffs rw,nodev,nosuid,noatime,softdep 1 2

/dev/wd1e /var/mysql ffs rw,nodev,nosuid,softdep 1 2

/dev/wd1f /var/squid ffs rw,nodev,nosuid,softdep 1 2

/dev/wd1g /var/www ffs rw,nodev,nosuid,softdep 1 2

/dev/wd1b none swap sw 0 0

Преимущества такой конфигурации видны даже невооруженным глазом:

- ПЕРЕПОЛНЕНИЕ ОДНОГО ИЗ РАЗДЕЛОВ НЕ ПОВЛИЯЕТ НА РАБОТУ БОЛЬШИНСТВА СЛУЖБ;

- ПРИ СЛУЧАЙНОМ ОТКЛЮЧЕНИИ ПИТАНИЯ ВО ВРЕМЯ ВЫПОЛНЕНИЯ ОПЕРАЦИИ ЗАПИСИ НА ОДНУ ИЗ ФАЙЛОВЫХ СИСТЕМ СНИЖАЕТСЯ ВОЗМОЖНОСТЬ ПОВРЕЖДЕНИЯ ОСТАЛЬНЫХ ФС;

- УВЕЛИЧЕНИЕ БЕЗОПАСНОСТИ СИСТЕМЫ ЗА СЧЕТ УКАЗАНИЯ ДЛЯ КАЖДОЙ ФС СПЕЦИАЛЬНЫХ ФЛАГОВ МОНТИРОВАНИЯ.

[MySQL: записная книжка с SQL-интерфейсом.]

Теперь перейдем к установке и конфигурированию сервера баз данных. Собираем из портов три MySQL-пакета - client, server, tests:

Содержание  Вперед на стр. 069-050-2