Product SiteDocumentation Site

11.4. NFS Filtjener

NFS (Network File System) er en protokoll som tillater ekstern tilgang til et filsystem gjennom nettverket. Alle Unix-systemer kan arbeide med denne protokollen, Når Windows-systemer er involvert, må Samba brukes i stedet.
NFS er et svært nyttig verktøy, men har tidligere har lidd av mange begrensninger, som det er tatt hensyn til i versjon 4 av protokollen. Ulempen er at den nyeste versjonen av NFS er at den er vanskeligere å sette opp når du ønsker å bruke grunnleggende sikkerhetsfunksjoner som autentisering og kryptering, da den trenger Kerberos for dette. Og uten disse må NFS-protokollen begrenses til et klarert lokalt nettverk når data ukryptert går over nettverket (en sniffer kan fange den opp) og adgangsrettighetene er gitt med utgangspunkt i klientens IP-adresse (som kan etterlignes).

11.4.1. Å sikre NFS

Hvis du ikke bruker Kerberos-baserte sikkerhetsfunksjoner, er det viktig å sikre at bare de maskinene som har lov til å bruke NFS kan koble til de ulike nødvendige RPC-tjenerne, fordi den grunnleggende protokollen har tillit til data som mottas fra nettverket. Brannmuren må også blokkere IP spoofing for å hindre at en utenforstående maskin opptrer som en på innsiden, og at tilgangen til de riktige portene blir begrenset til maskinene som er ment å skulle ha tilgang til NFS delinger.
Eldre versjoner av protokollen krevde andre RPC-tjenester som brukte dynamisk tildelte porter. Heldigvis, med NFS versjon 4, er bare port 2049 (for NFS) og 111 (for portmapper) nødvendig, og de er dermed lette å sikre med brannmur.

11.4.2. NFS-tjener

NFS er en del av Linux-kjernen; i kjerner som leveres av Debian er den med som en kjernemodul. Hvis NFS-tjeneren skal kjøres automatisk ved oppstart, skal nfs-kernel-server-pakken installeres; Den inneholder de relevante oppstartskriptene.
NFS-tjenerens konfigurasjonsfil, /etc/exports, viser kataloger som er gjort tilgjengelig via nettverket (exported). For hver NFS deling, er det bare den gitte listen over maskiner som får tilgang. Mer finkornet adgangskontroll kan oppnås med et par alternativer. Syntaksen for denne filen er ganske enkel:
/directory/to/share machine1(option1,option2,...) machine2(...) ...
Merk at med NFSv4 må alle eksporterte kataloger være del av et enkelt hierarki og at rotkatalogen i dette hierarkiet må eksporteres og identifiseres med alternativet fsid=0 eller fsid=root.
Hver maskin kan identifiseres enten ved sitt DNS-navn eller sin IP-adresse. Hele sett med maskiner kan også angis ved hjelp av enten en syntaks som *.falcot.com eller et IP-adresseområde som 192.168.0.0/255.255.255.0 eller 192.168.0.0/24.
Kataloger er som standard gjort tilgjengelig som skrivebeskyttet (eller med rw-valget). rw-valget tillater lese- og skriveadgang. NFS-klienten kobler vanligvis til fra en port forbeholdt rot (med andre ord, under 1024). Denne begrensningen kan oppheves av insecure-valget, (secure-alternativet er implisitt, men kan gjøres eksplisitt hvis det er nødvendig for klarhetens skyld).
Som standard svarer tjeneren bare på en NFS-spørring når den igangværende disk-operasjonen er fullført (sync-valget); Dette kan oppheves med async-valget. Asynchronous innskriving øker ytelsen litt, men de reduserer påliteligheten siden det er en risiko for tap av data i tilfelle tjeneren krasjer mellom godkjenningen av innskrivingen og den faktiske innskrivingen på disken. Siden standardverdien nettopp ble endret (i forhold til den historiske verdien av NFS), er en eksplisitt innstilling å anbefale.
For å ikke gi rot-tilgang til filsystemet til noen NFS-klient, er alle spørsmål som tilsynelatende kommer fra en rotbruker vurdert av tjeneren som å komme fra nobody-brukeren. Dette samsvarer med root_squash-alternativet, og er aktivert som standard. no_root_squash-alternativet, som deaktiverer denne atferden, er risikabel og bør bare brukes i kontrollerte omgivelser. anonuid=uid og anongid=gid-alternativene tillater å spesifisere en annen falsk bruker til å bli brukt i stedet for UID/GID 65534 (som tilsvarer bruker nobody and group nogroup).
Med NFSv4, kan du legge til et sec-valg for å indikere det sikkerhetsnivået du ønsker: sec=sys er som standard uten noen sikkerhetsegenskaper, sec=krb5 aktiverer bare autentisering, sec=krb5i legger til integritetsbeskyttelse, og sec=krb5p er det mest komplette nivået, og inkluderer personvern (med datakryptering). For at dette skal virke, trenger du et Kerberos oppsett som virker (den tjenesten er ikke dekket i denne boken).
Det er også andre valgmuligheter. De er dokumentert i manualsiden exports(5).

11.4.3. NFS-klient

Som med andre filsystemer, å integrere en NFS-del inn i systemhierarkiet krever montering. Siden dette filsystemet har sine særegenheter, kreves noen justeringer i syntaksen til mount-kommandoen og i /etc/fstab-filen.

Eksempel 11.22. Å montore manuelt med mount-kommandoen

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

Eksempel 11.23. NFS inngang i /etc/fstab-filen

arrakis.internal.falcot.com:/shared /srv/shared nfs4 rw,nosuid 0 0
Inngangen ovenfor monterer, ved systemoppstart, /shared/ NFS-mappen fra arrakis-tjeneren til den lokale /srv/shared/-mappen. Lese-skriveadgang kreves (derav rwparameteret). nosuid-valget er et beskyttelsestiltak som sletter alle setuid eller setgid-bit fra programmer lagret i delingen. Hvis NFS-delingen kun er ment til å lagre dokumenter, er et annet anbefalt alternativ noexec, som hindrer kjøring av programmer som er lagret i delingen. Legg merke til at på tjeneren, er ikke shared-mappen under NFSv4 root export (for eksempel /export/shared), en toppnivå-mappe.
Manualsiden nfs(5) beskriver alle valgmulighetene noe mer detaljert.