Ядро Linux

Обзор

Обновление и компиляция ядра

Версии ядра

Патчи (заплатки) для ядра

Отладка ядра

Обзор

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.

Linux Intrusion Detection System Patch (LIDS)

Данная заплата добавляет ряд интересных возможностей, прежде всего нацеленных на обнаружение нападения. Вы можете "блокировать" файлы, правила firewall, есть еще ряд интересных параметров. Вы можете скачать патч с http://www.soaring-bird.com.cn/oss_proj/lids.

Проект Linux ACL

Проект Linux (ACL) ряд заплат и утилит, чтобы конфигурировать ACL-доступ к файловой системе. Это решение все еще немного ненадежно, поскольку хранит разрешения в файле и действует как уровень фильтрации между файлом и пользователями, что не соответствует ACL (но это начало). Вы можете получить пакет на http://www.braysystems.com/linux/trustees.html.

RSBAC

Rule Set Based Access Control всесторонний набор заплат и утилит, чтобы управлять различными аспектами системы. Доступен на http://www.rsbac.de/rsbac.

LOMAC

LOMAC (Low Water-Mark Mandatory Access Control for Linux) набор заплат, чтобы расширить защиту Linux. Вы можете получить его с ftp://ftp.tislabs.com/pub/lomac.

auditd

auditd позволяет Вам использовать регистрирующие средства на уровне ядра (очень мощный инструмент). Вы можете регистрировать сообщения почты, события системы и нормальные элементы, что делает и syslog, но в дополнение к этому Вы можете отслеживать события типа специфических пользователей, открывающих файлы, выполнение программ, setuid-программ, и так далее. Если Вы нуждаетесь в твердом контрольном следе, значит этот инструмент для Вас! Вы можете получить его с ftp://ftp.hert.org/pub/linux/auditd.

Fork Bomb Defuser

Загружаемый модуль ядра, который позволяет Вам управлять максимальным числом процессов на пользователя и максимальным числом ветвлений, очень полезен для shell-серверов. Скачать можно с http://rexgrep.tripod.com/rexfbdmain.htm.

Отладка ядра

KDB v0.6 (встроенный отладчик)

Отладчик ядра SGI доступен на http://oss.sgi.com/projects/kdb.

kGDB (дистанционный отладчик)

В SGI написали инструмент, который позволяет Вам делать отладку ядра, дистанционно, не связываясь с консолью. Доступен на http://oss.sgi.com/projects/kgdb.

 

Back

Security Portal

Written by Kurt Seifried