NFS v3 server configuratie

5
Configuratie NFS v3 file-server Frederik Vos Inhoudsopgave 1 Inleiding 1 2 Benodigdheden 1 3 Service starten 2 4 Firewall configuratie 2 5 File share 3 6 Mounten 4 7 Read/Write voor gebruikers 5 8 Auteur 5 1. Inleiding Dit document beschrijft de installtie en configuratie van een NFS versie 3 file- server in CentOS 6.x of andere RedHat compatible distributie. Naast het configureren van de aan te bieden shares, zal in dit document ook aandacht worden geschonken aan beveiliging. Als het echt veilig moet zijn, is het beter om te kiezen voor NFS v4, maar deze nieuwere versie van het NFS protocol wordt niet door elke NFS client ondersteund. 2. Benodigdheden Als basis gebruiken we de installatie zoals beschreven is in het document: “CentOS als VMware JeOS Appliance” 1 . Optioneel kun je de metagroup “NFS file server” installeren, daarmee zijn ook de benodigdheden voor versie 4 aanwezig. 1 http://issuu.com/inktvis75/docs/jeos-centos

description

Setup van een NFS v3 server in CentOS 6.4

Transcript of NFS v3 server configuratie

Page 1: NFS v3 server configuratie

Configuratie NFS v3 file-server

Frederik Vos

Inhoudsopgave

1 Inleiding 1

2 Benodigdheden 1

3 Service starten 2

4 Firewall configuratie 2

5 File share 3

6 Mounten 4

7 Read/Write voor gebruikers 5

8 Auteur 5

1. Inleiding

Dit document beschrijft de installtie en configuratie van een NFS versie 3 file-server in CentOS 6.x of andere RedHat compatible distributie.

Naast het configureren van de aan te bieden shares, zal in dit document ookaandacht worden geschonken aan beveiliging. Als het echt veilig moet zijn, ishet beter om te kiezen voor NFS v4, maar deze nieuwere versie van het NFSprotocol wordt niet door elke NFS client ondersteund.

2. Benodigdheden

Als basis gebruiken we de installatie zoals beschreven is in het document:“CentOS als VMware JeOS Appliance”1.

Optioneel kun je de metagroup “NFS file server” installeren, daarmee zijn ookde benodigdheden voor versie 4 aanwezig.

1http://issuu.com/inktvis75/docs/jeos-centos

Page 2: NFS v3 server configuratie

4 FIREWALL CONFIGURATIE

3. Service starten

Omdat alles al geïnstalleerd is, kan de NFS server gestart worden. Controleereerst of de service rpcbind gestart is:

service rpcbind status

Als dat het geval is, kan de nfs server gestart worden:

service nfs start

Zo niet:

service rpcbind start

En moet er nog voor worden zorg gedragen dat de NFS service gestart wordttijdens het booten van Linux:

chkconfig rpcbind onchkconfig nfs on

4. Firewall configuratie

NFS is firewall-technisch geen eenvoudig verhaal: wanneer je de default in-stellingen gebruikt, is er een portmapper service (rpcbind) die dan dynamischpoorten toewijst bij de start van de NFS server.

Gelukkig is dit gedrag te veranderen in statische poorten. Open het bestand/etc/sysconfig/nfs in een editor en haal het commentaar teken (#) weg voorde volgende regels:

RQUOTAD_PORT=875LOCKD_TCPPORT=32803LOCKD_UDPPORT=32769MOUNTD_PORT=892STATD_PORT=662STATD_OUTGOING_PORT=2020

Vervolgens kunnen alle benodigde firewall poorten worden opengezet:

lokkit -p 111:tcplokkit -p 111:udplokkit -p 2049:tcplokkit -p 2049:udplokkit -p 875:tcplokkit -p 875:udplokkit -p 32803:tcplokkit -p 32769:udplokkit -p 892:tcplokkit -p 892:udplokkit -p 662:tcplokkit -p 662:udplokkit -p 2020:tcplokkit -p 2020:udplokkit --update

2

Page 3: NFS v3 server configuratie

5 FILE SHARE

Dit levert in het bestand /etc/sysconfig/iptables de volgende regels op:

-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 2020 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 2020 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT

Vergeet wanneer je dit bestand manueel aanpast niet daarna nog de firewall teherstarten:

service iptables restart

Eventueel zou je de aangemaakte regels nog wat stricter kunnen configureren,bijvoorbeeld door alleen verkeer vanaf een bepaald subnet toe te laten:

-A INPUT s 192.168.1.0/24 -m state...

Aanvullend kun je dan in het bestand /etc/hosts.allow de volgende entryopnemen:

portmap:192.168.1.0.

Herstart na deze wijzingen de NFS server:

service nfs restart

En controleer of alle services op juiste poort draaien met:

rpcinfo -p 127.0.0.1

5. File share

Als allereerste maken we de directory aan die we willen sharen via het NFSprotocol:

mkdir -p /export/share1

En veranderen de eigenaar van deze directories van root naar nfsnobody:

chown -R nfsnobody:nfsnobody /export/share1

Vervolgens maken we de shares aan in het bestand /etc/exports

/export/share1 *(rw,sync,anonuid=65534,anongid=65534)

Uiteraard kunnen we ook hier de toegang beperken tot een bepaald subnet:vervang dan het * door bijvoorbeeld 192.168.1.0/255.255.255.0, je kunt ook

3

Page 4: NFS v3 server configuratie

6 MOUNTEN

1 specifiek ip adres gebruiken of op hostnames filteren (incl. gebruik van wild-cards bijv: *.example.com). Verder kan toegang in plaats van read/write (rw)ook aangepast worden naar (ro).

In de bestanden /etc/passwd en /etc/group is de id bepaald van de gebrui-ker+groep van het account nfsnobody. De remote gebruiker root mag geenroot-rechten krijgen, maar worden gemapped naar deze id’s. Om dit mecha-nisme te laten werken moeten er ook nog aanpassingen gemaakt worden in hetbestand: /etc/idmapd.conf:

[Mapping]Nobody-User = nfsnobodyNobody-Group = nfsnobody

Herstart nu de rcpimapd service:

service rpcidmapd restart

Bij wijzigen in het bestand /etc/exports moeten de shares altijd opnieuw ge-ëporteerd worden:

exportfs -ra

Controleer het resultaat met:

showmount -e 127.0.0.1

Controleer vervolgens vanaf een andere Linux-installatie eveneens met show-mount of alles werkt, uiteraard 127.0.0.1 dan vervangen door het ip adres vande NFS server.

6. Mounten

Mount op een andere Linux installatie nu de share, dit moet als root!

sudo -smkdir /mnt/nfstestmount -t nfs server:/export/share1 /mnt/nfstestcd /mnt/nfstest

Vervolgens controleren of de mapping naar nfsnobody functioneert:

touch testls -al test

De output zou er als volgt uit moeten zien:

-rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 11 16:00 test

Controleer ook of de gebruiker nfsnobody kan schrijven:

sudo -u nfsnobody touch test2

Op dezelfde manier controleren of andere gebruikers niet kunnen schrijven!

4

Page 5: NFS v3 server configuratie

8 AUTEUR

7. Read/Write voor gebruikers

Er zijn meerdere manieren om gebruikers voldoende rechten te geven om tekunnen lezen en schrijven op deze share. Een methode is om een 777 te zettenop de directory, maar een andere methode zou kunnen zijn om een groep nf-susers aan te maken op zowel client als server. Hierbij is het belangrijk dat degroup-id aan client en server kant identiek is.

groupadd -g 200 nfsusers

Op de share nu de rechten aanpassen voor deze groep:

setfacl -R -m "g:nfsusers:rwx" /export/share1

Testen op de client machine:

newgrp nfsuserstouch /mnt/nfstest/test3

Maak een een gebruiker lid van deze groep en test opnieuw:

usermod -aG nfsusers gebruikersu gebruikertouch /mnt/fnstest/test4

8. Auteur

Dit document is geschreven door Frederik Vos, werkzaam als Senior TechnicalTrainer bij XTG.

5