Выбор степени безопасности High активизирует программный код функции РаХ, которая обеспечивает функционирование неисполняемых страниц памяти. Это позволяет защититься от различных атак переполнения буфера, поскольку любой код, помещенный в стек путем перезапуска (overrun), выполняться не будет. Тем не менее по-прежнему сохраняется возможность использовать уязвимость переполнения буфера программы, хотя из-за произвольного расположения процесса в адресном пространстве сделать это очень сложно.

На архитектуре х86 РаХ ведет к некоторому снижению производительности, хотя и минимальному. Кроме того, некоторые программы (такие, как XFree86, wine и виртуальные машины Java) ожидают, что адресное пространство, возвращаемое вызовом malloc( ), будет исполняемым. К сожалению, РаХ изменяет такое поведение, что может при- вести к невозможности работы этих и других программ. К счастью, с помощью утилиты chpax (http://chpax.grsecurity.net) РаХ можно отключить для конкретной программы. Для этого используется подобная команда: # chpax -ps /usr/bin/java

Существуют и другие программы, которые используют специальные функции GCC, например trampoline. Это позволяет программисту определять небольшую функцию внутри другой функции, так чтобы эта функция выполнялась только в пределах той функции, в которой она определена. К сожалению, GCC помещает программный код функции trampoline в стек, поэтому РаХ нарушает работу программ, которые полагаются на нее. Но РаХ с помощью утилиты chpax с ключом -Е может эмулировать функцию trampoline. Если вас не устраивает набор функций, предлагаемый рассмотренными уровнями безопасности, можно выбрать вариант Custom (Пользовательский) и включить только необходимые вам функции.

После установки определенного уровня безопасности или выбора набора функ- ций перекомпилируйте ядро и модули обычным образом: # make dep clean && make bzlmage # make modules && make modules_install Далее перезагрузите ядро. Помимо включенных ограничений ядра, теперь можно воспользоваться утилитой gradm для настройки ACL системы (см. трюк № 14). Необходимо отметить, что grsecurity — это сложная, но крайне полезная модификация ядра Linux. Дополнительные сведения об установке и о настройке обновления можно найти в документации, размещенной на странице grsecurity.net/papers.php.

источник: Локхарт Э. Антихакинг в сети. Трюки.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *