Документация по ОС FreeBSD Пятница, 07.02.2025, 00:09
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Новые грани BSD. Детальный обзор OpenBSD 4.5 и NetBSD 5.0 [2009]

В сегодняшнем UNIX-мире развитие Linux и FreeBSD напоминает бесконечную гонку за модой, превращающую операционные системы в клубок запутанного кода, а сообщества - в рассадник троллей и надменных гуру. На этом фоне стоящие в сторонке Open/NetBSD могут стать настоящей отдушиной и примерами того, как мудрые люди создают красивые, лишенные попсовости операционки.

OpenBSD. Лишь две удаленные уязвимости за все время существования

OpenBSD - проект Theo de Raadt и группы единомышленников, отпочковавшийся от NetBSD в 1995 году и начатый с целью создать полностью свободную операционную систему с оглядкой на высокую стабильность и безопасность. OpenBSD всегда славилась своей непотопляемостью, и, если описывать систему одним предложением, то получится что-то вроде: «Система для параноидальных админов». И это правда – код OpenBSD просто кишит многочисленными проверками на валидность данных, права доступа и полномочия. Для затруднения возможных атак рандомизируется абсолютно все, начиная от ID процессов и номеров портов и заканчивая страницами виртуальной памяти. Любой код перед включением в официальную ветку досконально проверяется и анализируется на предмет ошибок. И даже стороннее ПО, включенное в базовую поставку системы, распространяется с многочисленными доработками и заплатками, улучшающими стойкость. В рамках проекта написаны такие вещи, как незаменимый инструмент любого администратора OpenSSH и едва ли не самый продвинутый и удобный в настройке брэндмауэр pf, который сегодня можно найти в любой ОС семейства BSD.

Борьба за качество и легальность кода - еще одна отличительная черта разработчиков OpenBSD. Будучи поборниками лицензии BSD и толково написанного, лаконичного кода, участники проекта готовы доработать и переписать любой компонент системы, созданный сторонними разработчиками. В составе OpenBSD уже распространяется собственная реализация системы контроля версий CVS, сервер и клиент для протоколов NTP, SNMP, OSPF, BGP, а в 4.5 войдет еще и демон SMTP. Обсуждается возможность создания простого и быстрого компилятора языка Си и замены GNU binutils. Разработчики всегда ратовали за открытие спецификаций на «железо» и без лишних слов брались за написание открытых аналогов драйверов, огромное количество которых перекочевало в NetBSD и FreeBSD.
Лучшее применение OpenBSD - сетевые маршрутизаторы и мосты, где ОС в полной красе покажет свои возможности.

OpenBSD 4.5. Дата выхода: 1 Мая 2009

В начале ноября 2008 года увидела свет OpenBSD 4.4. В состав ее вошли OpenSSH 5.1, пригодный к использованию OpenCVS, утилиты sysmerge и tcpbench, а также несколько новых драйверов и улучшений в подсистемах ядра (самым главным из которых стала поддержка WPA/WPA2 для беспроводных устройств) и стандартных утилитах. Что же нас ждет в новом релизе?

Первое, что обращает на себя внимание - smtpd, безопасный, легкий, удобный в настройке SMTP-демон, который нацелен не столько заменить всемогущий sendmail, сколько обеспечить простоту развертывания и удобство использования. В конфигурационном файле используется pf-подобный синтаксис:

Пример конфигурационного файла smtpd

listen on localhost port 25
hostname localhost
accept for domain "localhost" deliver to mbox "/var/mail/%u"
accept from $local for all relay

Сервер уже включен в дерево исходных кодов и умеет все, что может потребоваться в 95% случаев. В состав версии 4.5 вошел OpenSSH 5.2, который может похвастать такими нововведениями:

  • Клиентская опция '-y' для отправки логов в syslog вместо stderr, что может потребоваться при запуске в режиме демона.
  • Директива конфигурационного файла ForceCommand теперь принимает аргументы для внутреннего sftp-сервера.
  • sshd стал понимать опции PermitEmptyPasswords и AllowAgentForwarding, прописанные в блоках Match.
  • Удаленное перенаправление портов с прослушиваемым портом 0 (в этом случае сервер должен динамически выделить порт и сообщить его клиенту).
  • Поддержка протокола SOCKS4A для динамического перенаправления портов, которое, кстати, теперь можно настроить и через командную строку клиента, доступную по ~C.

Кроме новых возможностей, в OpenSSH 5.2 устранены две теоретические уязвимости и исправлен десяток багов. Код стека bluetooth синхронизирован с NetBSD и по умолчанию включен в код ядра для платформ alpha, amd64, armish, hppa, i386, landisk, macppc, sparc64 и zaurus. Добавлены демон btd(8), утилита btctl(8) и конфигурационный файл bt.conf(5) для управления bluetooth-устройствами.

В код беспроводного стека добавлена начальная реализация 802.11x PMKSA кэширования и преаутентификации, поддержка протокола BIP (Broadcast/Multicast Integrity Protocol) для 802.11w. Включен код дефрагментации для приема MSDU и MMPDU фрагментов. Драйвера ipw(4) и iwi(4) теперь поддерживают WPA. Опция chan, переданная ifconfig(8), приводит к печати всех поддерживаемых каналов, а scan выводит список досягаемых точек доступа.

Из ядра удален код реализации /dev/drum и /dev/prandom. Добавлена поддержка семейства процессоров ARM9e для платформы ARM. DRM-модули inteldrm и radeondrm, необходимые для поддержки аппаратного ускорения на соответствующих видеокартах, теперь по умолчанию включены в ядро. Генератор случайных чисел отныне возвращает собственное значение для каждого процессора. Список поддерживаемых платформ пополнился еще двумя позициями: gumstix и OpenMoko, хотя реализация последней настолько примитивна, что может использоваться только для тестирования.

Добавлено новое псевдоустройство pflow(4), которое экспортирует данные IP аккаунтинга через UDP в совместимом с NetFlow 5 формате. Чтобы настроить интерфейс pflow, нужно выполнить следующие команды:

# ifconfig pflow0 create
# ifconfig pflow0 flowsrc 192.168.1.2 flowdst 192.168.1.1:1234

Для примера произведем учет ICMP-запросов, приходящих на внешний сетевой интерфейс:

host1# vi /etc/pf.conf

pass in on $ext_if inet proto icmp to ($ext_if) keep state (pflow)

host1# pfctl -f /etc/pf.conf
host2# ping host1
host1# pfctl -vss | grep -B1 pflow | head
all icmp 77.41.XX.YY:1 <- 212.34.XX.YY:45333 0:0
age 00:00:02, expires in 00:00:09, 2:0 pkts, 168:0 bytes, rule 14, pflow

Псевдоустройство pfsync(4) переведено на использование протокола пятой версии, который не совместим с предыдущими. В gcc и gdb добавлена поддержка PIE (Position Independent Executables), которые рандомизируют размещение кода, данных, стека и блока библиотек внутри исполняемого файла. Утилиты fstat(1), pstat(8) и некоторые переменные sysctl больше не показывают смещения в файлах и другую информацию для пользователей, не владеющих этими файлами (root по-прежнему видит все). Ядро OpenBSD обзавелось поддержкой алгоритмов HMAC-MD5, HMAC-SHA1, HMAC-SHA256, AES-128-CMAC и AES «Key Wrap», которые используются для ассиметричного шифрования других ключей (смотри /usr/src/sys/crypto).

В resolv.conf теперь можно указывать номер порта для записей nameserver, то есть строка вида «nameserver 17.16.67.143:5353» будет корректно обработана, и все запросы пойдут на порт 5353 вместо стандартного 53-го.

Множество изменений было произведено в aucat. Теперь утилита потребляет меньше процессорных мощностей, умеет слушать несколько сокетов с отдельным уровнем громкости для каждого потока и может работать в режиме обратной петли. Все это превращает программу в настоящий аудио-сервер, способный выступать в качестве замены jack или PulseAudio. Для примера приведу команду запуска aucat в режиме сервера с двумя слушающими сокетами, громкость одного из которых установлена в 65 (default), а второго - выкручена на полную (max):

$ aucat -l -v 65 -s default -v 127 -s max

Стандартный клиент ftp теперь умеет игнорировать псевдокаталоги (чтобы рекурсивные закачки не создавали бесконечный цикл), корректно докачивать файлы, поддерживает прокси, защищенные паролем, и флаг '-n' для получения только обновленных файлов.

Во многих утилитах исправлены ошибки и выловлены утечки памяти. Решена проблема DH0_DHCP_OPTIONS_OVERLOAD в dhcpd(8) и проблема неправильного обновления в коде BGP, которая могла привести к незапланированному закрытию сессии. Закрыты бреши безопасности в коде OpenSSL и named(8). В коде ACPI устранена паника на нетбуках Asus eeePC 1000H и добавлен воркараунд для сбойных ACPI BIOS'ов.

NetBSD. Работает даже на тостерах

NetBSD - первая ОС семейства BSD, родившаяся в 1993 году на кодовой базе 4.3BSD Net/2, 4.4BSD-Lite и 4.4BSD-Lite2, распространяемых калифорнийским университетом Беркли.

Лозунг NetBSD – «Конечно, NetBSD может работать и на этом» (Of course it runs NetBSD). Система портирована на 60 аппаратных платформ, для каждой из которых доступны тысячи прекомпилированных пакетов. Причем сама система сборки пакетов, именуемая pkgsrc, способна работать практически на любой POSIX-совместимой системе без каких-либо затруднений.

Что тут скажешь? Целостность ОС и проработанность дизайна всех компонентов системы, ставшие следствием высокой портабельности, - одно из важнейших достоинств NetBSD.

NetBSD 5.0

Если OpenBSD 4.5 - релиз минорный, больших изменений в себе не несущий, то анонс NetBSD 5.0 - событие громкое и значимое. С момента выхода 4.0 прошло уже более двух лет. За это время разработчики переносимой BSD добавили в свое творение множество самых разнообразных, интересных (порой – неожиданных) новшеств.

Наиболее значительные изменения произошли в ядре ОС. Теперь FFS имеет поддержку журналирования; добавлен код реализации 1:1 потоков; переработаны планировщик процессов и система блокировок; реализация malloc заменена на jemalloc; порт на Xen обновлен до версии 3.3; интегрирована новая, независимая от архитектуры система управления питанием и обмена сообщения между драйверами PMF; появилась поддержка ACPI suspend/resume, новый фреймворк rump для запуска частей ядра в пространстве пользователя и системы puffs для реализации файловых систем вне ядра. Добавлено множество новых драйверов и обновлены существующие.

Обо всем подробнее. Код журналирования метаданных WAPBL (Write Ahead Physical Block Logging) подарен проекту компанией Wasabi Systems, использующей его аж с 2003-го года (ничего удивительного - несколько ведущих разработчиков NetBSD работают в этой компании). Это реализация классической модели журналирования всех операций записи блоков перед их непосредственным применением. Изюминка системы в том, что она не требует какого-либо преобразования ФС (достаточно просто добавить опцию log в /etc/fstab) и в большинстве задач показывает производительность выше, чем soft-dependencies (soft-updates, говоря на языке FreeBSD).
Появилась поддержка чтения с файловых систем EFS (разработка Silicon Graphics) и HFS+ (файловая система Apple). Наконец добавлена утилита newfs_ext2fs(8) для создания файловых систем ext2, реализация которой, кроме того, обзавелась поддержкой 32-битных полей uid/gid. Существенно увеличена производительность msdosfs, скорость записи на которую теперь может происходить до 16 раз быстрее. Интегрирована команда mount_sysctlfs(8), позволяющая представить дерево переменных sysctl в виде файловой системы. ОС научилась писать в UDF, для чего были добавлены соответствующие изменения в ядро и две новые утилиты: mmcformat(8) и newfs_udf(8). Код файловой системы unionfs синхронизирован с FreeBSD, а поддержка NQNFS удалена из состава ядра.

Особого внимания заслуживает фреймворк rump (Runnable Userspace Meta Programs), позволяющий запускать части ядра как пользовательские процессы. Rump придает NetBSD черты настоящей микроядерной ОС, но идея, лежащая в его основе, очень проста. Сам фреймворк представляет собой не что иное, как вынесенный в пространство пользователя набор внутриядерных функций. Он используется высокоуровневыми, не зависимыми от аппаратной платформы, частями ядра для доступа к низкоуровневым. Вместе с rump в NetBSD вошла и программа rump_nfs(8), реализующая клиент NFS в пространстве пользователя. Более того, любую файловую систему теперь можно перекомпилировать для работы вне ядра.

Другая интересная новинка ядра - puffs (Pass-to-Userspace Framework File System) - фреймворк, использующий возможности rump и позволяющий реализовать файловую систему любой сложности полностью в пространстве пользователя. Вместе с фреймворком также добавлены файловые системы, использующие его возможности:

  • mount_psshfs(8) - виртуальная файловая система для монтирования sftp-сессий;
  • mount_puffsportal(8) - экспериментальная реализация portalfs в пространстве пользователя;
  • mount_9p(8) - файловая система для монтирования файловых сервисов 9P (протокол, применяемый в распределенных операционных системах Plan9 и Inferno).

Поверх puffs создана обертка совместимости с FUSE (File system in USErspace, fuse.sf.net). Пример подключения sftp-сессии с помощью mount_psshfs:

$ mount_psshfs -O Compression=yes vasya@host.com:/usr /mnt

В ядро импортированы переработанные системы блокировок, реализованные в ветках newlock2 и vmlocking2, а также патч для блокировки сокетов. Изменению подвергся и код библиотеки libpthread, в которую было добавлено несколько улучшений в области синхронизации потоков. Модель потоков SA заменена на 1:1. Код реализации malloc заменен на jemalloc из FreeBSD, оптимизированный для многонитевых приложений. Интегрирован модульный планировщик SCHED_M2, который показывает высокую производительность на многопроцессорных системах, поддерживает исполнение процессов в реальном времени и позволяет выбирать алгоритм планирования, не останавливая систему. Теперь NetBSD более масштабируема и показывает заметный прирост производительности на MP-системах.

Большим изменениям подвергся код совместимости с Linux (compat_linux(8) и compat_linux32). Из FreeBSD импортирован код поддержки TLS, добавлены системные вызовы getdgid, old_uname, readdir, pread, pwrite, mlock, munlock, msync, sys_clock{getres,gettime,settime}, несколько системных вызовов семейства chown. Обновлена поддержка IPC, добавлена поддержка ossaudio(3). Виртуальная файловая система procfs теперь экспортирует /proc/stat, /proc/loadavg и /proc/<pid>/statm. Обновлена поддержка эмуляции 32-битной NetBSD (compat_netbsd32(8)), удалена поддержка эмуляции HP-UX (compat_hpux).

Код реализации «магических символических ссылок», позволяющий симлинкам указывать на разные файлы в зависимости от значения одной или нескольких специальных переменных, обновлен и поддерживает переменную @ruid, которая раскрывается в «настоящий» UID процесса. Эта возможность используется для создания изолированного /tmp для каждого пользователя (опция «per_user_tmp=yes» в /etc/rc.conf). Магические симлинки - довольно простой, но полезный механизм, который позволяет сделать, например, так (на машине x86 ~/bin будет указывать на ~/bin-i386):

# sysctl vfs.generic.magiclinks=1
$ ln -s /home/vasya/bin-@machine /home/vasya/bin

Обновлен стек bluetooth и сопутствующие утилиты. В ядро добавлен драйвер для Bluetooth HCI UART, написанный с оглядкой на Linux-драйвера BlueZ и позволяющий пересылать пакеты через последовательный порт. Добавлены демон btuartd(8), который управляет работой драйвера, bpand(8), управляющий профилями PAN (Bluetooth Personal Area Networking) и btkey(1) - программа для работы с ключами соединений. Утилита ifconfig(8) по команде «list scan» теперь выдает список досягаемых точек доступа.

Из других изменения внутри ядра можно отметить работу на консоли Microsoft Xbox, поддержку DRM (Direct Rendering Manager), необходимую для работы 2D- и 3D-ускорения в видеодрайверах, поддержку PIE. Порт на Xen обновлен до версии 3.3, добавлена поддержка архитектуры amd64 (dom0 и domU) и расширения i386 PAE для domU. Из соображений безопасности удален механизм systrace. Ядро теперь еще больше совместимо с POSIX и поддерживает такие расширения стандарта как: POSIX Real-time, Asynchronous I/O и POSIX message queues. Псевдодрайвер fast_ipsec(4) обучили работе с технологией IPSec NAT-T, код брэндмауэра pf(4) синхронизирован с OpenBSD 4.2. Появилась поддержка «ipv6 fast forward».

Второй стадией загрузки теперь можно управлять через конфигурационный файл boot.cfg(8), пример которого приведен ниже:

