Linux (или GNU/Linux согласно Stallman, если речь о полном дистрибутиве) фактически только ядро операционной системы. Оно обрабатывает работу с дисками, прочей аппаратурой, поддерживает механизмы безопасности и сеть.
В дополнение к этому мы имеем аппаратные проблемы подобно Pentium F00F bug, и проблемы, свойственные TCP-IP протоколу, Linux ядро имеет способы их обхода. Версии ядра обозначены как X.Y.Z, где Z младший номер версии, Y задает является ли ядро тестовым (нечетное значение) или рабочим (четное число), X определяет старший номер версии (пока что есть 0, 1 и 2). Серия 2.2.x имеет сильные усовершенствования о сравнению с серией 2.0.x. Использование ядер 2.2.x также позволяет Вам использовать новые возможности, например, ipchains (вместо ipfwadm). Выяснить ппоследние версии ядра можно просто командой finger @linux.kernel.org:
[seifried@mail kernel-patches]$ finger @linux.kernel.org
[linux.kernel.org]
The latest stable version of the Linux kernel is: 2.2.13
The latest beta version of the Linux kernel is: 2.3.29
The latest prepatch (alpha) version *appears* to be: 2.3.30-3
Обновление ядра включает получение нового ядра и модулей, правку /etc/lilo.conf, запуск LILO для записи нового MBR. Ядро обычно помещается в /boot, а модули в /lib/modules/kernel.version.number.
Получить новое ядро можно двумя способами: скачать соответствующий ядерный пакет и установить его, или скачать и откомпилировать исходный код ядра с ftp://ftp.kernel.org (пожалуйста, используйте зеркальный сайт!).
cd /usr/src
Там должна быть ссылка linux на каталог с текущим ядром. Если ее нет, одной проблемой меньше. Если есть, удалите ее. Лучше всего переименовать каталог linux в /usr/src/linux-kernel.version.number и создать на него ссылку /usr/src/linux.
Распакуйте исходеники, используя tar и gzip так, чтобы получить /usr/src/linux примерно с 50 мегабайтами исходников. Следующий шаг должен создать ядерную конфигурацию linux (/usr/src/linux.config), это может быть достигнуто, используя make config, make menuconfig или make xconfig, мне кажется, что лучше всего make menuconfig (для этого, Вы будете нуждаться в библиотеках ncurses и ncurses devel). Это, возможно, самый трудный шаг: имеются сотни параметров, которые могут быть категоризированы в две основных области: аппаратная поддержка и сервисная поддержка. Для аппаратной поддержки напишите список аппаратных средств, с которыми это ядро будет работать, и включите соответствующие параметры. Что касается сервисной поддержки Вы будете должны вычислить, которые файловые системы (fat, ext2, minix, ...) Вы планируете использовать, то же самое для работы с сетями (firewalling и т.д.).
Когда Вы сконфигурировали ядро, Вы должны скомпилировать его, следующие команды создают зависимости, гарантирующие, что библиотеки будут встроены в правильном порядке, затем чистят любую информацию от предыдущей компиляции, компилируют ядро, затем формируют и устанавливают модули.
make dep #(makes dependencies)
make clean #(cleans out previous cruft)
make bzImage #(make zImage pukes if the kernel is to big, and 2.2.x
#kernels tend to be pretty big)
make modules #(creates all the modules you specified)
make modules_install #(installs the modules to
#/lib/modules/kernel.version.number/)
Вы должны скопировать /usr/src/linux/arch/i386/boot/bzImage (или zImage) в /boot/vmlinuz-kernel.version.number. Потом поправьте файл /etc/lilo.conf, добавьте в него запись для нового ядра.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.9
label=linux
root=/dev/hda1
read-only
image=/boot/vmlinuz-2.2.5
label=linuxold
root=/dev/hda1
read-only
По окончании правки /etc/lilo.conf надо запустить /sbin/lilo для обновления MBR (Master Boot Record). При запуске LILO должен вывести нечто похожее на:
Added linux *
Added linuxold
Вывод представляет собой список ядер, которые будут указаны в MBR, * обозначает ядро, загружаемое по умолчанию (обычно, это первое ядро, если Вы не указали другое директивой default).
Сейчас стабильными версиями ядра является серия 2.2.x, а тестовыми 2.3.x. Тестовая серия 2.1.x не рекомендуется из-за множества проблем. Серия 2.0.x устарела и не имеет ряда полезных возможностей. Увы, переход от 2.0.x к 2.2.x труден, надо обновить несколько пакетов программ, библиотек, ppp, modutils и другие (подробности в документации на ядро). Дополнительно храните старое рабочее ядро, добавьте для него запись в lilo.conf как "linuxold" или что-то подобное, тогда будет возможность отступления в случае необходимости.
Имеется ряд заплат ядра, которые могут расширить защиту Linux-системы. Одни предотвращают буферное переполнение, другие обеспечивают сильное crypto.
Имеется ряд заплат, непосредственно связанных с защитой.
Данная заплата (Secure Linux kernel patch) решает ряд проблем и обеспечивает другой уровень защиты для системы. Заплата доступна для ядер серий 2.0 и 2.2. Скачать можно с http://www.openwall.com/linux.
Данная заплата (International kernel patch) более мегабайта в размере! Добавляет огромное количество сильного crypto и связанных элементов. Это включает несколько алгоритмов шифрования, которые были AES-кандидатами (включая MARS из IBM). Вы можете скачать патч с http://www.kerneli.org.
Данная заплата добавляет ряд интересных возможностей, прежде всего нацеленных на обнаружение нападения. Вы можете "блокировать" файлы, правила firewall, есть еще ряд интересных параметров. Вы можете скачать патч с http://www.soaring-bird.com.cn/oss_proj/lids.
Проект Linux (ACL) ряд заплат и утилит, чтобы конфигурировать ACL-доступ к файловой системе. Это решение все еще немного ненадежно, поскольку хранит разрешения в файле и действует как уровень фильтрации между файлом и пользователями, что не соответствует ACL (но это начало). Вы можете получить пакет на http://www.braysystems.com/linux/trustees.html.
Rule Set Based Access Control всесторонний набор заплат и утилит, чтобы управлять различными аспектами системы. Доступен на http://www.rsbac.de/rsbac.
LOMAC (Low Water-Mark Mandatory Access Control for Linux) набор заплат, чтобы расширить защиту Linux. Вы можете получить его с ftp://ftp.tislabs.com/pub/lomac.
auditd позволяет Вам использовать регистрирующие средства на уровне ядра (очень мощный инструмент). Вы можете регистрировать сообщения почты, события системы и нормальные элементы, что делает и syslog, но в дополнение к этому Вы можете отслеживать события типа специфических пользователей, открывающих файлы, выполнение программ, setuid-программ, и так далее. Если Вы нуждаетесь в твердом контрольном следе, значит этот инструмент для Вас! Вы можете получить его с ftp://ftp.hert.org/pub/linux/auditd.
Загружаемый модуль ядра, который позволяет Вам управлять максимальным числом процессов на пользователя и максимальным числом ветвлений, очень полезен для shell-серверов. Скачать можно с http://rexgrep.tripod.com/rexfbdmain.htm.
Отладчик ядра SGI доступен на http://oss.sgi.com/projects/kdb.
В SGI написали инструмент, который позволяет Вам делать отладку ядра, дистанционно, не связываясь с консолью. Доступен на http://oss.sgi.com/projects/kgdb.
Written by Kurt Seifried |