Windows Sunucu İleti Bloğu (SMB) - Windows Dosya ve Yazıcı Paylaşımı

Server Message Block (SMB), ağ üzerindeki bilgisayarların dosya, klasör, yazıcı ve çeşitli kaynakları paylaşmasını sağlayan istemci-sunucu mimarisine sahip bir ağ protokolüdür.



Windows işletim sistemlerinin en önemli bileşenlerinden biridir.

Bugün;

  • Windows Etki Alanı (Active Directory)

  • Dosya Sunucuları

  • Yazıcı Sunucuları

  • Hyper-V

  • DFS

  • SQL Cluster

  • Windows Admin Center

  • PowerShell Remoting

gibi birçok servis SMB'yi kullanmaktadır.

Linux sistemlerde ise SMB hizmeti Samba tarafından sağlanır.


SMB'nin Tarihçesi

Sürüm         Yıl        Özellik
SMB 1.0         1983        IBM tarafından geliştirildi
CIFS        1996            Microsoft genişletti
SMB 2.0        Vista / Server 2008        Performans arttı
SMB 2.1        Windows 7        Leasing, Cache
SMB 3.0        Server 2012        Encryption
SMB 3.02        Server 2012 R2        Performans
SMB 3.1.1        Windows 10 / Server 2016        AES-128 GCM, Preauthentication Integrity

SMB Ne İşe Yarar?

SMB sayesinde;

  • Dosya paylaşımı

  • Yazıcı paylaşımı

  • Uzak klasör erişimi

  • Merkezi dosya sunucusu

  • Grup klasörleri

  • Kullanıcı profilleri

  • Home Folder

  • DFS Namespace

  • Cluster Shared Volumes

gibi birçok işlem gerçekleştirilir.


SMB Nasıl Çalışır?

İstemci
TCP 445
SMB İsteği
Sunucu
Kimlik Doğrulama
NTLM / Kerberos
Dosya Sistemi (NTFS)

SMB'nin Çalışma Mantığı

  1. İstemci bağlantı ister.

  2. TCP 445 açılır.

  3. SMB sürümü belirlenir.

  4. Kimlik doğrulama yapılır.

  5. Yetki kontrol edilir.

  6. Paylaşım açılır.

  7. Dosya okunur/yazılır.


SMB'nin Kullanıldığı Portlar

Port        Açıklama
TCP 445        Modern SMB
TCP 139        NetBIOS SMB
UDP 137        NetBIOS Name
UDP 138        NetBIOS Datagram

Günümüzde doğrudan TCP 445 kullanılmaktadır.


SMB Mimarisi

+-----------------------+
| Kullanıcı |
+-----------+-----------+
|
Windows Explorer
|
SMB Redirector
|
TCP/IP
|
Ethernet
|
Sunucu SMB Service
|
NTFS

SMB Kimlik Doğrulaması

SMB;

  • NTLM

  • Kerberos

protokollerini kullanabilir.

Active Directory ortamında tercih edilen yöntem:

Kerberos

Çünkü;

  • Ticket tabanlıdır.

  • Daha güvenlidir.

  • Şifre ağda dolaşmaz.


SMB Paylaşımı Oluşturma

Grafik Arayüz

Klasör

Properties

Sharing

Advanced Sharing

Share this folder

Permissions


PowerShell

New-SmbShare `
-Name "Ortak" `
-Path "D:\Ortak"

Paylaşımları Listeleme

Get-SmbShare

Paylaşımı Silme

Remove-SmbShare -Name Ortak

SMB Yetkilendirme

İki farklı izin bulunur.

Share Permission

Ağ üzerinden erişimi kontrol eder.

Örnek:

  • Read

  • Change

  • Full


NTFS Permission

Disk üzerindeki gerçek yetkidir.

Örnek

  • Read

  • Modify

  • Write

  • Full Control


Gerçek Yetki Nasıl Hesaplanır?

En düşük izin geçerlidir.

