Будем ставить Grsecurity на CentOS 5.7
На момент написания этой статьи, существует релиз CentOS 6, однако в этой ОС присутствуют проблемы, например проблемы совместимости с панелями управления ISPmanager, Directadmin, так же были замечены проблемы с Cpanel и это не единственные факторы, не позволяющие использовать CentOS 6 для организации стабильных и отказоустойчивых ресурсов.
Поэтому, речь пойдет об установке Grsecurity именно на CentOS 5.7
Эта ОС использует довольно старые ядра, поэтому в процесс установки мы включим так же обновление ядра.
На момент написания статьи, нам доступен патч grsecurity для ядра версии linux-2.6.32.49.
Есть другие патчи для других ядер, было опробовано довольно большое количество как тех, так и других, но в итоге, лучший результат принесло именно это ядро, с последним патчем.
Официальные ядра с kernel.org собираются с проблемами, либо ОС запускается с проблемами.
Все это конечно решаемо, но можно воспользоваться готовым ядром 2.6.32.49 заточенным под CentOS 5.7, что мы и сделаем.
Часть первая — обновление ядра.
Поехали:
wget http://man-linux.ru/files/grs-centos-5-7-all.tgz tar -zxvf grs-centos-5-7-all.tgz cd grs-centos-5-7-all |
В этом архиве все необходимое для архитектуры x86_64. Для начала установим ядро и перезагрузимся с ним, что бы убедиться, что оно нормально работает:
rpm -Uvh choon-kernel-firmware-2.6.32.49-0.choon.centos5.x86_64.rpm rpm -Uvh choon-kernel-2.6.32.49-0.choon.centos5.x86_64.rpm |
Встало? В файле:
/boot/grub/grub.conf
Проверяем, что это ядро первое в списке и при необходимости меняем
default 1
на
default 0
Теперь можно перезагружаться, командой reboot
К следующей части можно переходить после того, как сервер успешно загрузился.
Не забудьте проверить, что загружено именно новое ядро, выполнив команду
uname -a
Часть вторая — установка grsecurity.
Для начала установим необходимые пакеты и более новую версию binutils, а так же получим сорцы ядра:
cd grs-centos-5-7-all yum install rpm-build redhat-rpm-config unifdef gcc gcc-c++ ncurses ncurses-devel rpm -Uvh choon-kernel-devel-2.6.32.49-0.choon.centos5.x86_64.rpm tar -zxvf binutils-2.18.tar.gz cd binutils-2.18 ./configure make && make install cd mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros cd /root/grs-centos-5-7-all/ rpm -i choon-kernel-2.6.32.49-0.choon.centos5.src.rpm 2>&1 | grep -v mockb cd ~/rpmbuild/SPECS rpmbuild -bp --target=`uname -m` choon-kernel-2.6.32.49-0.spec 2> prep-err.log | tee prep-out.log cd ../BUILD/ |
Если все прошло нормально — мы находимся в директории BUILD, в которой лежат исходники нашего ядра.
Далее, я следую традиционному пути сборки ядра — перемещаю исходники в /usr/src, патчу ядро там и собираю его:
cp -r linux-2.6.32 /usr/src cd /usr/src/linux-2.6.32/linux-2.6.32.49 cp /root/grs-centos-5-7-all/grsecurity-2.2.2-2.6.32.49-201112082138.patch . patch -p1 < grsecurity-2.2.2-2.6.32.49-201112082138.patch cp /boot/config-2.6.32.49-0.choon.centos5 .config |
Ядро должно пропатчиться без всяких запросов и лишних действий с вашей стороны, иначе что-то идет не так.
Пропатчилось?
Включаем grsecurity:
make menuconfig |
В Security options переходим на вкладку Grsecurity, ставим пробел на опции enabled (таким образом она включится и откроются настройки grsecurity), далее можно, например, выбрать нужный уровень безопасности и т.п., другие опции в принципе менять не обязательно — на ваше усмотрение.
Собираем ядро:
make bzImage && make modules && make modules_install && make install |
Теперь в /boot/grub/grub.conf первым в списке должно стоять наше ядро, с приставкой grsec. Если это так, меняем
default 1
на
default 0
И уходим в ребут.
После успешной загрузки сервера, проверяем, что загрузилось именно ядро с grsec:
uname -a
И благодарим за рабочее ядро разработчиков www.choon.net, а заодно админов www.webxl.ru за этот самый мануал :)
Удачи!
Вот еще есть сравнение уровней защиты (что и какой левел добавляет) — http://sysadmin.te.ua/linux/sravnenie-urovnej-zashhity-grsecurity.html
Сорри, вот ссылка — http://sysadmin.te.ua/linux/sravnenie-urovnej-zashhity-grsecurity.html
Спасибо за ссылки.