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.
NFS er et svært nyttig verktøy, men har tidligere lidd av mange begrensninger, som det er tatt hensyn til i versjon 4 av protokollen. Ulempen er at den nyeste versjonen av NFS 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. Sikring av 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 oppstartsskriptene.
NFS-tjenerens oppsettsfil(er), /etc/exports og /etc/exports.d/, viser kataloger som er gjort tilgjengelig via nettverket (eksportert). 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:
/katalog/som/deles maskin1(opsjon1,opsjon2,...) maskin2(...) ...
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 ro-valget). Valget rw 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 diskoperasjonen er fullført (sync-valget); dette kan oppheves med async-valget. Asynkron 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, blir alle forespørsler som ser ut til å komme fra en rotbruker ansett av tjeneren å komme fra nobody-brukeren. Dette samsvarer med root_squash-alternativet, og er aktivert som standard. Alternativet no_root_squash, som slår av denne oppførselen, er risikabel, og bør bare brukes i kontrollerte omgivelser. Hvis alle brukere skal kobles til brukeren nobody, bruk all_squash. 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 og gruppe 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 (og nfs-common-pakken). Siden dette filsystemet har sine særegenheter, kreves noen justeringer i syntaksen til mount-kommandoen, og i /etc/fstab-filen.

Eksempel 11.19. Å montere manuelt med mount-kommandoen

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

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

arrakis.internal.falcot.com:/shared /srv/shared nfs4 rw,nosuid 0 0
Inngangen beskrevet ovenfor, monterer ved systemoppstart, NFS-mappen /shared/ fra arrakis-tjeneren til den lokale /srv/shared/-mappen. Lese- og skriveadgang kreves (derav rw-parameteret). Valget nosuid 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.