menu=Boot normally:boot netbsd
menu=Boot single user:boot netbsd -s
menu=Disable ACPI:boot netbsd -2
menu=Disable ACPI and SMP:boot netbsd -12
menu=Drop to boot prompt:prompt
default=1
timeout=5

В базовое окружение NetBSD были добавлены:

  • Утилиты audit-packages и download-vulnerability-list для поиска известных уязвимостей в установленных пакетах.
  • Утилита acpitools, импортированная из FreeBSD.
  • c99 - враппер, запускающий cc в режиме совместимости со стандартом C99.
  • tprof - простой профайлер, основанный на идее мониторинга производительности.
  • schedctl - программа, предназначенная для управления планированием процессов и потоков.
  • psrset - утилита для управления группами процессоров.
  • cpuctl - позволяет легко включить/отключить нужный процессор.
  • dkscan_bsdlabel - инструмент для поиска «BSD disklabel» на диске.

Переработке и модернизации также подверглись существующие утилиты:

  • amd теперь умеет запрашивать карты (amd maps) у сервера LDAP.
  • config научился генерировать конфигурационный файл LINT для ядра (флаг '-L').
  • newsyslog сожмет файлы логов с помощью bzip2, если указать флаг 'J' в конфигурационном файле /etc/newsyslog.conf.
  • bioctl существенно переработана и теперь умеет создавать/удалять «hot-spare», диски «pass-through» и RAID-тома, запускать/останавливать проверки на согласованность данных в томах.
  • patch импортирован из DragonFly.
  • sdiff импортирован из OpenBSD.
  • xargs импортирован из FreeBSD.

В базовую поставку были включены httpd - простой HTTP-сервер, написанный на Си, и dhcpcd 4.0.11.

Тише едешь - дальше будешь

Размеренное, неторопливое движение к намеченной цели - еще одна привлекательная черта «альтернативных» BSD. Никакой погони за нововведениями и желания урвать куски сразу всех возможных рынков. Проекты OpenBSD и NetBSD уже давно перешли черту зрелых, полностью готовых к использованию продуктов, и сейчас идет процесс планомерного развития и приспособления к меняющемуся рынку IT. Слежение за разработкой этих ОС сродни чтению мантры, которая успокаивает и наводит на правильные мысли.

Стороннее ПО в базовой поставке OpenBSD 4.5

  • Xenocara (основан на пропатченном X.Org 7.4, freetype 2.3.7, fontconfig 2.4.2, Mesa 7.2, xterm 239 и т.д.)
  • Gcc 2.95.3 и 3.3.5 (+ ProPolice + патчи)
  • Perl 5.10.0 (+ патчи)

Улучшенная и более защищенная версия Apache 1.3.29 с поддержкой IPv6, SSL/TLS и DSO

  • OpenSSL 0.9.8j (+ патчи)
  • Sendmail 8.14.3 + libmilter
  • Bind 9.4.2-P2 (+ патчи)

В OpenBSD 4.5 из набора прекомпилированных пакетов для платформ i386/amd64 стоит выделить:

  • Gnome 2.24.3
  • KDE 3.5.10
  • Xfce 4.4.3
  • OpenOffice.org 2.4.2 и 3.0.1
  • OpenArena 0.8.1
  • Mozilla Firefox 3.0.6
  • Mozilla Thunderbird 2.0.0.19
  • MySQL 5.0.77
  • PostgreSQL 8.3.6

Стороннее ПО в базовой поставке NetBSD 5.0

  • ipf 4.1.29
  • BIND 9.5.0-P2
  • NTP 4.2.4p6
  • OpenLDAP 2.4.11
  • OpenPAM 20071221
  • OpenSSH 5.0
  • OpenSSL снапшот от 20080509
  • Postfix 2.5.4
  • GNU GCC 4.1 снапшот от 20080831

INFO

  • Новые версии OpenBSD выходят каждые полгода: 1 мая и 1 ноября.
  • В OpenBSD не используются драйвера со скомпилированными объектными модулями с нераскрываемым исходным кодом.
  • Удобный сервис по работе с деревом портов OpenBSD: http://openports.se.


Источник: http://www.xakep.ru/magazine/xa/125/084/1.asp
Категория: Установка и настройка | Добавил: oleg (05.12.2009) | Автор: Евгений «j1m» Зобнин
Просмотров: 888 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025