Kurumsal Network Kurulumu

NFS Nedir? NAS ve Sanallaştırmada Dosya Paylaşımı

NFS nedir, nasıl çalışır? UID/GID kimlik modeli, root_squash ayarı, NFS ile SMB'nin aynı klasörde çakışması ve izin sorunlarının teşhisi, lab ölçümleriyle.

İlker Pehlivan

NFS (Network File System), Unix ve Linux dünyasının dosya paylaşım protokolüdür ve 2049 numaralı portu kullanır. Bir sunucudaki dizini ağa açar, başka bir makine o dizini kendi dosya sisteminin içinde bir klasör gibi bağlar. Bağlandıktan sonra ortada uzak bir sunucu olduğu görünmez bile: uygulamalar /mnt/paylasim yolunu yerel bir klasör sanır.

Vestiyeri düşünün. Paltonuzu verirsiniz, karşılığında bir numara alırsınız. Görevli adınızı bilmez, hangi departmanda çalıştığınızı bilmez, sizi tanımak zorunda da değildir. Tek bildiği numaradır ve kural tektir: numarayı kim gösterirse paltoyu o alır. NFS’in kimlik anlayışı tam olarak budur ve bu makalenin anlattığı hemen her şey, bu tek cümlenin sonuçlarıdır.

Bu makale kurumsal network kurulumu hizmetimizin dosya paylaşım katmanına odaklanır; NFS’in içinde yer aldığı protokol zincirinin tamamını kurumsal ağ protokolleri rehberimizde ele alıyoruz. Aşağıdaki bütün ölçümler lab ortamımızdaki iki Ubuntu 24.04 sunucu arasında gerçekten çalıştırıldı: 192.168.1.15 sunucu, 192.168.1.25 istemci.

Bir izin sorununu çözmek için geldiyseniz ve protokolün mekaniğini zaten biliyorsanız, doğrudan kimlik modelinin anlatıldığı bölüme ya da teşhis bölümüne geçebilirsiniz.

NFS kimlik modelinin vestiyer benzetmesi: aynı 1500 numarasını taşıyan iki emanet fişi karşılıklı uzatılırken görevlinin yalnız numaraya bakıp paltoyu vermesi
Görevli numaraya bakar, kişiye değil. Aynı numarayı iki kişi uzattığında ikisi de haklı görünür.

NFS Nedir ve Nasıl Çalışır?

NFS, bir sunucudaki dizini ağ üzerinden başka makinelerin kullanımına açan istemci-sunucu protokolüdür. 1980’lerde Sun Microsystems’te doğdu, bugün Linux, BSD ve ticari Unix sistemlerinin ortak paylaşım dilidir. Ağa takılan depolama kutularının, yani Network Attached Storage (NAS) cihazlarının neredeyse tamamı SMB’nin yanında NFS de konuşur.

Çalışma mantığı iki taraflı bir anlaşmadır ve iki fiilin adı protokolün sözlüğüne girmiştir:

  • Export, sunucu tarafındaki karardır: “şu dizini, şu ağdaki makinelere, şu koşullarla açıyorum”.
  • Mount, istemci tarafındaki karardır: “o dizini kendi ağacımın şu noktasına bağlıyorum”.

Sunucu tarafındaki export tanımı tek satırdır. Lab sunucumdaki /etc/exports dosyasına yazdığım satır şu:

Yapılandırma
/srv/paylasim  192.168.1.0/24(rw,sync,no_subtree_check)

Üç şey söylüyor: hangi dizin, kimlere, hangi koşullarla. rw yazma izni verir, sync yazma işlemini diske inmeden onaylamamayı söyler, no_subtree_check ise bir performans ve kararlılık tercihidir.

Ama bu satır yapılandırmanın tamamı değildir, yalnızca varsayılanlardan sapan kısmıdır. Yazmadığınız her seçenek sessizce devreye girer ve NFS’te varsayılanların ne olduğunu bilmemek, sonradan “ben böyle bir şey yazmamıştım” denen arızaların kaynağıdır. Sunucuya gerçekte ne dediğinizi exportfs -v ile görürsünüz:

Bash
sudo exportfs -ra
sudo exportfs -v
Çıktı
/srv/paylasim  192.168.1.0/24(sync,wdelay,hide,no_subtree_check,
                              sec=sys,rw,secure,root_squash,no_all_squash)

Üç satırlık bir tanım yazdım, sunucu bana dokuz seçenek geri okudu. Bunlardan ikisi bu makalenin geri kalanını belirliyor: sec=sys kimlik doğrulama yönteminin ne olduğunu, root_squash ise root kullanıcısına nasıl davranılacağını söylüyor. İkisine de sırası gelince döneceğiz.

İstemci Tarafı: Neyin Açık Olduğunu Görmek

İstemci, bağlanmadan önce sunucuda ne olduğunu sorabilir. showmount komutu tam olarak bunu yapar:

Bash
showmount -e 192.168.1.15
Çıktı
Export list for 192.168.1.15:
/srv/paylasim 192.168.1.0/24

Bu çıktı bir kolaylık gibi görünür ve teşhiste gerçekten öyledir. Ama aynı zamanda ilk güvenlik notudur: bu bilgiyi almak için hiçbir kimlik doğrulaması gerekmez. Ağda sunucuya ulaşabilen herkes, hangi dizinlerin hangi ağlara açıldığını öğrenebilir. NFS’in güvenilmeyen bir ağda işi olmamasının sebeplerinden biri budur.

Bağlanmak ise tek komut:

Bash
sudo mount -t nfs 192.168.1.15:/srv/paylasim /mnt/paylasim

Bağlandıktan sonra mount çıktısında hangi anlaşmanın kurulduğu yazar:

Çıktı
192.168.1.15:/srv/paylasim on /mnt/paylasim type nfs4
  (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,
   proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.25,
   local_lock=none,addr=192.168.1.15)

Hiçbir sürüm belirtmedim, iki taraf vers=4.2 üzerinde anlaştı. sec=sys yine karşımda. Dosya paylaşımı bu noktada çalışır durumdadır ve çoğu kurulum burada biter. Asıl soru ise henüz sorulmadı: sunucu, bağlanan bu makinede oturan kişinin kim olduğunu neye bakarak anlıyor?

NFS’te Kimlik Bir Sayıdır: UID ve GID Modeli

Cevap kısa: NFS bağlanan kişiyi bir sayı olarak tanır. Kullanıcı adı, parola ya da grup adı ağa hiç çıkmaz. İstemci her istekle birlikte “bu isteği yapan kullanıcının numarası şu, grup numarası bu” diye bir bildirimde bulunur, sunucu da bu numaraları kendi dosya sistemindeki sahiplik bilgisiyle karşılaştırır.

Bu numaraların adı UID (User ID) ve GID (Group ID). Her Linux sisteminde zaten vardırlar; id komutu size kendinizinkini söyler:

Bash
id muhasebe
Çıktı
uid=1500(muhasebe) gid=1500(muhasebe) groups=1500(muhasebe)

Parantez içindeki isimler yerel bir kolaylıktır. Sistem dosyaları sahiplendirirken muhasebe yazmaz, 1500 yazar; ismi ekrana basarken /etc/passwd dosyasına bakıp numarayı isme çevirir. Aynı dosyaya ls -ln ile bakarsanız çeviri yapılmamış halini görürsünüz:

Bash
ls -l  /srv/paylasim/butce.txt
ls -ln /srv/paylasim/butce.txt
Çıktı
-rw-r--r-- 1 muhasebe muhasebe 19 Aug 13 16:07 /srv/paylasim/butce.txt
-rw-r--r-- 1 1500     1500     19 Aug 13 16:07 /srv/paylasim/butce.txt

İki satır aynı dosyayı anlatıyor. Üstteki insan için, alttaki gerçek.

Bildirimin Ağdaki Hali: AUTH_SYS

Bu noktada işin mekanizmasına inmek gerekiyor, çünkü “sunucu numaraya bakar” cümlesi tek başına kritik ayrıntıyı gizliyor: o numarayı sunucuya kim söylüyor?

Cevabı görmek için istemci yazma yaparken sunucudaki trafiği yakaladım:

Bash
sudo tcpdump -i ens33 -s 0 -w nfs-authsys.pcap "port 2049 or port 111"

Aşağıdaki dökümde bakılacak üç yer var, döküme geçmeden onları söyleyeyim:

  • Flavor satırı: kimlik doğrulama yönteminin adı.
  • UID ve GID satırları: isteği yapan kullanıcının kim olduğu iddiası.
  • Verifier bloğu: bu iddianın kanıtı.

Yakalanan bir isteğin kimlik bölümü şöyle görünüyor:

Çıktı
Remote Procedure Call, Type:Call XID:0xcdadd49f
    Program: NFS (100003)
    Program Version: 4
    Procedure: COMPOUND (1)
    Credentials
        Flavor: AUTH_UNIX (1)
        Length: 32
        Stamp: 0x00000000
        Machine Name: openldap
        UID: 1500
        GID: 1500
        Auxiliary GIDs (1) [1500]
    Verifier
        Flavor: AUTH_NULL (0)
        Length: 0

Bu dökümün söylediklerini sırayla okuyalım:

  1. Flavor: AUTH_UNIX (1), kullanılan kimlik yönteminin adıdır. Export çıktısındaki sec=sys ile aynı şeydir, literatürde çoğunlukla AUTH_SYS diye geçer.
  2. Machine Name: openldap, isteği yapan makinenin kendi adıdır. İstemci bunu kendisi yazar.
  3. UID: 1500 ve GID: 1500, kimlik iddiasının tamamıdır. Ortada bir kullanıcı adı yok, bir parola yok, bir bilet yok. Yalnız iki sayı.
  4. Verifier bloğu boş. AUTH_NULL ve Length: 0, “bu iddiayı doğrulayan bir şey eklemedim” demektir.

Dördüncü madde bu makalenin en önemli teknik ayrıntısıdır. Protokolde kimlik iddiasının yanına bir kanıt koymak için ayrılmış bir alan var ve klasik kurulumda o alan boş gidiyor. Sunucu, istemcinin beyanını doğrulamıyor; çünkü doğrulayacak bir şey yok.

Aynı yakalamada uid=1500 taşıyan 22 çerçeve saydım. Hepsinde aynı manzara: numara açık, kanıt yok.

Eşleme Tablosu ve Analojinin Koptuğu Yer

Vestiyer benzetmesini ağdaki karşılıklarıyla yan yana koyalım, çünkü analojinin işe yaraması için hangi ilişkinin neye karşılık geldiğinin görünmesi gerekir:

VestiyerdeNFS’te
PaltonuzSunucudaki dosya
Emanet fişindeki numaraUID / GID
Görevlinin numaraya bakmasıSunucunun sahiplik karşılaştırması
”Numarayı kim gösterirse paltoyu o alır”Verifier: AUTH_NULL
Vestiyer görevlisiNFS sunucusu

Ve analojinin yalan söylediği yer şurası, söylemezsem yanlış bir güven duygusu bırakır: vestiyerde fişi göstermek için önce o fişe sahip olmanız gerekir. Kağıt parçasıdır, cebinizdedir, kaybederseniz sorun yaşarsınız. NFS’te ise numarayı “göstermek” için hiçbir şeye sahip olmanız gerekmez. Kendi makinenizde yönetici iseniz, istediğiniz numarayı yazarsınız ve o numara ağda öylece gider.

Bu soyut bir risk değil. Sıradaki bölümde önce bu çakışmanın kimse istemeden nasıl doğduğunu göstereceğim; ardından Hesap Bile Gerekmiyor başlığında aynı şeyi bilerek yapıp, istemcide hiçbir hesap açmadan yalnızca bir numara beyan ederek başkasına kapatılmış bir dosyayı okuyacağım.

Aynı dosyaya üç ayrı istemciden erişim denemesi ve sonuçları. Sunucuda butce.txt dosyasının sahibi 1500 numaralı kullanıcıdır ve yalnız sahibi yazabilir. Birinci istemcide kullanıcı adı muhasebe, numarası 1500'dür ve yazabilir. İkinci istemcide kullanıcı adı yine muhasebe ama numarası 1002'dir ve reddedilir; yani aynı isim iki farklı sonuç veriyor. Üçüncü istemcide hiç hesap yoktur, makinenin yöneticisi olan kişi yalnızca 1500 numarasını beyan eder ve yazabilir. Ağa giden tek şey numaradır: kullanıcı adı, parola ya da bilet ağda hiç görünmez. Ağa giden tek şey numara istemci-a istemci-b istemci-c kullanıcı: muhasebe kullanıcı: muhasebe hesap yok, kendi makinesinde root uid=1500 uid=1002 uid=1500 gerçek numarası gerçek numarası öylece beyan edildi NFS sunucusu butce.txt sahibi: 1500 a: ✓ yazabiliyor b: ✗ izin yok c: ✓ yazabiliyor Ağda kullanıcı adı yok, parola yok, bilet yok. Sunucu yalnız bu sayıyı görür ve doğrulayacak bir şeyi de yoktur. Aynı isim iki farklı sonuç veriyor; hiç hesabı olmayan üçüncüsü içeri giriyor. Kararı isim değil numara veriyor. Aynı dosyaya üç ayrı istemciden erişim denemesi ve sonuçları. Sunucuda butce.txt dosyasının sahibi 1500 numaralı kullanıcıdır ve yalnız sahibi yazabilir. Birinci istemcide kullanıcı adı muhasebe, numarası 1500'dür ve yazabilir. İkinci istemcide kullanıcı adı yine muhasebe ama numarası 1002'dir ve reddedilir; yani aynı isim iki farklı sonuç veriyor. Üçüncü istemcide hiç hesap yoktur, makinenin yöneticisi olan kişi yalnızca 1500 numarasını beyan eder ve yazabilir. Ağa giden tek şey numaradır: kullanıcı adı, parola ya da bilet ağda hiç görünmez. Ağa giden tek şey numara NFS sunucusu butce.txt sahibi: 1500 · yalnız sahibi yazar üç istemci aynı dosyaya uzanıyor ↓ istemci-a istemci-b istemci-c kullanıcı: muhasebe kullanıcı: muhasebe hesap yok, kendi makinesinde root ağa giden: uid=1500 ağa giden: uid=1002 ağa giden: uid=1500 (beyan) ✓ yazabiliyor ✗ izin yok ✓ yazabiliyor Aynı isim iki farklı sonuç veriyor; hesabı olmayan üçüncüsü içeri giriyor.
Üç denemenin de ağa çıkardığı tek şey bir sayı. Adı muhasebe olan iki kullanıcıdan biri yazabiliyor, öbürü yazamıyor; hiç hesabı olmayan üçüncüsü ise yalnız numarayı beyan ederek içeri giriyor.

Aynı Ad, Farklı Numara: NFS İzin Çakışması Nereden Doğar?

İzin çakışmalarının kaynağı tek cümleyle şudur: kullanıcı numaraları makine başına dağıtılır, ama paylaşılan dosya sistemi ortaktır. Bir Linux sunucuda kullanıcı açtığınızda sistem sıradaki boş numarayı verir. İki ayrı sunucuda aynı sırayla kullanıcı açarsanız numaralar tesadüfen tutar; farklı sırayla açarsanız tutmaz. Hiçbir uyarı çıkmaz, çünkü iki makinenin birbirinden haberi yoktur.

Bunu lab ortamında bilerek üretmek için üç hesap açtım:

  • Sunucuda muhasebe, numarası 1500.
  • İstemcide muhasebe, numarası 1600. Adı aynı, numarası farklı.
  • İstemcide ayrıca depo, numarası 1500. Adı farklı, numarası sunucudaki muhasebe ile aynı.

Sonra sunucuda muhasebe’ye ait bir dosya oluşturup istemciden bağlandım. Aynı dosya, iki makine:

Sunucu (192.168.1.15)İstemci (192.168.1.25)
ls -l butce.txtmuhasebe muhasebedepo depo
ls -ln butce.txt1500 15001500 1500

Sayı iki tarafta da aynı, isim değişti. İsim zaten hiç ağa çıkmadı; her makine kendi /etc/passwd dosyasına bakıp 1500’ü kendi bildiği isme çevirdi.

NFS UID çakışmasının şeması: tek bir dosyanın iki ayrı makinede aynı 1500 numarasıyla iki farklı kullanıcıya ait görünmesi
Aynı palto, iki ayrı defter. Sunucu ona muhasebe diyor, istemci depo; ikisi de aynı 1500 numarasını okuyor.

Doğru İsimli Kullanıcı Yazamıyor, Yanlış İsimli Yazabiliyor

Asıl çarpıcı sonuç, iki kullanıcıya sırayla yazdırmaya çalıştığımda çıktı:

Bash
sudo -u muhasebe touch /mnt/paylasim/muhasebe-denemesi.txt
sudo -u depo     touch /mnt/paylasim/depo-denemesi.txt
Çıktı
touch: cannot touch '/mnt/paylasim/muhasebe-denemesi.txt': Permission denied

Ekranda tek satır var ve o da ilk komuta ait: ikincisi hiçbir şey yazmadan, yani sessizce başarılı oldu. Adı sunucudaki sahiple birebir aynı olan kullanıcı reddedildi. Adı hiç alakasız olan kullanıcı yazdı. Dosyanın sunucudaki hali ise şu:

Çıktı
-rw-rw-r-- 1 muhasebe muhasebe 0 Aug 13 16:08 depo-denemesi.txt

depo yazdı, sunucuda muhasebe’nin dosyası olarak duruyor. Vestiyerde başkasının numarasını uzatıp onun paltosunu almak buna benzer, ama önemli bir fark var: burada kimse başkasının numarasını almaya çalışmadı.

Bu çakışmayı ben labda bilerek kurdum. Sahada ise kendiliğinden oluşur ve hikâyesi genelde şudur: sunucuyu kuran yönetici o makinede muhasebe hesabını açar, sistem ona sıradaki boş numarayı verir. Aylar sonra bambaşka biri, bambaşka bir makinede depo hesabını açar; o sistem de kendi sırasındaki boş numarayı verir. İki numaranın aynı çıkması için kimsenin hata yapmış olması gerekmez: iki makine birbirine hiç sormaz, her biri kendi sayacından ilerler. Ortak bir klasör paylaşılana kadar da kimse fark etmez.

Hesap Bile Gerekmiyor

Bu noktada “numaraları hizalarım, biter” demek isteyebilirsiniz. Hizalamak işe yarar ama meselenin yalnız yarısını çözer, çünkü modelin dayandığı şey numaraların doğruluğu değil, istemciye duyulan güvendir.

Bunu göstermek için sunucuda yalnız orada var olan bir kullanıcı açtım: mudur, numarası 1501. Ona ait dizini 700, dosyayı 600 izinleriyle kapattım; yani sahibinden başkası ne girebilir ne okuyabilir. İstemcide 1501 numaralı hiçbir hesap yok:

Bash
getent passwd 1501

Komut hiçbir şey basmadı ve 2 çıkış koduyla döndü, yani “böyle bir kayıt yok” dedi.

Sonra istemciden, hiçbir hesap oluşturmadan, yalnızca numarayı beyan ederek okumayı denedim:

Bash
sudo -u depo cat /mnt/paylasim/mudur-ozel/ozel.txt
sudo setpriv --reuid 1501 --regid 1501 --clear-groups cat /mnt/paylasim/mudur-ozel/ozel.txt
Çıktı
cat: /mnt/paylasim/mudur-ozel/ozel.txt: Permission denied
sadece mudur okuyabilir

İkinci satır dosyanın içeriği. Parola yok, hesap yok, grup üyeliği yok. Yalnızca beyan edilen bir sayı ve sunucunun o beyanı kabul etmesi.

Kalıcı Çözüm: Numarayı Tek Yerden Dağıtmak

Çakışmayı elle numara hizalayarak çözmek üç makinede işe yarar, otuz makinede yürümez: her yeni sunucuda aynı sırayı tutturmanız gerekir ve bir kere kaydığında geriye dönüp binlerce dosyanın sahipliğini düzeltmek zorunda kalırsınız.

Kalıcı çözüm, kullanıcı numarasını makinelerin kendi kararına bırakmamak, merkezî bir dizinden dağıtmaktır. Bir dizin sunucusu her kullanıcıya bir kez numara verir, bütün makineler o numarayı aynı yerden okur ve muhasebe her sunucuda aynı sayıya karşılık gelir. Dizinin bu işi nasıl yaptığını, sorguların nasıl kurulduğunu ve şifresiz bir dizin bağlantısının neyi açığa çıkardığını LDAP nedir rehberimizde ele alıyoruz.

root_squash: NFS’te root’u Kapıda Karşılayan Ayar

Buraya kadarki kural basitti: numaranız neyse, sunucudaki dosya izinleri o numaraya göre uygulanır. Sahibiyseniz açarsınız, değilseniz açamazsınız.

Bir numara bu kurala uymaz: sıfır.

root, Linux’ta ayrı bir mekanizma değil, sadece numarası 0 olan kullanıcıdır. Farkı şurada: işletim sistemi 0 numarasıyla gelen bir istekte izinlere bakmaz bile. “Bu kullanıcının hakkı var mı” sorusu hiç sorulmaz. Yani root, izinleri aşan biri değil, izin denetiminden muaf olan biridir.

Şimdi iki gerçeği yan yana koyun:

  • NFS’te kimlik, istemcinin beyan ettiği bir sayıdır ve doğrulanmaz.
  • 0 sayısı izin denetimini tamamen atlar.

Bunları çarpınca rahatsız edici sonuç çıkıyor: kendi makinesinde root olan herkes 0 beyan edebilir, beyan da doğrulanmadığına göre sunucuda dilediğini yapabilir. Yani birinin kendi bilgisayarında yönetici olması, kurumun dosya sunucusunda da yönetici olmasına yeterdi.

NFS bu açığı bilir ve varsayılan olarak kapalı gelir. Savunmanın adı root_squash; exportfs -v çıktısında yazmadığım halde karşıma çıkmasının sebebi buydu.

Türkçesi “ezmek” olan squash tam da yaptığı işi anlatıyor: gelen 0’ı kapıda yakalar ve hiçbir yetkisi olmayan bir kullanıcıya düşürür. Sunucu isteği reddetmez, ama isteği yapanı root saymaz.

Bunu ölçerken önce beklemediğim bir şey oldu: istemcinin root’u, muhasebe’ye ait sıradan bir dizine dosya yazamadı bile. Sebebi düşünülünce açık: nobody’ye düşürüldüğü için o dizinde artık “diğerleri” hakkıyla duruyordu ve o hakta yazma yoktu. Yani root burada ayrıcalıklı değil, ortamdaki en yetkisiz kullanıcı.

Düşürülmenin sonucunu görmek için herkesin yazabildiği bir dizin açtım ve orada tekrar denedim:

Bash
sudo touch /mnt/paylasim/herkese-acik/root-yazdi.txt

Bu sefer yazdı, ama sunucuda dosyanın sahibi root değil:

Çıktı
-rw-r--r-- 1 nobody nogroup 0 Aug 13 16:09 root-yazdi.txt
-rw-r--r-- 1 65534  65534   0 Aug 13 16:09 root-yazdi.txt

0 numarasıyla gelen istek, sunucuda 65534 numaralı nobody kullanıcısına düşürüldü. nobody, Linux’ta tam olarak bu iş için duran hesaptır: hiçbir gruba, hiçbir dosyaya ve hiçbir yetkiye bağlı değildir, kimliği düşürülen istekler oraya park edilir.

Aynı root, sahiplik değiştirmeyi denediğinde de duvara çarptı:

Çıktı
chown: changing ownership of '/mnt/paylasim/butce.txt': Operation not permitted

Vestiyer benzetmesinde bu, bankoya gelip sıraya girmek istemeyen, “benim kim olduğumu biliyor musunuz” diyip torpil bekleyen kişiye görevlinin verdiği cevaptır: burada o iddianın bir karşılığı yok. Kendisi hakkında ne söylediğinin önemi de yok, çünkü söylediğini ispatlayan hiçbir şey getirmedi.

Üstelik sonuç, torpil bekleyenin umduğundan da kötü. nobody’ye düşürülen kişi sıradan bir müşteri bile sayılmaz: elinde hiç fiş yoktur. İçeri girebilir, herkese açık rafa bir şey bırakabilir, ama gösterecek numarası olmadığı için hiçbir paltoyu isteyemez. İstemcideki yetki, sunucunun kapısında biter.

no_root_squash Açıkken Ne Oluyor? Ölçülmüş Sonuç

root_squash’ı kapatan bir seçenek var: no_root_squash. Uygulamanın kurulum belgesi istediği ya da bir izin sorunu hızlıca aşılmak istendiği için sahada açıldığına rastlanır.

Şimdiye kadarki bütün ölçümler root_squash açıkken, yani sunucu kendini korurken yapıldı. Kapatınca neyin değiştiğini görmek için ayrı bir export açtım ve testleri orada yaptım; çalışan paylaşımı bozmak istemedim.

Sunucuya bir “gizli” dosya koydum: sahibi muhasebe, izni 600. Bu izin şunu söyler: sahibi okur ve yazar, başka hiç kimse açamaz. Sonra istemcinin root’uyla üç şey denedim.

1. Başkasına kapatılmış dosyayı okudu.

Bash
sudo cat /mnt/tehlikeli/mudur.txt
Çıktı
gizli mudur dosyasi

Dosyanın sahibi değilim, izin de kimseye açık değil. root_squash açık olsaydı bu istek nobody’ye düşürülür ve reddedilirdi.

2. Dosyanın sahibi oldu.

Bash
sudo chown root:root /mnt/tehlikeli/mudur.txt

Komut hiç itiraz etmeden çalıştı. Korumalı export’ta aynı komutun Operation not permitted aldığını bir önceki testte görmüştük.

3. Sunucuya setuid bitli bir dosya bıraktı.

Bash
sudo cp /bin/bash /mnt/tehlikeli/kabuk
sudo chmod 4755 /mnt/tehlikeli/kabuk

Sunucudaki sonuç:

Çıktı
-rwsr-xr-x 1 root root 1446024 Aug 13 16:09 kabuk

Üçüncüsü diğer ikisinden ciddi ve sebebi tek bir harfte saklı. Soldaki izin dizisinde normalde x olması gereken yerde s duruyor. Bu harfin adı setuid ve tek bir şey söyler: bu dosya çalıştırıldığında, çalıştıran kişinin yetkisiyle değil, dosyanın sahibinin yetkisiyle çalışır. Buradaki sahip root.

Buradan bir yetki yükseltme zinciri çıkıyor. Adım adım gidelim; her adımda dikkat edilecek şey, o an kimin elinde ne yetki olduğu:

  1. İstemci makinede yönetici olan biri var. Bu kişi yalnız kendi makinesinin root’u. Sunucuda hiçbir yetkisi yok, orada hesabı bile olmayabilir. Ama no_root_squash yüzünden sunucu onun root beyanını kabul ediyor, yani paylaşıma root olarak yazabiliyor.
  2. Dosyayı bırakıyor. Kopyaladığı şey sıradan bir kabuk programı. Sahibini root yapıp setuid bitini koyabiliyor, çünkü birinci adımda sunucu onu zaten root saydı.
  3. Dosya sunucunun diskinde kalıyor. İstemci makine kapansa, kablosu çekilse, o kişi ağdan tamamen çıksa bile dosya orada durur. Bırakılan şey geçici bir erişim değil, kalıcı bir araç.
  4. Sunucuda sıradan bir kullanıcı o dosyayı çalıştırıyor. Bu kişinin hiçbir özel yetkisi yok, normal bir hesap. Ama setuid biti yüzünden program, onu çalıştıranın değil sahibinin yetkisiyle başlıyor. Sahibi root.
  5. O sıradan kullanıcı artık root olarak iş yapıyor. Yetki yükseltme tam olarak burada gerçekleşiyor: normal bir hesapla giren biri, tek bir dosyayı çalıştırarak sunucunun tam yetkisine çıkıyor.

