Как стать автором
Поиск
Написать публикацию
Обновить
82.65

Samba без дыр: как защитить файловый сервер и контроллер домена

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров5.5K

Мисконфиги в Samba — классика, из-за которой общий доступ к файлам и даже контроллер домена Active Directory становятся легкой добычей. В статье разберем, как безопасно настроить Samba в роли файлового сервера и контроллера домена, чтобы защититься от атак.

Что такое Samba

Samba реализует протоколы SMB/CIFS с открытым исходным кодом. Инструмент обеспечивает взаимодействие Linux-/Unix-систем с инфраструктурой Windows: от общего доступа к файлам и принтерам до интеграции с Active Directory.

Используемый в Windows протокол SMB (Server Message Block) Samba реализует:

  • для общего доступа к файлам между Linux и Windows;

  • управления принтерами;

  • авторизации через AD (в том числе Kerberos);

  • аутентификации пользователей;

  • синхронизации политик (GPO) и др;

  • настройки прав доступа;

  • поддержки shadow-копий (Volume Shadow Copy).

Samba содержит следующие компоненты:

nmbd

Обработка NetBIOS (имена, объявления)

samba

Демон, исполняющий роль контроллера домена AD 

smbd

Обслуживание файлового доступа и печати (SMB/CIFS)

winbindd

Интеграция с AD, разрешение SID/UID/GID

Использование Samba как файлового сервера

Большинство пользователей привыкло воспринимать Samba в первую очередь как простой файловый сервер — способ расшарить папку с Linux-машины и получить к ней доступ с Windows. Это действительно одно из самых популярных применений Samba: она позволяет быстро организовать общий доступ к файлам в локальной сети даже в гетерогенной инфраструктуре, где сочетаются разные операционные системы.

Настройка Samba в роли файлового сервера обычно сводится к установке пакета, редактированию конфигурационного файла /etc/samba/smb.conf и созданию так называемых шар — каталогов, доступ к которым разрешен для определенных пользователей или групп. Ниже рассмотрим, как это делается на практике. Для использования Samba как файлового сервера нужно его сначала развернуть и настроить, так как зачастую в развернутых дистрибутивах пакеты Samba отсутствуют. В установке и обновлении необходимых пакетов помогут следующие команды.

На Debian/Ubuntu:

sudo apt update
sudo apt install samba

На CentOS/RHEL:

sudo yum install samba

На Arch Linux:

sudo pacman -S samba

После установки необходимо отредактировать конфигурационный файл Samba, чтобы сервис начал функционировать. Основной конфигурационный файл Samba находится по пути /etc/samba/smb.confНиже представлена структура файла:

[global]                          # Глобальные параметры конфигурации Samba
   workgroup = WORKGROUP          # Название рабочей группы (как в Windows по умолчанию)
   server string = Samba Server   # Описание сервера, отображается в сетевом окружении
   security = user                # Требуется имя пользователя и пароль для доступа
   map to guest = Bad User        # Неизвестные пользователи отображаются как "guest"
   smb ports = 445                # Использовать только порт 445 (без NetBIOS 137-139)
 
[public]                          # Общедоступная шара (доступна без пароля)
   path = /srv/samba/public       # Путь к расшариваемой директории
   guest ok = yes                 # Разрешить гостевой (анонимный) доступ
   read only = yes                # Только чтение — нельзя изменять файлы
 
[private]                         # Приватная шара с контролем доступа
   path = /srv/samba/private      # Путь к директории с ограниченным доступом
   valid users = @samba_users     # Доступ только для пользователей из группы samba_users
   guest ok = no                  # Гостевой доступ запрещён
   read only = no                 # Разрешены запись, изменение и удаление файлов

Настройка общего доступа

Во-первых, необходимо создать директорию для общего доступа:

sudo mkdir -p /srv/samba/share
sudo chmod -R 0777 /srv/samba/share

Далее необходимо добавить раздел в конфигурационный файл /etc/samba/smb.conf:

[share]
    comment = Общий доступ
    path = /srv/samba/share
    browseable = yes
    read only = no
    guest ok = yes

Для проверки синтаксиса конфигурации можно использовать команду testparm, и для применения конфигурации необходимо перезапустить Samba:

sudo systemctl restart smbd

Настройка Samba в роли файлового сервера — относительно несложная задача, особенно для небольших или смешанных по ОС инфраструктур. Она позволяет быстро организовать общий доступ к данным с минимальными затратами и обеспечить совместимость Linux- и Windows-сред. Однако за внешней простотой скрывается множество нюансов, связанных с безопасностью, управлением доступом и конфигурацией сервиса. Даже при работе в режиме обычного файлового сервера Samba может стать точкой входа для злоумышленников, если ее компоненты настроены неправильно.

Далее мы рассмотрим наиболее распространенные ошибки конфигурации, которые нередко допускаются при развертывании Samba, и проанализируем, как они могут быть использованы для обхода контроля доступа или получения несанкционированного доступа к данным.

Основные мисконфигурации файлового сервера

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

Разрешен гостевой доступ (guest ok = yes)

При настройке Samba администратор может разрешить доступ к выложенному контенту без аутентификации, что может привести к утечке данных, хранящихся внутри общего ресурса. Это происходит из-за настройки внутри блока доступа к содержимому директории в конфигурационном файле Samba:

[public]
   path = /srv/samba/public
   guest ok = yes

Рекомендовано использовать guest ok = no или вообще избегать анонимного доступа, особенно если внутри выделенной директории содержатся чувствительные данные:

[public]
   path = /srv/samba/public
   guest ok = no

При разрешенном гостевом доступе можно получить выложенные данные:

Средствами BI.ZONE EDR можно выявлять небезопасные настройки Samba-серверов, на которых разрешен доступ к данным без аутентификации:

Преобразование недействительных логинов в гостевой доступ (map to guest = Bad User)

Настройки Samba позволяют автоматическое преобразование недействительных или несуществующих логинов в гостевой доступ. Это может привести к тому, что злоумышленник может попытаться аутентифицироваться с произвольным именем и получить доступ как гость. Этот параметр также задается в глобальных переменных конфигурационного файла Samba.

[global]
   map to guest = Bad User

Рекомендуется не настраивать в глобальных переменных гостевой доступ в продуктивной среде. Лучше при несуществующем или недействительном логине выдавать ошибку. Иначе доступ к директории можно будет получить, даже не имея легитимной учетной записи:

Решение BI.ZONE EDR способно находить ошибки конфигурации Samba-серверов, на которых разрешено преобразование недействительных или несуществующих логинов в гостевой доступ:

Отсутствие IP-фильтрации (hosts allow = 0.0.0.0/0)

Samba-сервер можно настроить для приема соединений с любого IP-адреса. Это может привести к тому, что злоумышленники из внешней сети (в том числе из интернета, если порт 445 открыт) могут попытаться подключиться к сервису:

[global]
   hosts allow = 0.0.0.0/0

Рекомендуется явно указывать доверенные подсети и блокировать входящий трафик с любого IP-адреса:

[global]
   hosts allow = 192.168.0.0/24
   hosts deny = 0.0.0.0/0

BI.ZONE EDR выявляет небезопасные параметры конфигурации Samba в инфраструктуре, на которых разрешено подключение с любого IP-адреса:

Контроль прав создаваемых файлов (create mask = 0777)

При настройке Samba можно разрешить создавать файлы внутри общих директорий с правами rwxrwxrwx — доступ на чтение, запись и выполнение для всех. Следовательно любой пользователь, имеющий доступ к директории (в том числе гостевой), может модифицировать или удалять чужие файлы:

[shared]
   path = /srv/samba/shared
   create mask = 0777

Рекомендуется устанавливать более жесткие права для созданных файлов внутри общедоступного ресурса:

[shared]
   path = /srv/samba/shared
   create mask = 0640
   directory mask = 0750

BI.ZONE EDR предоставляет инструменты для анализа и выявления мисконфигураций в конфигурации Samba-сервера, на котором в доступных пользователям ресурсах файлы создаются с доступом для чтения, записи и выполнения для всех: 

NetBIOS доступен извне (disable netbios = no)

Служба nmbd и NetBIOS по умолчанию работают на UDP-портах 137/138, что может быть экспонировано наружу. Это позволяет злоумышленнику сканировать и идентифицировать ресурсы Samba, а также может быть использовано в атаках типа NetBIOS name spoofing. Рекомендуется отключить NetBIOSесли он не требуется, а также использовать только порт 445/tcp для SMB и защищать хост с развернутым и настроенным Samba-сервером средствами контроля сетевого трафика (например, iptables):

[global]
    disable netbios = yes
    smb ports = 445

Потенциальный злоумышленник может идентифицировать наличие Samba-сервера на ресурсе сети, используя обычные инструменты сканирования сети:

BI.ZONE EDR обнаруживает нарушения в настройке Samba, которые могут представлять угрозу, в том числе неотключенный NetBIOS:

Использование Samba как контроллера домена

Samba, начиная с версии 4, предоставляет возможность развертывания полноценного контроллера домена Active Directory (AD DC), который может стать альтернативой Windows Server в условиях импортозамещения или в смешанных инфраструктурах. Ниже подробно описан процесс настройки Samba AD DC, а также приведены рекомендации по обеспечению безопасности для работы в Linux-ориентированных или гетерогенных средах с поддержкой Windows-клиентов. 

Samba 4 и выше реализует следующие ключевые функции Active Directory:

  • Контроллер домена (AD DC). Samba может выступать в роли полноценного контроллера домена, обеспечивая управление пользователями, группами и политиками.

  • LDAP-сервер. Встроенная база данных sam.ldb реализует функциональность LDAP, совместимую с Active Directory.

  • Kerberos KDC. Samba включает сервер Kerberos для аутентификации пользователей и служб.

  • DNS-сервер. Поддержка встроенного DNS-сервера или интеграция с BIND9 для разрешения имен в домене.

  • Поддержка GPO и SYSVOL. Samba обеспечивает работу групповых политик (GPO) и репликацию SYSVOL для управления клиентами Windows.

  • Инструменты администрирования. Утилита samba-tool позволяет управлять доменом, пользователями, политиками и другими компонентами.

Эти возможности делают Samba возможным решением для организаций, стремящихся минимизировать затраты на лицензирование Microsoft, сохраняя при этом совместимость с Windows-клиентами и используя стандартные протоколы (LDAP, Kerberos).

Развертывание AD DC на базе Samba

Перед началом настройки убедитесь, что выполнены следующие условия:

  1. Операционная система: рекомендуется использовать современный дистрибутив Linux, например Ubuntu Server 20.04/22.04, CentOS 8 или Debian 11/12.

  2. Аппаратное обеспечение: минимум 2 ГБ оперативной памяти и 10 ГБ свободного места на диске для базового домена.

  3. Сетевые настройки: статический IP-адрес и корректно настроенный DNS.

  4. Пакеты Samba: установлена версия Samba 4.7 или выше (рекомендуется последняя стабильная версия).

  5. Зависимости: установите необходимые пакеты, такие как krb5-user, winbind, acl и attr.

Далее необходимо установить необходимые пакеты:

sudo apt install samba samba-dsdb-modules krb5-config krb5-user winbind libpam-winbind libnss-winbind smbclient -y

Для того чтобы развернуть домен:

sudo samba-tool domain provision --use-rfc2307 --interactive

Проверить, что домен развернут, можно с помощью samba-tool:

Samba AD DC требует настроенного DNS-сервера. Можно использовать встроенный DNS Samba или интегрировать BIND9. Для встроенного DNS указывается статический IP-адрес сервера в файле /etc/resolv.conf:

nameserver <IP-адрес сервера>

Файл конфигурации Kerberos (/etc/krb5.conf) автоматически обновляется при создании домена. Убедитесь, что он содержит:

[libdefaults]
    default_realm = RUSIN.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true
[realms]
    RUSIN.LOCAL = {
        kdc = mow03-rusin.rusin.local
        admin_server = mow03-rusin.rusin.local
    }

Для запуска только Samba, а не smbd/nmbd необходимо выполнить следующие команды:

systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl enable samba-ad-dc
systemctl start samba-ad-dc

Подключение клиентов

Для подключения клиента на базе Windows необходимо выполнить следующие шаги:

  • Перейти в настройки системы.

  • Перейти в изменение имени и настройки домена.

  • Ввести имя домена.

Для подключения клиента на базе Linux необходимо выполнить следующие шаги:

  • Изменить имя сервера для удобства.

sudo hostnamectl set-hostname client.example.com
  • Установить необходимые пакеты.

sudo apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin -y
  • Обнаружить домен.

realm discover example.com
  • Подключиться к домену.

sudo realm join --user=Administrator example.com
  • Проверить соединение.

realm list
id testuser@example.com

В результате проведенной настройки мы успешно подключили конечные хосты к развернутому контроллеру домена на базе Samba. Все основные механизмы взаимодействия работают корректно: пользователи могут проходить аутентификацию через домен, получать групповые политики, а доступ к ресурсам контролируется на основе ролей и групп безопасности. Таким образом, интеграция прошла успешно, а контроль над хостами централизован.

Типичные мисконфигурации в настройке Samba AD DC

Контроллер домена на базе Samba предоставляет широкие возможности по централизованному управлению хостами, пользователями и политиками безопасности. Однако, в отличие от решений на базе Windows Server, Samba требует большей степени ручной настройки и валидации параметров. Это обусловлено как гибкостью инструмента, так и его архитектурными особенностями.

Каждый важный параметр — будь то настройки Kerberos, DNS, LDAP, политики доступа или интеграция с клиентами — должен быть проверен для подтверждения его корректности и соответствия политике безопасности организации.

Проверка шифрования при LDAP Bind 

Для обеспечения безопасности при передаче данных между клиентами и контроллером домена необходимо гарантировать, что LDAP не обслуживает незашифрованные соединения. Использование LDAP без TLS может привести к перехвату учетных данных, в том числе хешей паролей, особенно если задействованы устаревшие механизмы или слабая конфигурация. Для того чтобы убедиться, что LDAP не работает без TLS, необходимо проверить конфигурационный файл по пути /etc/samba/smb.conf:

[global]
   ldap server require strong auth = yes

BI.ZONE EDR позволяет обнаруживать небезопасные конфигурации Samba-серверов, на которых не настроен TLS:

Проверка шифров Kerberos

Шифр RC4 считается небезопасным как с криптографической, так и с практической точки зрения. Он уязвим к нескольким типам атак, включая атакующие сценарии восстановления ключа и коллизии. Использование RC4 в доменной инфраструктуре может привести к компрометации учетных данных и доступу к чувствительной информации. В контексте Samba (и Active Directory в целом) Kerberos может по умолчанию поддерживать RC4-HMAC, если явно не отключить этот алгоритм. Поэтому важно убедиться, что он исключен из списка допустимых криптографических алгоритмов. Для того чтобы это проверить, необходимо проверить файл /etc/krb5.conf:

[libdefaults]
   permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
   default_tgs_enctypes = aes256-cts-hmac-sha1-96
   default_tkt_enctypes = aes256-cts-hmac-sha1-96

С помощью BI.ZONE EDR можно выявлять уязвимые настройки Samba, в том числе включенный алгоритм RC4 в Kerberos:

Проверка ACL на SYSVOL

Каталог SYSVOL является важной частью доменной инфраструктуры на контроллерах домена как в Windows Active Directory, так и в Samba AD DC. Он представляет собой специальную общую директорию, которая присутствует на каждом контроллере домена и хранит в себе критически важные данные, необходимые для корректной работы домена. В этом каталоге находятся групповые политики, которые применяются к пользователям и компьютерам в домене, скрипты входа и выхода из системы, а также различные конфигурационные файлы и шаблоны безопасности. Все эти данные автоматически реплицируются между контроллерами домена, обеспечивая единое управление политиками и настройками по всей сети.

Поскольку каталог SYSVOL содержит чувствительную информацию, доступ к нему должен быть строго ограничен. Владелец этой папки должен быть root, а группа — также root. Права доступа к каталогу должны быть настроены так, чтобы владелец имел полный доступ, тогда как группа и остальные пользователи могли только читать и заходить в каталог, но не могли вносить изменения. Обычно это права 755, которые обеспечивают такой режим доступа. При этом категорически запрещено предоставлять права записи или выполнения для остальных пользователей, то есть не root и не системных служб. Если права на каталог будут слишком открытыми, например 777, любой пользователь на сервере сможет изменить содержимое SYSVOL, что приведет к серьезным нарушениям безопасности. Злоумышленник сможет внедрить вредоносные групповые политики или скрипты, получить доступ к данным пользователей или даже полностью скомпрометировать домен.

ls -ld /var/lib/samba/sysvol/
getfacl /var/lib/samba/sysvol/

Средства BI.ZONE EDR позволяют обнаружить права и владельца директории SYSVOL на Samba-сервере:

Ручные проверки ошибок конфигурации Samba AD DC

После развертывания и базовой настройки Samba в роли контроллера домена необходимо убедиться, что конфигурация выполнена корректно и исключены ошибки, которые могут привести к сбоям или потенциальной компрометации домена. Даже при успешном старте служб и подключении хостов к домену остаются риски, связанные с некорректными параметрами безопасности, отсутствием контроля за правами доступа или неправильной работой ключевых компонентов, таких как Kerberos, LDAP, а также групповых политик.

В этом разделе будут рассмотрены ручные методы проверки конфигурации Samba AD DC, позволяющие выявить типовые мисконфигурации, которые часто встречаются в реальных инфраструктурах. Отдельное внимание уделяется настройке резервного копирования — как одному из важнейших аспектов устойчивости и готовности к восстановлению после сбоев.

Проверка резервного копирования базы

Для обеспечения отказоустойчивости и возможности восстановления в случае сбоя необходимо настроить регулярное резервное копирование базы данных Active Directory. В Samba AD DC эта база представляет собой внутреннюю структуру, в которой хранятся все ключевые данные домена: учетные записи пользователей и компьютеров, группы безопасности, пароли (в виде хешей), объекты групповых политик, сведения об организационных единицах (OU), а также служебные данные, связанные с репликацией и безопасностью. Физически база данных размещается в директории /var/lib/samba/private/.

В частности, основной файл базы данных — это sam.ldb, а также сопутствующие ему журнальные файлы и базы подсистем, такие как secrets.ldb, idmap.ldb, privilege.ldb и др. Именно в этих файлах хранится критически важная информация, обеспечивающая работу всей доменной структуры. Нарушение их целостности или потеря может привести к полной недоступности домена.

Резервное копирование этих файлов нельзя выполнять произвольно в работающей системе, так как они находятся в использовании и могут быть в неконсистентном состоянии. Рекомендуется использовать встроенные средства Samba для безопасного создания резервной копии. Основной инструмент для этого — команда samba-tool domain backup, которая обеспечивает экспорт базы в безопасном и пригодном для восстановления формате. Пример команды:

samba-tool domain backup offline --target-dir=/srv/ad-backup/

