Введение

Свободная реализация сетевого протокола SMB, компьютерное программное обеспечение.

Samba работает на большинстве Unix-подобных систем, таких как Linux, Solaris, AIX и варианты BSD, включая Apple macOS (Mac OS X 10.2 и более поздние версии) и macOS Server. Samba также работает на ряде других операционных систем, таких как OpenVMS и IBM i. Samba является стандартной частью почти всех дистрибутивов Linux и обычно входит в состав базовых системных служб и других Unix-подобных операционных систем. Samba распространяется на условиях лицензии GNU General Public License. Название Samba происходит от SMB (Server Message Block) – названия проприетарного протокола, используемого сетевой файловой системой Microsoft Windows.

Ранняя история

Эндрю Триджелл разработал первую версию Samba Unix в декабре 1991 и январе 1992 года, будучи аспирантом Австралийского национального университета. Он использовал анализатор пакетов для сетевого анализа протокола, применяемого в серверном программном обеспечении DEC Pathworks. Первые релизы – версии 0.1, 0.5 и 1.0 (все из первой половины января 1992 года) – не имели официального названия; Триджелл просто называл его "файловым сервером Unix для Dos Pathworks". К моменту выхода версии 1.0 он осознал, что "фактически реализовал протокол NetBIOS" и что "это программное обеспечение можно использовать с другими клиентскими ПК". Ориентируясь на совместимость с LAN Manager от Microsoft, Триджелл выпустил "NetBIOS для Unix", Observer, версию 1.5 в декабре 1993 года. Этот релиз впервые включал как клиентское, так и серверное программное обеспечение. В то же время была выбрана лицензия GPL2. В середине серии 1.5 название было изменено на smbserver. Однако Триджелл получил уведомление о зарегистрированном товарном знаке от компании "Syntax", продававшей продукт TotalNet Advanced Server и владевшей товарным знаком "SMBserver". Название "Samba" было получено путем поиска в системном словаре Unix с помощью команды grep слов, содержащих буквы S, M и B в указанном порядке (то есть…). Версии 1.6, 1.7, 1.8 и 1.9 вышли относительно быстро, последняя – в январе 1995 года. Триджелл считает, что внедрение системы контроля версий CVS в мае 1996 года ознаменовало рождение команды Samba, хотя ранее вклад в разработку вносили и другие, особенно Джереми Эллисон. Версия 2.0.0 была выпущена в январе 1999 года, а версия 2.2.0 – в апреле 2001 года.

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

Некоторые версии Samba 3.6.3 и ниже содержат серьезные уязвимости в системе безопасности, которые могут позволить анонимным пользователям получить права root-доступа к системе через анонимное соединение, используя ошибку в механизме удаленных процедурных вызовов Samba. 12 апреля 2016 года была раскрыта информация об уязвимости Badlock, критической ошибке безопасности в Windows и Samba. Badlock для Samba упоминается в CVE-2016-2118 (возможны атаки типа "человек посередине" на SAMR и LSA). 24 мая 2017 года было объявлено об обнаружении в Samba уязвимости удаленного выполнения кода, получившей название EternalRed или SambaCry, которая затрагивает все версии, начиная с 3.5.0. Этой уязвимости был присвоен идентификатор CVE-2017-7494. 14 сентября 2020 года был опубликован эксплойт-подтверждение концепции для уязвимости Netlogon под названием Zerologon (CVE-2020-1472), для которой патч существует с августа. Некоторые федеральные агентства, использующие данное программное обеспечение, получили предписание установить это исправление.

Самба ТНГ

Samba TNG (The Next Generation) был создан в конце 1999 года после разногласий между лидерами команды Samba и Люком Лейтоном относительно направлений развития проекта Samba. Им не удалось договориться о плане перехода, который позволил бы постепенно интегрировать исследовательскую версию Samba, разрабатываемую им (известную в то время как Samba NTDOM), в основную ветку Samba. Разработка велась медленно из-за недостатка разработчиков. Команда Samba TNG часто рекомендовала потенциальным пользователям Samba из-за его лучшей поддержки и активной разработки. Ключевой целью проекта Samba TNG была переработка всех служб NT Domains в проекты FreeDCE. Это было затруднено тем, что службы разрабатывались вручную путем обратной инженерии сетевых протоколов, с ограниченным или полным отсутствием ссылок на документацию DCE/RPC. Важным отличием от Samba была реализация набора протоколов NT Domains и служб MSRPC. Samba предоставляет доступ ко всем службам NT Domains из единой точки, в то время как Samba TNG разделял каждую службу на отдельную программу. ReactOS начал использовать службы Samba TNG для своей реализации SMB. Разработчики обоих проектов были заинтересованы в использовании архитектуры Samba TNG для обеспечения взаимодействия ReactOS с сетями Windows. Они совместно работали над адаптацией сетевого кода и системы сборки. Многоуровневый и модульный подход упростил перенос каждой службы в ReactOS.