Zincirin en rahatsız edici tarafı şu: baştaki kişiyle sondaki kişinin aynı olması gerekmiyor. Dosyayı bırakan çoktan gitmiş olabilir, çalıştıran ise olan bitenden habersiz biri olabilir. Kaybedilen şey bir dosyaya erişim değil, sunucunun kapısının kendisi. Vestiyer benzetmesinde root_squash, “ben buranın müdürüyüm” iddiasını kapıda geçersiz kılan kuraldı; no_root_squash o kuralı kaldırır ve dışarıdan gelen kişi gerçekten müdür sayılır. Bıraktığı setuid dosyanın karşılığı da şu: arka odaya kendi görevli önlüğünü asıp gider. O önlüğü giyen herkes, o günden sonra görevli muamelesi görür.

Ölçümü aldıktan sonra bu dosyayı sildim ve export’u kaldırdım: laboratuvarda bile setuid bitli bir kabuk ortalıkta bırakılmaz.

all_squash: Herkesi Tek Kişiye İndirmek

Üçüncü bir seçenek daha var ve amacı farklı: all_squash yalnız root’u değil gelen bütün numaraları tek bir kullanıcıya indirir. Hangi kullanıcı olacağı anonuid ve anongid ile söylenir.

Bunu da ölçtüm. Export satırı şu:

Yapılandırma
/srv/ortak  192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1500,anongid=1500)

Ardından istemciden üç ayrı kimlikle yazdım: depo (1500), muhasebe (1600) ve root (0). Sunucudaki sonuç:

Çıktı
-rw-rw-r-- 1 muhasebe muhasebe 0 depo.txt
-rw-rw-r-- 1 muhasebe muhasebe 0 muhasebe.txt
-rw-r--r-- 1 muhasebe muhasebe 0 root.txt

Üç farklı kimlik, tek sahip. Bu bir güvenlik önlemi değil, bir basitleştirmedir: kimin ne yaptığını ayırt etmekten vazgeçip herkesi aynı kişi saymak. Yeri, kimlik ayrımının gerçekten gereksiz olduğu paylaşımlardır: ortak bir medya dizini, bir yedek hedefi, salt okunur dağıtılan bir kurulum deposu. Kişiye göre yetki verilmesi gereken bir paylaşımda kullanılırsa denetim izini tamamen kaybedersiniz, çünkü kayıtlarda herkes aynı kullanıcı olarak görünür.

Üç seçeneğin yan yana hâli şöyle:

SeçenekGelen root ne olurGelen normal kullanıcı ne olur
root_squash (varsayılan)nobody’ye düşerNumarası neyse o kalır
no_root_squashSunucuda da root olurNumarası neyse o kalır
all_squashAnonim kullanıcıya düşerAnonim kullanıcıya düşer

NFS Sürümleri: v3, v4 ve sec=krb5 ile Kimliğin İsme Dönmesi

Buraya kadar anlatılan her şey sec=sys, yani AUTH_SYS kurulumunun kurallarıydı. Şimdi haklı bir itirazın sırası: NFS’in yeni sürümü var, o da mı böyle çalışıyor?

Bugün sahada iki sürüm görürsünüz ve aralarındaki fark sadece hız değildir:

  • NFSv3 eski ve hâlâ yaygın olan sürümdür. Yardımcı servislere ihtiyaç duyar: bağlantı kurulurken rpcbind (port 111) üzerinden hangi servisin hangi portta olduğu sorulur, kilitleme ayrı bir servisle yürür. Firewall arkasında yapılandırması bu yüzden sinir bozucudur, çünkü açılacak port tek değildir.
  • NFSv4 işi tek porta topladı: 2049. Yardımcı servisler protokolün içine alındı, kilitleme dahil edildi, birden çok işlem tek istekte gönderilebilir hale geldi. Yakalamamdaki Procedure: COMPOUND satırı bunun izidir. Ayrıca bir güvenlik çerçevesi tanımlandı ve kimliğin sayı yerine kullanici@alan biçiminde bir isim olarak taşınması öngörüldü. Sürümün tam tanımı RFC 8881 belgesinde duruyor.

Son cümle umut verici görünüyor ve tam da bu yüzden ölçtüm. Lab bağlantım vers=4.2 ile kurulmuştu, yani en güncel sürüm. Ağda sahiplik alanı isim olarak mı gidiyor? Yakaladığım trafikten sahiplik alanlarını çektim:

Bash
tshark -r nfs-authsys.pcap -T fields -e nfs.fattr4_owner -e nfs.fattr4_owner_group
Çıktı
1500    1500

Hayır. NFSv4.2 ile bağlıyım ve sahiplik alanı yine 1500 taşıyor, muhasebe@ad.sercebilisim.com değil. Sebebi istemcinin kendi ayarında yazıyordu:

Bash
cat /sys/module/nfs/parameters/nfs4_disable_idmapping
Çıktı
Y

İsim çevirisi, AUTH_SYS ile çalışırken varsayılan olarak kapalı. Mantığı da tutarlı: kimlik zaten sayı olarak doğrulanıyorsa, onu isme çevirip geri çevirmek yalnız iş yükü ve yeni hata kaynağı olurdu.

O halde isim ne zaman gerçekten devreye giriyor? Kimlik doğrulaması sayıdan çıkıp kanıta bağlandığında. Bunun yolu mount seçeneğini sec=krb5 yapmaktır: istemci artık “ben 1500 numaralıyım” demez, Kerberos’tan aldığı bir bileti sunar ve sunucu o bileti doğrular. Boş duran Verifier alanı işte o zaman dolar. Vestiyer benzetmesinde bu, fişin üstüne taklit edilemeyen bir mühür basmaktır: numara hâlâ oradadır, ama artık numarayı yazmak yetmez.

Bilet mantığının nasıl işlediğini ve doğrulamanın hangi adımlardan geçtiğini Kerberos nedir rehberimizde ele alıyoruz.

Aynı Klasöre İki Kapı: NFS ve SMB Yan Yana

Şimdi ebeveyn makalemizin bıraktığı asıl soruya gelebiliriz: aynı NAS cihazı aynı klasörü Windows istemcilere SMB, Linux sunuculara NFS ile sunabilir. Peki iki protokol aynı dosyaya baktığında yetki nasıl hesaplanır?

Cevap şudur ve sorunun tamamı buradadır: ikisi kullanıcıyı farklı şeyle tanır.