Этот подход позволяет выполнить офлайн-бэкап, гарантируя, что все данные будут сохранены в непротиворечивом состоянии. Также важно, чтобы права доступа к каталогу резервной копии были ограничены, поскольку в экспортируемых данных содержатся пароли и чувствительная служебная информация. Для надежности рекомендуется сохранять резервные копии на внешние хранилища, шифровать их и настроить автоматическую ротацию. Это особенно критично в сценариях, когда контроллер домена используется как единственный и нет дополнительной репликации.

Проверка членства в Domain Admins

Для минимизации возможности компрометации Samba AD DC и всей доменной инфраструктуры крайне важно контролировать состав ключевых групп безопасности, таких как группа Domain Admins. Члены этой группы имеют административные привилегии на уровне всего домена, что дает им возможность изменять конфигурацию, управлять всеми пользователями, компьютерами и сервисами в домене. Несанкционированный или ненадлежащий доступ к этой группе может привести к полномасштабной компрометации всей инфраструктуры.

Чтобы обеспечить контроль за тем, кто является членом группы Domain Admins, необходимо регулярно проверять ее состав. Для этого можно использовать утилиту samba-tool, которая позволяет получить список всех пользователей, входящих в группу Domain Admins.

Для проверки состава группы Domain Admins нужно выполнить следующую команду:

samba-tool group listmembers "Domain Admins"

Результат ее выполнения — перечень всех учетных записей, входящих в группу Domain Admins. Это позволяет администратору оперативно выявлять лишние или нежелательные записи, а также регулярно проводить аудит и при необходимости корректировать состав группы. Такой контроль особенно важен в масштабных организациях, где изменения происходят часто и риск несанкционированного доступа высокий.

Проводя регулярный аудит группы Domain Admins и следя за тем, чтобы в ней находились только доверенные пользователи, можно значительно снизить риск компрометации контроллера домена и защитить всю инфраструктуру от потенциальных угроз. Этот подход является одной из ключевых мер безопасности в современных доменных средах, где центральное управление и высокая степень привилегий требуют максимальной ответственности за учетные записи с административными правами.

Проверка наличия GPO

В инфраструктуре на базе Samba Active Directory важно не только настроить групповые политики (GPO), но и регулярно контролировать их применение, чтобы убедиться в корректности работы доменной среды и отсутствии сбоев. Групповые политики играют ключевую роль в обеспечении безопасности, управлении пользовательской средой, конфигурации систем и автоматизации задач. Поэтому любые проблемы с их применением могут привести к серьезным последствиям: от несоответствия настроек политике безопасности до отказов в работе критичных для бизнеса функций.

Для контроля корректности работы групповых политик в Samba можно использовать встроенную утилиту samba-tool, которая предоставляет различные команды для диагностики и аудита состояния домена. В частности, командой samba-tool gpo listall можно получить перечень всех политик, зарегистрированных в каталоге SYSVOL и в базе AD. Эта информация позволяет администратору убедиться, что нужные политики существуют, находятся в правильных контейнерах и имеют актуальные параметры. 

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

Настройка политики паролей

В рамках обеспечения базовой кибербезопасности доменной инфраструктуры на базе Samba AD DC крайне важно убедиться, что в домене настроена и применяется политика паролей. Это один из ключевых механизмов защиты учетных записей пользователей, позволяющий задать минимальные требования к сложности, длине, сроку действия и истории паролей. Отсутствие такой политики или ее некорректная настройка значительно повышают риск компрометации учетных данных, особенно при наличии слабых или повторно используемых паролей.

В Samba, как и в классическом Active Directory, политика паролей задается на уровне домена и применяется ко всем пользователям, если не указано иное. Проверить наличие и параметры текущей политики можно с помощью samba-tool, которая позволяет получить сведения о настройках безопасности, включая правила управления паролями.

samba-tool domain passwordsettings show

Если политика не настроена или не удовлетворяет следующим требованиям, то ее следует изменить. Вероятные требования к парольной политике:

Параметр

Рекомендуемое значение

Пояснение

Минимальная длина пароля (minPwdLength)

12 символов

Чем длиннее пароль, тем труднее его подобрать

Срок действия пароля (maxPwdAge)

90 дней

Регулярная смена снижает риск долгосрочной компрометации

Минимальный срок действия пароля (minPwdAge)

1 день

Предотвращает немедленную смену на старый пароль

История паролей (pwdHistoryLength)

10

Не позволяет повторно использовать старые пароли

Блокировка учетной записи (lockoutThreshold)

5 неудачных попыток

Блокирует попытки брутфорса

Время блокировки (lockoutDuration)

30 минут

Временная блокировка после превышения порога

Сброс счетчика попыток (lockoutObservationWindow)

30 минут

В течение этого времени отслеживаются ошибки

Сложность паролей (pwdProperties)

Включить

Обязательные: буквы, цифры, спецсимволы

Команды для настройки политики:

samba-tool domain passwordsettings set --min-pwd-length=12
samba-tool domain passwordsettings set --complexity=on
samba-tool domain passwordsettings set --history-length=10
samba-tool domain passwordsettings set --max-pwd-age=90

Общие мисконфигурации Samba 

Включен SMBv1 (server max protocol = NT1)

В устаревших версиях Samba может быть включена поддержка SMBv1 по умолчанию. Так как этот протокол содержит множество известных уязвимостей, не поддерживает современное шифрование и аутентификацию, рекомендуется отказаться от использования SMBv1:

[global]
   server min protocol = CORE
   server max protocol = NT1

Рекомендуется отключить использование SMBv1 полностью:

[global]
   server min protocol = SMB2
   server max protocol = SMB3

BI.ZONE EDR позволяет автоматизированно находить слабые места в настройках Samba, например разрешение использовать SMBv1 вместо SMBv2 или SMBv3:

Аудит

Аудит в Samba необходим для контроля доступа к файлам и выявления подозрительной активности. Он позволяет отслеживать, кто и когда открывал, изменял или удалял файлы, а также фиксировать неудачные попытки входа. Это помогает своевременно выявлять атаки, утечки данных и нарушения политики безопасности. Кроме того, аудит необходим для соответствия требованиям стандартов кибербезопасности, также он упрощает расследование инцидентов.

Для настройки аудита в файле /etc/samba/smb.conf в секцию [global] необходимо добавить следующие строки:

[global]
    log level = 1 vfs:1
    vfs objects = full_audit
    full_audit:prefix = %u|%I|%S
    full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename
    full_audit:failure = connect, open, mkdir, rmdir, unlink, write, rename
    full_audit:facility = local5
    full_audit:priority = notice

Каждый параметр имеет определенные функции:

Параметр

Функциональность

full_audit:prefix

Формат записи: %u — имя пользователя, %I — его IP-адрес, %S — название шары

full_audit:success

Логирование успешных событий

full_audit:failure

Логирование событий с ошибками

full_audit:facility

Категория событий syslog, в которую будут попадать записи

full_audit:priority

Приоритет записей для syslog. Для Samba будет достаточно приоритета notice

Полный список событий, которые можно логировать, представлен в таблице:

Событие

Функциональность

chdir

Смена текущего каталога

chflags

Изменение флагов файла

chmod

Изменение прав доступа к файлу/каталогу

chmod_acl

Изменение прав доступа через ACL

chown

Смена владельца файла/каталога

close

Закрытие файла

closedir

Закрытие каталога (после opendir)

connect

Установка сетевого соединения

disconnect

Разрыв сетевого соединения

disk_free

Получение информации о свободном месте на диске

fchmod

Изменение прав файла по дескриптору

fchmod_acl

Изменение ACL по дескриптору

fchown

Смена владельца файла по дескриптору

fget_nt_acl

Получение ACL в формате NT по дескриптору

fgetxattr

