В куче самых разных осей есть три белые вороны
- QNX,
Solaris и NetBSD.Они все мало распространены в России и вокруг них создался ореол неприступности
(в плане изучения) и неподъёмной сложности. Но это не так:
изучать их любому человеку, хоть самую малость знакомому с *nix-ами,
легко и просто. В этой статье мы поговорим о NetBSD.Изучать эту ось мы будем не с точки зрения админа или простого пользователя,
а глазами хакера. NetBSD в студию!
Интра
Первое, что необходимо отметить - офигительная мультиплатформенность:
PC, Opteron, SPARC, UltraSPARC, Alpha, Amiga, Atari, m68k, PowerPC...- всего в списке около 50 платформ.
На главной паге NetBSD
ты можешь заценить полный список. Кроме того,мало распространённая система не так привлекает внимание хакеров,
поэтому эксплойтов для этой оси намного меньше,
чем у того же линуха. Пока NetBSD не стала достоянием широких масс,
ты успеешь построить свой суперсекьюрный сервер,
который будет не по зубам ни одному взломщику, и выжать максимум возможностей из этой чудесной оси.
Да и после, я думаю, NetBSD (как и OpenBSD) не утратит своей ценности.
Несмотря на то, что главные представители семейства xBSD выросли в одних
(Берклиевских) стенах, они пошли по разным путям:
FreeBSD больше по linux-тропке, а Net- и OpenBSD так и остались в установленных разработчиками рамках.
Этот жёсткий аудит дал свои плоды - безопасность в NetBSD на высоте.
Ну всё, хватит теории. Давай устанавливать.
Установка
Установить NetBSD можно по FTP, NFS, с локальной диры,
с размонтированной ФС, с флопика или с CD/DVD.
Рассмотрим установку с CD/DVD.
Самый подробный мануал по установке находится в файле
INSTALL. Процесс инсталляции, в общем, стандартен.
Выберешь язык, временную зону, раскладку клавиатуры,
комплектацию устанавливаемых дистрибутивов,
установишь пароль root`а, разобьёшь диск на разделы и т.
д. Кстати, о разделах.
В отличие от фряхи, где все разделы обозначаются
acd0, ad0, ad0s1. . . , в NetBSD названия разделов, как правило,
имеют вид wd0a, sd0a . . . Wd0a обозначает a-раздел IDE диска,
sd0a - a-раздел SCSI диска. Fdisk и disklabel привычные. Если ты собираешься устанавливать NetBSD в качестве хакерского
desktop, то не стоит разбивать диск на /, /usr, /var, /tmp,
/home и др. Такое дробление больше подходит серверам и для рабочей станции избыточно. В качестве оболочки можно выбрать
csh, ksh или sh. Bash`ик надо устанавливать дополнительно.
Инсталляция завершена. Небольшая Эрих Мария Ремарка для тех,
кто знаком с *nix-системами, но никогда не работал с
xBSD. Во время и после установки системы ты будешь добавлять и удалять аккаунты пользователей.
Вся инфа о юзере сохранится в /etc/passwd, а шифрованные пароли не запишутся в
/etc/shadow. Почему? Всё просто - в xBSD файла /etc/shadow нет!
Вместо него используется файл /etc/master. passwd, в котором и хранятся криптованные пароли.
Конфигурирование и перекомпиляция ядра
Конфигурирование и перекомпиляция ядра - один из важнейших аспектов работы с любыми open-source системами.
Всё потому, что ядро - основа любой unix-системы.
Грамотная перекомпиляция имеет много преимуществ:
уменьшение занимаемого ядром пространства на диске
(так как из ядра выключаются все ненужные на твоей машине драйверы),
увеличение производительности системы путём оптимизации ядра под конкретную архитектуру
(зачем тебе нужна поддержка Mac и SPARC, если у тебя PC?) и многое другое.
К тому же некоторые сетевые проги (фаерволы,
например), могут требовать каких-то экзотических опций сети,
ядра и системы, которых не установить без перекомпиляции ядра.
Вместе с тем бытует мнение о непомерной сложности этого предприятия,
поэтому новичкам категорически не советуют заниматься перекомпиляцией ядра.
Типичная страшилка для малышей. Если ты умеешь читать текст на экране и в наличии есть толковый мануал,
отконфигурить ядрышко - раз плюнуть! Этим мы сейчас и займёмся.
Прежде всего ты должен установить сорцы ядра.
Их можно найти на дистрибутивном диске или скачать с ближайшего CVS`а.
В большинстве случаев сорцы ядра находятся в каталоге
/source/sets. Имя архива - syssrc. tgz. Компиляцию ядра можно выполнять двумя способами:
вручную и с помощью скрипта build.sh. В данной статье я рассмотрю оба варианта. Конфигурационный файл ядра лежит в /usr/src/sys/arch/твоя архитектура/conf.
Там открывай GENERIC. Разберём архитектуру i386.
Сначала нужно создать резервную копию конфига ядра:
$ cp GENERIC MYFIRSTKERNEL
$ vi MYFIRSTKERNEL
Закомментируй символом # ненужные строки, а нужные расскоментируй.
Все строки снабжены понятными и краткими комментариями,
поясняющими суть параметра.
Выключи поддержку ненужных устройств, архитектур и т.
д. Есть один интересный полуавтоматический вариант конфигурирования.
Установи через pkgsrc perlовый сценарий adjustkernel. Стоп,
а ты знаешь, как устанавливать софт в xBSD-пакеты и/или сорцы?
Если нет, то отвлечёмся на секунду от ядра и расскажем об установке софта.
Установка программ из сорцов осуществляется стандартными командами
make, make install. Затем для удаления временных файлов набей make
clean, make clean-depends. Последняя команда нужна в том случае,
если устанавливались зависимые пакеты. Также можно набрать make clean
CLEANDEPENDS=1. Эта команда идентична make depends. Для установки прекомпилированных бинарников нужен пакет
pkgtools. Команды управления пакетами напоминают аналогичные соляровые:
pkg_add-добавляет пакет
pkg_delete-удаляет уже установленный
pkg_info-показывает информацию о пакете
pkg_create-создает новый пакет для коллекции пакетов
(что необходимо для создания новых скомпилированных пакетов.
Эта команда автоматически вызывается системой сборки и ее не нужно запускать вручную)
pkg_admin-создает переменные административные функции в системе пакетов
Так, о главных командах управления пакетами рассказала,
а о создании пакетов как-нибудь в другой раз-это довольно большая тема и заслуживает отдельной статьи.
Теперь возвращаемся к ядру. Ты установил (теперь уже со знанием дела) пакет с
adjustkernel. Топай в каталог с конфигом ядра и набивай:
$ adjustkernel GENERIC > MYFIRSTKERNEL
Сценарий adjustkernel анализирует вывод dmesg и на основе этого генерирует минимальный конфигурационный файл.
Подчёркиваю - минимальный! Всё остальное в конфиг ты должен дописать сам. Перед компиляцией ядрышка нужно проверить корректность конфига командой
$ config MYFIRSTKERNEL
Если в конфиге есть ошибки, то config сообщит об этом и выведет их на экран.
Если ошибок нет, config создаст все необходимые файлы для компиляции.
Ошибок нет? Тогда начинай компилировать. Командуй:
$ cd ../compile/MYFIRSTKERNEL
$ make depend
$ make
Вывод команды make помещается в файл netbsd в каталоге компиляции.
Затем переносишь файл в корневой каталог, предварительно сделав резервную копию старого файла
netbsd. Становись root`ом и распоряжайся:
# mv /netbsd /netbsd.old
# mv netbsd /
Ребуться:
# shutdown -r now
Всё, новое ядро установлено.
Для автоматического компилирования ядра делай следующее:
$ cd /usr/src
$ ./build.sh -u kernel=MYFISRKERNEL
По умолчанию build.sh удаляет старые обьектные файлы и всё собирает заново,
что в большинстве случаев излишне - достаточно пересобрать те обьектники,
зависимости которых были изменены. Флаг -u позволяет сделать это.
По окончании работы build. sh выведет на экран информацию о том,
где можно найти новое ядро. Что делать, если ты напортачил так,
что система не грузится. Во время загрузочного 5-ти секундного ожидания нажми пробел и набери:
> boot netbsd.old -s
Вот нам и пригодилась резервная копия файлика
netbsd. Теперь набивай следующее:
# fsck /
# mount /
# mv netbsd.old netbsd
# reboot
Примечание: всё вышеизложенное насчёт восстановления
системы предполагает, что перед этим ты перезагрузился в single-user
mode (однопользовательский режим). Всё, система спасена,
можешь продолжать мучить ядро дальше. Как видишь,
ничего сложного в конфигурировании ядра нет.
Да и страшного тоже: ты в любой момент можешь восстановить свою убитую систему.
Помни главное: бэкапы правят миром. Удачных тебе перезагрузок,
конфигурирования и компилирования!
Шифрование данных
Шифрование данных - это, безусловно, одна из сильных сторон
NetBSD. И тебе, как профессиональному хакеру, думаю,
будет очень интересно и важно разобраться в этом.
Ведь если к тебе вдруг неожиданно нагрянут парни из отдела "К" (тьфу-тьфу-тьфу,
не дай бог), выйдет очень неприятно, если на твоем винте plain-текстом будут лежать все твои списки паролей от взломанных серваков,
заказы и прочие хакерские атрибуты. Ну а что бы этого не произошло,
читай дальнейшее вдумчиво и не забывай применять всё сказанное на деле.
Начнём.
Основа шифрования в NetBSD-некое псевдо-устройство
cgd (и, соответственно, одноимённый драйвер). Устройство cgd ведёт себя в системе точно так же,
как и обычное дисковое устройство. Непосредственные шифрацию/дешифрацию диска выполняет драйвер
cgd, а управление криптованным диском осуществляется утилиткой
cgdconfig. Разбиение его на разделы-программой
disklabel. Монтирование - mount, создание свап раздела
- swapctl, а организация файловой системы - newfs. А теперь разберём cgd по косточкам...