OpenBSD

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:13, 21 июня 2016.
OpenBSD
OpenBSDlogo.svg
"Free, Functional & Secure"
Разработчик The OpenBSD Project
Линейка ОС Unix-like (BSD)
Состояние разработки Актуальное
Исходный код Open source
Дата первого релиза 1 October 1996 года; 23 years ago (1996-10-01)
Доступно в мультиязычная
Cистема управления пакетами OpenBSD package tools и коллекции портов
Платформы Alpha, x86-64, i386, MIPS64, PowerPC, SPARC 32/64, Zaurus и другие
Ядро (тип) Monolithic
Пользовательское
пространство
BSD
По умолчанию
пользовательский
интерфейс
Модифицированный pdksh, FVWM 2.2.5 для X11
Лицензия BSD, ISC, ATU и другие
Официальный веб-сайт openbsd.org

OpenBSD — это UNIX-ориентированная операционная система, основанная на 4.4BSD — BSD-реализации UNIX-системы, производное Research Unix, разработанная в Калифорнийском университете в Беркли. OpenBSD это свободная многоплатформенная операционная система. Помимо операционной системы, проект OpenBSD производит портативные версии многочисленных подсистем, в первую очередь PF, OpenSSH и OpenNTPD, которые доступны в виде пакетов в других операционных системах.

OpenBSD — это ответвление от операционной системы NetBSD, созданное одним из основателей проекта BSD Тео де Раадтом ('Theo de Raadt') в конце 1995 года. Взяв за основу дерево исходных кодов NetBSD и переделав его в соответствии со своим видением, он создал свой собственный проект — OpenBSD, в который, вслед за ним, перешли и некоторые другие разработчики NetBSD.

Проект OpenBSD также широко известен настойчивостью своих разработчиков на открытом исходном коде, бескомпромиссной позицией о лицензировании программного обеспечения, безупречным качеством документации, исходного кода, а также вниманием к безопасности и надёжности операционной системы. Проект управляется его основателем — Тео де Раадтом из его дома в Алберте (Канада).


Применение

Окно входа и приветствие OpenBSD
Взаимодействие с утилитой pdksh (окружение по умолчанию) в OpenBSD

Безопасность

Усовершенствованная система безопасности OpenBSD, встроенные криптографические системы и пакеты фильтрации сетевых соединений позволяют использовать OpenBSD в специализированных системах в индустрии информационной безопасности, таких как межсетевые экраны, системы обнаружения вторжений или VPN-шлюзы.
Проприетарные системы многих производителей специализированного ПО основаны на OpenBSD, например устройства от Armorlogic, Calyptix Security, GeNUA mbH, RTMX Inc, и .vantronix GmbH. Например в более поздних версиях подсистемы для приложений на базе UNIX от Microsoft, расширения для операционной системы Windows, которое обеспечивает некоторые Unix-подобные функциональные возможности, использовалось много кода OpenBS.
Core Force, продукт безопасности для Windows, основан на pf-фаерволе OpenBSD.

Домашняя операционная система

OpenBSD поставляется с системой X Window и пригодна для использования на персональных компьютерах. Также имеются пакеты для установки всех основных окружений рабочего стола, включая GNOME, KDE, Lumina Desktop и Xfce. Кроме этого доступны основные программы, такие как браузеры (Konqueror, Mozilla Firefox и Chromium), медиапроигрыватели (MPlayer, VLC media player и xine) и другие. Также в основной дистрибутив включает в себя два минималистических оконных менеджера: cwm и FVWM.

Серверная операционная система

OpenBSD имеет полный набор сетевых протоколов и легко конфигурируется как почтовый сервер, веб-сервер, FTP-сервер, DNS-сервер, маршрутизатор, брандмауэр или файловый сервер NFS. Программное обеспечение для поддержки других протоколов доступны в виде пакетов.

Особенности разработки и выпуска системы

OpenBSD отличается от других свободных BSD-систем своей системой разработки. Никакой код не может попасть в систему извне случайно; любые изменения просматриваются ответственными за соответствующую часть системы лицами. Любая ошибка, найденная в одном месте, вызывает пересмотр всего аналогичного кода.
Разработка OpenBSD ведётся с помощью CVS. Для частичной компенсации неудобств, связанных с использованием централизованной системы управления версиями файлов, поддерживается сеть зеркал cvsync. Разработка системы продолжается непрерывно, любой человек с соответствующими навыками может сделать свой вклад в систему, совершив коммит в репозиторий системы, причём координатором любых изменений является сам основатель проекта.
В OpenBSD уделяется огромное внимание качеству документации. Любая ошибка в man-странице считается серьёзной и немедленно исправляется. Также большое внимание уделяется простоте и ясности кода — поскольку разработчики небезосновательно полагают, что чем проще код, тем меньше вероятность пропустить ошибку.
Разработчики OpenBSD категорически не приемлют использование любого несвободного кода в системе. Неоднократно части операционной системы исключались из репозитория из-за проблем с лицензированием:

  • IP Filter — оригинальная лицензия Даррена Рида имела ряд серьёзных ограничений, например, не допускала модификации кода. Некоторое время IP Filter имел компромиссную лицензию, но автор вернулся к оригинальной формулировке, и начиная с релиза 3.0, межсетевым экраном в OpenBSD стал Packet Filter.
  • XFree86 — из-за изменения лицензии был заменён на X.Org.

