Product SiteDocumentation Site

11.4. Server Berkas NFS

NFS (Network File System) merupakan sebuah protokol yang memungkinkan akses remote ke sistem berkas melalui jaringan. Semua sistem Unix dapat bekerja dengan protokol ini.
NFS adalah alat yang sangat berguna, tetapi secara historis menderita karena banyak keterbatasan, yang sebagian besar telah diperbaiki pada protokol versi 4. Kekurangannya adalah bahwa versi terbaru dari NFS lebih sulit untuk dikonfigurasi bila Anda ingin menggunakan fitur keamanan dasar seperti otentikasi dan enkripsi karena hal itu bergantung pada Kerberos. Dan tanpa mereka, protokol NFS harus dibatasi pada jaringan lokal yang terpercaya karena data pergi melalui jaringan tidak terenkripsi (sniffer bisa mencegat itu) dan hak akses diberikan didasarkan pada alamat IP klien (yang dapat dipalsukan).

11.4.1. Mengamankan NFS

Jika Anda tidak menggunakan fitur keamanan berbasis Kerberos, sangat penting untuk memastikan bahwa hanya mesin-mesin yang diizinkan untuk menggunakan NFS dapat terhubung ke berbagai server RPC yang diperlukan, karena protokol dasar mempercayai data yang diterima dari jaringan. Firewall juga harus memblokir IP spoofing untuk mencegah mesin di luar dari bertindak sebagai seolah di dalam, dan akses ke port yang sesuai harus dibatasi hanya untuk mesin-mesin yang memang akan mengakses share NFS.
Versi protokol lebih tua memerlukan layanan RPC lainnya yang menggunakan port dinamis. Untungnya, dengan NFS versi 4 hanya port 2049 (untuk NFS) dan 111 (untuk portmapper) yang diperlukan dan sehingga mereka mudah untuk firewall.

11.4.2. Server NFS

Server NFS adalah bagian dari kernel Linux; di kernel yang disediakan oleh Debian itu dibangun sebagai modul kernel. Jika server NFS akan dijalankan secara otomatis pada saat boot, paket nfs-kernel-server harus diinstal; ini berisi skrip startup yang relevan.
Berkas konfigurasi server NFS, /etc/exsports dan /etc/exports.d/, menampung daftar direktori yang dibuat tersedia melalui jaringan (diekspor). Untuk setiap share NFS, hanya mesin yang terdaftar yang diberi akses. Lebih banyak kontrol akses halus dapat diperoleh dengan beberapa pilihan. Sintaks berkas ini cukup sederhana:
/direktori/yang/akan/di-share mesin1(opsi1,opsi2,...) mesin2(...) ...
Catatan bahwa dengan NFSv4, semua direktori yang diekspor harus menjadi bagian dari hirarki tunggal dan bahwa direktori root dari hirarki itu harus diekspor dan diidentifikasi dengan pilihan fsid=0 atau fsid=root.
Setiap mesin dapat diidentifikasi dengan nama DNS atau alamat IP-nya. Seluruh set mesin juga dapat ditentukan dengan menggunakan sintaks seperti *. falcot.com atau kisaran alamat IP seperti 192.168.0.0/255.255.255.0 atau 192.168.0.0/24.
Direktori disediakan sebagai baca-saja secara default (atau dengan opsi ro). Opsi rw memungkinkan akses baca-tulis. Klien NFS biasanya terhubung dari port yang terbatas hanya untuk root (dengan kata lain, di bawah 1024); pembatasan ini dapat dicabut dengan pilihan insecure (opsi secure adalah implisit, tetapi dapat dibuat eksplisit jika diperlukan untuk kejelasan).
Secara default, server hanya menjawab query NFS ketika operasi disk saat ini telah selesai (opsi sync); ini dapat dinonaktifkan dengan opsi async. Menulis asinkron meningkatkan kinerja sedikit, tetapi mereka mengurangi keandalan karena ada risiko kehilangan data ketika server crash antara konfirmasi atas penulisan dan menulis sebenarnya pada disk. Karena nilai default berubah baru-baru ini (dibandingkan dengan nilai historis NFS), setelan eksplisit dianjurkan.
Untuk tidak memberikan akses root ke sistem berkas bagi klien NFS, semua pertanyaan yang muncul datang dari pengguna root dianggap oleh server sebagai datang dari pengguna nobody. Perilaku ini sesuai dengan opsi root_squash, dan diaktifkan secara default. Opsi no_root_squash, yang menonaktifkan perilaku ini, berisiko dan hanya boleh digunakan dalam lingkungan yang terkendali. Bila semua pengguna mesti dipetakan ke pengguna nobody, gunakan all_squash. Opsi anonuid=uid dan anongid=gid memungkinkan menentukan pengguna palsu lain untuk digunakan sebagai pengganti UID/GID 65534 (milik pengguna nobody dan grup nogroup).
Dengan NFSv4, Anda dapat menambahkan opsi sec untuk menunjukkan tingkat keamanan yang Anda inginkan: sec=sys adalah default tanpa fitur keamanan khusus, sec=krb5 hanya memfungsikan otentikasi, sec=krb5i menambahkan perlindungan integritas, dan sec=krb5p tingkat yang paling lengkap yang mencakup perlindungan privasi (dengan data enkripsi). Agar ini bekerja Anda memerlukan berjalannya Kerberos yang telah disiapkan (layanan itu tidak dibahas dalam buku ini).
Opsi-opsi lain tersedia; mereka didokumentasikan dalam halaman manual exports(5).

11.4.3. Klien NFS

Seperti dengan sistem berkas lain, mengintegrasikan share NFS ke dalam hirarki sistem memerlukan pengaitan (dan paket nfs-common). Karena sistem berkas ini memiliki kekhasan, beberapa penyesuaian diperlukan dalam sintaks perintah mount dan berkas /etc/fstab.

Contoh 11.19. Secara manual mengait dengan perintah mount

# mount -t nfs4 -o rw,nosuid arrakis.internal.falcot.com:/shared /srv/shared

Contoh 11.20. Entri NFS di berkas /etc/fstab

arrakis.internal.falcot.com:/shared /srv/shared nfs4 rw,nosuid 0 0
Entri menjelaskan pengaitan di atas, saat sistem startup, direktori NFS /shared/ dari server arrakis ke dalam direktori /srv/shared/ lokal. Akses baca-tulis diminta (maka parameter rw). Opsi nosuid adalah upaya perlindungan yang menghapus setiap bit setuid atau setgid dari program-program yang disimpan di share. Jika share NFS hanya dimaksudkan untuk menyimpan dokumen, opsi lain yang dianjurkan adalah noexec, yang mencegah mengeksekusi program-program yang disimpan di share. Perhatikan bahwa pada server, direktori shared ada di bawah NFSv4 ekspor root (misalnya /export/shared), itu bukan direktori aras puncak.
Halaman manual nfs(5) menjelaskan semua opsi secara agak mendetail.