2019: OpenBSD 6.5
Во-первых, в OpenBSD 6.5 появилась переносимая версия bgpd, адаптированная для работы в других операционных системах. Во-вторых, Xenocara и tcpdump теперь лишены привилегий суперпользователя, а компоновщиком по умолчанию для amd64 и i386 стал LLD. Для архитектуры mips64 добавлена поддержка сборки с использованием транслятора Clang.
В свою очередь, Clang получил усовершенствованные механизмы блокировки атак с использованием возвратно-ориентированного программирования (ROP). Кроме того, в Clang была улучшена производительность и безопасность при включенном механизме безопасности RETGUARD. Этот механизм предназначен для усложнения процесса выполнения эксплоитов, созданных с помощью заимствованных частей кода и ROP. RETGUARD теперь также используется в качестве защиты стека на amd64 и arm64.
Среди других существенных изменений в OpenBSD 6.5 можно также отметить усовершенствование поддержки MPLS, усиление защиты от кибератак с использованием ROP, а также добавление рекурсивного DNS-сервера unwind и собственной реализации утилиты rsync. Ядро OpenBSD получило детектор неопределенного поведения.
Помимо прочего, новая версия ОС получила обновление для почтового сервера OpenSMTPD. В частности, в smtpd.conf теперь присутствует новый критерий сопоставлений «from rdns». С его помощью сеансы могут выбираться на основе резолвинга обратного DNS.
Resetting the Root Password
passwd(1)
-
Boot into single user mode.
This part of the process varies depending on the
platform in use.
For amd64 and i386, thepauses for a few seconds to give you a chance to provide parameters
to the kernel.
Here you the flag can be passed to
boot(8):probing: pc0 com0 com1 mem disk: hd0+ hd1+ >> OpenBSD/amd64 BOOT 3.33 boot> boot -s
-
Mount the partitions.
Both and will need to be mounted
read-write.# fsck -p / && mount -uw / # fsck -p /usr && mount /usr
-
Change the root password.
You already have root privileges from being in single user mode,
so you will not be prompted to provide the current password.# passwd
-
Boot into multiuser mode.
This can be done by either pressing CTRL-D to resume the normal boot
process or by entering .
Страницы руководства
Ниже приведен список наиболее полезных страниц для новых пользователей:
-
afterboot(8)
— вещи, требующие внимания после первой полной загрузки -
help(1)
— помощь для новых пользователей и администраторов -
hier(7)
— раскладка файловых систем -
man(1)
— отображение страниц руководства -
adduser(8) и
rmuser(8)
— добавление или удаление новых пользователей -
reboot(8), halt(8) и
shutdown(8)
— остановка и перезагрузки системы -
syspatch(8)
— загрузка -
sysupgrade(8)
— обновление до следующего релиза OpenBSD или нового снапшота -
dmesg(8)
— повторный показ сообщений ядра в момент загрузки -
doas(1)
— запуск команд от другого пользователя -
tmux(1)
— терминальный мультиплексор -
ifconfig(8)
— конфигурирование параметров сетевых интерфейсов -
ftp(1)
— загрузка файлов из сети (поддерживается FTP/HTTP/HTTPS) -
login.conf(5)
— формат файла конфигурации класса входа в систему -
sendbug(1)
— отправка сообщения об ошибке
man.openbsd.org
В общем, если вы знаете имя команды или страницы руководства, вы можете
прочитать её, выполнив .
Если вы не знаете имя команды
или не находит страницу руководства,
вы можете выполнить поиск в базе данных страниц руководства, выполнив
или , где
— это вероятное слово, которое
может присутствовать в заголовке страницы, которую вы ищете.
$ apropos "time zone" tzfile(5) - time zone information zdump(8) - time zone dumper zic(8) - time zone compiler
$ man -k cron cron(8) - clock daemon crontab(1) - maintain crontab files for individual users crontab(5) - tables for driving cron $ man 5 crontab
Security Updates
errataannounce
Getting these fixes can be done in a few different ways:
-
Apply binary patches (available on amd64, arm64, i386)
The syspatch(8) utility
can be used to upgrade any files in need of security or reliability fixes
on a supported OpenBSD release.
This is the quickest and easiest method to get the base system up to date. -
Update the system to -stable
Fetch (or update) your source tree with CVS,
then recompile the kernel and userland. -
Patch the affected files individually
While applying fixes from the errata page typically requires less time
than a CVS checkout/update and rebuild, there is no universal set of
instructions to follow.
Sometimes you must patch and recompile one application, sometimes more. -
Upgrade the system to -current
As all fixes are applied to the -current codebase, updating the system
to the latest is a good way
to get all the fixes at once.
However, running -current is not for everyone.
packages
-
Use binary packages (available on amd64, arm64, i386, sparc64)
Updated binary packages for -release and -stable systems are provided
to address security issues or for other major fixes.
Simply call pkg_add(1) with
the flag to get the new files. -
Use the -stable ports tree
Fetch (or update) your ports tree,
run the script to
list any packages in need of rebuilding, and issue
in the affected port directory.
In some cases, existing ports will need to be uninstalled before
rebuilding. -
Upgrade the system to -current
Binary packages for -current are rebuilt on a regular basis, and these
new packages will include any security fixes.
ports-changes
Multibooting
fdisk(8)
If you are adding OpenBSD to an existing system, you will probably need to
create some free space before installing OpenBSD.
In addition to your existing system’s native tools,
gparted
may be useful for deleting or resizing existing partitions.
Preferably use one of the four primary MBR partitions for booting OpenBSD.
Extended partitions may not work.
rEFInd is reported to usually
work.
GRUB is reported to usually
fail.
In either case, you are completely on your own.
Windows
this articleEasyBCD
You will need a copy of your OpenBSD install’s
.
You can copy it to a file using a process similar to:
# dd if=/dev/rsd0a of=openbsd.pbr bs=512 count=1
Once OpenBSD’s PBR is copied to the Windows system partition, you need a shell
with administrative privileges to run the following commands:
C:\Windows\system32> bcdedit /create /d "OpenBSD/i386" /application bootsector The entry {0154a872-3d41-11de-bd67-a7060316bbb1} was successfully created. C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} device boot The operation completed successfully. C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} path \openbsd.pbr The operation completed successfully. C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} device partition=c: The operation completed successfully. C:\Windows\system32> bcdedit /displayorder {0154a872-3d41-11de-bd67-7060316bbb1} /addlast The operation completed successfully.
Системные демоны (System Daemons)
rc(8)rc.d(8)
Большинство демонов и сервисов, которые поставляются вместе с OpenBSD,
контролируются во время загрузки системы при помощи переменных, установленных в
/etc/rc.conf.
В этом файле присутствуют строки подобной этой:
httpd_flags=NO
httpd(8)rc(8)
Не редактируйте файл rc.conf(8).
Вместо этого используйте утилиту rcctl(8)
для внесение изменений в .
Это упрощает процесс обновления, так как все изменения находятся в одном файле,
который не затрагивается во время обновления.
Например, чтобы запустить демон apmd(8)
для CPU scaling, можно сделать:
# rcctl enable apmd # rcctl set apmd flags -A # rcctl start apmd
Я забыл свой пароль root
passwd(1)
-
Загрузка в однопользовательском режиме.
Эта часть процесса различается для разных
платформ.
Для amd64 и i386, наесть пауза для введения параметров ядра.
В примере ниже видно как мы передали флаг для
boot(8):probing: pc0 com0 com1 mem disk: hd0+ hd1+ >> OpenBSD/amd64 BOOT 3.33 boot> boot -s
-
Монтирование разделов.
Оба раздела и должны быть подмонтированны
в режиме чтения и записи.# fsck -p / && mount -uw / # fsck -p /usr && mount /usr
-
Запустите passwd(1)
для смены пароля root.
Поскольку вы загрузились в однопользовательском режиме, у вас уже есть
права root, поэтому пароль вводить не портебуется. -
Загрузка в многопользовательском режиме.
Это можно сделав нажав «CTRL-D» для перехода в нормальный режим загрузки,
или выполнив команду
reboot(8).
Использование NFS
В этом разделе приводятся шаги по простой установке NFS.
В этом примере описывается NFS-сервер в LAN с клиентами из LAN.
Здесь не обсуждаются вопросы безопасности NFS. Мы считаем, что вы уже установили
фильтрацию пакетов или другую защиту с помощью фаервола для предотвращения
доступа извне.
Настройка NFS сервера
portmap(8)mountd(8)nfsd(8)
# rcctl enable portmap mountd nfsd
В этом примере наш сервер имеет адреc .
Этот NFS-сервер обслуживает только клиентов из своей сети.
Первый шаг в установке NFS — настройка файла
exports(5):
$ cat /etc/exports /docs -alldirs -ro -network=10.0.0 -mask=255.255.255.0
Теперь можно запустить сервисы на сервере.
# rcctl start portmap mountd nfsd
# rcctl reload mountd
Подключение ФС через NFS
mount(8)mount_nfs(8)
Для монтирования ФС , которая находится на машине ,
к себе в , сделайте:
# mount -t nfs 10.0.0.1:/docs /mnt
fstab(5)
# echo '10.0.0.1:/docs /mnt nfs ro,nodev,nosuid 0 0' >> /etc/fstab
fsck(8)
При обращении к монтируемому каталогу от пользователя root, сервер
автоматически отображает root доступ к имени пользователя
и группе
Это важно знать при рассмотрении прав доступа
к файлам. Например, возьмем файл с таким набором прав:
-rw------- 1 root wheel 0 Dec 31 03:00 _daily.B20143
Пользователи и группы, которые должны иметь root-доступ, настраиваются при помощи
файла exports(5) на стороне сервера.
Проверка состояния NFS
rpcinfo(8)
$ rpcinfo -p 10.0.0.1 program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 633 mountd 100005 3 udp 633 mountd 100005 1 tcp 916 mountd 100005 3 tcp 916 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs
showmount(8)nfsstat(1)
Установка системы
Установка OpenBSD штатно возможна многими способами, в том числе: с компакт-диска, с USB-флешки, с дискеты, а также по сети посредством PXE. Из-за ограничений отдельных аппаратных платформ некоторые способы установки могут быть недоступны. OpenBSD — одна из немногих популярных современных операционных систем общего назначения, не обладающей встроенным графическим и/или локализованным инсталлятором. Штатный инсталлятор представляет собой большой sh-скрипт, с возможностью автоматической установки.
При загрузке системы с установочного носителя, перед пользователем появляется экран с тремя пунктами:
- инсталляция (Install)
- обновление (Upgrade)
- выход в командную среду (Shell)
Таким образом установочный носитель можно использовать в качестве загрузочного носителя при возникновении неполадок в компьютере.
Процесс установки разделяется на три этапа:
- разметка диска
- выбор пакетов, их распаковка и запись на диск
- минимальные пост-инсталляционные настройки
Полная установка OpenBSD разбита на некоторое количество компонентов. Не каждое приложение требует наличия всех компонентов. Вот краткое описание:
- bsd — Это ядро. (Необходимо)
- bsd.mp — Ядро для многопроцессорных (SMP) машин
- bsd.rd — Ядро с виртуальным RAM-диском
- base.tgz — Базовая система OpenBSD (Необходимо)
- etc.tgz — Содержит все файлы в /etc (Необходимо)
- comp.tgz — Содержит компиляторы и необходимые для разработки инструменты, заголовочные файлы и библиотеки. (Рекомендуется)
- man.tgz — Руководства (маны) (Рекомендуется)
- misc.tgz — Разная информация, документация по настройке
- game.tgz — Игры
- xbase.tgz — Базовая установка X11
- xetc.tgz — Содержит конфигурационные файлы /etc/X11 и /etc/fonts
- xfont.tgz — Содержит сервер шрифтов и шрифты X11
- xserv.tgz — Серверы X11
- xshare.tgz — Руководства, установки локали, заголовочные файлы и др. для X
Процесс загрузки в amd64
boot_amd64(8)
- Master Boot Record (MBR) и GUID Partition Table (GPT).
Подробную информацию можно найти в
fdisk(8). - Partition Boot Record (PBR).
Первые 512 байт OpenBSD раздела на загрузочном диске содержат first
stage boot loader
biosboot(8).
Он устанавливается при помощи утилиты
installboot(8). - Second stage boot loader .
PBR запускает программу boot(8),
задача которой — поиск и загрука ядра.
Using drive 0, partition 3. <- MBR Loading...... <- PBR probing: pc0 com0 com1 mem <- /boot disk: hd0+ hd1+ >> OpenBSD/amd64 BOOT 3.33 boot> booting hd0a:/bsd 4464500+838332 =0x56cfd0 entry point at 0x100120 Copyright (c) 1982, 1986, 1989, 1991, 1993 <- Kernel The Regents of the University of California. All rights reserved.
Disk Partitioning
Unlike some other operating systems, OpenBSD encourages users to split their
disk into a number of partitions, rather than just one or two large ones.
Some of the reasons for doing so are:
- Security:
Some of OpenBSD’s default security features rely on filesystem
such as
, , or
. - Stability:
A user or a misbehaved program can fill a filesystem with garbage if they
have write permissions for it.
Your critical programs, which hopefully run on a different filesystem,
do not get interrupted. -
fsck(8):
You can mount partitions that you never or rarely need to write to as
most of the time, which will eliminate the need for
a filesystem check after a crash or power interruption.
hier(7)
- Since some packages need to be started from a
filesystem, it is recommended to have a separate
partition. - Very small partitions can become troublesome when you need to upgrade.
- A partition can be nice.
New version of the OS?
Leave your partition untouched, wipe and reload
everything else. - You may also want to create an
for backing up your
root filesystem. - A system exposed to the internet should have a separate
and maybe even a separate . -
Compiling some ports from source can take
huge amounts of space on your and
partitions.
Разрабатываемые Snapshot’ы
Последний доступный snapshot это все, что обычно необходимо для запуска -current.
Если вы хотите собрать все из исходников, используйте только последний доступный
snapshot.
Этого можно добиться при помощи опции утилиты
sysupgrade(8).
Проверьте страницу о
последних -current и использования snapshots,
чтобы ознакомиться с последними изменениями конфигурации или дополнительными
шагами, необходимыми для сборки из исходников.
Не исключено, что вы обнаружите ошибки в snapshots.
Собственно это и является причиной, почему они собираются и доступны всем для
скачивания.
Если вы нашли баг, не стесняйтесь сообщить о нем,
если этого еще не сделал кто-то другой.
Network Configuration
installation process
Identifying and Setting Up Network Interfaces
dmesg(8)
fxp0 at pci0 dev 10 function 0 "Intel 82557" rev 0x0c: irq 5, address 00:02:b3:2b:10:f7 inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
fxp(4)
The ifconfig(8) utility
will show what network interfaces have been identified on a system.
$ ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200 index 3 priority 0 llprio 3 groups: lo inet 127.0.0.1 netmask 0xff000000 fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:02:b3:2b:10:f7 index 1 priority 0 llprio 3 media: Ethernet autoselect (100baseTX full-duplex) status: active inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255 enc0: flags=0<> index 2 priority 0 llprio 3 groups: enc status: active pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33200 index 4 priority 0 llprio 3 groups: pflog
The netstart(8) script configures
network interfaces at boot time using
hostname.if(5) files, where
«if» is replaced by the full name of each interface.
The example above would use the file , containing
the following options:
inet 10.0.0.38 255.255.255.0
# ifconfig fxp0 10.0.0.38 255.255.255.0
-
enc(4)
— Encapsulating interface -
lo(4)
— Loopback interface -
pflog(4)
— Packet Filter logging interface
ifconfig(8)
DNS Resolution
resolv.conf(5)resolvd(8)
$ cat /etc/resolv.conf search example.com nameserver 125.2.3.4 nameserver 125.2.3.5 lookup file bind
hosts(5)
Activating the Changes
netstart(8)
# sh /etc/netstart
ifconfig(8)
Even though it’s possible to completely reconfigure networking on a running
OpenBSD system, a reboot is recommended after any significant changes.
Checking Routes
netstat(1)route(8)
$ netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Mtu Prio Iface default 10.0.0.1 UGS 4 16 - 12 fxp0 224/4 127.0.0.1 URS 0 0 32768 8 lo0 127/8 127.0.0.1 UGRS 0 0 32768 8 lo0 127.0.0.1 127.0.0.1 UH 2 15 32768 1 lo0 10.0.0/24 link#1 UC 1 4 - 4 fxp0 10.0.0.1 aa:0:4:0:81:d UHL 1 11 - 1 fxp0 10.0.0.38 127.0.0.1 UGHS 0 0 - 1 lo0 $ route show Routing tables Internet: Destination Gateway Flags Refs Use Mtu Prio Iface default 10.0.0.1 UGS 4 16 - 12 fxp0 base-address.mcast localhost URS 0 0 32768 8 lo0 loopback localhost UGRS 0 0 32768 8 lo0 localhost localhost UH 2 15 32768 1 lo0 10.0.0/24 link#1 UC 1 4 - 4 fxp0 10.0.0.1 aa:0:4:0:81:d UHL 1 11 - 1 fxp0 10.0.0.38 localhost UGHS 0 0 - 1 lo0
Setting Up Aliases on an Interface
hostname.if(5)
In this example, two aliases are added to the interface ,
which was configured as with a netmask of
.
$ cat /etc/hostname.dc0 inet 192.168.0.2 255.255.255.0 inet alias 192.168.0.3 255.255.255.255 inet alias 192.168.0.4 255.255.255.255
Сборка релиза
Инструкции по сборке релиза находятся в
release(8).
Этот процесс использует бинарники в , процесс создания
которых описывался выше.
Замечание: если вы захотите использовать эти файлы для установки или обновлении
через/используя HTTP(S), создайте файл , который будет
содержать список всех файлов, вошедьших в новый релиз.
# ls -nT > index.txt
signify(1)
Настройка вашей системы
Создайте ФС на с установленной
mount(8) опцией.
Соответствующая fstab(5)
строка должна быть похожа на эту:
c73d2198f83ef845.m /dest ffs rw,nosuid,noperm 1 2
# chown build /dest # chmod 700 /dest
# mkdir /dest/{,x}base
Использование noperm mfs раздела
mfs
swap /dest mfs rw,nosuid,noperm,-P/var/dest,-s1.5G,noauto 0 0
# mkdir -p /var/dest/{,x}base # chown -R build /var/dest # chmod -R 700 /var/dest
# mount /dest
Использование S/Key
md5sha1rmd160
Настройка S/Key
# skeyinit -E
skeyinit(1)
$ skeyinit Password: Enter new secret passphrase: Again secret passphrase: ID ericj skey is otp-md5 100 oshi45820 Next login password: HAUL BUS JAKE DING HOT HOG
otp-md5(1)
Генерация S/Key паролей
skeyinfo(1)
$ skeyinfo -v otp-md5 95 oshi45820 $ otp-md5 95 oshi45820 Enter secret passphrase: NOOK CHUB HOYT SAC DOLE FUME
$ otp-md5 -n 5 95 oshi45820 Enter secret passphrase: 91: SHIM SET LEST HANS SMUG BOOT 92: SUE ARTY YAW SEED KURD BAND 93: JOEY SOOT PHI KYLE CURT REEK 94: WIRE BOGY MESS JUDE RUNT ADD 95: NOOK CHUB HOYT SAC DOLE FUME
Использование S/Key для входа в систему
$ ftp localhost Connected to localhost. 220 oshibana.shin.ms FTP server (Version 6.5/OpenBSD) ready. Name (localhost:ericj): ericj:skey 331- otp-md5 93 oshi45820 331 S/Key Password: JOEY SOOT PHI KYLE CURT REEK 230 User ericj logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.
ssh(1)
$ ssh -l ericj:skey localhost otp-md5 91 oshi45821 S/Key Password: SHIM SET LEST HANS SMUG BOOT Last login: Thu Apr 7 12:21:48 on ttyp1 from 156.63.248.77 $
История и распространение
Использование дистрибутивов BSD, в процентах от общего количества пользователей
В декабре 1994 года, Тео де Раадта, сооснователя NetBSD, попросили уйти в отставку и освободить занимаемую им должность старшего разработчика и члена основной команды NetBSD. Причины этого не вполне ясны, хотя есть основания полагать, что это связано с личными столкновениями внутри команды и с его почтовой перепиской.
В октябре 1995 года Тео де Раадт основал OpenBSD, новый проект, форкнутый от NetBSD 1.0. Первый выпуск OpenBSD 1.2 был сделан в июле 1996 года, а затем в октябре того же года вышла OpenBSD 2.0. С тех пор проект придерживался графика и выпускал релизы каждые шесть месяцев, каждый из которых поддерживается в течение одного года. Последний выпуск, OpenBSD 5.9, появился 29 марта 2016.
25 июля 2007, Боб Бек разработчик OpenBSD объявил о создании OpenBSD Foundation, некоммерческой корпорации которая будет действовать в качестве единой точки контакта для лиц и организаций, которым требуется юридическое лицо, с кем можно иметь дело, когда они хотят поддержать OpenBSD.
Трудно сказать, насколько широко используется OpenBSD, её разработчики не собирают и не публикуют статистику её использования, однако в сентябре 2005 года опрос, проведённый среди пользователей BSD, показал, что 32.8% пользователей так же использовали и OpenBSD. Таким образом, OpenBSD является второй по популярности ОС, среди систем, основанных на BSD, после FreeBSD.
Установка пакетов
pkg_add(1)
# pkg_add rsync Ambiguous: choose package for rsync a 0: <None> 1: rsync-3.1.2p0 2: rsync-3.1.2p0-iconv Your choice:
12
Можно сразу указать в одной строке список имен пакетов, которые затем будут
по очереди установленны вместе с зависимостями.
Можно так же указать путь к пакету, который надо установить, будь это локальный
файл или адрес URL. Поддерживаемыми URL являются http, https, ftp и scp.
Для некоторых пакетов в процессе установки предоставляется дополнительная
информация, касательно его конфигурации или специфики запуска.
# pkg_add jove jove-4.16.0.73p0: ok --- +jove-4.16.0.73p0 ------------------- See /usr/local/share/jove/README about changes to /etc/rc or /etc/rc.local so that the system recovers jove files on reboot after a system crash
Для надежности, если вы устанавливаете пакет, который уже устанавливали ранее
и удалили, конфигурационные файлы, которые были изменены, не будут перезаписаны.
Это относится и к обновлению пакетов.
Иногда вы можете столкнуться с ошибкой как в этом примере:
# pkg_add xv xv-3.10ap4:jpeg-6bp3: ok xv-3.10ap4:png-1.2.14p0: ok xv-3.10ap4:tiff-3.8.2p0: ok Can't install xv-3.10ap15 because of libraries |library X11.16.1 not found | not found anywhere Direct dependencies for xv-3.10ap15 resolve to png-1.6.31 jasper-1.900.1p5 tiff-4.0.8p1 jpeg-1.5.1p0v0 Full dependency tree is png-1.6.31 tiff-4.0.8p1 jasper-1.900.1p5 jpeg-1.5.1p0v0
Что можно проверить:
- Система установленна не полностью: вы не установили файл, содержащий
данную библиотеку. Просто
, содержащий необходимую
библиотеку. - Ваша система (или пакет) устарели: у вас слишком старая версия необходимой
библиотеки. Удостовертесь, что и система и устанавливаемый в ней пакет,
последней версии. - Если вы используете -current, снапшот базовой части системы и пакет могут
быть не синхронизованы. Подождите, пока зеркала не синхронизируются, и
попробуйте снова.
Миграция на OpenBSD
хорошей книге
Вот некоторые из часто встречающихся различий между OpenBSD и другими
вариантами Unix.
- OpenBSD — это Unix в стиле BSD, следующий дизайну 4.4BSD. Linux и Solaris
являются системами в стиле System V. Некоторые Unix-подобные операционные
системы смешивают характеристики System V и BSD. Распространенным местом,
где это вызывает путаницу, являются .
OpenBSD использует систему rc(8). - OpenBSD — это законченная система. Это не ядро плюс утилиты, которые
можно обновлять отдельно друг от друга. - OpenBSD поддерживает дерево портов для
предоставления стороннего программного обеспечения.
Предварительно скомпилированные пакеты создаются
и распространяются командой портов OpenBSD. - OpenBSD использует CVS для отслеживания изменений исходного кода. OpenBSD
был первым проектом, в котором появился анонимный
CVS, который позволяет каждому в любое время извлечь полное дерево исходных
текстов для любой версии OpenBSD.
Также есть веб-интерфейс. - OpenBSD проходит тщательный и непрерывный аудит безопасности для
обеспечения качества и безопасности кода. - OpenBSD не поддерживает файловых систем с журналированием.
Вместо этого мы используем функциональность
(soft updates)
Fast File System (FFS). - OpenBSD поставляется с фильтром сетевых пакетов
(Packet Filter (PF)). Это означает, что трансляция сетевых адресов
(Network Address Translation), очереди и фильтрация обрабатываются с помощью
pfctl(8),
pf(4) и
pf.conf(5). - Командной оболочкой OpenBSD по умолчанию является
ksh, основанная на общедоступной
оболочке Корна (Korn Shell). Оболочки, такие как bash и многие другие, могут
быть добавлены из пакетов. - Устройства именуются по имени драйвера, а не по типу.
Другими словами, нет устройств и .
Это будет для карты Intel PRO/1000 Ethernet,
для устройства Broadcom BCM57xx или BCM590x Ethernet,
для беспроводного устройства RaLink и т. Д. - OpenBSD/i386, amd64 и несколько других платформ используют
двухслойную систему разбиения диска, где первый уровень —
это раздел видимый в BIOS c помощью ,
а второй — . - Некоторые другие операционные системы рекомендуют вам настраивать ядро
для вашей машины. Пользователям OpenBSD рекомендуется просто использовать
стандартное ядро GENERIC, предоставляемое и протестированное разработчиками.
Использование fdisk
fdisk(8)
Увидеть таблицу разделов на диске можно так:
# fdisk sd0 Disk: sd0 geometry: 553/255/63 Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S ------------------------------------------------------------------------ 0: 12 0 1 1 - 2 254 63 Compaq Diag. 1: 00 0 0 0 - 0 0 0 unused 2: 00 0 0 0 - 0 0 0 unused *3: A6 3 0 1 - 552 254 63 OpenBSD
На полностью чистом диске должен быть boot code в MBR (master boot record), прежде
чем его можно будет использовать для загрузки.
Обычно все, что вам нужно сделать для его создания, это:
# fdisk -iy sd0
При помощи можно активировать интерактивный режим редактирования:
# fdisk -e sd0 Enter 'help' for information fdisk: 1>
Если в вашей системе вы специально создали раздел для maintenance или диагностики,
рекомендуется его не трогать или создать его перед установкой OpenBSD.
Диски и разделы
платформы
Определение дисков
-
wd(4):
IDE диски: IDE, SATA, MFM или ESDI диски, или флешки, подключенные
к wdc(4) или
pciide(4) интерфейсу. -
sd(4):
SCSI диски: устройства, использующие SCSI комманды, USB диски, SATA диски
подключенные к ahci(4) интерфейсу,
и группы дисков (disk arrays), подключенные к RAID контроллеру.
Разделы и файловые системы (ФС)
-
disklabel(8) раздел,
который также называют разделом со своей ФС(filesystem partitions). -
fdisk(8) раздел, иногда
называемый Master Boot Record (MBR) разделом.
-
:
Раздел загрузочного диска является вашим root разделом. -
:
Раздел загрузочного диска является вашим swap разделом. -
:
Раздел всегда весь диск (entire disk).
newfs(8)
# newfs sd2a
opendev(3)
Уникальные disklabel идентификаторы (DUID)
fstab(5)diskmap(4)
$ sysctl hw.disknames hw.disknames=wd0:bfb4775bb8397569,cd0:,wd1:56845c8da732ee7b,wd2:f18e359c8fa2522b
Pre-Installation Checklist
- Machine name
- Hardware installed and available:
- Verify compatibility with your hardware.
You may want to consult the platform-specific installation notes,
especially if you’re using one of the non-x86 CPU architectures.
They contain detailed instructions and any possible caveats: - If wireless internet is your only option, does your card require
additional firmware?
If so, you’ll need to manually download it to a USB drive or similar
device, then use
fw_update(1)
to enable it after OpenBSD is installed.
- Verify compatibility with your hardware.
- Install method to be used
- Desired disk layout:
- Does existing data need to be saved elsewhere?
- Will OpenBSD coexist on this system with another OS?
If so, how will each system be booted?
Will you need to install a boot manager? - Will the entire disk be used for OpenBSD, or do you want to
keep an existing partition/OS? (or space for a future one) - How do you wish to sub-partition the OpenBSD part of your disk?
- Do you want ?
- Network settings, if not using DHCP:
- Domain name and DNS address
- IP address and subnet masks for each NIC
- Gateway address
Об OpenBSD
OpenBSDцелями
Какие причины использовать OpenBSD?
- OpenBSD запускается на множестве различных аппаратных платформ.
- Многие профессионалы в области безопасности считают,
что OpenBSD самая безопасная
UNIX-подобная операционная система; это является результатом
непрекрающегося тщательного аудита исходных кодов на предмет уязвимостей. - OpenBSD это полнофункциональная UNIX-подобная операционная система,
доступная в исходном и двоичном виде бесплатно. - OpenBSD интегрирует передовые технологии безопасности, подходящие для
построения сетевых экранов и
частных сетевых сервисов в распределённом окружении. - OpenBSD извлекает выгоду из сильного постоянного развития во многих
областях, предлагая возможности работать с появляющимися технологиями и
международным сообществом разработчиков и конечных пользователей.
OpenBSD benefits from strong ongoing development in many areas, offering
opportunities to work with emerging technologies and an international
community of developers and end users. - OpenBSD пытается свести к минимуму необходимость настройки.
Для подавляющего большинства пользователей OpenBSD просто работает на их
аппаратном обеспечении для их нужд.
Насколько OpenBSD свободна?
здесь
Разработчики OpenBSD поддерживают проект в основном из собственных средств.
Это включает в себя время, потраченное на непосредственно разработку проекта,
оборудование, используемое для поддержки множества портов, сетевые ресурсы,
используемые для распространения OpenBSD, и время на ответы на
вопросы и изучение сообщений об ошибках пользователей.
Разработчики OpenBSD не являются независимо богатыми, и даже небольшой
вклад времени, оборудования и ресурсов имеет большое значение.
- X.org
- LLVM/Clang
- GCC
- Perl
-
NSD and
Unbound - ncurses
- binutils
- gdb
- libfido2
инновацийпакетов
2017: Функция рандомизации ядра
В июле 2017 года появилась информация о том, что разработчики OpenBSD тестируют новую функцию операционной системы, которая позволит радикально повысить ее защищенность от кибератак — систему рандомизации ядра.
Технология, получившая название KARL (Kernel Address Randomized Link — Рандомизированные связи адресов ядра), подразумевает, что при каждой перезагрузке или каждом обновлении в случайном порядке формируется новый двоичный файл ядра на основе подключения объектных модулей и runtime-компонентов. В результате указатели между функциями и данными ядра каждый раз оказываются новыми, а значит, новым оказывается и само ядро.
Рандомизация OpenBSD: при каждой загрузке ОС ядро будет «новым»
Технологию KARL разрабатывает сам Тео де Раадт, основатель проекта OpenBSD. KARL существенным образом отличается от технологии ASLR (рандомизации адресного пространства), применяемого во многих современных операционных системах в качестве одного из средств защиты от вредоносного ПО. При использовании ASLR меняются адресные пространства памяти, так что, например, эксплойты, нацеленные на определенные адреса в оперативной памяти машины, не могут их найти и, соответственно, оказываются бессильны.
В случае с KARL каждый раз меняется структура всего ядра, а не только памяти. Эта функция разрабатывается в течение последних двух месяцев, и уже доступна в тестовых релизах OpenBSD 6.1, говорится в сообщении от 4 июля 2017 года.
В Linux 4.12 с прошлой недели активна по умолчанию система рандомизации адресного пространства ядра (Kernel Address Space Layout Randomization — KASLR). Аналогичная система давно уже применяется в Windows.
Ключевая разница между KARL и KASLR заключается в том, что в первом случае в одну и ту же область памяти загружаются разные версии двоичного файла ядра, а во-втором — одно и то же ядро загружается в случайную область памяти.
KARL выглядит более эффективным средством защиты ядра, чем даже KASRL, — считает Георгий Лагода, генеральный директор компании SEC Consult Services. — В этом случае все ключевые функции ОС рандомизируются и киберзлоумышленникам и вредоносному ПО окажется намного сложнее определить адрес интересующей их «мишени» — он будет каждый раз разным. |
Будет ли методика KARL реализована в будущих версиях Linux или Windows, пока неизвестно. На данный момент она не применяется нигде, кроме OpenBSD.
Идеология OpenBSD
Проект OpenBSD известен высшим качеством пользовательской документации, которая по праву занимает первое место среди всех систем, основанных на BSD, хотя каждая из них имеет отличную документацию. При создании OpenBSD, основатель проекта решил, что исходные коды системы должны быть легко доступны для всех и что любой должен иметь возможность получить к ним доступ в любое время, поэтому он совместно с помощником создал первый публичный анонимный CVS сервер. В то время, традиционно, доступ к исходному коду больший программ и программных систем имелся лишь у небольшой команды разработчиков. Основатели проекта пришли к выводу, что такая политика идёт вразрез с философией открытого исходного кода и неудобна для соучастников. Поэтому такой шаг стал по настоящему революционным и позволил пользователям играть более активную роль в разработке системы, дал понять веру проекта в открытый и публичный доступ к текстам исходного кода операционной системы.
OpenBSD не включает в себя закрытые бинарные драйвера в дереве исходных кодов и не допускает соглашения о неразглашении.
Так как OpenBSD базируется в Канаде, никакие экспортные ограничения США в области криптографии не применяются, позволяя разработчикам в полной мере использовать современные алгоритмы для шифрования. Например, пространство подкачки делится на небольшие секции, и каждая секция шифруется своим собственным ключом, гарантируя, что конфиденциальные данные не просачиваться в незащищенной части системы.
OpenBSD активно использует случайные данные и поведение приложений, что делает их менее предсказуемыми и более защищёнными, более трудными для атаки. Например PID’ы создаются и назначаются процессам случайно, системный вызов bind() использует случайные номера портов, файлы создаются со случайным параметром inode и IP-датаграммы имеют случайные идентификаторы. Этот подход также позволяет обнаруживать ошибки в работе ядра и пользовательского пространства.
Политика команды OpenBSD по открытости и качеству исходных кодов распространяется также и на документацию аппаратной части.
Целью проекта OpenBSD является создание максимально открытой системы, поэтому все новые программы, которые включаются в операционную систему обязательно должны распространяться по лицензии MIT или BSD. Широко используется GNU General Public License имеет слишком ограничительный характер по сравнению с ними.
С этим фактом связаны проверки исходного кода утилиты IPFilter, в ходе которой обнаружилось, что код в более чем сотне файлов оказался нелицензирован или лицензирован с условиями, неустраивающими команду разработчиков OpenBSD. В итоге некоторые фрагменты кода были удалены, остальные были заменены. Также во время этой проверки было удалено всё программное обеспечение, разрабатываемое Дэниэлом Бернштейном.
После этого команде разработчиков пришлось написать программное обеспечение с нуля или использовать ПО с подходящей лицензией. Разработчики OpenBSD также заменили инструменты лицензированные GPL (такие как diff, grep и pkg-config) их BSD эквивалентами.