В OpenBSD (в отличие от наиболее распространённых сегодня свободных систем — Linux и FreeBSD не используются драйвера с скомпилированными объектными модулями с нераскрываемым исходным кодом. Кроме несвободного исполнения, такие драйвера позиционируются как потенциально опасные (в особенности, в системе с монолитным ядром, каковой является и OpenBSD), так как не поддаются проверке и необходимой модификации. Однако бинарные прошивки включаются в состав системы, если они допускают свободное распространение, поскольку они исполняются не на центральном процессоре, а на самом оборудовании. Также в дерево портов не включаются программы с лицензиями, не разрешающими распространение в виде исходных кодов.

Система релизов

Новые версии (релизы) OpenBSD выходят каждые полгода: ориентировочно 1 мая и 1 ноября. С каждым новым релизом номер версии OpenBSD увеличивается на 0,1. В настоящий момент последляя версия операционной системы имеет номер 5.9 и поддерживает 15 различных платформ и архитектур, включая популярные i386-совместимые компьютеры, M68k, UltraSPARC, DEC Alpha, AMD64, Sharp Zaurus и другие. Для установки доступно свыше 9500 пакетов с программным обеспечением, собираемым посредством штатного механизма портов.
Каждый релиз поддерживается в течении года. Исправления и патчи могут быть применены самостоятельно или путём регулярного обновления системы из соответствующей ветви репозитория OpenBSD.
Между релизами происходит регулярный выход снапшотов, формируемых тем же путём, что и релизы. Снапшоты в основном соответствуют текущему состоянию дерева исходных текстов, но иногда в них вносятся дополнительные изменения, требующие тестирования. Каждый релиз выпускается на CD-ROM, продажи с которых формируют заработную плату команды разработчиков.
Релизы, включая снапшоты, подписываются утилитой signify собственной разработки. Отдельными ключами подписываются:

  1. базовая система;
  2. сторонние пакеты с прошивками оборудования;
  3. все остальные сторонние пакеты.

Каждый новый релиз подписывается новым ключом, при этом публичный ключ для очередного релиза поставляется уже вместе с предшествующим релизом.

Ядро OpenBSD

Стандартное ядро OpenBSD рекомендуется для универсального применения в качестве ядра ОС, поскольку оно поддерживается командой разработчиков. Модифицированные ядра не поддерживаются, в соответствии с философией системы. Считается что любые попытки настроить или оптимизировать ядро скорее вызывают проблемы, чем решают их.

Дерево пакетов OpenBSD

Пакеты вне основной сборки системы поддерживаются CVS через дерево портов и ответственность за них несут сами разработчики пакета. Поддержание пакета в актуальном состоянии, исправление ошибок и багов — это обязанность сопровождающих пакета. Порты не проходят строгий аудит кода, в отличие от самой системы, потому что команде разработчиков OpenBSD не хватает ресурсов для этого.
Бинарные пакеты создаются централизованно из дерева портов для каждой архитектуры. Этот процесс применяется для текущей версии, для каждого поддерживаемого релиза, и для каждого снимка. Администраторы рекомендуют использовать механизм пакетов, а не строить пакеты из дерева портов, если только пользователь не хочет внести свои собственные изменения в исходный код пакета.

Сторонние компоненты, используемые в системе

  • X.org — X Window окружение с некоторыми патчами
  • GCC с специфическими патчами. Используется как стандартный компилятор
  • Perl с патчами
  • SQLite с патчами
  • NSD
  • Unbound в качестве DNS сервера
  • Ncurses
  • Binutils с патчами
  • gdb с патчами
  • Awk
  • tmux

В дальнейших выпусках OpenBSD анонсировалась поддержка Apache и Nginx.

История и распространение

Использование дистрибутивов 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.

Дочерние проекты

Наиболее популярным (хотя далеко не единственным) применением OpenBSD являются системы защиты сетей (межсетевые экраны). В немалой степени этому способствуют дочерние проекты, разрабатываемые параллельно:

  • Packet Filter (PF) — межсетевой экран, заменивший в OpenBSD популярный IPFilter Даррена Рида после многолетних разногласий по поводу лицензии. PF был высоко оценён и взят на вооружение разработчиками параллельных проектов NetBSD и FreeBSD.
  • OpenSSH — самая распространённая открытая реализация SSH.
  • OpenNTPD — демон для синхронизации времени по протоколу NTP; может работать и как сервер.
  • OpenOSPFD — реализация протокола динамической маршрутизации OSPF (локальная маршрутизация).
  • OpenBGPD — реализация протокола динамической маршрутизации BGP (глобальная маршрутизация).
  • OpenCVS — более простая и безопасная реализация CVS, чем разрабатываемая в рамках GNU.
  • OpenSMTPD — реализация протокола SMTP.
  • OpenIKED — реализация протокола IKEv2, являющегося одной из основных составляющих IPSec VPN.
  • LibreSSL — форк OpenSSL, обеспечивающий совместимость с родительским проектом, но при этом систематически проходящий аудит как составная часть OpenBSD.

Отдельные разработки OpenBSD не стали отдельными проектами, но используются в качестве компактных, легче аудируемых замен внешним альтернативам, например:

  • doas — альтернатива sudo.
  • signify — альтернатива утилите openssl, реализующей заложенные в OpenSSL функции.

Финансирование

Несмотря на то, что операционная система и ее портативные компоненты широко используются в коммерческих продуктах, основатель проекта утверждает, что лишь небольшая часть финансирования проекта исходит из IT-отрасли. В основном финансирование исходит от пользовательских пожертвований и от пользователей, покупающих компакт-диски с системой. Другие продукты, разрабатываемые командой разработчиков, не приносят команде большой прибыли.
В начале 2000-х годов проект получил финансирование DARPA. Организация оплатила полный рабочий день пятерых программистов и купила оборудования на 30 тысяч долларов.
В 2003 году финансирование со стороны DARPA было прекращено. Основным источником средств для поддержания жизнедеятельности проекта становятся индивидуальные пожертвования; как в денежной форме, так и в виде приобретения оборудования или транспортных билетов для разработчиков. Для решения проблемы с пожертвованиями от юридических лиц 26 апреля 2007 года был создана некоммерческая организация — фонд OpenBSD (OpenBSD Foundation). В отличие многих других подобных организаций, фонд 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 эквивалентами.

Безопасность системы и аудит кода

Вскоре после создания OpenBSD, её основатель связался с компанией SNI, которая разрабатывает инструменты анализа и аудита сетевой безопасности. Этот инструмент используется для автоматического поиска и использования возможных недостатков программного обеспечения системы. Это совпало с собственным интересом де Раадта в области безопасности, так что какое-то время они сотрудничали, что позволило определить направление развития проекта.

OpenBSD включает в себя функции, предназначенные для повышения безопасности, такие как:

  • безопасные альтернативы функций POSIX в стандартной библиотеке C
  • использование GNU toolchain — набора созданных в рамках проекта GNU пакетов программ, необходимых для компиляции и генерации выполняемого кода из исходных текстов.
  • методы защиты памяти от несанкционированного доступа, такие как ProPolice и W^X
  • строгая криптография и рандомизация

Чтобы уменьшить риски возникновения уязвимостей или некорректного поведения системы из-за повышения привилегий некоторых программ, часть программ была написана или приспособлена так, чтобы использовать разделение привилегий, понижение привилегий и chrooting. Разделение привилегий представляет собой метод, впервые применённый в OpenBSD, когда программа разделяется на две или более частей, одна из которых исполняет привилегированные операции, а другая практически всегда находится в режиме с обычным уровнем привилегий. Разработчики применили эти подходы к OpenBSD версиям наиболее частоиспользуемых приложений, таких как tcpdump.

Разработчики OpenBSD сыграли важную роль в рождении и развитии OpenSSH, которая разрабатывается в репозиториях OpenBSD. OpenSSH основан на оригинальном SSH. Он впервые появился в OpenBSD 2.6 и теперь является самым популярным SSH клиентом и сервером, доступным на многих операционных системах.

Проект имеет политику непрерывного аудита исходного кода, что позволяет избавиться от багов в работе ОС.

Установка системы

Установка 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

Скачать образ системы для записи на диск можно с mirror.yandex.ru

Видео процесса установки

Дополнительно