Stephanie: непотопляемая OpenBSD

Xakep, номер #047, стр. 047-074-1


Делаем систему максимально защищенной!

Will Barrent (barrent@hotbox.ru)

Итак, ты выбрал OpenBSD в качестве начинки для своего сервера, как одну из самых безопасных операционок. Однако если ты собираешься раздавать на своей машине шеллы, неплохо бы принять кое-какие дополнительные меры предосторожности, дабы усложнить жизнь потенциальным взломщикам. В этом тебе и поможет пакет Stephanie, о котором пойдет речь в этой статье.

OpenBSD - свободно распространяемая операционная система, основанная на 4.4BSD. Главной целью проекта является максимальная безопасность. Проект был основан в 1994 году. Текущая версия OpenBSD 3.1. Домашняя страница проекта: http://www.openbsd.org

Сейчас существует множество патчей для различных unix-like систем, направленных на повышение их безопасности. В основном работа таких патчей сводится к запрету пользователям делать то, что делать им совсем необязательно (например, смотреть список чужих процессов), наложению ограничений на функциональность системы для "недоверенных пользователей" и т.д. Иногда это может помочь предотвратить взлом с использованием еще неизвестных дыр. Для OpenBSD единственным таким патчем является Stephanie.

Stephanie - набор патчей и утилит для OpenBSD, созданных специально для использования системы в "агрессивных" условиях, например, при предоставлении shell-аккаунтов. Пакет основан на TPE-патче (Trusted Path Execution) для OpenBSD 2.4, опубликованном в электронном хакерском журнале Phrack (http://www.phrack.org/phrack/54/P54-06). Домашняя страница проекта: http://www.innu.org/~brian/Stephanie.

Установка

Переходим от слов к делу. Думаю, что с основами администрирования OpenBSD ты уже знаком, ядро пересобирать умеешь, где какие конфиги лежат, тоже знаешь. Рассмотрим установку Stephanie на "чистый" релиз OpenBSD 3.1. Для начала скачиваем и распаковываем пакет:

# cd ~

# ftp http://www.innu.org/~brian/Stephanie/dist/Stephanie-3.1.tar.gz

# tar -zxf Stephanie-3.1.tar.gz

Копируем файлы, которые нам потребуются для сборки ядра и необходимых утилит, в соответствующие места:

# cd Stephanie-3.1

# cp kern/* /sys/kern/

# cp sys/* /sys/sys/

# cp sys/* /usr/include/sys/

# cp *.patch /usr/src/

Патчим исходники системы:

# cd /usr/src

# patch -p0 < Stephanie-3.1.patch

# patch -p0 < ld.patch

Теперь нужно обновить таблицу системных вызовов, так как она была изменена после приложения патча:

# cd /sys/kern

# make

Скопируем новые заголовочные файлы:

# cp /sys/syscall.h /usr/include/sys/

# cp /sys/syscallargs.h /usr/include/sys/

# cp /sys/sysctl.h /usr/include/sys/

Мы также пропатчили программку ld.so, которая отвечает за динамическую линковку библиотек при запуске приложений, чтобы добавить к ней дополнительные возможности по ограничению махинаций с переменными окружения, например - подмена libc через LD_PRELOAD. Поэтому пересоберем и ее:

# cd /usr/src/gnu/usr.bin/ld/rtld

# make depend && make && make install

Теперь соберем утилиты, которыми мы будем рулить новой системой:

# cd ~/Stephanie-3.1

# cd aclctl && make && make install

# cd ../k5ctl && make && make install

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