Örneğin;

Share:

Full

NTFS:

Read

Sonuç:

Read

Hidden Share

Sonuna "$" eklenir.

Örnek

Muhasebe$

Explorer'da görünmez.

Bağlantı:

\\SERVER\Muhasebe$

Yönetim Paylaşımları

Windows otomatik oluşturur.

C$
ADMIN$
IPC$
PRINT$

SMB Sürümlerini Görme

Get-SmbServerConfiguration

İstemci tarafı

Get-SmbConnection

SMB 1 Devre Dışı Bırakma

Disable-WindowsOptionalFeature `
-Online `
-FeatureName SMB1Protocol

veya

Set-SmbServerConfiguration `
-EnableSMB1Protocol $false

SMB Encryption

SMB 3 ile geldi.

Set-SmbServerConfiguration `
-EncryptData $true

Belirli paylaşım için

Set-SmbShare `
-Name Ortak `
-EncryptData $true

SMB Signing

MITM saldırılarına karşı kullanılır.

Kontrol

Get-SmbServerConfiguration

Etkinleştirme

Set-SmbServerConfiguration `
-RequireSecuritySignature $true

SMB Compression

Windows Server 2022

New-SmbShare `
-CompressData $true

SMB Multichannel

Birden fazla NIC kullanır.

Avantajları

  • Daha yüksek hız

  • Yük dengeleme

  • Failover

Kontrol

Get-SmbMultichannelConnection

SMB Direct (RDMA)

RDMA destekli ağ kartlarında

Avantaj

  • Çok düşük gecikme

  • CPU kullanımı azalır


Dosya Kopyalama

Explorer

veya

Copy-Item

veya

robocopy

Örnek

robocopy D:\Kaynak \\SERVER\Ortak /MIR

SMB Oturumu Görüntüleme

Get-SmbSession

Açık Dosyalar

Get-SmbOpenFile

Dosyayı kapatma

Close-SmbOpenFile

SMB İstemcileri

Get-SmbSession

Örnek çıktı

ClientComputerName
PC01
PC02
PC03

SMB Firewall

Açık olması gereken

File and Printer Sharing

PowerShell

Enable-NetFirewallRule `
-DisplayGroup "File and Printer Sharing"

Ağ Sürücüsü Bağlama

Explorer

Map Network Drive

PowerShell

New-PSDrive `
-Name Z `
-PSProvider FileSystem `
-Root "\\SERVER\Ortak"

CMD

net use Z: \\SERVER\Ortak

Kalıcı Ağ Sürücüsü

net use Z: \\SERVER\Ortak /persistent:yes

SMB Logları

Event Viewer

Applications and Services Logs
Microsoft
Windows
SMBServer

Performans Sayaçları

Performance Monitor

Sayaçlar

  • SMB Server Sessions

  • Bytes/sec

  • Queue Length

  • Avg Response


PowerShell Yönetim Komutları

Komut        Görevi
Get-SmbShare        Paylaşımlar
New-SmbShare        Oluşturur
Remove-SmbShare        Siler
Set-SmbShare        Düzenler
Get-SmbSession        Oturumlar
Get-SmbOpenFile        Açık dosyalar
Close-SmbOpenFile        Dosya kapatır
Get-SmbConnection        İstemci bağlantıları
Get-SmbServerConfiguration        Sunucu ayarları

Siber Güvenlik Açısından SMB

SMB, ağın en kritik servislerinden biridir ve yanlış yapılandırıldığında ciddi güvenlik riskleri oluşturabilir.

En Yaygın Tehditler

  • SMBv1 zafiyetleri (ör. WannaCry saldırıları)

  • Yetkisiz anonim erişim (Null Session)

  • Zayıf NTLM yapılandırmaları

  • Lateral Movement (yatay ağ hareketi)

  • Pass-the-Hash saldırıları

  • Relay (NTLM Relay) saldırıları

  • Ransomware'in ağ paylaşımlarını şifrelemesi

  • Hassas verilerin yanlış izinlerle paylaşılması


