Защита стека.
Stack-Smashing Protector (известный как ProPolice) - это GCC-патч, сделанный компанией IBM. SPP использует технику проверочных значений, как и StackGuard. SPP дает ряд существенных улучшений этой техники по сравнению со StackGuard.
Во-первых, изменилось месторасположение проверочного значения. Теперь оно находится не после адреса возврата, как в случае с StackGuard, а после указателя кадра (Frame Pointer, FP). Если проверочное значение помещается сразу после RET, указатель FP и локальные переменные функции могут быть перезаписаны без изменения проверочного значения (оно применяется только для защиты RET). SPP помещает проверочное значение после FP, чем обеспечивает его защиту, а также изменяет порядок буфера и локальных переменных
Защита памяти: StackGuard.
Ранее было рассказано, как с помощью простого переполнения буфера хакер может получить права пользователя root. Около 50% уязвимостей, обнаруженных в последние годы, были связаны именно с переполнением буфера. Поэтому к этой проблеме можно отнестись с большим вниманием.
Здесь будет рассказано о некоторых известных средствах защиты памяти, хотя ни одно из них не претендует на первенство, но они все же помогают решить проблему.
Советы по укреплению Linux-сервера.
Какой бы вы не использовали дистрибутив, нужно сразу после установки приступать к усилению защиты системы. Ранее были рассмотрены утилиты nmap и Nessus для определения сервисов, которые могут дать хакеру доступ в систему, и был описан процесс отключения ненужных сервисов.
Можно подумать, что теперь в систему очень трудно проникнуть. Рассмотрим такой сценарий, в котором хакер все-таки получил доступ к системе (все равно какой - привилегированный или непривилегированный) и пытается захватить всю систему.
Наиболее вероятно, что он установит rootkit или другие инструменты, которые скрывают его присутствие и дают возможность без проблем проникнуть в систему, а может, он уже поставил программу, разрешающую запускать DoS-атаку от имени машины...
Зависимости библиотек chroot.
Создать минимальную файловую систему изрядно просто, значительно сложнее выяснить, какие файлы обязательны. Прежде всего нужно выяснить зависимости библиотек. Ведь сервер может требовать наличия всего двух-трех библиотек, а каждой из них надо еще 1-2-3-4 библиотеки - без них они не будут работать, и, следовательно, не будет работать сервер.
Выяснить, какие библиотеки надобны той или иной программе, нужно с помощью команды ldd. Посмотрим, что надо для нормальной работы программы ls:
Chroot-окружение.
Небезопасные сервисы - это потенциальные дыры в системе безопасности. Взломав такой сервис, хакер часто получает возможность исполнять команды от имени пользователя, который запустил этот сервис. Если сервис работает от пользователя root, можно представить, что хакер сделает с системой.
Идеально было бы запускать сервисы в «песочницах» - то есть задать такие ограничения для сервиса, при которых хакер не может разрушить систему или повлиять на работу прочих сервисов. Такой «песочницей» представляется chroot-окружение.
Идея chroot-окружения крайне проста: в некотором каталоге создается минимальная структура каталогов, необходимая для запуска этого сервиса, которая эмулирует корневую файловую систему, то есть в этом подкаталоге будут подкаталоги /bin, /lib, /etc и другие.