Ubuntu Server Adım Adım NFS Sunucusu Kurulumu
Network File System (NFS), bir ağ üzerindeki kullanıcıların uzak bir sunucudaki dosyalara sanki kendi yerel disklerindeymiş gibi erişmelerini sağlayan dağıtık bir dosya sistemi protokolüdür. Özellikle Linux ve Unix tabanlı sistemlerde, merkezi bir depolama alanı oluşturmak, konfigürasyon dosyalarını birden çok sunucu arasında senkronize etmek veya sanallaştırma ortamları için paylaşılan disk alanları sağlamak gibi senaryolarda yaygın olarak kullanılır.
Bu makalede, Ubuntu 22.04 LTS (veya daha yeni bir sürüm) üzerinde bir NFS sunucusunun nasıl kurulacağını, istemcilerin erişimi için nasıl yapılandırılacağını ve bu bağlantının güvenliğinin nasıl sağlanacağını ayrıntılı olarak ele alacağız.
1. Ön Gereksinimler
- İki adet Ubuntu makinesi: Biri NFS Sunucusu, diğeri NFS İstemcisi olarak görev yapacak.
- Tüm makinelerde
sudoyetkilerine sahip bir kullanıcı. - Makinelerin birbirleriyle iletişim kurabildiği statik IP adreslerine sahip bir ağ. Bu rehberde aşağıdaki IP yapılandırmasını varsayacağız:
- NFS Sunucu IP:
192.168.1.100 - NFS İstemci IP:
192.168.1.101
- NFS Sunucu IP:
2. Adım: NFS Sunucusu Kurulumu
Tüm işlemler NFS Sunucusu üzerinde yapılacaktır.
2.1. Paketlerin Kurulması
İlk olarak, sistemin paket listesini güncelleyelim ve NFS sunucusu için gerekli olan nfs-kernel-server paketini kuralım.
sudo apt update
sudo apt install nfs-kernel-server -y
Bu komut, NFS çekirdek sunucusunu ve rpcbind gibi gerekli bağımlılıkları yükleyecektir.
2.2. Paylaşılacak Dizini Oluşturma
İstemcilerle paylaşmak istediğimiz bir dizin oluşturalım. Güvenlik ve sistem yönetimi standartları gereği, kök dizin (/) veya sistem dizinleri yerine /srv veya /export gibi özel bir dizin kullanmak en iyi pratiktir.
sudo mkdir -p /srv/nfs/shared_directory
-pparametresi, üst dizinlerin (/srv/nfs) mevcut olmaması durumunda onları da oluşturur.
2.3. Dizin İzinlerini Ayarlama
Güvenlik açısından kritik bir adım, paylaşılan dizinin sahipliğini ve izinlerini doğru bir şekilde ayarlamaktır. NFS, istemciden gelen root kullanıcısını varsayılan olarak nobody:nogroup kullanıcısı ve grubuna eşler (root_squashing). Bu nedenle, dizinin sahipliğini bu kullanıcıya vermek, izin sorunlarını önler.
sudo chown nobody:nogroup /srv/nfs/shared_directory
sudo chmod 777 /srv/nfs/shared_directory
Not: chmod 777 en esnek izni verir. Daha kısıtlı bir ortamda, ihtiyacınıza göre daha spesifik izinler (örneğin 775) ayarlayabilirsiniz.
3. Adım: NFS Paylaşımlarını Yapılandırma (/etc/exports)
NFS sunucusunun hangi dizinleri hangi istemcilere ve hangi seçeneklerle paylaşacağını tanımlayan dosya /etc/exports dosyasıdır.
Bu dosyayı bir metin düzenleyici ile açın:
sudo nano /etc/exports
Dosyanın sonuna, paylaşmak istediğiniz her dizin için bir satır ekleyin. Söz dizimi şöyledir:
/paylasilacak/dizin istemci_ip(seçenek1,seçenek2)
Örneğimiz için aşağıdaki satırı ekleyin:
/srv/nfs/shared_directory 192.168.1.101(rw,sync,no_subtree_check)
Bu seçeneklerin teknik açıklaması:
rw: İstemciye hem okuma (read) hem de yazma (write) izni verir. Sadece okuma içinrokullanılır.sync: NFS’in bir yazma işlemi tamamlandığında hemen diske yazmasını zorunlu kılar. Bu, veri tutarlılığı için kritiktir ancak performansı bir miktar düşürebilir. Asenkron (async) seçeneğine göre çok daha güvenlidir.no_subtree_check: Alt ağaç kontrolünü devre dışı bırakır. Paylaşılan bir dizinin alt dizinlerinde dosya işlemleri yapıldığında, NFS’in her seferinde izinleri kontrol etmesini engeller. Bu, özellikle dizin yeniden adlandırıldığında ortaya çıkabilecek bazı güvenilirlik sorunlarını ortadan kaldırır ve genellikle performansı artırır.root_squash(Varsayılan): Bu seçenek açıkça belirtilmese bile varsayılan olarak etkindir. İstemci tarafındakirootkullanıcısının sunucu üzerinderootyetkilerine sahip olmasını engeller. Güvenlik için bu ayarın korunması şiddetle tavsiye edilir. Eğerrootyetkisiyle erişim zorunluysano_root_squashkullanılabilir, ancak bu büyük bir güvenlik riski oluşturur.
Dosyayı kaydedip kapatın (CTRL+X, Y, Enter).
4. Adım: NFS Servisini Başlatma ve Etkinleştirme
Yapılandırma dosyasındaki değişiklikleri uygulamak için exports tablosunu yeniden yükleyin:
sudo exportfs -a
Ardından, NFS sunucu servisini yeniden başlatın ve sistem açılışında otomatik olarak başlamasını sağlayın:
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server
Servisin durumunu kontrol edin:
sudo systemctl status nfs-kernel-server
Çıktıda “active (running)” ifadesini görmelisiniz.
5. Adım: Güvenlik Duvarı (Firewall) Yapılandırması
Siber güvenlik perspektifinden en önemli adımlardan biri, sunucuya sadece yetkili istemcilerin erişebilmesi için güvenlik duvarını yapılandırmaktır. Ubuntu’da ufw (Uncomplicated Firewall) bunu kolaylaştırır.
NFSv4, varsayılan olarak sadece TCP port 2049‘u kullanır. Güvenlik duvarınızda sadece belirlediğimiz istemci IP’sinden bu porta gelen bağlantılara izin vereceğiz.
sudo ufw allow from 192.168.1.101 to any port nfs
Bu komut, 192.168.1.101 IP adresinden NFS portuna (2049) gelen tüm trafiğe izin verir. Alternatif olarak, port numarasını doğrudan belirtebilirsiniz: sudo ufw allow from 192.168.1.101 to any port 2049.
Güvenlik duvarını etkinleştirin ve durumunu kontrol edin:
sudo ufw enable
sudo ufw status
Çıktıda kuralınızın listelendiğini görmelisiniz.
6. Adım: NFS İstemci Yapılandırması
Şimdi NFS İstemcisi olarak belirlediğimiz makineye geçip ayarları yapalım.
6.1. NFS İstemci Paketini Kurma
İstemcinin NFS paylaşımlarını bağlayabilmesi için nfs-common paketine ihtiyacı vardır.
sudo apt update
sudo apt install nfs-common -y
6.2. Bağlantı Noktası (Mount Point) Oluşturma
Sunucudaki paylaşılan dizini istemcide bağlayacağımız yerel bir dizin oluşturalım.
sudo mkdir -p /mnt/nfs_share
6.3. NFS Paylaşımını Manuel Olarak Bağlama
Aşağıdaki mount komutu ile sunucudaki paylaşımı yerel dizine bağlayın:
sudo mount 192.168.1.100:/srv/nfs/shared_directory /mnt/nfs_share
Bağlantının başarılı olup olmadığını df -h komutuyla kontrol edebilirsiniz:
df -h
Çıktının en altında, sunucudaki paylaşımın /mnt/nfs_share dizinine bağlandığını gösteren bir satır görmelisiniz. Artık bu dizine yazdığınız her dosya, sunucudaki /srv/nfs/shared_directory dizininde görünecektir.
7. Adım: Kalıcı Bağlantı için fstab Yapılandırması
Mevcut bağlantı, istemci yeniden başlatıldığında kaybolacaktır. Bağlantıyı kalıcı hale getirmek için /etc/fstab dosyasını düzenlememiz gerekir.
sudo nano /etc/fstab
Dosyanın sonuna aşağıdaki satırı ekleyin:
192.168.1.100:/srv/nfs/shared_directory /mnt/nfs_share nfs auto,_netdev,defaults 0 0
Bu satırın teknik açıklaması:
192.168.1.100:/srv/nfs/shared_directory: NFS sunucusunun IP adresi ve paylaşılan dizinin yolu./mnt/nfs_share: İstemcideki bağlantı noktası.nfs: Dosya sisteminin türü.auto: Sistemin açılışında bu paylaşımın otomatik olarak bağlanmasını sağlar._netdev: Bu seçeneğin eklenmesi kritik öneme sahiptir. Sisteme, bu dosya sisteminin ağ bağlantısı gerektirdiğini ve ağ servisleri başlatılmadan önce bağlanmaya çalışmamasını söyler. Bu, açılış sırasında takılmaları önler.defaults:rw,suid,dev,exec,auto,nouser,asyncgibi varsayılan seçenekleri kullanır.0 0: Dosya sistemi denetimi (fsck) ve yedekleme (dump) ayarlarıdır. Ağ dosya sistemleri için bu değerler her zaman0olmalıdır.
Değişikliklerin doğru yapıldığından emin olmak için tüm dosya sistemlerini fstab‘a göre yeniden bağlayabilirsiniz:
sudo mount -a
Eğer komut hata vermezse, yapılandırmanız doğrudur.
Bu yazıda Ubuntu üzerinde çalışan, güvenli ve stabil bir NFS sunucusunu başarıyla kurduk. Artık istemci makineniz, sunucudaki paylaşılan dizine kalıcı olarak erişebilir.
Bu temel yapılandırma, merkezi veri yönetimi ve dağıtık uygulamalar için sağlam bir zemin oluşturur. Daha karmaşık senaryolar için NFSv4’ün Kerberos ile kimlik doğrulama gibi gelişmiş güvenlik özelliklerini araştırmayı düşünebilirsiniz.
Mutlu günler dilerim. :)
