Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #75, МАРТ 2005 г.

На лезвии ножа

Andrey Matveev

Хакер, номер #075, стр. 075-052-1


(andrushock@real.xakep.ru)

Надежный фундамент для интернет-проекта

В последнее время стало появляться все больше и больше новых е-шопов, интернет-витрин и аукционов. Соответственно, с геометрической прогрессией возросло и число взломов, дефейсов, а также хищений баз данных и конфиденциальной информации. Лень, некомпетентность, наличие устаревшей и противоречивой информации - вот основные причины, почему программисты и системные администраторы пренебрегают безопасностью своих интернет-проектов. Полагаю, ты не относишься к числу таких беззаботных IT-специалистов и тебе уже неоднократно предлагали заняться электронной коммерцией. Если так, это руководство для тебя.

Делаем правильный выбор

Что касается операционной системы, то в нашем случае это будет OpenBSD. Такой выбор обусловлен следующими факторами:

1. короткая история взломов,

2. безопасность системы, что называется, из коробки,

3. поддержка всех известных аппаратных криптоакселлераторов (эти чудо-девайсы берут шифрование трафика на себя),

4. более-менее корректная работа с нитями (POSIX threads, многопоточность нужна для MySQL),

5. отличный файрвол pf,

6. web-сервер Apache/mod_ssl, по умолчанию работающий в chroot'ной среде,

7. наличие последних версий OpenSSL и OpenSSH.

Также мы будем использовать PHP + MySQL. С преимуществами этой связки, которая за последние годы стала стандартом де-факто для интернет-проектов различного масштаба, незнаком только ленивый. Что касается системы обнаружения вторжений, то для предотвращения атак типа Cross-Site Scripting и SQL Injection мы остановимся, нет, на этот раз не на Snort, а на специальном модуле для индейца - mod_security.

Изюминка конструкции будет заключаться в том, что мы научим PHP, MySQL и почтовый транспортный агент работать с Apache, который запускается в измененном корневом каталоге /var/www с правами непривилегированного пользователя www. Все это делается для достижения одной цели - максимально снизить возможный ущерб при взломе нашей системы.

Подготавливаем почву

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

# vi /etc/fstab

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

/dev/wd0g /var/ftp ffs rw,nodev,nosuid,softdep 1 2

/dev/wd0h /var/log ffs rw,nodev,nosuid,softdep,noexec 1 2

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

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

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

Гибкость такой конфигурации просматривается даже невооруженным взглядом. При переполнении одного из разделов авария никоим образом не скажется на работе других служб. Также, если в момент неожиданного отключения питания операции записи не выполнялись, возможность повреждения файловой системы существенно снизится, поэтому при правильном разбиении пострадает только небольшая область, а не вся система. Еще мы получаем бонус: на небольших разделах fsck(8) будет гораздо быстрее выполнять проверку файловых систем без установленного бита clean. Нельзя упускать из вида еще один немаловажный момент - повышение безопасности за счет специальных флагов монтирования: nodev запрещает использовать файлы устройств, nosuid запрещает повышать привилегии для suid/sgid'ных файлов, noexec запрещает выполнять бинарники.

Содержание  Вперед на стр. 075-052-2
hi tech 904 audi
<<< НАЗАД ||| ГЛАВНАЯ