Güvenlik İçin En İyi Uygulamalar

  1. SMBv1'i tamamen devre dışı bırakın.

  2. SMB Signing'i etkinleştirin.

  3. SMB Encryption kullanın (özellikle güvenilmeyen ağlarda).

  4. Kerberos kimlik doğrulamasını tercih edin.

  5. NTLM kullanımını mümkün olduğunca azaltın.

  6. Paylaşım ve NTFS izinlerini en az yetki (Least Privilege) ilkesine göre yapılandırın.

  7. Yönetim paylaşımlarını (C$, ADMIN$) sadece yetkili yöneticilerle sınırlandırın.

  8. 445/TCP portunu internete kesinlikle açmayın.

  9. Windows Güvenlik Duvarı ve ağ segmentasyonu kullanın.

  10. Olay günlüklerini düzenli olarak izleyin ve merkezi log yönetimi (ör. SIEM) ile korelasyon sağlayın.


Sorun Giderme

Paylaşım görünmüyor

net share

İstemci sunucuya erişemiyor

ping SERVER
Test-NetConnection SERVER -Port 445

Açık dosyalar nedeniyle silinemiyor

Get-SmbOpenFile
Close-SmbOpenFile

Yetki problemi

  • Share izinlerini kontrol edin.

  • NTFS izinlerini doğrulayın.

  • Etkin izinlerin (Effective Permissions) beklenen sonucu verdiğinden emin olun.


En Sık Kullanılan SMB Komutları (Cheat Sheet)

Amaç        Komut
Paylaşımları listele    Get-SmbShare
Yeni paylaşım oluştur    New-SmbShare -Name Veri -Path D:\Veri
Paylaşımı sil    Remove-SmbShare -Name Veri
Oturumları görüntüle    Get-SmbSession
Açık dosyaları listele    Get-SmbOpenFile
Açık dosyayı kapat    Close-SmbOpenFile -FileId <ID>
Sunucu yapılandırmasını görüntüle    Get-SmbServerConfiguration
Ağ sürücüsü bağla    net use Z: \\SERVER\Veri
Port 445 testi    Test-NetConnection SERVER -Port 445

Sonuç

SMB, Windows ağlarının temel yapı taşlarından biridir. Doğru yapılandırıldığında merkezi dosya paylaşımı, yüksek performans ve güvenli erişim sağlar. Modern ortamlarda SMB 3.1.1, Kerberos, SMB Signing ve SMB Encryption birlikte kullanılarak hem performans hem de güvenlik en üst düzeye çıkarılabilir. Özellikle kurumsal ortamlarda paylaşım izinlerinin dikkatle yönetilmesi, SMBv1'in kaldırılması ve ağ erişiminin sınırlandırılması, veri güvenliğinin sağlanmasında kritik öneme sahiptir.


CMD (Command Prompt), Windows'ta SMB yönetimi için hâlâ oldukça güçlü bir araçtır. Aşağıda SMB ile ilgili en önemli CMD komutlarını açıklamalarıyla birlikte bulabilirsiniz.

Windows SMB (CMD) Komutları


1. Bilgisayardaki Paylaşımları Görüntüleme

net share

Örnek çıktı:

Share name Resource
--------------------------------
C$ C:\
ADMIN$ C:\Windows
IPC$
Ortak D:\Ortak

2. Yeni Paylaşım Oluşturma

net share Ortak=D:\Ortak

Yetki vererek:

net share Ortak=D:\Ortak /GRANT:Everyone,FULL

Sadece okuma:

net share Ortak=D:\Ortak /GRANT:Users,READ

3. Paylaşımı Silme

net share Ortak /delete

4. Ağ Paylaşımlarını Görme

Belirli sunucu:

net view \\SERVER

Yerel ağdaki bilgisayarlar:

net view

