Актуальность. Почему старые настройки Samba больше не работают
Каждый системный администратор знает: если в сети доминируют клиентские машины на Windows, а серверы работают на Linux (что сегодня встречается повсеместно), то без Samba не обойтись. Samba - это наша "швейцарская армия" в мире кросс-платформенного файлового обмена, которая заставляет Linux-сервер притворяться родным Windows-сервером, используя протокол Server Message Block (SMB/CIFS).
Но есть проблема. То, как мы настраивали Samba 5-10 лет назад, больше не работает. Современные версии Windows, особенно после последних обновлений (например, Windows 11 24H2 и Windows Server 2025), требуют максимальной безопасности. Если ваш сервер не соответствует этим требованиям, клиенты просто откажут ему в доступе.
Главные изменения, которые нельзя игнорировать:
- Прощай, SMBv1. Уязвимый и устаревший протокол SMBv1 (через порт TCP 139) должен быть полностью отключен. Современная связь идет через SMBv2/v3 (порт TCP 445) .
- Обязательная подпись (SMB Signing). Начиная с последних релизов Windows, подпись SMB-пакетов становится обязательной по умолчанию. Сервер, не поддерживающий подпись, будет отклонен, так как подпись предотвращает атаки ретрансляции.
- Kerberos и SSO. В корпоративной среде аутентификация должна быть централизованной (единый вход, SSO) через Active Directory (AD) и протокол Kerberos, а не через локальные файлы паролей.
Установка, Демоны и Файрвол
Samba состоит из нескольких ключевых компонентов (демонов), каждый из которых выполняет свою задачу:
- smbd (SMB Daemon): Отвечает за файловый доступ, печать и основные соединения.
- nmbd (NetBIOS Daemon): Поддержка службы имен NetBIOS (актуальность снизилась, так как SMB3 использует DNS) .
- winbindd (Winbind Daemon): Критически важен для режима Active Directory, так как маппирует Windows SID (Security Identifiers) в локальные UID и GID Linux .
Установка и запуск
Установка пакетов (samba, samba-common-tools, samba-winbind) осуществляется через стандартный менеджер пакетов вашего дистрибутива.
Для управления службами в современных системах используется systemd:
# Запускаем и включаем автоматический старт smb и nmb
sudo systemctl enable --now smb
sudo systemctl enable --now nmb
# Проверяем статус
sudo systemctl status smb
Настройка сетевых портов и Firewall
Современный SMBv3 работает на порту TCP 445. Порты NetBIOS (UDP 137/138, TCP 139) могут быть закрыты или разрешены только для внутренних целей, но не являются обязательными для современного файлового обмена .
В зависимости от вашего дистрибутива, разрешите трафик:
Команда для открытия портов Firewalld (RHEL, Fedora, CentOS):
sudo firewall-cmd --permanent --add-service=samba
UFW (Ubuntu, Debian):
sudo ufw allow 'Samba'
Не забудьте применить изменения:
sudo firewall-cmd --reload или sudo ufw enable.
Файл smb.conf - глобальная настройка безопасности
Весь процесс настройки Samba сосредоточен в конфигурационном файле /etc/samba/smb.conf. Изменения, внесенные в этот файл, обычно применяются к новым соединениям автоматически в течение 60 секунд.
Безопасность: Отказ от SMBv1 и принудительная подпись
Это самый важный блок. Настраиваем минимально допустимый протокол и требуем подпись пакетов:
[global]
# Отключаем SMBv1 полностью. Начинаем с SMB2_02 или SMB3.
server min protocol = SMB2_02
# Обязательная подпись пакетов. Ключ к безопасности от ретрансляции.
server signing = required
# Требуем шифрование паролей
encrypt passwords = yes
⚠️ Важно: Параметр server signing = required (требуется) также автоматически отключает гостевой доступ, поскольку гостевые пользователи не могут предоставить подписанный сеанс.
Производительность и логирование (Performance Tuning)
Чтобы сервер работал быстро и его можно было легко отладить, добавьте следующие параметры :
[global]
# Кэширование путей — ускоряет обход каталогов
getwd cache = yes
# Опции сокета для снижения задержки
socket options = TCP_NODELAY IPTOS_LOWDELAY
# Отключаем принудительную синхронизацию записи на диск (если есть журналируемая ФС)
sync always = no
use sendfile = true # Использование sendfile для оптимизации чтения
# Детальное логирование: отдельный лог для каждой клиентской машины (%m - NetBIOS-имя клиента)
log file = /var/log/samba/%m.log
max log size = 10000 ; 10 МБ на файл
Кириллическая кодировка
Современные системы используют UTF-8. Если вы сталкиваетесь с проблемами отображения имен файлов на кириллице (особенно со старыми клиентами), используйте эти параметры:
[global]
unix charset = UTF-8
dos charset = CP866 ; Или CP850, в зависимости от потребностей
display charset = UTF-8
Интеграция с Active Directory (ADS/Kerberos)
Локальная аутентификация (security = user) хороша для дома, но в офисе нам нужен Единый Вход (SSO), который обеспечивает режим security = ADS (Active Directory Service) .
Настройка AD в [global]
[global]
security = ADS
realm = YOURDOMAIN.COM # Полное имя домена Kerberos
workgroup = NETBIOS_DOMAIN_NAME # NetBIOS-имя домена
# Обязательная мера безопасности от атак NTLM forwarding
ldap server require strong auth = yes
# Настройка Kerberos (рекомендуется для современных систем)
kerberos method = secrets and keytab
Вступление сервера в домен
Для начала работы необходимо получить Kerberos-тикет администратора домена, а затем присоединить сервер к AD:
Получение тикета:
kinit Administrator@YOURDOMAIN.COM
Присоединение к домену:
sudo net ads join -U Administrator
# После ввода пароля AD сервер будет присоединен
Перезагрузка: В зависимости от дистрибутива, может потребоваться перезапуск службы Samba (smb) .
Управление правами (NTFS ACL)
Устаревшее мнение о том, что Linux не может полноценно эмулировать сложные, наследуемые права доступа Windows (NTFS ACL) из-за простоты POSIX ACL (владелец, группа, остальные) - неверно.
Современная Samba решила эту проблему с помощью модулей VFS (Virtual File System).
Модуль vfs_acl_xattr
Этот модуль позволяет сохранять полные списки контроля доступа Windows (NT ACLs) в виде расширенных атрибутов (Extended Attributes, XATTRs) файловой системы Linux (Ext4, XFS). Эти атрибуты хранят оригинальные Windows SID, что позволяет администраторам Windows управлять правами доступа через привычные графические интерфейсы.
Для его активации добавьте модуль в секцию нужного ресурса или в [global]:
comment = Корпоративное хранилище
path = /data/storage
writeable = yes
# Активация полного маппинга прав NTFS
vfs objects = acl_xattr
# Обеспечивает наследование ACL, как в Windows
inherit acls = true
store dos attributes = yes
Дополнительные VFS-Модули: "Корзина Windows"
Модули VFS можно стекировать, то есть использовать несколько одновременно. Например, мы можем добавить функционал "Корзины Windows" с помощью модуля vfs_recycle .
Пример стекирования (ACL + Корзина):
path = /data/protected
writeable = yes
# Порядок важен!
vfs objects = acl_xattr recycle
# Настройки Корзины:
recycle:repository =.recycle ; Имя каталога для удаленных файлов
recycle:keeptree = yes ; Сохранять иерархию папок в корзине
recycle:maxsize = 500000000 ; Игнорировать файлы больше 500 МБ
Диагностика и Тестирование
После внесения изменений в smb.conf всегда нужно проверять их и перезагружать службу:
# Проверка синтаксических ошибок в smb.conf
testparm
# Перезагрузка конфигурации для текущих сеансов
sudo smbcontrol all reload-config
# Просмотр активных сессий и используемых протоколов (Критически важно!)
smbstatus
Команда smbstatus покажет, действительно ли клиенты используют SMB3 и включено ли шифрование/подпись.
Если что-то не работает:
- Убедитесь, что testparm не выдал ошибок .
- Проверьте доступность портов TCP 445 (например, с помощью telnet или nmap).
- Используйте smbclient -L //localhost -U <user> для имитации клиентского подключения с самого сервера.
- Проверяйте лог-файлы /var/log/samba/<client_name>.log
Заключение
Современный Linux-сервер, оснащенный Samba (версии 4.x и выше), не просто "умеет" обмениваться файлами с Windows - он выступает в качестве высокопроизводительного, безопасного и полнофункционального члена Active Directory.
Переход на SMB3, обязательное использование Kerberos и активация NTFS ACL через vfs_acl_xattr - это не просто лучшие практики, это обязательное требование для любого системного администратора, который стремится к надежной и безопасной корпоративной инфраструктуре.