SMBNFS (sec=sys)
Kullanıcıyı tanıyan şeyActive Directory kimliği (SID)Sayısal numara (UID / GID)
Kimliği doğrulayanKimlik doğrulama protokolüDoğrulama yok, istemci beyanı
İzin modeliACL, ayrıntılı hak listesiSahip / grup / diğerleri

SMB tarafında görevli adınızı bilir ve üye defterine bakar. NFS tarafında görevli yalnız numaranızı bilir. Aynı paltoyu iki farklı sisteme göre teslim etmeye çalışan bir vestiyer düşünün: bir kapıda kimlik soruluyor, diğerinde numara.

Bu yüzden çift protokollü paylaşımda kritik ayar, cihazın kimlik eşleme yapılandırmasıdır: NAS cihazı hangi Active Directory kullanıcısının hangi sayısal numaraya karşılık geleceğini bilmelidir. Bu eşleme kurulmazsa belirti tipik olarak şudur: Windows tarafından açılan dosya Linux tarafında sahipsiz ya da nobody görünür, Linux tarafından yazılan dosyaya Windows kullanıcısı erişemez, ve her iki tarafın yöneticisi de kendi tarafında izinlerin doğru olduğunu görür.

SMB’nin kendi tarafındaki yetki katmanlarını, paylaşım izni ile NTFS izninin nasıl kesiştiğini ve domain ortamındaki rolünü SMB nedir rehberimizde ele alıyoruz.

Çift Protokol Açılmalı mı?

Açılabilir olması açılması gerektiği anlamına gelmiyor. Karar için işe yarayan ölçüt, aynı dosyaya iki taraftan da yazılıp yazılmayacağıdır:

  • İki taraf da yazacaksa kimlik eşlemesi kurulmadan açmayın. Kurulmadığında ortaya çıkan izin çakışmaları, dosyalar zaten oluştuktan sonra düzeltilir ve bu geriye dönük bir temizlik işidir.
  • Bir taraf yazıp diğeri yalnız okuyacaksa iş belirgin şekilde kolaylaşır. Okuyan tarafa salt okunur export vermek çakışma ihtimalinin çoğunu ortadan kaldırır.
  • İki tarafın işi birbirinden bağımsızsa en sağlam yol aynı klasörü paylaştırmamaktır. İki ayrı paylaşım açmak, tek paylaşımı iki kimlik modeliyle uzlaştırmaya çalışmaktan hem ucuz hem kararlıdır.

Depolama kutusunun kendisini seçerken sorulan sorular ise ayrı bir konudur: dosya düzeyinde mi blok düzeyinde mi erişileceği, kaç disk yuvası gerektiği, yedekliliğin nasıl kurulacağı. Bu kararı BT sistem yönetimi sayfamızın depolama sistemleri bölümünde ele alıyoruz; bu makale kutunun içindeki protokolü anlatıyor, kutunun seçimini değil.

Sanallaştırmada NFS Datastore

NFS’i en çok göreceğiniz ikinci yer sanallaştırma ortamlarıdır. Hypervisor, sanal makinelerin disk dosyalarını bir depolama alanında tutar ve bu alanı NFS üzerinden bağlamak yaygın bir tercihtir: kurulumu blok düzeyinde bir depolama ağı kurmaktan belirgin şekilde basittir, dosyalar dosya olarak durduğu için yedekleme ve taşıma tarafında elinizi rahatlatır.

Buraya kadar anlattığımız kimlik modeli burada beklenmedik bir yerden geri geliyor. Hypervisor, sanal disk dosyalarına root olarak erişir. Yani root_squash tam olarak burada devreye girer ve datastore’un çalışmasını engeller. Bu yüzden sanallaştırma için verilen export’larda no_root_squash sık karşılaşılan bir yapılandırmadır.

Bu, o seçeneğin tehlikeli olmaktan çıktığı anlamına gelmiyor; koşulunun sağlandığı anlamına geliyor. Hatırlayın: no_root_squash’ın meşru olmasının şartı, istemcinin sunucu kadar güvenilir olmasıydı. Hypervisor tam olarak öyle bir makinedir ve depolama trafiği ayrı bir ağ segmentinde tutulur. Yani buradaki güvenlik, export seçeneğinden değil, o segmente kimin girebildiğinden gelir.

Hypervisor’ün depolamayı nasıl kullandığını, datastore kavramını ve boyutlandırma kararlarını sanallaştırma ve hypervisor rehberimizde ele alıyoruz.

NFS Teşhisi: Bağlanıyor Ama Yazamıyor

NFS arızalarının çoğu üç katmandan birindedir ve teşhis alttan üste doğru yapılır. Üstteki katmana bakmadan önce alttakinin sağlam olduğundan emin olun, yoksa izinlerle uğraşırken sorunun ağda olduğunu saatler sonra fark edersiniz.

1. Ağ katmanı: sunucuya ulaşılıyor mu?

Bash
showmount -e 192.168.1.15

Bu komut cevap veriyorsa hem ağ hem NFS servisi ayaktadır. Cevap vermiyorsa sorun izinlerde değil: servis kapalı, 2049 numaralı port kapalı ya da isim çözümlemesi yanlış makineye gidiyordur. NFSv3 kullanıyorsanız 111 numaralı portun da açık olması gerekir.

2. Export katmanı: bu makineye izin verilmiş mi?

showmount çıktısı export’un hangi ağa açıldığını yazar. İstemcinizin adresi o aralığın dışındaysa mount reddedilir. En sık yapılan hata, export satırında tek bir adres tanımlıyken istemcinin başka bir arayüzden çıkması, yani sunucuya beklenenden farklı bir kaynak adresle görünmesidir.

Sunucu tarafında gerçekte neyin yürürlükte olduğunu her zaman exportfs -v ile teyit edin. Dosyayı düzenleyip exportfs -ra çalıştırmayı unutmak, “değiştirdim ama olmadı” vakalarının klasik sebebidir.

3. Kimlik katmanı: izin görünüyor ama yazamıyor.

Bu, NFS’e en özgü arıza ve bu makalenin en başından beri anlatılan şeyin sahadaki hâli. Belirti kafa karıştırıcıdır: dosyayı görürsünüz, sahibi olarak tanıdık bir isim yazar, ama yazmaya çalıştığınızda reddedilirsiniz.

Bakılacak yer izin listesi değil, numaradır:

Bash
id
ls -ln /mnt/paylasim

ls -l yerine ls -ln kullanmak burada bir tercih değil, teşhisin kendisidir. ls -l size kendi makinenizin çevirisini gösterir ve tam da yanıltan şey odur. ls -ln çevrilmemiş sayıyı verir; kendi id çıktınızdaki sayıyla karşılaştırdığınızda uyuşmuyorsa cevabı bulmuşsunuzdur.

Belirtiye göre nereye bakılacağı şöyle özetlenebilir:

BelirtiMuhtemel sebep
Dosya sahibi nobody / 65534 görünüyorroot olarak eriştiniz ve root_squash devrede
Sahip adı tanıdık ama yazamıyorsunuzNumaralar uyuşmuyor, isim yerel çeviriden geliyor
Yazdığınız dosya başkasının adına geçiyorSizin numaranız sunucuda başka bir kullanıcıya ait
Herkes aynı kullanıcı görünüyorExport’ta all_squash açık
Mount ediliyor ama hiçbir şey yazılamıyorExport salt okunur (ro) tanımlanmış

Son bir uyarı: sunucu tarafında bir kullanıcının numarasını değiştirmek, o kullanıcıya ait dosyaların sahipliğini değiştirmez. Dosyalar eski numarayı taşımaya devam eder ve o numarayı sonradan kim devralırsa dosyalar onun olur. Kullanıcı numarası değiştirmek isteyen biri, aynı işlemde dosya sahipliklerini de taramak zorundadır.

Sonuç: Numaraya Güvenen Bir Protokol

NFS’i doğru kullanmanın yolu, onu güvensiz bir protokol saymaktan değil, neye güvendiğini bilmekten geçiyor. Klasik kurulumda sunucu, istemcinin bildirdiği kullanıcı numarasını doğrulamadan kabul eder ve bunu bir açık olarak değil, tasarım tercihi olarak yapar: güvenilen bir ağda, yönetimi tek elde olan makineler arasında bu model hızlı ve sürtünmesiz çalışır.

Sorunlar bu varsayımın sessizce bozulduğu yerde başlıyor. Numaralar makine başına dağıtıldığı için iki sunucu farklı sıralarla kullanıcı açtığında aynı sayı iki ayrı kişiyi işaret etmeye başlar; kimse yanlış bir şey yapmamıştır ve hiçbir uyarı çıkmaz. Aynı klasör bir de SMB ile paylaştırıldığında, kullanıcıyı adıyla tanıyan bir model ile numarasıyla tanıyan bir model aynı dosyanın üstünde buluşur.

Vestiyer görevlisi numaraya bakar, paltoyu verir ve doğru kişiye verdiğini varsayar. Bu varsayımın geçerli olduğu yerde sistem kusursuz işler. Geçerli olmadığı yerde ise ortaya çıkan belirti neredeyse hiçbir zaman “kimlik” gibi görünmez; “izin var ama yazamıyorum” gibi görünür ve saatler o yanlış yerde harcanır.

NFS Hakkında Sık Sorulan Sorular

Karar protokolün kalitesiyle değil, bağlanan istemcinin ne olduğuyla verilir. Windows istemciler ve domain kullanıcıları söz konusuysa SMB doğru cevaptır, çünkü yetkilendirme zaten Active Directory üzerinden yürür. Linux sunucular arasında ortak dizin, sanallaştırma datastore'u ya da bir uygulamanın veri dizini söz konusuysa NFS daha az sürtünme üretir. Aynı klasöre iki taraftan da erişilecekse ikisini birden açmak mümkündür, ama o zaman iki ayrı yetkilendirme modelini elle hizalamak gerekir.
Hayır. Klasik NFS kurulumu istemcinin bildirdiği kullanıcı numarasına güvenir ve bu numarayı doğrulayan bir mekanizma yoktur; kendi makinesinde yönetici olan biri istediği numarayı bildirebilir. Bu yüzden NFS güvenilen bir iç ağ segmentine, tercihen ayrı bir depolama ağına ait bir protokoldür. Dışarıdan erişim gerekiyorsa doğru yol VPN kurmak ya da Kerberos ile kimlik doğrulamalı kuruluma (sec=krb5) geçmektir.
Teknik olarak evet, NAS cihazlarının çoğu bunu tek kutuda sunar. Ama iki protokol kullanıcıyı farklı şeylerle tanır: SMB tarafı Active Directory kimliğini, NFS tarafı sayısal kullanıcı numarasını kullanır. İkisi arasında bir eşleme kurulmazsa bir tarafın yazdığı dosya diğer tarafta sahipsiz ya da yanlış sahiplikte görünür. Çift protokollü paylaşım açmadan önce NAS cihazının kimlik eşleme ayarının yapılandırılması gerekir.
Çünkü NFS isimlere değil sayılara bakar. Aynı kullanıcı adı iki makinede farklı numaralarla açılmışsa protokol bunu bir çakışma olarak görmez, sessizce farklı iki kişi kabul eder. Kontrol etmenin en hızlı yolu iki tarafta da id komutunu çalıştırıp numaraları karşılaştırmak, ya da dosyayı ls -ln ile listeleyip isim yerine sayıyı okumaktır. Kalıcı çözüm numaraları elle hizalamak değil, kimliği merkezî bir dizinden dağıtmaktır.
İlker Pehlivan

Yazan

İlker Pehlivan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştüren bir ağ ve sistem mühendisidir. Şirketlere özel teknoloji rehberleri burada.

Benzer Makaleler

Kurumsal Ağ Protokolleri: DHCP'den LDAP'a

Bir şirketi ayakta tutan ağ protokolleri: DHCP, DNS, Kerberos, LDAP, SMB, RDP, SSH ve BGP. Hangisi ne yapar, nasıl zincirlenir, bozulduğunda nereden anlaşılır.

31 dk okuma

ARP Nedir? MAC Adresi, ARP Tablosu ve Spoofing

ARP, IP adresini MAC adresine çeviren protokoldür. ARP tablosu durumları, yayın alanı sınırı ve ARP spoofing, gerçek makineden alınmış paket dökümleriyle.

41 dk okuma

DHCP Nedir? Ağda IP Adresi Nasıl Dağıtılır?

DHCP nedir, nasıl çalışır? Ağdaki cihazlara IP adresi, subnet, gateway ve DNS bilgisinin otomatik dağıtımı: DORA akışı, kira süresi, APIPA ve DHCP relay.

22 dk okuma

DNS Nedir, Nasıl Çalışır? Kayıt Türleri ve TTL

DNS nedir, nasıl çalışır? Kök, TLD ve yetkili sunucu zinciri; A, CNAME, MX, TXT kayıtları; nameserver devri, TTL ve önbellek, nslookup ile arıza teşhisi.

38 dk okuma

Kurumsal Firewall Kurulumu, Yönetimi ve Danışmanlığı

Kurumsal firewall kurulumu, yönetimi ve danışmanlığı: Fortinet, Palo Alto ve pfSense ile kural yönetimi, IPS/IDS, VPN ve sürekli izleme hizmeti sunuyoruz.

6 dk okuma

HTTP ve HTTPS Nedir? Aradaki Fark ve Şifreleme

HTTP ve HTTPS nedir, farkı ne? İstek ve yanıt anatomisi, durum kodları, şifresiz bağlantıda ne sızdığı ve TLS el sıkışması adım adım.

45 dk okuma

ICMP Nedir? Ping, TTL ve Tracert Komutu

ICMP, ping ve tracert komutunun altında çalışan protokoldür. Request timed out, Destination host unreachable ve General failure farkı, lab ölçümleriyle.

27 dk okuma

IP Adresi Nedir? Subnet Maskesi, CIDR ve IPv6

