АНДРЕЙ БИРЮКОВ, специалист по информационной безопасности. Работает в крупном системном интеграторе. Занимается внедрением решений по защите корпоративных ресурсов
Linux Live CD
Создаем загружаемый диск
Это удобный и быстрый инструмент для решения различных задач системного администрирования. Рассмотрим процесс создания собственного Live CD.
Какие бывают Live CD?
Загружаемые дистрибутивы Live CD в последние годы стали необходимым в повседневной работе инструментом для системного администратора. Ведь дистрибутив Live CD не требует установки на жесткий диск, умещается на одном компакт-диске, не требователен к ресурсам сервера, но при этом обладает достаточным функционалом, необходимым для решения базовых задач. К тому же всегда удобно, когда под рукой имеются все необходимые программы и утилиты, и для того чтобы воспользоваться ими, достаточно просто загрузиться с компакт-диска, не прибегая к подчас нетривиальной процедуре установки и настройки этих программ.
На сегодняшний день существуют сотни Live CD-дистрибутивов, построенных на основе различных редакций Linux: Debian, Red Hat, Slax и других. Есть также Live CD-версии для BSD-систем, например, Frenzy, операционная система, образ которой умещается на маленьком компакт-диске 210 Мб. Диск с Frenzy я всегда ношу с собой, и он несколько раз выручал меня при решении различных проблем с загрузкой рабочей операционной системы. Но не стоит думать, что мир загружаемых дистрибутивов ограничивается только UNIX-решениями. Существуют Live CD-версии Windows. Например, загружаемая версия Windows XP с набором необходимых приложений официально используется правоохранительными органами Германии для сбора сведений о данных, хранящихся на компьютере подозреваемого. Но операционная система Windows, как и большинство продуктов Microsoft, не является бесплатной, соответственно, для разработки собственного Live CD-дистрибутива необходимо приобретать лицензию. Поэтому в данной статье мы не будем рассматривать создание Live CD-дистрибутивов на основе ОС Windows.
А зачем нам свой Live CD-дистрибутив?
Итак, ранее мы выяснили, что существует множество различных Live CD-дистрибутивов, предназначенных для решения разнообразных задач, таких как использование для системного администрирования, на рабочих станциях, задач информационной безопасности и других. Получить полный список дистрибутивов вы можете по адресу [1]. Конечно, замечательно, когда кто-то уже столкнулся с аналогичной проблемой и уже предоставил на всеобщее обозрение ее решение. Например, создал Live CD-дистрибутив, содержащий установленный межсетевой экран. Но вот проблема, в вашей компании межсетевой экран интегрирован с системой учета трафика. В случае сбоя сервера с межсетевым экраном, даже если вы загрузитесь с соответствующего Live CD и быстро экспортируете необходимые сетевые настройки с флеш-карты, вам все равно для интеграции с системой учета трафика необходимо компилировать соответствующие приложения, что требует дополнительных затрат времени. В противном случае администратор информационной безопасности не будет какое-то время получать информацию о посещаемых сотрудниками веб-ресурсах. А для крупных госучреждений это, как правило, очень плохо. А как было бы удобно, в случае сбоя жесткого диска на сервере, где установлен программный межсетевой экран, просто загрузиться с Live CD, который автоматически продолжит работу в штатном режиме.
Другой пример, вам часто приходится посещать филиалы компании, и вам необходим набор нестандартных приложений, используемых в корпоративной сети. Вместо того чтобы таскать все время с собой ноутбук, можно просто воспользоваться Live CD-диском с набором необходимых программ.
И наконец мой случай. Для решения задач информационной безопасности мне потребовались некоторые утилиты, которые не входили в состав основных Security Live CD, таких как Bug Track, Auditor, и других. Компилировать их каждый раз при загрузке с Live CD было не слишком удобно, поэтому я задумался над сборкой собственного Live CD. Наличие готового набора нужных утилит существенно упрощает проведение аудита и исследование информационной безопасности.
Приступаем к работе
Надеюсь, в предыдущем разделе я достаточно наглядно пояснил, зачем нужно собирать свой собственный дистрибутив Live CD. Теперь приступим непосредственно к разработке. Для этого нам потребуется базовый дистрибутив Linux, виртуальная машина, например, VMware, и программа для записи компакт-дисков. В качестве базового дистрибутива я буду использовать Knoppix, так как данная версия Linux наилучшим образом приспособлена для различных модификаций.
Загружаемый дистрибутив Knoppix является одним из наиболее популярных дистрибутивов для создания загружаемых операционных систем. Причин этому несколько. Прежде всего это поддержка по умолчанию большого количества оборудования от различных производителей, благодаря которому вам не нужно начинать работу с системой с поиска и настройки различных драйверов. Еще одной причиной является то, что в Knoppix можно модифицировать практически все – от ядра операционной системы до компонентов рабочего стола. Также данная система имеет удобный интерфейс, позволяющий даже плохо знакомому с операционными системами семейства Linux пользователю без особых сложностей работать в X Window. В состав Knoppix по умолчанию входит множество различных утилит и приложений, таких как OpenOffice, различные медиаплееры, средства работы с сетью и другие программы. В общем, для разработки своего первого загружаемого дистрибутива Knoppix более чем подходит, если в дальнейшем вы захотите создать свой загружаемый дистрибутив на основе другой редакции Linux, то по адресу [2] вы можете найти несколько статей, посвященных работе с другими дистрибутивами.
Для создания дистрибутива вам необходим компьютер со следующими аппаратными характеристиками: от 1 Гб RAM, не менее 3 Гб свободного дискового пространства. Далее я приведу описание процесса создания и модификации собственного дистрибутива на основе Knoppix.
Подготовив машину, приступим непосредственно к модификации дистрибутива:
1. Скачайте последнюю версию дистрибутива с официального сайта knoppix.net. На момент написания этой статьи на сайте была доступна как CD, так и DVD-образ Knoppix, воспользуемся CD-версией.
2. Загрузитесь с компакт-диска Knoppix. Проследите за тем, чтобы операционная система правильно определила используемые аппаратные компоненты. При использовании VMware Workstation с этим проблем не возникает, однако при использовании других систем виртуализации возможны определенные трудности.
3. В открывшемся окне необходимо выбрать значок консоли (Konsole), и введите команду su чтобы стать суперпользователем. По умолчанию в Knoppix учетная запись root использует пустой пароль. Вся дальнейшая процедура создания загружаемого дистрибутива должна производиться под учетной записью root.
4. Обеспечьте доступ к нужному разделу жесткого диска. Для этого необходимо заранее определить, какой из разделов диска будет использоваться для этой процедуры. Как уже упоминалось ранее, на диске требуется от 3 до 5 Гб дискового пространства. Открыть раздел необходимо с правами «чтение-запись». Чтобы это сделать, нужно выбрать на рабочем столе значок, который относится к необходимому разделу, щелкнуть по нему правой кнопкой мыши, демонтировать, а затем снова смонтировать с правами «чтение-запись». В качестве файловой системы будем использовать ext3. Хотя для многих более удобным будет использование следующих команд:
# mke2fs -j /media/hda1
# umount /media/hda1
# mount –o rw /media/hda1
5. Создайте рабочий каталог, то есть каталог, который будет использоваться для создания нового дистрибутива. Здесь и далее будем предполагать, что рабочим разделом у нас является /hda1. Для создания каталога используйте следующую команду:
# mkdir /media/hda1/knoppix
6. Теперь необходимо проверить доступную память. Для этого воспользуйтесь командами:
# df -h /media/hda1
Filesystem Size Used Avail Use% Mounted on
/dev/root 2.5M 20K 2.4M 1% / |
# free –m
total used free shared buffers cached
Mem: 503 237 266 0 8 143
-/+ buffers/cache: 85 418
Swap: 0 0 0 |
7. Если у вас менее 1 Гб свободной оперативной памяти, то лучше создать файл подкачки. Для этого выполните следующие команды:
# dd if=/dev/zero of=/media/hda1/knoppix/myswap bs=1M count=1000
# mkswap /media/hda1/knoppix/myswap
# chmod 0600 /media/hda1/knoppix/myswap
# swapon /media/hda1/knoppix/myswap
Результатом выполнения данных команд будет создание, разметка и подключение пустого файла подкачки размером 1000 Мб.
8. Создайте главный и исходный каталоги. Нужно создать два отдельных каталога, в которых будет вестись основная работа. Каталог master/KNOPPIX содержит файлы, необходимые, чтобы запустить компакт-диск, а каталог source/KNOPPIX содержит файлы, которые образуют файловую систему Knoppix, которые впоследствии будут сжаты в единый образ с рабочим названием Knoppix. Чтобы создать эти два рабочих каталога, введите следующее:
# mkdir -p /media/hda1/knoppix/master/KNOPPIX
# mkdir -p /media/hda1/knoppix/source/KNOPPIX
9. Скопируйте файлы Knoppix. Каталог KNOPPIX на запущенном загружаемом компакт-диске содержит структуру файловой системы Knoppix, которую вам требуется настроить. Выполните следующую команду:
# cp -Rp /KNOPPIX/* /media/hda1/knoppix/source/KNOPPIX
Учтите, что выполнение данной команды может занять несколько минут, так как производится копирование большого количества файлов. Можно добавить ключ -v, и тогда весь процесс копирования будет отображаться в консольном окне.
10. Теперь скопируйте стартовые страницы, которые отображаются при загрузке Linux. Для этого введите следующее:
# cp /cdrom/index.html /media/hda1/knoppix/master
# cp /cdrom/autorun.* /media/hda1/knoppix/master
# cp /cdrom/cdrom.ico /media/hda1/knoppix/master
11. Скопируйте файлы с компакт-диска. Для этого нужно скопировать в свой рабочий каталог все остальные файлы, необходимые при запуске компакт-диска. Не нужно копировать только файл образа KNOPPIX размером 600 Мб. Сделать это можно вручную или с помощью следующей команды:
# cp /cdrom/KNOPPIX && find . -size -10000k -type f -exec cp -p -parents '[]' /media/hda1/knoppix/master/KNOPPIX/ \;
12. Теперь, когда все необходимые файлы скопированы в рабочий каталог, необходимо изменить свой корневой каталог (выполнить chroot) на каталог source KNOPPIX и изменить структуру этого каталога так, чтобы он содержал приложения, файлы и каталоги, которые вы хотите включить в свой загружаемый компакт-диск. Для этого используйте команду:
# chroot /media/hda1/knoppix/source/KNOPPIX
# mount -t proc /proc proc
В случае появления ошибки раздела /etc/fstab продолжайте работу, это не критично и никак не влияет на результат. Также можно его просто скопировать.
13. На этом шаге необходимо произвести модификацию приложений, входящих в состав Knoppix. Думаю, что это самый важный шаг, так как именно на нем мы производим модификацию исходного дистрибутива, заменяя в нем ненужные приложения на свои. Ненужных приложений в дистрибутиве довольно много, и удаление каждого из них может занять продолжительное время, поэтому я предлагаю удалить только те из них, которые занимают больше всего места. Для этого прежде всего необходимо узнать, какие пакеты установлены в системе на данный момент. Сделать это в дистрибутиве Knoppix можно с помощью следующих команд:
# dpkg-query -W -showformat ='$(Installed-Size) $(Package)/n' | sort -nr | less
или проще:
# dpkg-query -l | sort -nr | less
В результате выполнения этой команды, на экран будет выведен список установленных пакетов:
…
ii outguess 0.2-5 Universal Steganographic tool
ii openvpn 2.0.6-1 Virtual Private Network daemon
ii openssl 0.9.8a-8 Secure Socket Layer (SSL) binary and related c
ii openssh-server 4.3p2-1 Secure shell server, an rshd replacement
ii openssh-client 4.3p2-1 Secure shell client, an rlogin/rsh/rcp replace
ii openoffice.org-debian-menus 2.0.2-3 OpenOffice.org desktop integration
ii openoffice-de-en 2.0.2-1 The OpenOffice suite, see http://www.openoffic
ii openhackware 0.4.1-2 OpenFirmware emulator for PowerPC
ii nxviewer 1.4.0.2-0alpha4 NoMachine NX - nesting X server with roundtrip
ii nxtunnel-server 1.4.0-m2-1 server portion of nxtunnel
ii nxtunnel-client 1.4.0-m2-1 client portion of nxtunnel
ii nxssh 1.4.0-m2-1 NoMachine NX - custom and modified OpenSSH
ii nxsetup-knoppix 0.3-1 Simple frontend for (almost) automatic nxserve
ii nxproxy 1.4.0.2-0alpha4 NoMachine NX - X protocol compression proxy
ii nxlibs 1.4.0.2-0alpha4 NoMachine NX - common agent libraries
ii nxdesktop 1.4.0.2-0alpha4 NoMachine NX - nesting X server with roundtrip
ii nxclient 1.4.0-91.2 NoMachine NX - NX Client.
ii nxagent 1.4.0.2-0alpha4 NoMachine NX - nesting X server with roundtrip
ii nvtv 0.4.7-3 tool to control TV chips on NVidia cards under
ii ntpdate 4.2.0a+stable-8.1 The ntpdate client for setting system time
… |
14. Как видно из списка, в составе дистрибутива имеется множество различных пакетов, естественно, многие из них нам не понадобятся. В качестве примера удалим OpenOffice как приложение, занимающее больше всего места. А также приложения, предназначенные для игр (мы же делаем диск для работы, а не для развлечений). Начнем с OpenOffice, для этого сначала нужно увидеть, что содержит данный пакет:
# dpkg-query -s openoffice-de-en
knoppix@2[~]$ dpkg-query -s openoffice-de-en
Package: openoffice-de-en
Status: install ok installed
Priority: optional
Section: unknown
Installed-Size: 353204
Maintainer: Klaus Knopper <knoppix@knopper.net>
Architecture: i386
Version: 2:2.0.2-1
Replaces: openoffice-de-en
Depends: libnspr4
Description: The OpenOffice suite, see
http://www.openoffice.org/
This release uses a quick&dirty hack to support english
as well as german layout and templates in KNOPPIX. |
На экран будет выведена статистика по данному пакету. Из полученного вывода статистики можно узнать как объем и версию установленного приложения, так и его зависимости.
15. Теперь удалим OpenOffice. Для этого необходимо выполнить следующее:
# apt-get remove openoffice-de-en
В процессе выполнения команды вам будет необходимо подтвердить удаление данного пакета.
И проделаем то же самое для игр на примере kmahjongg:
knoppix@2[~]$ dpkg-query -s kmahjongg
Package: kmahjongg
Status: install ok installed
Priority: optional
Section: games
Installed-Size: 1584
Maintainer: Debian Qt/KDE Maintainers
<debian-qt-kde@lists.debian.org>
Architecture: i386
Source: kdegames
Version: 4:3.5.2-1+b2
Depends: kdelibs4c2a (>= 4:3.5.2-1), libc6 (>= 2.3.6-6),
libgcc1 (>= 1:4.1.0), libkdegames1 (>= 4:3.5.2), libqt3-mt (>= 3:3.3.6), libstdc++6 (>= 4.1.0)
Description: the classic mahjongg game for KDE project
Your mission in this game is to remove all tiles from
the game board. A matching pair of tiles can be removed,
if they are 'free', which means that no other tiles block
them on the left or right side. |
Удалим ненужные пакеты группой:
# aptitude purge openoffice-de-en kmahjongg
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
openoffice-de-en
0 upgraded, 0 newly installed, 1 to remove and 1 not
upgraded.
Need to get 0B of archives.
After unpacking 362MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 103699 files and directories currently installed.)
Removing openoffice-de-en ...
Removing `diversion of /usr/bin/soffice to
/usr/bin/soffice.distrib by openoffice-de-en'
… |
16. В качестве примера также добавим новый пакет в дистрибутив. Для этого необходимо сначала скопировать нужный пакет на виртуальную машину под управлением Knoppix. Нужный пакет можно скачать напрямую из Интернета или же переписать на виртуальную машину. Для того чтобы переписать c основной машины, необходимо сначала на Knoppix запустить сервер Samba. Сделать это можно следующим образом: выберите раздел Knoppix -> Services -> Start Samba Server. Затем укажите пароль для пользователя knoppix. Теперь ваша виртуальная машина Knoppix доступна для обмена файлами с основной машиной.
Но вернемся к установке пакетов. Установим текстовый процессор abiword, для этого необходимо указать следующую команду:
# apt-get install abiword
17. Теперь, когда мы удалили ненужное, необходимо удалить мусор, дабы не занимать лишнее место на нашем загружаемом диске. Просмотрим «бесхозные» пакеты:
# deborphan | less
18. Выбранные для удаления пакеты можно удалить с помощью следующей команды:
# deborphan | xargs apt-get -y remove
19. Теперь очистим кэш, в котором также могут находиться удаляемые пакеты:
# apt-get clean
20. Удалим директории, имеющие временное или динамическое наполнение:
# umount /proc
21. Когда все необходимое для создания собственного дистрибутива подготовлено, необходимо сделать сжатый образ, полученный в результате всех преобразований файловой системы:
# mkisofs -R -U -V "My Knoppix" -publisher "Ivan I. Ivanov" -hide-rr-moved -cache-inodes -no-bak /
-pad /media/hda1/knoppix/source/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > /media/hda1/knoppix/master/KNOPPIX/KNOPPIX
Параметр -R добавляет записи SUSP и RR, которые должны иметь атрибуты файловой системы, рассчитанные на систему Linux (например, длинные имена файлов, символические связи и т.д.).
Параметр -U разрешает имена файлов, которые могут включать в себя символы, не соответствующие стандарту ISO 9960 (начальные точки, многоточия и т.д.).
Параметр hide-rr-moved скрывает каталог RR_Moved в образе, переименовывая его в .rr_moved.
Cache-inodes позволять сберечь пространство на компакт-диске.
Параметр no-bak исключает файлы резервных копий.
Наконец, параметр -pad служит для добавления служебной информации в конец образа.
Следует также отметить, что кроме изменения состава пакетов, в Knoppix можно также модифицировать и другие параметры системы, такие как предустановленный сетевой адрес, имя хоста и другие настройки. Однако в рамках этой статьи мы такие модификации рассматривать не будем.
22. Последний шаг в создании своего дистрибутива – это выполнение команды mkisofs для создания образа всего диска. Добавим параметры в командную строку, чтобы сделать возможной загрузку содержимого компакт-диска:
# cd /media/hda1/knoppix/master# mkisofs -pad -l -r -J -v -V "MyKnop" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin / -c boot/isolinux/boot.cat -hide-rr-moved -o /media/hda1/knoppix/knoppix.iso /media/hda1/knoppix/master
23. В результате выполнения данной команды будет создан файл knoppix.iso в каталоге /media/hda1/knoppix. Данный iso-образ представляет собой файловую систему ISO 9660 CD-ROM, которая разрешает длинные имена файлов (опция ?l), расширения и права доступа SUSP, полезные для систем Linux или UNIX (-r) и каталожные записи Joilet (-J). Этот образ готов к проверке с помощью системы виртуализации и записи на компакт-диск.
24. В простейшем случае для записи образа на компакт-диск достаточно воспользоваться командой cdrecord:
# cdrecord -v -data knoppix.iso
25. Теперь запустите сервер Samba так, как это описано в пункте 16, и скопируйте созданный iso-образ на основную машину.
26. Создайте новую виртуальную машину и загрузите ее с iso-образа.
27. После успешной загрузки системы (что уже является хорошим знаком) убедимся в отсутствии удаленных пакетов. Для этого нажмите Knoppix -> Office. Как видите, OpenOffice отсутствует, зато появился abiword. Модификация дистрибутива прошла успешно.
***
Итак, ваш первый загружаемый дистрибутив Knoppix был успешно создан. Теперь вы можете с помощью описанных выше действий вносить изменения в свой дистрибутив и производить его тестирование, однако советую не увлекаться чрезмерным удалением приложений, так как это может привести к неработоспособности всей операционной системы из-за существующих зависимостей некоторых приложений и системных файлов.
Завершая статью, хочу отметить, что помимо приведенной методики модификации Knoppix, существуют также и другие способы, один из которых приведен в [3].
- Список существующих дистрибутивов Linux Live CD – http://www.livecdlist.com/?sort=&showonly=.
- Статьи по модификации дистрибутивов Linux – http://linux-livecd.ru/doc_main.html.
- Модификация Knoppix – http://stirnimann.com/mystuff/doc/knoppix.txt.