Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Укрепляем Linux

Подписаться на эту рубрику по RSS

Несмотря на то, что синтаксис файла политики простой, внесение в него любого системного вызова дело довольно непростое. Кроме знания, что делает некоторый системный вызов, нужно описать каждый сис­темный вызов, используемый приложением.

     Чтобы не забыть какой-нибудь вызов, нужно провести трассировку системных вызовов с помощью ранее рассмотренной программы systrace. Когда будет создан базовый файл политик, разрешающий все необходи­мые приложению системные вызовы, нужно приступить к ужесточению правил - к исследованию различных системных вызовов, которые могут быть использованы для атаки.

Создание файла политики - занятие изрядно утомительное. Systrace предоставляет альтернативный способ.

Далее...

Как уже было сказано, ядром Systrace являются файлы политики, в которых описаны разрешенные системные вызовы и их параметры для конкретных приложений. Файлы политик должны быть помещены в каталог /etc/systrace. Если в этом каталоге файлы политик не найдены, Systrace будет искать их в каталоге ~/.systrace.

     Имя файла политик зависит от приложения, для которого надо эту политику применить, например, если нам надо применить политику для /bin/login, файл политики будет называться bin_login, то есть все слэ­ши в полном имени файла заменяются знаками подчеркивания, а первый слэш - удаляется.

Далее...

Словосочетание «системный вызов» часто применяется администраторами без полного понимания его сути. Представим, что системный вызов - это запрос (на получение ресурсов или выполнение действий) пользователь­ским приложением ядра, например запрос на создание каталога (системный вызов sys_mkdir), или запрос на установку системных часов (sys_stime), или запрос на монтирование файловой системы (sys_mount).

     В Linux обусловлено почти 200 системных вызовов, которые используются для разных действий. Полный список системных вызовов досту­пен на сайте: http://linuxassembly.org/syscall.html.

Далее...

     Функции ASLR очень полезны, но они не гарантируют 100% защиты - не­смотря на то, что применяется рандомизация, теоретически существует вероятность переполнения буфера.

     Так как некорректное изменение памяти, сделанное хакером, приводит к краху приложения, сведения о частых перезапусках сервисов (которые после краха автоматически перезапускаются) говорят о том, что хакер пытается переполнить буфер.

     Для предотвращения возможности изменения хакером размеще­ния памяти в ASLR-защищенном процессе надо задать ограничение на количество перезапусков демона за определенный период времени.

     Для данного может употребляться утилита Segvguard, доступная по адресу: ftp://ftp.pl.openwall.com/misc/segvguard/. Segvguard состоит из двух частей:

Далее...

Установка.

     РаХ не требует пересборки приложений, но, так как реализован в виде патча ядра, требует пересборки самого ядра. РаХ-патч мож­но загрузить с сайта: http://pax.grsecurity.net/, на этом сайте до­ступны версии для ядер 2.4 и 2.6. Загрузите соответствующее ядро с сайта kernel.org, распакуйте его, перейдите в только что созданный каталог и примените РаХ-патч:

# cd /usr/src

# wget http://www.kernel.org/pub/linux/kernel/v.26/linux-2.6.7.bz2

# tar -jxvf linux-2.6.7.bz2

# cd linux-2.6.7

# wget http://pax.grsecurity.net/pax-linux-2.6.7-200406252135.patch

# patch -p0 < pax-linux-2.6.7-200406252135.patch

Далее...

Рандомизация адресного пространства применяется для усложнения про­цесса вычисления расположения в памяти стека и DLL. Вычислить адрес стека и DLL хакеру стало значительно сложнее, чем без рандомизации.

     Если хакер неправильно «угадает» адрес памяти, то приложение будет аварийно завершено - как и без рандомизации. Но когда хакер вторично запустит приложение, адресное пространство будет вторично изменено.

Далее...

Проект РаХ представляется частью большого проекта Grsecurity. РаХ предоставляет защиту памяти, делая стек неисполнимым. В дополнение к этому РаХ предоставляет несколько других важных функций: например рандомизацию размещения адресного про­странства.

Далее...