IP adresi nedir, subnet maskesi ne işe yarar, /24 ne demek? Ağ ve host kısmı ayrımını, özel adres aralıklarını ve IPv6'yı gerçek lab ölçümleriyle anlatıyoruz.

28 dk okuma

Kurumsal Kablosuz Ağ Tasarımı: Survey'den Kuruluma

Kurumsal kablosuz ağ tasarımı: survey planlamadan access point yerleşimine, PoE kablolamadan kanal planına kadar 63 AP'lik bir projede izlenen gerçek sıra.

25 dk okuma

Kerberos Nedir? Kimlik Doğrulama ve Bilet Mantığı

Kerberos nedir, nasıl çalışır? Bilet mantığını, paket düzeyinde yakalanmış gerçek akışı ve oturum açılamadığında izlenecek teşhis sırasını adım adım gösteriyoruz.

32 dk okuma

LDAP ve LDAPS Nedir? Dizin Sorgulama ve 636 Portu

LDAP nedir, nasıl çalışır? Dizin yapısı, DN ve base DN mantığı, bind türleri ve 389 ile 636 farkı; gerçek paket yakalamalarıyla anlatıyoruz.

38 dk okuma

NTP Nedir? Kurumsal Ağda Saat Senkronizasyonu

NTP nedir, nasıl çalışır? Stratum hiyerarşisi, ağda tek saat kaynağı, Kerberos'un beş dakikalık toleransı ve saat arızalarında teşhis sırası.

23 dk okuma

Port Nedir? TCP ve UDP Farkı, Bağlantı Arızası Tespiti

Port numarası ne işe yarar, TCP ve UDP farkı nasıl işler, açık port nasıl kontrol edilir ve bağlantı kurulmadığında arıza hangi tarafta, nasıl kanıtlanır?

35 dk okuma

RADIUS Sunucusu Nedir? 802.1X ile Ağ Kimlik Doğrulama

RADIUS sunucusu nedir, nasıl çalışır? 802.1X akışını, EAP yöntemlerini ve ağa bağlanamayan kullanıcıda izlenecek teşhis sırasını paket düzeyinde gösteriyoruz.

24 dk okuma

SMB Nedir? Dosya Paylaşımı ve SYSVOL Bağımlılığı

SMB nedir, nasıl çalışır? Dosya ve yazıcı paylaşımı, sürüm farkları, SMBv1 riski ve grup ilkelerinin SYSVOL üzerinden dağıtımı.

18 dk okuma

SSH Nedir? Şifreli Yönetim ve Anahtar Tabanlı Giriş

SSH nedir, port 22'de el sıkışma nasıl olur, ana bilgisayar anahtarı neyi kanıtlar, sürüm 1 neden kapatılmalı ve parola yerine anahtarla giriş nasıl kurulur.

19 dk okuma

Kurumsal Switch, Router Kurulumu ve VLAN Yapılandırma

Kurumsal switch, router kurulumu ve VLAN yapılandırma: HSRP/VRRP yedekliliği, port güvenliği ve doğru mimari danışmanlığıyla güvenilir ağ altyapısı kuruyoruz.

7 dk okuma

Telnet Nedir? Şifresiz Yönetim Protokolü ve Riskleri

Telnet nedir, port 23 nasıl çalışır, parolayı neden düz metin taşır ve hâlâ açık bulunan cihazlarda ne yapılmalı: kapatma, SSH'a geçiş ve yönetim VLAN'ı.

16 dk okuma

VLAN Nedir? 802.1Q Etiketi, Access ve Trunk Farkı

VLAN tek switch'i mantıksal ağlara böler. 802.1Q etiketi, access ile trunk portun farkı ve native VLAN riski, gerçek paket dökümleriyle anlatılıyor.

32 dk okuma

NAT Nedir? Ağ Adresi Çevirisi Nasıl Çalışır?

NAT (Network Address Translation) nedir, SNAT ile DNAT farkı nedir, PAT nasıl çalışır ve NAT tablosu ne tutar? Çeviri tablosunu lab ortamında açıp gösteriyoruz.

32 dk okuma

RDP Nedir? Uzak Masaüstü Protokolü ve Güvenliği

RDP (Remote Desktop Protocol) nedir, 3389 portu ne yapar ve NLA ne işe yarar? Uzak masaüstü protokolünü Windows sunucuda ölçtük, güvenlik tarafıyla birlikte.

26 dk okuma

SNMP Nedir? MIB, OID ve Trap Mekanizması

SNMP nedir ve nasıl çalışır? Yönetici ve ajan mimarisi, MIB ile OID kataloğu, poll ve trap arasındaki fark, community string riski ve SNMPv3 ile çözümü.

24 dk okuma

Syslog Nedir? Facility, Severity ve 514 Portu

Syslog nedir, log satırı neye benzer? Facility ile severity tek sayıya nasıl sıkışır, 514 portu neden UDP: gerçek switch çıktısıyla anlatıyoruz.

21 dk okuma

FTP, FTPS ve SFTP Nedir? Aralarındaki Fark

FTP, FTPS ve SFTP arasındaki fark: iki kanallı mimari, aktif ve pasif mod, firewall arkasında kırılan aktarımlar ve paket düzeyinde şifresiz dosya kanıtı.

24 dk okuma

TFTP Nedir? Port 69, Switch Yedeği ve PXE

TFTP nedir, UDP 69 üzerinden nasıl çalışır ve switch yapılandırma yedeği neden bu protokolle alınır? Gerçek paket dökümü, PXE boot ve SFTP karşılaştırması.

23 dk okuma

TLS Nedir? SSL ile Farkı, Sürüm Pazarlığı ve Ölçümü

TLS nedir, SSL ile farkı ne? El sıkışmada sürüm ve şifre takımı nasıl seçilir, TLS 1.2 ile 1.3 arasında pakette ne değişir, sunucunuz hangisini konuşuyor?

34 dk okuma

IMAP Nedir, POP3 Nedir? Aralarındaki Fark

IMAP ile POP3 arasındaki fark: durumun sunucuda mı cihazda mı tutulduğu, 993 ve 995 portları, kota dolunca ne olur ve POP3'ten IMAP'a geçişin gerçek maliyeti.

18 dk okuma

SMTP Nedir? Mail Nasıl Gönderilir ve Neden Gitmez?

SMTP nedir, mail nasıl gönderilir: zarf ile başlık ayrımı, 25/587/465 portlarının farkı, STARTTLS öncesi düz metin okunan oturum ve gitmeyen mailin teşhisi.

22 dk okuma

Yapısal Kablolama ve Zayıf Akım: Kurumsal Bina Altyapısı

Kurumsal binada yapısal kablolama ve zayıf akım sistemleri nasıl kurulur? Kat kablolaması, kabinet düzeni, CAT6 ve fiber seçimi, test raporu ve saha hataları.

28 dk okuma

Ücretsiz Değerlendirme

Aynı klasörü hem SMB hem NFS ile paylaşıyorsanız izinler sessizce çakışır. Bakalım mı?

İlgili Makaleler