Product SiteDocumentation Site

11.4. Server Berkas NFS

NFS (Network File System) is a protocol allowing remote access to a filesystem through the network. All Unix systems can work with this protocol.
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, 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.
In order to not give root access to the filesystem to any NFS client, all queries appearing to come from a root user are considered by the server as coming from the nobody user. This behavior corresponds to the root_squash option, and is enabled by default. The no_root_squash option, which disables this behavior, is risky and should only be used in controlled environments. If all users should be mapped to the user nobody, use all_squash. The anonuid=uid and anongid=gid options allow specifying another fake user to be used instead of UID/GID 65534 (which corresponds to user nobody and group 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

As with other filesystems, integrating an NFS share into the system hierarchy requires mounting (and the nfs-common package). Since this filesystem has its peculiarities, a few adjustments were required in the syntaxes of the mount command and the /etc/fstab file.

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
The entry described above mounts, at system startup, the NFS directory /shared/ from the arrakis server into the local /srv/shared/ directory. Read-write access is requested (hence the rw parameter). The nosuid option is a protection measure that wipes any setuid or setgid bit from programs stored on the share. If the NFS share is only meant to store documents, another recommended option is noexec, which prevents executing programs stored on the share. Note that on the server, the shared directory is below the NFSv4 root export (for example /export/shared), it is not a top-level directory.
Halaman manual nfs(5) menjelaskan semua opsi secara agak mendetail.