Представлен выпуск свободной кросс-платформенной UNIX-подобной операционной системы OpenBSD 6.7. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 12 аппаратных платформ), стандартизация, корректная работа, активная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 6.7 составляет 470 МБ.
Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff – mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol), легковесный http-сервер, утилита синхронизации файлов OpenRSYNC.
Основные улучшения:
- Файловая система FFS2, в которой используются 64-разрядные значения времени и числа блоков, по умолчанию задействована в новых установках почти для всех поддерживаемых архитектур вместо FFS (за исключением landisk, luna88k и sgi).
- Добавлен новый метод проверки допустимости обращения к системным вызовам, дополнительно усложняющего эксплуатацию уязвимостей. Метод допускает выполнение системных вызовов, только если к ним обращаются из предварительно зарегистрированных областей памяти. Для пометки областей памяти и активации защиты предложен новый системный вызов msyscall().
- С 7 до 15 увеличено число разделов, которые можно создать на одном диске.
- Код разбора опций в cron переписан для поддержки getopt-подобных возможностей, таких как “-ns” и повторное указание одних и тех же флагов. Поле “options” в crontab переименовано в “flags”. В crontab добавлен флаг “-s”, при котором только один экземпляр задания может быть запущен одновременно. Добавлен оператор “~” для указания случайного значения времени.
- В оконном менеджере cwm реализована возможность определения размера окна в процентном соотношении от размера первичного окна при мозаичной компоновке.
- Для архитектуры powerpc осуществлён переход по умолчанию на использование Clang и задействована независимая от архитектуры реализация mplock.
- В apmd улучшена поддержка автоматического перехода в ждущий и спящий режимы (-z/-Z) – демон теперь реагирует на сообщения об изменении заряда аккумулятора, отправляемые драйвером контроля питания. Переход в сон происходит с задержкой в 60 секунд, что даёт пользователю время взять управление в свои руки.
- Во встроенный HTTP-сервер добавлена переменная конфигурации $REQUEST_SCHEME для сохранения исходного протокола (http или https) при перенаправлении, а также опция “strip”, позволяющая использовать несколько chroot в /var/www для серверов FastCGI.
- В утилите top появилась поддержка прокрутки при помощи клавиш 9 и 0.
- Представлен механизм освобождения страниц памяти в обратном порядке, значительно повышающий эффективность активного освобождения большого числа страниц.
- В DNS-сервере unbound по умолчанию включена проверка DNSSEC.
- Избавлены от глобальной блокировки системные вызовы __thrsleep(2), __thrwakeup(2), close(2), closefrom(2), dup(2), dup2(2), dup3(2), flock(2), fcntl(2), kqueue(2), pipe(2), pipe2(2) и nanosleep(2), а также базовая часть ioctl(2).
- Расширена поддержка оборудования. Добавлен новый драйвер iwx для беспроводных чипов Intel AX200, а в драйвере iwm добавлена поддержка устройств Intel 9260 и 9560. Добавлен драйвер rge для Realtek 8125 PCI Express 2.5Gb. Предложено много новых драйверов для улучшения работы на платах arm64 и armv7, в том числе добавлена поддержка платы Raspberry Pi 4 и улучшена поддержка Raspberry Pi 2 и 3.
- Расширена звуковая подсистема sndio. Добавлены API sioctl_open и утилита sndioctl для управления звуком через sndiod. Удалён /dev/mixer, вместо которого все порты переведены на sndio вместо интерфейса mixer ядра. В sndiod обеспечено использование аппаратных механизмов управления громкостью. Для усиления безопасность запрещён доступ обычных пользователей к /dev/audio* и /dev/rmidi*.
- В беспроводном стеке прекращено подключение к любой доступной Wi-Fi сети, не поддерживающей шифрование, за исключением явного вызова команды “ifconfig join”. Обеспечен запуск фонового сканирования доступных сетей при выполнении команды “ifconfig scan” пользователем root. Увеличен кэш результатов сканирования. Добавлен устанавливаемый через ifconfig флаг “nwflag nomimo”, помогающий избавиться от потери пакетов в режиме 11n при наличии в устройстве неподключенных разъёмов для антенн. Для драйвера bwfm добавлена поддержка режима активного сканирования. Улучшено автоматическое переключение между беспроводными сетями через понижение приоритета для сетей, к которым не удалось подключиться.
- В сетевом стеке появился новый драйвер pppac, в который вынесена реализация интерфейса PPP Access Concentrator. Настройки npppd.conf переведены на использование pppac вместо tun. При отключённом перенаправлении пакетов добавлена проверка соответствия адреса назначения в пакете с адресом сетевого интерфейса. Удалена поддержка mobileip.
- Пользователям без прав root запрещено использование ioctl для изменения адреса сетевого интерфейса и изменения параметров интерфейсов pppoe.
- В sysupgrade обеспечен запуск обновления прошивок (fw_update) до перезагрузки перед обновлением.
- Усовершенствован системный вызов unveil, который обеспечивает изоляцию доступа к файловой системе. Число приложений из базовой системы, для которых реализована защита с использованием unveil, доведено до 82. В том числе на unveil переведены vmstat, iostat и systat.
- В crypto(3) добавлена поддержка RSA-PSS.
- В DNS резолвер unwind добавлена поддержка DoT (DNS over TLS). Добавлена команда “unwindctl status memory”.
- Значительно модернизирована реализация ipsec. Добавлена поддержка автоматического перемещения трафика между rdomain при шифровании и расшифровке для защиты от атак по сторонним каналам. В iked добавлена поддержка изменения rdomain, а в iked.conf добавлена опция ‘rdomain’ Для iked и isakmpd по умолчанию выставлен уровень IPSEC_LEVEL_REQUIRE, запрещающий обработку незашифрованных пакетов, соответствующих потоку. В настройки группы Diffie-Hellman для IKE SA добавлены алгоритмы curve25519, ecp256, ecp384, ecp521, modp3072 и modp4096. В iked метод аутентификации по умолчанию изменён на аутентификацию по цифровой подписи (RFC 7427). Добавлены настройки ESN в iked.conf. Добавлена опция “-p” для выбора нестандартного номера UDP-порта.
- Расширены возможности мультиплексора терминалов tmux, добавлено много новых опций.
- Обновлена версия почтового сервера OpenSMTPD. Во встроенных фильтрах реализовано ключевое слово “bypass” для пропуска обработки при заданных условиях. Разрешено использование в фильтрах имени пользователя текущего сеанса smtpd. В smtpd.conf в параметрах разрешено использование mail-from и rctp-to.
- Обновлён пакет OpenSSH 8.2, в котором появилась поддержка токенов двухфакторной аутентификации FIDO/U2F.
- Обновлён пакет LibreSSL, в котором доведена до готовности реализация TLS 1.3 на базе нового конечного автомата и подсистемы работы с записями. По умолчанию пока включена лишь клиентская часть TLS 1.3, серверную часть планируют активировать по умолчанию в одном из будущих выпусков. Список остальных изменений можно увидеть в анонсах выпусков 3.1.0 и 3.1.1.
- Число портов для архитектуры AMD64 составило 11268, для aarch64 – 10848, для i386 – 10715. Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 6.7:
- Графический стек Xenocara на базе X.Org 7.7 with xserver 1.20.8 + патчи, freetype 2.10.1, fontconfig 2.12.4, Mesa 19.2.8, xterm 351, xkeyboard-config 2.20;
- LLVM/Clang 8.0.1 (с патчами);
- GCC 4.2.1 (с патчами) и 3.3.6 (с патчами);
- Perl 5.30.2 (с патчами);
- NSD 4.2.4;
- Unbound 1.10.0;
- Ncurses 5.7;
- Binutils 2.17 (с патчами);
- Gdb 6.3 (с патчами);
- Awk от 20 декабря 2012 г.;
- Expat 2.2.8