SMB (Server Message Block) — протокол прикладного уровня для доступа к общим ресурсам по сети: файлам, принтерам, последовательным портам. Разработан IBM в 1983 году, развит Microsoft в 1990-х. CIFS (Common Internet File System) — переименование SMB v1, выпущенное Microsoft в 1996 году с Windows 95. Сегодня термины используются как синонимы, хотя технически CIFS относится к устаревшей версии протокола.
Как работает
SMB работает по модели клиент–сервер. Сервер экспортирует ресурс (share), клиент монтирует его как сетевой диск. Транспортный уровень — TCP (порт 445) с NetBIOS или без него. Соединение проходит стадии: согласование версии протокола → аутентификация (Kerberos или NTLM) → выбор ресурса → операции с файлами (открытие, чтение, запись, блокировка).
Версии протокола:
- SMB 1.0 — оригинальная версия (1980-е). Уязвима (EternalBlue → WannaCry, 2017). Отключена по умолчанию в Windows 10/11 и Windows Server 2019+.
- SMB 2.0 — представлена в Windows Vista/Server 2008. Сокращение числа команд с 100 до 19, поддержка символических ссылок, compound-запросы.
- SMB 2.1 — Windows 7/Server 2008 R2. Механизм lease (клиентское кэширование).
- SMB 3.0 — Windows 8/Server 2012. Multichannel (несколько сетевых адаптеров), шифрование AES-128-CCM, SMB Direct (RDMA).
- SMB 3.1.1 — Windows 10/Server 2016. Pre-authentication integrity (защита от MITM), шифрование AES-128-GCM.
На Linux и macOS SMB реализует Samba — свободная реализация протокола. Монтирование SMB-шары в Linux: mount -t cifs //сервер/ресурс /точка_монтирования -o username=....
История
SMB создан в 1983 году Барри Фейгенбаумом (IBM). Microsoft адаптировала протокол для LAN Manager в 1987 году. В 1996 году Microsoft представила CIFS как открытый стандарт, пытаясь вытеснить NFS. В 2006 году Samba-разработчики совместно с Microsoft начали документирование протокола (соглашение по антимонопольному делу EC). SMB 3.0 в 2012 году добавил шифрование и RDMA, сделав протокол конкурентоспособным для корпоративных NAS.
На что обращать внимание
SMB 1.0 необходимо отключить — он не имеет шифрования и уязвим для атак типа EternalBlue. В Windows это делается через «Компоненты Windows» или PowerShell: Set-SmbServerConfiguration -EnableSMB1Protocol . Для изолированных серверов закрывайте порт 445 в iptables/UFW — SMB не должен быть доступен из интернета. Альтернативы: для Linux-to-Linux — NFS быстрее и проще; для облачного хранилища — iSCSI или S3-compatible object storage.
История SMB/CIFS
SMB (Server Message Block) разработан IBM в 1983 году, адаптирован Microsoft для Windows в 1985 году. CIFS (Common Internet File System) — расширение SMB 1.0, предложено Microsoft в 1996 году. SMB 2.0 появился в Windows Vista (2006) — значительно быстрее SMB 1.0. SMB 3.0 (Windows 8, 2012) добавил шифрование AES, multichannel, прозрачный failover. В 2017 году эксплойт EternalBlue (NSA) использовал уязвимость SMB 1.0 для распространения WannaCry — Microsoft рекомендует отключить SMB 1.0. Samba — open-source реализация SMB для Linux, версия 4.0 с 2012 года поддерживает Active Directory.
SMB на сервере Linux: Samba
# Установка
apt install samba
# Пример конфига /etc/samba/smb.conf
[shared]
path = /srv/samba/shared
browseable = yes
writable = yes
valid users = @smbgroup
Типичные ошибки при настройке SMB на хостинге
- Открытый SMB-порт 445 в публичном интернете — основная цель для эксплойтов типа EternalBlue.
- Использование SMB 1.0 (
min protocol = NT1) — уязвимо к атакам. - Отсутствие шифрования: SMB 3.0 с
smb encrypt = requiredобязательно для чувствительных данных. - SMB через интернет без VPN: трафик должен идти через OpenVPN или WireGuard.