Получение расширенного атрибута по дескриптору

flistxattr

Список расширенных атрибутов по дескриптору

fremovexattr

Удаление расширенного атрибута по дескриптору

fset_nt_acl

Установка NT ACL по дескриптору

fsetxattr

Установка расширенного атрибута по дескриптору

fstat

Получение информации о файле по дескриптору

fsync

Синхронизация данных файла с диском

ftruncate

Обрезка файла до заданного размера

get_nt_acl

Получение ACL в формате NT

get_quota

Получение квоты пользователя

get_shadow_copy_data

Получение информации о теневой копии

getlock

Получение состояния блокировки файла

getwd

Получение текущего рабочего каталога

getxattr

Получение расширенного атрибута файла

kernel_flock

Блокировка файла средствами ядра

link

Создание жесткой ссылки

linux_setlease

Установка lease на файл (особенность Linux)

listxattr

Список расширенных атрибутов файла

lock

Блокировка части файла

lseek

Изменение положения курсора в файле

lstat

Получение информации о символической ссылке

mkdir

Создание каталога

mknod

Создание специального файла (например, устройства)

open

Открытие файла

opendir

Открытие каталога

pread

Чтение из файла с указанного смещения

pwrite

Запись в файл с указанного смещения

read

Чтение данных из файла

readdir

Чтение содержимого каталога

readlink

Чтение содержимого символической ссылки

realpath

Получение абсолютного пути

removexattr

Удаление расширенного атрибута

rename

Переименование файла/каталога

rewinddir

Возврат к началу каталога (после readdir)

rmdir

Удаление каталога

seekdir

Установка позиции чтения каталога

sendfile

Копирование данных напрямую между файловыми дескрипторами

set_nt_acl

Установка NT ACL

set_quota

Установка квот

setxattr

Установка расширенного атрибута

stat

Получение информации о файле/каталоге

statvfs

Получение информации о файловой системе

symlink

Создание символической ссылки

sys_acl_delete_def_file

Удаление дефолтного ACL у файла

sys_acl_get_fd

Получение ACL по файловому дескриптору

sys_acl_get_file

Получение ACL по имени файла

sys_acl_set_fd

Установка ACL по файловому дескриптору

sys_acl_set_file

Установка ACL по имени файла

telldir

Получение текущей позиции в каталоге

unlink

Удаление файла

utime

Изменение времени последнего доступа/модификации

write

Запись данных в файл

BI.ZONE EDR обеспечивает обнаружение Samba-серверов, на которых не настроен аудит:

Заключение

Samba — это не просто альтернатива Windows Server. Это мощный и гибкий инструмент, способный выполнять функции полноценного контроллера домена Active Directory. Он открывает широкие возможности для управления пользователями, хостами, политиками безопасности и ресурсами внутри организации. Однако с этой гибкостью приходит и ответственность: неправильно настроенные службы, слабые пароли, устаревшие протоколы или открытый доступ к критическим файлам могут обернуться прямыми угрозами безопасности.

Развертывая Samba в роли AD DC, администратор фактически берет в руки сердце всей IT‑ инфраструктуры. От него требуется не просто базовая настройка, а глубокое понимание принципов работы Kerberos, LDAP, GPO, SYSVOL и всей внутренней архитектуры домена. Каждая ошибка или недосмотр могут стать точкой входа для атак.

Важно понимать: хардeнинг Samba — это не разовая операция, которую можно сделать и забыть. Это постоянный цикл. Аудит пользователей и групп, контроль политик, резервное копирование, проверка конфигураций, исключение слабых алгоритмов шифрования, мониторинг журналов безопасности — все это должно стать частью повседневной практики администратора.

Автор: Максим Русин, ведущий специалист по анализу киберугроз, BI.ZONE

Теги:
Хабы:
+5
Комментарии3

Публикации

Информация

Сайт
bi.zone
Дата регистрации
Численность
501–1 000 человек
Местоположение
Россия