След 6 месеца разработка е представена версия Samba 4.24.0, която продължава развитието на клон Samba 4 с пълна реализация на домейн контролер и услуга Active Directory, съвместима с реализацията на Windows Server и способна да обслужва всички поддръжани версии на Windows клиенти от Microsoft, включително Windows 11. Samba 4 е многофункционален сървърен продукт, предоставящ също реализиране на файлов сървър, услуга за печат и сървър за идентификация (winbind). Кодът на проекта е написан на C и се разпространява под лиценз GPLv3.
Ключови промени в Samba 4.24:
- Добавен е нов VFS модул vfs_aio_ratelimit за ограничаване интензивността (rate-limit) на асинхронните входно/изходни операции (AIO). Ограниченията могат да се задават в байтове в секунда или в операции в секунда. При превишаване на зададения лимит модулът започва да въвежда изкуствени забавяния в асинхронните операции, за да поддържа зададения горен праг.
- В VFS модула vfs_ceph_new е добавена поддръжка на RPC протокола Keybridge и режим FSCrypt за криптиране на данни и имена на файлове в файловата система CephFS. Възможно е включване на криптиране на ниво индивидуални каталози.
- В VFS модула vfs_streams_xattr, който позволява запазване на алтернативни набори от данни NTFS (NTFS alternate data stream) в разширените атрибути на файловете (xattr) в Linux, е добавена настройката „streams_xattr:max xattrs per stream“, която определя допустимото число xattr, използвани за съхранение на данни. В Linux размерът на xattr е ограничен до 65536 байта, но ФС XFS позволява свързването на повече от един xattr към един файл, което позволява използването на няколко xattr за съхранение на до 1 МБ алтернативни данни.
- Добавена е поддръжка за одит на информация, свързана с аутентификацията. Добавени са отладъчни класове „dsdb_password_audit“ и „dsdb_password_json_audit“ за отразяване в журнала на промените в атрибутите на Active Directory: altSecurityIdentities, dNSHostName, msDS-AdditionalDnsHostName, msDS-KeyCredentialLink и servicePrincipalName.
- Добавена е поддръжка за външни системи за управление на пароли Microsoft Entra ID и Keycloak, които използват операцията за нулиране на парола (SSPR, password reset) при промяна на паролата, без да се предава старата парола на контролера. домейн. За да спазват политиките, контролиращи времето за действие на паролите, при нулиране на паролата се предават допълнителни параметри ("password policy hints"), които позволяват обработката на операцията като обичайната смяна на парола. Сега Samba взема предвид подобни параметри при прилагането на свързаните с паролите локални политики.
- Добавена е поддръжка на механизма за удостоверяване Kerberos PKINIT KeyTrust, който позволява на домейн контролерите, базирани на Samba и Heimdal KDC, да използват метода "Windows Hello for Business Key-Trust logons" за прилагане на механизма за удостоверяване PKINIT с самоподписани ключове. За добавяне и преглед на открития ключ в утилитата samba-tool е добавена команда "user|computer keytrust". Информацията за открития ключ се съхранява в акаунта с помощта на атрибута msDS-KeyCredentialLink.
- На домейн контролерите, базирани на Samba и Heimdal KDC, е добавена поддръжка за разширение на протокола Kerberos PKINIT за мапинг на ключове ("Windows Strong and Flexible key mappings"), използван при удостоверяване с открити ключове. По подразбиране се допуска само точно съвпадение на сертификатите ("strong certificate binding enforcement = full"), но е възможно и гъвкаво съвпадение ("strong certificate binding enforcement = compatibility"), позволяващо сертификати, по-нови от акаунта на потребителя. Данните за мапинга на сертификатите за акаунта се запазват в атрибута altSecurityIdentities.
- Добавена е поддръжка на разширението на протокола "Kerberos PKINIT SID", което позволява използването на сертификати с идентификатор Object SID при удостоверяване. За подписване на сертификатите в утилитата samba-tool е добавена команда "user|computer generate-csr".
- В изпълнението на KDC (Key Distribution Center) по подразбиране се осигурява връщането на структурата PAC (Privilege Attribute Certificate), съдържаща данни за правомощията на потребителя, независимо от това дали полето PA-PAC-REQUEST е посочено в заявката на клиента. За връщане на старото поведение е предвидена настройката "kdc always generate pac = no".
- В KDC е добавена настройка "kdc require canonicalization", при която при задаване на стойност "yes" клиентът е задължен да поиска извършване на канонизация на името на потребителя при заявка за сървър удостоверяване (AS_REQ). Ако канонизацията не е поискана, сървърът ще върне грешка "потребителят е неизвестен". В мрежи с потребители, които ползват ОС Windows, активирането на новата настройка не би трябвало да създаде проблеми, тъй като клиентите под Windows по подразбиране винаги искат канонизация.
Задължителната канонизация позволява защита от атаки от клас „доларова билетна“ манипулация, които използват факта, че имената на потребителите могат да се задават по различен начин (например „user“ и „user$“) и да се обработват различно в канонизираното и обикновеното представяне. Същността на атаката е, че злоумышленикът може, например, да създаде в AD потребителска сметка с име „root$“ и да я използва за получаване на мандат (билет) от KDC, подменяйки името на потребителя „root“ вместо „root$“ в заявката. KDC, незабелязвайки потребителя „root“, би обработил заявката в контекста на потребителя „root$“ и би издал мандат, който може да се използва за свързване под потребителя root чрез SSH или NFS към Linux сървър с SSSD.
- В KDC е добавен обходен вариант за защита от атаки „доларова билетна“ за конфигурации с деактивирани задължителни заявки за канонизация на имена („kdc require canonicalization = no“, което е по подразбиране). По подразбиране, ако клиентът не е поискал канонизация и проверяваното име не е намерено, сървърът извършва допълнителна проверка, добавяйки символа „$“ към името. С новата настройка „kdc name match implicit dollar without canonicalization = no“ може да се деактивира това поведение и да се извършват само точни проверки (в контекста на споменатата атака, сървърът няма да провери името „root$“ при заявка „root“).
- В Heimdal KDC по подразбиране е разрешена изпращането на имена на услуги Kerberos само с канонизирани имена (sAMAccountName от PAC) вместо оригиналното значение cname. За връщане на старото поведение е предвидена настройка „krb5 acceptor report canonical client name = no“.
- За пълна защита от атаки „доларова билетна“ се препоръчва да се настроят следните параметри: strong certificate binding enforcement full, kdc always include pac yes, kdc require canonicalization yes.
- За предотвратяване на уязвимостта CVE-2026-20833 методът на шифроване на домейна в настройките KDC по подразбиране е променен на AES (настройката „kdc default domain supported enctypes“ е зададена на „aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96“).
Източник: opennet.ru