5. Sunucuya Bağlanma

Explorer yerine CMD:

dir \\SERVER\Ortak

6. Ağ Sürücüsü Bağlama

net use Z: \\SERVER\Ortak

7. Kullanıcı Adı ve Şifre ile Bağlanma

net use Z: \\SERVER\Ortak /user:Administrator *

Şifre sorulur.

Veya

net use Z: \\SERVER\Ortak /user:Administrator P@ssw0rd

Güvenlik nedeniyle şifreyi komut satırında açık yazmanız önerilmez.


8. Kalıcı Bağlantı

net use Z: \\SERVER\Ortak /persistent:yes

9. Bağlantıyı Kaldırma

Tek sürücü:

net use Z: /delete

Tüm bağlantılar:

net use * /delete

10. Aktif SMB Bağlantıları

net use

Örnek:

Status Local Remote
OK Z: \\SERVER\Ortak

11. Kullanıcı Oturumlarını Görme

net session

Örnek:

Computer User Name
--------------------------------
\\PC01 Ahmet
\\PC02 Mehmet

Yönetici yetkisi gerektirir.


12. Oturumu Sonlandırma

net session \\PC01 /delete

13. Açık Dosyaları Görme

openfiles /query

İlk kullanım için:

openfiles /local on

Ardından sistemi yeniden başlatmanız gerekir.


14. Ağdaki Bilgisayarları Listeleme

net view

15. Belirli Bilgisayarı Görme

net view \\SERVER

16. Paylaşım Yolunu Test Etme

dir \\SERVER\Ortak

17. SMB Portunu Test Etme

CMD'de yerleşik değildir.

PowerShell kullanılır:

Test-NetConnection SERVER -Port 445

CMD üzerinden:

powershell Test-NetConnection SERVER -Port 445

18. Ağ Bağlantılarını Görme

netstat -an

SMB filtreleme:

netstat -an | find "445"

19. SMB Portunu Dinleyen Servis

netstat -ano | find "445"

PID öğrenilir.

Sonra:

tasklist /fi "PID eq 4"

Genellikle:

System

20. Bilgisayar Adını Öğrenme

hostname

21. Kullanıcı Bilgisi

whoami

22. Etki Alanı Bilgisi

echo %USERDOMAIN%

23. Paylaşıma Dosya Kopyalama

copy dosya.txt \\SERVER\Ortak

24. Klasör Kopyalama

xcopy C:\Veriler \\SERVER\Ortak /E /I

Daha gelişmiş:

robocopy C:\Veriler \\SERVER\Ortak /MIR

25. Ağ Sürücülerini Görme

wmic logicaldisk get name,providername

veya

net use

26. IP Adresini Öğrenme

ipconfig

27. Sunucuya Ping

ping SERVER

28. DNS Testi

nslookup SERVER

29. SMB Ad Çözümleme

nbtstat -A 192.168.1.10

veya

nbtstat -n

30. SMB Hizmetlerini Görme

sc query lanmanserver

İstemci servisi:

sc query lanmanworkstation

31. SMB Hizmetini Başlatma

net start lanmanserver

İstemci:

net start lanmanworkstation

32. SMB Hizmetini Durdurma

net stop lanmanserver

33. Bilgisayardaki Paylaşımları Dosyaya Kaydetme

net share > paylasimlar.txt

34. Oturumları Dosyaya Kaydetme

net session > sessions.txt

35. Ağdaki Bir Bilgisayarın Paylaşımlarını Listeleme

net view \\192.168.1.100

veya

net view \\SERVER

CMD Cheat Sheet

