автор Kevin Lo, перевод mereale
оригинал http://www.onlamp.com/pub/a/bsd/2005/07/14/openbsd_live.html
Я недавно преподавал курсы по операционной системе OpenBSD для
преподавателей в университетах, которые были заинтересованы основами,
конфигурированием и настройками OpenBSD, в основном, в сетевой среде.
Для этих курсов я решил использовать Live CD, так что "студентам" не
требовалось ничего устанавливать. Им даже не требовались жесткие
диски, чтобы загружать коробочный OpenBSD на их PC! Мой Live CD
уделяет основное внимание безопасности, сетевым конфигурациям,
браузере Firefox, и так далее.
Эта статья описывает процесс создания Live CD на OpenBSD/i386
3.7-current. Проблем с 3.7-release также не должно быть.
Начало
Прежде чем начать, вам понадобится следующее:
- Компьютер архитектуры i386 с установленной OpenBSD.
- CD резак.
- Болванка, желательно типа RW.
- Терпение.
"Постройка" системы.
Первое, что вам потребуется сделать, - скачать текущие исходники
системы. Если вы не знаете, как это делается, пролистайте FAQ по
OpenBSD.
Затем, создайте директорию /livecd, она понадобится для хранения
содержания компакт-диска. Создайте три резервные директории в /livecd:
$ mkdir -p /livecd/backups/{var,etc,dev}
Теперь, заархивируйте tar'ом все, что вы хотите видеть на вашем Live
CD, и разархивируйте это все в /livecd (или просто скопируйте все
нужные директории, как вам удобней). Скопируйте ваши /var и /etc
директории в /livecd/backups/{var,etc}:
Все это придаст Live CD его основную структуру файлов и директорий.
Следующий шаг - сконфигурировать загрузочное ядро. В
/usr/src/sys/arch/i386/conf переименуйте RAMDISK_CD в RAMDISK_CD.OLD и
скопируйте конфигурацию ядра GENERIC в RAMDISK_CD. Отредактируйте этот
файл. Раскомментарьте строки, содержащие config bsd swap generic и
добавьте следующие:
option RAMDISK_HOOKS
option MINIROOTSIZE=3800
config bsd root on cd0a
Также, вы можете скачать пример конфигурации RAMDISK_CD с
http://www.onlamp.com/bsd/2005/07/14/examples/RAMDISK_CD. Это
настроит ramdisk и позволит root'у находиться в CD.
Вы получите сообщение об ошибке при добавлении DDB поддержки. Чтобы
устранить эту проблему, используйте этот Makefile.in diff в
/usr/src/distrib/i386/common/Makefile.inc:
Далее, установите пакет crunch, который позволяет создавать crunched
binaries, для загрузки, установки и для создания fixit-дисков.
# cd /usr/src/distrib/crunch && make && make install
Наконец, создайте CD, введя команду make в директории
/usr/src/distrib/i386/ramdisk_cd:
# cd /usr/src/distrib/i386/ramdisk_cd && make
Из /usr/src/distrib/i386/ramdisk_cd скопируйте два файла, bsd и
cdrom36.fs в /livecd директорию.
Отредактируйте /livecd/etc/{fstab,rc} и /livecd/backups/etc/{fstab,rc}
так, чтобы загрузка сработала правильно.
Затем, отредактируйте ваш CD /livecd/etc/rc и/livecd/etc/fstab так,
чтобы смонтировать соответствующие файловые системы, включая CD. Также
отредактируйте бекапы /livecd/backups/etc/rc
и/livecd/backups/etc/fstab, чтобы включить CD и memory filesystems.
Директорий, нуждающихся в возможности быть writable, три - /var, /tmp
и /etc. CD монтирует их как memory filesystems (используя mfs).
Создание ISO-образа.
В директории /livecd введите следующие команды в одной строке:
Это займет некоторое время, но после вы будете иметь готовый
записанный ISO-образ, который будет ждать вас в /tmp/livecd.iso. Smile
Запись на компакт-диск.
Для записи iso-образа на компакт-диск используйте команду cdrecord:
Я использовал OpenBSD Live CD for NAT/firewall довольно долгое время в
университете. Установка довольна-таки проста. Мои сетевые интерфейсы -
fxp0 и fxp1. Для активизации PF и для того, чтобы он автоматически
загружался при старте системы, отредактируйте /etc/rc.conf.local,
добавив туда строку pf=YES.
Для разрешения IP forwarding убедитесь, что net.inet.ip.forwarding=1
присутствует в /etc/sysctl.conf.
Наконец, настройте NAT/firewall в /etc/pf.conf:
int_if = "fxp0"
ext_if = "fxp1"
tcp_services = "{ 22, 113 }"
icmp_types = "echoreq"
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
# options
set block-policy return
set loginterface $ext_if
# scrub
scrub in all
# nat/rdr
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1
port 8021
# filter rules
block all
pass quick on lo0 all
# provide unrestricted Internet access to internal computers
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
# allow the following incoming traffic to the firewall
pass in on $ext_if inet proto tcp from any to ($ext_if)
port $tcp_services flags S/SA keep state
pass in inet proto icmp all icmp-type $icmp_types keep state
pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
Это контролирует все движение от внутренней сети до внешней сети и
переадресовывают все внутреннее движение к порту 21 (FTP) и к порту
8021 на шлюзе. Это также защищает от нежелательного входящего
проникновения. Это хорошее начало в безопасности, которое, впрочем, вы
можете изменить, как вам хочется.
Самое лучшее, конечно, то, что это все на CD, так что я могу носить
свою систему с собой, где бы я ни находился.
Ресурсы
* How to Make a Bootable, Full System OpenBSD 3.2 CDROM
http://www.blackant.net/other/docs/howto-bootable-cdrom-openbsd.php
* OpenBSD CD Bootable Firewall System
http://www.jtan.com/jtanoss/cdboot/