Amaç        Komut
Paylaşımları listele    net share
Yeni paylaşım oluştur    net share Veri=D:\Veri
Paylaşımı sil    net share Veri /delete
Ağ bilgisayarlarını listele    net view
Sunucudaki paylaşımları listele    net view \\SERVER
Ağ sürücüsü bağla    net use Z: \\SERVER\Veri
Bağlantıları görüntüle    net use
Ağ sürücüsünü kaldır    net use Z: /delete
Aktif SMB oturumları    net session
Açık dosyalar    openfiles /query
Dosya kopyala    copy
Klasör kopyala    xcopy
Gelişmiş senkronizasyon    robocopy
Hizmet durumu    sc query lanmanserver
Hizmeti başlat    net start lanmanserver
Hizmeti durdur    net stop lanmanserver
Port 445 bağlantıları    netstat -an | find "445"
Bilgisayar adı    hostname
Kullanıcı adı    whoami
IP bilgisi    ipconfig

Bu komutlar, Windows 10, Windows 11 ve Windows Server 2016/2019/2022/2025 sistemlerinde SMB paylaşımlarını ve istemci bağlantılarını CMD üzerinden yönetmek için en sık kullanılan araçlardır.


PowerShell'deki satır sonundaki ters tek tırnak (`) karakteri (backtick veya grave accent) satır devam karakteridir (line continuation character).

Yani PowerShell'e:

"Komut henüz bitmedi, bir sonraki satırdan devam ediyor."

anlamını verir.

Örneğin:

New-SmbShare `
-Name "Ortak" `
-Path "D:\Ortak"

PowerShell bunu tek satır olarak yorumlar:

New-SmbShare -Name "Ortak" -Path "D:\Ortak"

Neden Kullanılır?

Uzun komutların daha okunabilir olması için.

Tek satır:

New-SmbShare -Name "Ortak" -Path "D:\Ortak" -FullAccess "Administrators" -ReadAccess "Users"

Satırlara bölünmüş hali:

New-SmbShare `
-Name "Ortak" `
-Path "D:\Ortak" `
-FullAccess "Administrators" `
-ReadAccess "Users"

Bu yöntem özellikle:

  • PowerShell betikleri (.ps1)

  • Eğitim dokümanları

  • Blog yazıları

  • Microsoft dokümantasyonu

için okunabilirliği artırır.


Backtick (`) Kullanırken Dikkat Edilmesi Gerekenler

Backtick karakterinden sonra hiçbir karakter bulunmamalıdır.

❌ Hatalı:

New-SmbShare ` 
-Name "Ortak"

Yukarıdaki örnekte backtick'ten sonra bir boşluk olduğu için satır devamı çalışmayabilir.

✅ Doğru:

New-SmbShare `
-Name "Ortak"

Backtick, satırdaki en son karakter olmalıdır.


Backtick Olmadan Yazılabilir mi?

Evet. Komutu tek satırda yazabilirsiniz:

New-SmbShare -Name "Ortak" -Path "D:\Ortak"

Bu tamamen geçerlidir.


Daha Modern Yöntem

PowerShell 7 ve yeni sürümlerde, mümkün olduğunca backtick yerine doğal satır devamı tercih edilir. Örneğin, parantez veya veri yapıları kullanıldığında PowerShell satırın devam ettiğini zaten anlar:

Get-ChildItem (
    "C:\Windows"
)

veya

@(
    "Dosya1"
    "Dosya2"
    "Dosya3"
)

Bu yapılarda backtick kullanmanız gerekmez.


SMB Örneği

Tek satır:

New-SmbShare -Name "Ortak" -Path "D:\Ortak" -FullAccess "Administrators"

Çok satırlı (backtick ile):

New-SmbShare `
    -Name "Ortak" `
    -Path "D:\Ortak" `
    -FullAccess "Administrators"

Her iki komut da aynı işlemi yapar; fark yalnızca yazım biçimidir.

İpucu: Güncel PowerShell kod yazımında, yalnızca satırı zorunlu olarak bölmeniz gerektiğinde backtick kullanın. Mümkün olduğunda komutu tek satırda yazmak veya PowerShell'in doğal satır devamı sağlayan sözdiziminden yararlanmak, kodun bakımını ve okunabilirliğini artırır.

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu