diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/Makefile b/nl_NL.ISO8859-1/books/handbook/network-servers/Makefile new file mode 100644 index 0000000000..7c8daabcf6 --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/Makefile @@ -0,0 +1,16 @@ +# +# Build the Handbook with just the content from this chapter. +# +# $FreeBSD$ +# $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/network-servers/Makefile,v 1.2 2004/12/26 21:39:15 remko Exp $ +# Gebaseerd op: 1.1 + +CHAPTERS= network-servers/chapter.sgml + +VPATH= .. + +MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} + +DOC_PREFIX?= ${.CURDIR}/../../../.. + +.include "../Makefile" diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml new file mode 100644 index 0000000000..3529a72dae --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.sgml @@ -0,0 +1,5529 @@ + + + + + + + Murray + Stokely + Gereorganiseerd door + + + + + + Siebrand + Mazeland + Vertaald door + + + + + Netwerkdiensten + + + Samenvatting + + Dit hoofdstuk behandelt een aantal veelgebruikte + netwerkdiensten op &unix; systemen. Er wordt ingegaan op de + installatie, het instellen, testen en beheren van verschillende + typen netwerkdiensten. Overal in dit hoofdstuk staan + voorbeeldbestanden met instellingen waar de lezer zijn voordeel + mee kan doen. + + Na het lezen van dit hoofdstuk weet de lezer: + + + + Hoe om te gaan met de inetd + daemon; + + + + Hoe een netwerkbestandssysteem opgezet kan worden; + + + + Hoe een netwerkinformatiedienst (NIS) opgezet kan worden + voor het delen van gebruikersaccounts; + + + + Hoe automatische netwerkinstellingen gemaakt kunnen + worden met DHCP; + + + + Hoe een domeinnaam server opgezet kan worden; + + + + Hoe een Apache HTTP Server + opgezet kan worden; + + + + Hoe een File Transfer Protocol (FTP) Server opgezet kan + worden; + + + + Hoe een bestands- en printserver voor &windows; clients + opgezet kan worden met + Samba; + + + + Hoe datum en tijd gesynchroniseerd kunnen worden en hoe + een tijdserver opgezet kan worden met het NTP + protocol. + + + + + Veronderstelde voorkennis: + + + + Basisbegrip van de scripts in + /etc/rc; + + + + Bekend zijn met basis netwerkterminologie; + + + + Kennis van de installatie van software van derde partijen + (). + + + + + + + + + Chern + Lee + Geschreven door + + + + + De <application>inetd</application> + <quote>Super-Server</quote> + + + Overzicht + + &man.inetd.8; wordt de internet Super-Server + genoemd, omdat die verbindingen voor meerdere diensten beheert. + Als door inetd een verbinding wordt + ontvangen, bepaalt die voor welk programma de verbinding + bedoeld is, spawnt dat proces en delegeert de socket (het + programma wordt gestart met de socket van de dienst als + zijn standaard invoer, uitvoer en foutbeschrijvingen). Het + draaien van één instantie van + inetd reduceert de load op een + systeem in vergelijking met het in stand-alone modus draaien + van alle daemons. + + inetd wordt primair gebruikt om + andere daemons aan te roepen, maar het handelt een aantal + triviale protocollen direct af, zoals + chargen, + auth en + daytime. + + In deze paragraaf worden de basisinstellingen van + inetd behandeld met de opties vanaf + de commandoregel en met het instellingenbestand + /etc/inetd.conf. + + + + Instellingen + + inetd wordt gestart door het + /etc/rc.conf systeem. De + optie inetd_enable staat standaard op + NO, maar wordt door + sysinstall vaak ingeschakeld door de + instellingen van het medium beveiligingsprofiel. Door het + instellen van + inetd_enable="YES" of + inetd_enable="NO" in + /etc/rc.conf wordt + inetd bij het opstarten van een + systeem wel of niet ingeschakeld. + + Dan kunnen er ook nog een aantal commandoregelopties aan + inetd meegegeven worden met de optie + inetd_flags. + + + + Commandoregelopties + + inetd overzicht: + + inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a adres | hostnaam] + [-p bestandsnaam] [-R rate] [instellingenbestand] + + + + -d + + + Schakel debugging in. + + + + + -l + + + Schakel het loggen van succesvolle verbindingen + in. + + + + + -w + + + Schakel TCP Wrapping voor externe diensten in (staat + standaard aan). + + + + + -W + + + Schakel TCP Wrapping voor internet diensten uit + inetd in (staat standaard + aan). + + + + + -c maximum + + + Geeft het maximale aantal gelijktijdige verzoeken voor + iedere dienst aan. De standaard is ongelimiteerd. Kan + per dienst ter zijde geschoven worden met de parameter + . + + + + + -C rate + + + Geeft het maximale aantal keren aan dat een dienst + vanaf een bepaald IP adres per minuut aangeroepen kan + worden. Kan per dienst ter zijde geschoven worden met de + parameter + . + + + + + -R rate + + + Geeft het maximale aantal keren aan dat een dienst + per minuut aangeroepen kan worden. De standaard is 256. + De instelling 0 geeft aan dat er geen + limiet is. + + + + + -a + + + Geeft een of meer IP adres associaties aan. Er kan + ook een hostnaam opgegeven worden, in welk geval het IPv4 + of IPv6 adres dat met de hostnaam overeenkomst wordt + gebruikt. Meestal wordt er een hostnaam gebruikt als + inetd in een &man.jail.8; + draait en de hostnaam dus overeenkomst met de + &man.jail.8;-omgeving. + + Als er een hostnaam wordt aangegeven en zowel IPv4 + als IPv6 zijn nodig, dan moeten er twee instellingen + in /etc/inetd.conf gemaakt worden, + voor beide protocollen een. Een TCP-gebaseerde + dienst heeft bijvoorbeeld twee regels met instellingen + nodig: tcp4 en tcp6 + voor beide protocollen. + + + + + -p + + + Geeft het bestand aan waarin het proces ID opgeslagen + moet worden. + + + + + Al deze opties kunnen aan inetd + meegegeven worden met de optie inetd_flags + in /etc/rc.conf. Standaard staat + inetd_flags op –wW, + dat TCP wrapping voor de interne en externe diensten van + inetd inschakelt. Voor beginnende + gebruikers hoeven deze waarden meestal niet aangepast te worden + of ingegeven te worden in + /etc/rc.conf. + + + Een externe dienst is een daemon buiten + inetd, die wordt aangesproken als + er een verbinding voor wordt ontvangen. Een interne dienst + is een dienst die inetd vanuit + zichzelf kan aanbieden. + + + + + <filename>inetd.conf</filename> + + De instellingen van inetd + worden beheerd in /etc/inetd.conf. + + Als er een wijziging wordt aangebracht in + /etc/inetd.conf, dan kan + inetd gedwongen worden om de + instellingen opnieuw in te lezen door een HangUP signaal naar + het inetd proces te sturen: + + + <application>inetd</application> een HangUP Signaal + Sturen + + &prompt.root; kill -HUP `cat /var/run/inetd.pid` + + + Iedere regel in het bestand met instellingen heeft + betrekking op een individuele daemon. Commentaar wordt vooraf + gegaan door een #. De opmaak van + /etc/inetd.conf is als volgt: + + service-name +socket-type +protocol +{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] +user[:group][/login-class] +server-program +server-program-arguments + + Een voorbeeldregel voor de ftpd + daemon met IPv4: + + ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l + + + + service-name + + + Dit is de dienstnaam van een daemon. Die moet + overeenkomen met een dienst uit + /etc/services. Hiermee kan de + poort waarop inetd moet + luisteren aangegeven worden. Als er een nieuwe dienst + wordt gemaakt, moet die eerst in + /etc/services gezet worden. + + + + + socket-type + + + Dit is stream, + dgram, raw of + seqpacket. stream + moet gebruikt worden voor connectie gebaseerde TCP + daemons, terwijl dgram wordt gebruikt + voor daemons die gebruik maken van het + UDP transport protocol. + + + + + protocol + + + Een van de volgende: + + + + + + Protocol + + Toelichting + + + + + + tcp, tcp4 + + TCP IPv4 + + + + udp, udp4 + + UDP IPv4 + + + + tcp6 + + TCP IPv6 + + + + udp6 + + UDP IPv6 + + + + tcp46 + + Zowel TCP IPv4 als v6 + + + + udp46 + + Zowel UDP IPv4 als v6 + + + + + + + + + {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] + + + geeft aan of de daemon + die door inetd wordt + aangesproken zijn eigen sockets kan afhandelen of niet. + sockettypen moeten de optie + gebruiken, terwijl streamsocket + daemons, die meestal multi-threaded zijn, de optie + horen te gebruiken. + geeft meestal meerdere sockets aan + een daemon, terwijl een child + daemon spawnt voor iedere nieuwe socket. + + Het maximun aantal child daemons dat + inetd mag spawnen kan + ingesteld worden met de optie . + Als een limiet van tien instanties van een bepaalde + daemon gewenst is, dan zou er /10 + achter gezet worden. + + Naast is er nog een andere + optie waarmee het maximale aantal verbindingen van een + bepaalde plaats naar een daemon ingesteld kan worden. + Dat kan met + . Een + waarde van tien betekent hier dat er van iedere IP adres + maximaal tien verbindingen naar daemon tot stand gebracht + kunnen worden. Dit kan gebruikt worden om bedoeld en + onbedoeld bronnengebruik van een machine te + voorkomen. + + In dit veld is of + verplicht. + en + zijn + optioneel. + + Een stream-type multi-threaded daemon zonder + or + + limieten is eenvoudigweg: + nowait. + + Dezelfde daemon met een maximale limiet van tien + daemons zou zijn: nowait/10. + + Dezelfde instellingen met een limiet van twintig + connecties per IP adres per minuut en een totaal maximum + van tien child daemons zou zijn: + nowait/10/20. + + Deze opties worden allemaal gebruikt door de + standaardinstelling voor de + fingerd daemon: + + finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s + + + + + user + + + Dit is de gebruikersnaam waar een daemon onder + draait. Daemons draaien meestal als de gebruiker + root. Om veiligheidsredenen draaien + sommige daemons onder de gebruiker + daemon of de gebruiker met de minste + rechten: nobody. + + + + + server-program + + + Het volledige pad van de daemon die uitgevoerd moet + worden als er een verbinding wordt ontvangen. Als de + daemon een dienst is die door + inetd intern wordt geleverd, + dan moet de optie gebruikt + worden. + + + + + server-program-arguments + + + Deze optie werkt samen met de optie + en hierin worden de + argumenten ingesteld, beginnend met + argv[0], die bij het starten aan de + daemon worden meegegeven. Als + mijndaemon -d de commandoregel is, + dan zou mijndaemon -d de waarde van + zijn. Hier + geldt ook dat als de daemon een interne dienst is, hier + de optie moet worden. + + + + + + + Beveiliging + + Afhankelijk van het beveiligingsprofiel dat bij de + installatie is gekozen, kunnen veel van de daemons van + inetd standaard ingeschakeld zijn. + Het is verstandig een daemon die niet noodzakelijk is uit te + schakelen! Dat kan door een # voor de daemon + in /etc/inetd.conf en dan een hangup signaal naar inetd te + sturen. Sommige daemons, zoals + fingerd, zijn wellicht helemaal niet + gewenst omdat ze een aanvaller te veel informatie geven. + + Sommige daemons zijn zich niet echt bewust van beveiliging + en hebben lange of niet bestaande time-outs voor + verbindingspogingen. Hierdoor kan een aanvaller langzaam veel + verbindingen maken met een daemon en zo beschikbare bronnen + verzadigen. Het is verstandig voor die daemons de limietopties + en + te gebruiken. + + TCP wrapping staat standaard aan. Er staat meer informatie + over het zetten van TCP restricties op de verschillende daemons + die door inetd worden aangesproken + in &man.hosts.access.5;. + + + + Allerlei + + daytime, + time, + echo, + discard, + chargen en + auth zijn allemaal interne diensten + van inetd. + + De dienst auth biedt + identiteitsnetwerkdiensten (ident, + identd) en is tot op een bepaald + niveau instelbaar. + + Er staat meer informatie in &man.inetd.8;. + + + + + + + + Tom + Rhodes + Gereorganiseerd en verbeterd door + + + + + Bill + Swingle + Geschreven door + + + + + Netwerkbestandssysteem (NFS) + + NFS + + Het Netwerkbestandssysteem (Network File System) is een van + de vele bestandssystemen die &os; ondersteunt. Het staat ook wel + bekend als NFS. + Met NFS is het + mogelijk om mappen en bestanden met anderen in een netwerk te + delen. Door het gebruik van NFS kunnen gebruikers en + programma's bij bestanden op andere systemen op bijna dezelfde + manier als bij hun eigen lokale bestanden. + + De grootste voordelen van NFS zijn: + + + + Lokale werkstations gebruiken minder diskruimte omdat + veel gebruikte data op één machine opgeslagen + kan worden en nog steeds toegankelijk is voor gebruikers via + het netwerk; + + + + Gebruikers hoeven niet op iedere machine een thuismap te + hebben. Thuismappen kunnen op de NFS + server staan en op het hele netwerk beschikbaar zijn; + + + + Opslagapparaten als floppydisks, CDROM drives en + &iomegazip; drives kunnen door andere machines op een netwerk + gebruikt worden. Hierdoor kan het aantal drives met + verwijderbare media in een netwerk verkleind worden. + + + + + Hoe <acronym>NFS</acronym> Werkt + + NFS bestaat uit tenminste twee + hoofdonderdelen: een server en een of meer clients. De client + benadert de gegevens die op een server machine zijn opgeslagen + via een netwerk. Om dit mogelijk te maken moeten er een aantal + processen ingesteld en gestart worden. + + + In &os; 4.X is het hulpprogramma + portmap gebruikt in plaats van + rpcbind. Dus in &os; 4.X + moet elke rpcbind vervangen + worden door portmap in de + volgende voorbeelden. + + Op de server moeten de volgende daemons draaien: + + NFS + + server + + + + fileserver + + unix clients + + + rpcbind + + portmap + + mountd + + nfsd + + + + + + + + + + Daemon + + Beschrijving + + + + + + nfsd + + De NFS daemon die verzoeken van + de NFS clients afhandelt. + + + + mountd + + De NFS mountdaemon die + doorgestuurde verzoeken van &man.nfsd.8; + uitvoert. + + + + rpcbind + + Deze daemon geeft NFS + clients aan welke poort de NFS + server gebruikt. + + + + + + Op de client kan ook een daemon draaien: + nfsiod. De + nfsiod daemon handelt verzoeken van + de NFS server af. Dit is optioneel en kan + de prestaties verbeteren, maar het is niet noodzakelijk voor + een normale en correcte werking. Meer informatie staat in + &man.nfsiod.8;. + + + + + <acronym>NFS</acronym> Instellen + + + NFS + + instellen + + + NFS instellen gaat redelijk rechtlijnig. + Alle processen die moeten draaien kunnen meestarten bij het + opstarten door een paar wijzigingen in + /etc/rc.conf. + + Op de NFS server dienen de volgende + opties in /etc/rc.conf te staan: + + rpcbind_enable="YES" +nfs_server_enable="YES" +mountd_flags="-r" + + mountd start automatisch als de + NFS server is ingeschakeld. + + Op de client dient de volgende optie in + /etc/rc.conf te staan: + + nfs_client_enable="YES" + + In het bestand /etc/exports staat + beschreven welke bestandssystemen NFS moet + exporteren (soms heet dat ook wel delen of + sharen). Iedere regel in + /etc/exports slaat op een bestandssysteem + dat wordt geëxporteerd en welke machines toegang hebben + tot dat bestandssysteem. Samen met machines die toegang + hebben, kunnen ook toegangsopties worden aangegeven. Er zijn + veel opties beschikbaar, maar hier worden er maar een paar + beschreven. Alle opties staan beschreven in + &man.exports.5;. + + Nu volgen een aantal voorbeelden voor + /etc/exports: + + + NFS + + export voorbeelden + + + Het volgende voorbeeld geeft een beeld van hoe een + bestandssysteem te exporteren, hoewel de instellingen + afhankelijk zijn van de omgeving en het netwerk. Om + bijvoorbeeld de map /cdrom te exporteren + naar drie machines die dezelfde domeinnaam hebben als de server + (vandaar dat de machinenamen geef domeinachtervoegsel hebben) + of in /etc/hosts staan. De vlag + exporteert het bestandssysteem als + alleen–lezen. Door die vlag kan een ander systeem niet + schrijven naar het geëxporteerde bestandssysteem. + + /cdrom -ro host1 host2 host3 + + Het volgende voorbeeld exporteert + /home naar drie hosts op basis van IP + adres. Dit heeft zin als er een privaat netwerk bestaat, + zonder dat er een DNS server is ingesteld. + Optioneel kan /etc/hosts gebruikt worden + om interne hostnamen in te stellen. Er is meer informatie te + vinden in &man.hosts.5;. Met de vlag + mogen submappen ook mountpunten zijn. De submap wordt dan niet + feitelijk gemount, maar de client mount dan alleen de submappen + die verplicht of nodig zijn. + + /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 + + Het volgende voorbeeld exporteert /a + zo dat twee clients uit verschillende domeinen bij het + bestandssysteem mogen. Met de vlag + mag de gebruiker op het + andere systeem gegevens naar het geëxporteerde + bestandssysteem schrijven als root. Als + de vlag niet wordt gebruikt, dan + kan een gebruiker geen bestanden wijzigen op het + geëxporteerde bestandssysteem, zelfs niet als een + gebruiker daar root is. + + /a -maproot=root host.example.com box.example.org + + Om een client toegang te geven tot een geëxporteerd + bestandssysteem, moet die client daar rechten voor hebben. De + client moet daarvoor genoemd worden in + /etc/exports. + + In /etc/exports staat iedere regel + voor de exportinformatie van één bestandssysteem + naar één host. Per bestandssysteem mag een host + maar één keer genoemd worden en mag maar + één standaard hebben. Stel bijvoorbeeld dat + /usr een enkel bestandssysteem is. Dan is + de volgende /etc/exports niet + valide: + + ># Werkt niet als /usr 1 bestandssysteem is +/usr/src client +/usr/ports client + + Eén bestandssysteem, /usr, + heeft twee regels waarin exports naar dezelfde host worden + aangegeven, client. In deze situatie is de + juiste instelling: + + /usr/src /usr/ports client + + De eigenschappen van een bestandssysteem dat naar een + bepaalde host wordt geëxporteerd moeten allemaal op + één regel staan. Regels waarop geen client + wordt aangegeven worden behandeld als een enkele host. Dit + beperkt hoe bestandssysteem geëxporteerd kunnen worden, + maar dat blijkt meestal geen probleem. + + Het volgende voorbeeld is een valide exportlijst waar + /usr en /exports + lokale bestandssystemen zijn: + + # Export src and ports to client01 and client02, but only +# client01 has root privileges on it +/usr/src /usr/ports -maproot=root client01 +/usr/src /usr/ports client02 +# The client machines have root and can mount anywhere +# on /exports. Anyone in the world can mount /exports/obj read-only +/exports -alldirs -maproot=root client01 client02 +/exports/obj -ro + + Als /etc/exports wordt aangepast, moet + mountd herstart worden om de + wijzigingen actief te maken. Dat kan door een HUP signaal naar + het mountd proces te sturen: + + &prompt.root; kill -HUP `cat /var/run/mountd.pid` + + Het is ook mogelijk een machine te herstarten, zodat &os; + alles netjes in kan stellen, maar dat is niet nodig. Het + uitvoeren van de volgende commando's als + root hoort hezelfde resultaat te + hebben. + + Op de NFS server: + + &prompt.root; rpcbind +&prompt.root; nfsd -u -t -n 4 +&prompt.root; mountd -r + + Op de NFS client: + + &prompt.root; nfsiod -n 4 + + Nu is alles klaar om feitelijk het netwerkbestandssysteem + te mounten. In de volgende voorbeelden is de naam van de + server server en de naam van de client is + client. Om een netwerkbestandssysteem + slechts tijdelijk te mounten of om alleen te testen, kan een + commando als het onderstaande als root op + de client uitgevoerd worden: + + + NFS + + mounten + + + &prompt.root; mount server:/home /mnt + + Hiermee wordt de map /home op de + server gemount op /mnt op de client. Als + alles juist is ingesteld, zijn nu in /mnt + op de client de bestanden van de server zichtbaar. + + Om een netwerkbestandssysteem iedere keer als een computer + opstart te mounten, kan het bestandssysteem worden toegevoegd + aan /etc/fstab file: + + server:/home /mnt nfs rw 0 0 + + Alle beschikbare opties staan in &man.fstab.5;. + + + + Mogelijkheden voor Gebruik + + NFS is voor veel doeleinden in te + zetten. Een aantal voorbeelden: + + + NFS + + gebruik + + + + + Een aantal machines een CDROM of andere media laten + delen. Dat is goedkoper en vaak ook handiger, bijvoorbeeld + bij het installeren van software op meerdere + machines; + + + + Op grote netwerken kan het praktisch zijn om een + centrale NFS server in te richten, + waarop alle thuismappen staan. Die thuismappen kunnen dan + geëxporteerd worden, zodat gebruikers altijd + dezelfde thuismap hebben, op welk werkstation ze ook + aanmelden; + + + + Meerdere machines kunnen een gezamenlijke map + /usr/ports/distfiles hebben. Dan is + het mogelijk om een port op meerdere machines te + installeren, zonder op iedere machine de broncode te hoeven + downloaden. + + + + + + + + + Wylie + Stilwell + Geschreven door + + + + + Chern + Lee + Herschreven door + + + + + Automatisch Mounten met + <application>amd</application> + + amd + + automatic mounter daemon + + &man.amd.8; (de automatic mounter daemon) mount automatisch + netwerkbestandssystemen als er aan een bestand of map binnen + dat bestandssysteem wordt gerefereerd. + amd unmount ook bestandssystemen die + een bepaalde tijd niet gebruikt worden. Het gebruikt van + amd is een aantrekkelijk en + eenvoudig alternatief ten opzichte van permanente mounts, + die meestal in /etc/fstab staan. + + amd werkt door zichzelf als + NFS server te koppelen aan de mappen /host + en /net. Als binnen die mappen een + bestand wordt geraadpleegd, dan zoekt + amd de bijbehorende netwerkmount op + en mount die automatisch. /net wordt + gebruikt om een geëxporteerd bestandssysteem van een + IP adres te mounten, terwijl /host wordt + gebruikt om een geëxporteerd bestandssysteem van een + hostnaam te mounten. + + Het raadplegen van een bestand in + /host/foobar/usr geeft + amd aan dat die moet proberen de + /usr export op de host + foobar te mounten. + + + Een Export Mounten met + <application>amd</application> + + De beschikbare mounts van een netwerkhost zijn te + bekijken met showmount. Om bijvoorbeeld + de mounts van de host foobar te + bekijken: + + &prompt.user; showmount -e foobar +Exports list on foobar: +/usr 10.10.10.0 +/a 10.10.10.0 +&prompt.user; cd /host/foobar/usr + + + Zoals in het bovenstaande voorbeeld te zien is, toont + showmount /usr als een + export. Als er naar de map + /host/foobar/usr wordt gegaan, probeert + amd de hostnaam + foobar te resolven en de gewenste export + automatisch te mounten. + + amd kan gestart worden door de + opstartscript door de volgende regel in + /etc/rc.conf te plaatsen: + + amd_enable="YES" + + Er kunnen ook nog opties meegegeven worden aan + amd met de optie + amd_flags. Standaard staat + amd_flags ingesteld op: + + amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" + + In het bestand /etc/amd.map staan + de standaardinstellingen waarmee exports gemount worden. In + het bestand /etc/amd.conf staan een + aantal van de meer gevorderde instellingen van + amd. + + In &man.amd.8; en &man.amd.conf.5; staat meer + informatie. + + + + + + + John + Lind + Geschreven door + + + + + Problemen bij Samenwerking met Andere Systemen + + Bepaalde Ethernet adapters voor ISA PC systemen kennen + limieten die tot serieuze netwerkproblemen kunnen leiden, in + het bijzonder met NFS. Dit probleem is niet specifiek voor + &os;, maar het kan op &os; wel voor komen. + + Het probleem ontstaat bijna altijd als (&os;) PC systemen + netwerken met high-performance werkstations, zoals van Silicon + Graphics, Inc. en Sun Microsystems, Inc. De NFS mount werkt + prima en wellicht lukken een aantal acties ook, maar dan ineens + lijkt de server niet meer te reageren voor de client, hoewel + verzoeken van en naar andere systemen gewoon verwerkt worden. + Dit gebeurt op een clientsysteem, of de client nu het &os + systeem is of het werkstation. Op veel systemen is er geen + manier om de client netjes af te sluiten als dit probleem is + ontstaan. Vaak is de enige mogelijkheid een reset van de + client, omdat het probleem met NFS niet opgelost kan + worden. + + Hoewel de enige correcte oplossing de + aanschaf van een snellere en betere Ethernet adapter voor het + &os; systeem is, is er zo om het probleem heen te werken dat + het werkbaar is. Als &os; de server is, + kan de optie gebruikt worden bij het + mounten door de client. Als het &os; systeem de + client is, dan dient het NFS + bestandssysteem gemount te worden met de optie + . Deze opties kunnen het vierde + veld zijn in een regel in fstab voor + automatische mounts en bij handmatige mounts met &man.mount.8; + kan de parameter gebruikt worden. + + Soms wordt een ander probleem voor dit probleem versleten, + als servers en clients zich op verschillende netwerken + bevinden. Als dat het geval is, dan dient + vastgesteld te worden dat routers de + UDP informatie op de juiste wijze routeren, + omdat er anders nooit NFS verkeer gerouteerd kan worden. + + In de volgende voorbeelden is fastws de + host(interface)naam van een high-performance werkstation en + freebox is de host(interface)naam van een &os; + systeem met een Ehernet adapter die mindere prestaties levert. + /sharedfs wordt het geëxporteerde + NFS bestandssysteem (zie &man.exports.5;) en + /project wordt het mountpunt voor het + geëxporteerde bestandssysteem op de client. + + + In sommige gevallen kunnen applicaties beter draaien als + extra opties als of + en gebruikt + worden. + + + Voorbeelden voor het &os; systeem + (freebox) als de client in + /etc/fstab op + freebox: + + fastws:/sharedfs /project nfs rw,-r=1024 0 0 + + Als een handmatig mountcommando op + freebox: + + &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project + + Voorbeelden voor het &os; systeem als de server in + /etc/fstab op + fastws: + + freebox:/sharedfs /project nfs rw,-w=1024 0 0 + + Als een handmatig mountcommando op + fastws: + + &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project + + Bijna iedere 16–bit Ethernet adapter werkt zonder de + hierboven beschreven restricties op de lees- en + schrijfgrootte. + + Voor wie het wil weten wordt nu beschreven wat er gebeurt + als de fout ontstaan, wat ook duidelijk maakt waarom het niet + hersteld kan worden. NFS werkt meestal met een + blockgrootte van 8 K (hoewel het mogelijk + is dat er kleinere fragmenten worden verwerkt). Omdat de + maximale grootte van een Ethernet pakket rond de + 1500 bytes ligt, wordt een block + opgesplitst in meerdere Ethernet pakketten, hoewel het hoger in + de code nog steeds één eenheid is, en wordt + ontvangen, samengevoegd en bevestigd + als een eenheid. De high-performance werkstations kunnen de + pakketten waaruit een NFS eenheid bestaat bijzonder snel naar + buiten pompen. Op de kaarten met minder capaciteit worden de + eerdere pakketten door de latere pakketten van dezelfde eenheid + ingehaald voordat ze bij die host zijn aangekomen en daarom kan + de eenheid niet worden samengesteld en bevestigd. Als gevolg + daarvan ontstaat er op het werkstation een time-out en probeert + die de eenheid opnieuw te sturen, maar dan weer de hele eenheid + van 8 K, waardoor het proces wordt herhaald, ad + infinitum. + + Door de grootte van de eenheid kleiner te houden dan de + grootte van een Ethernet pakket, is het zeker dat elk Ethernet + pakket dat compleet is aangekomen bevestigd kan worden, zodat + de deadlock niet ontstaat. + + Toch kan een PC systeem nog wel overrompeld worden als + high-performance werkstations er op inhakken, maar met de + betere netwerkkaarten valt het dan in ieder geval niet om door + de NFS eenheden. Als het systeem toch wordt + overrompeld, dan worden de betrokken eenheden opnieuw + verstuurd en dan is de kans groot dat ze worden ontvangen, + samengevoegd en bevestigd. + + + + + + + + Bill + Swingle + Geschreven door + + + + + Eric + Ogren + Verbeterd door + + + + Udo + Erdelhoff + + + + + Netwerkinformatiesysteem (NIS/YP) + + + Wat Is Het? + + NIS + + Solaris + + HP-UX + + AIX + + Linux + + NetBSD + + OpenBSD + + NIS, + dat staat voor Netwerkinformatiediensten (Network Information + Services), is ontwikkeld door Sun Microsystems om het beheer + van &unix; (origineel &sunos;) systemen te centraliseren. + Tegenwoordig is het eigenlijk een industriestandaard geworden. + Alle grote &unix;-achtige systemen (&solaris;, HP-UX, &aix;, + &linux;, NetBSD, OpenBSD, &os;, enzovoort) ondersteunen + NIS. + + yellow pagesNIS + + NIS + stond vroeger bekend als Yellow Pages, maar vanwege problemen + met het handelsmerk heeft Sun de naam veranderd. De oude term, + en yp, wordt nog steeds vaak gebruikt. + + + NIS + + domeinen + + + Het is een op RPC gebaseerd client/server systeem waarmee + een groep machines binnen een NIS domein een gezamenlijke set + met instellingenbestanden kan delen. Hierdoor kan een + beheerder NIS systemen opzetten met een minimaal aantal + instellingen en vanaf een centrale lokatie instellingen + toevoegen, verwijderen en wijzigen. + + Windows NT + + Het is te vergelijken met het &windowsnt; domeinsysteem en + hoewel de interne implementatie van de twee helemaal niet + overeenkomt, is de basisfunctionaliteit vergelijkbaar. + + + + Termen en Processen om te Onthouden + + Er zijn een aantal termen en belangrijke + gebruikersprocessen die een rol spelen bij het implementeren + van NIS op &os;, zowel bij het maken van een NIS server als bij + het maken van een systeem dan NIS client is: + + rpcbind + + portmap + + + + + + + + + + + Term + + Beschrijving + + + + + + NIS domeinnaam + + Een NIS master server en al zijn clients + (inclusief zijn slave master) hebben een NIS + domeinnaan. Vergelijkbaar met een &windowsnt; + domeinnaam, maar de NIS domeinnaam heeft niets te maken + met DNS. + + + + rpcbind + + Moet draaien om RPC (Remote + Procedure Call in te schakelen, een netwerkprotocol dat + door NIS gebruikt wordt). Als + rpcbind niet draait, dan kan + een NIS server niet draaien en kan een machine ook geen + NIS client zijn (In &os; 4.X wordt + portmap in plaats van + rpcbind). + + + + ypbind + + Verbindt een NIS client aan zijn + NIS server. Dat gebeurt door met de NIS domeinnaam van + het systeem en door het gebruik van RPC + te verbinden met de server. + ypbind is de kern van + client-server communicatie in een NIS omgeving. Als + ypbind op een machine + stopt, dan kan die niet meer bij de NIS server + komen. + + + + ypserv + + Hoort alleen te draaien op NIS servers. Dit is + het NIS server proces zelf. Als &man.ypserv.8; stopt, + dan kan de server niet langer reageren op NIS + verzoeken (hopelijk is er dan een slave server om het + over te nemen). Er zijn een aantal implementaties van + NIS, maar niet die op &os;, die geen verbinding met + een andere server proberen te maken als de server + waarmee ze verbonden waren niet meer reageert. In dat + geval is vaak het enige dat werkt het server proces + herstarten (of zelfs de hele server) of het + ypbind proces op de + client. + + + + rpc.yppasswdd + + Nog een proces dat alleen op NIS master servers + hoort te draaien. Dit is een daemon waarbij NIS + clients hun NIS wachtwoorden kunnen wijzigen. Als deze + daemon niet draait, moeten gebruikers aanmelden op de + NIS master server en daar hun wachtwoord wijzigen. + + + + + + + + + Hoe Werkt Het? + + Er zijn drie typen hosts in een NIS omgeving: master + servers, slave servers en clients. Servers zijn het centrale + depot voor instellingen voor een host. Master servers + bevatten de geauthoriseerd kopie van die informatie, terwijl + slave servers die informatie spiegelen voor redundantie. + Clients verlaten zich op de servers om hun die informatie ter + beschikking te stellen. + + Op deze manier kan informatie uit veel bestanden gedeeld + worden. De bestanden master.passwd, + group en hosts + worden meestal via NIS gedeeld. Als een proces op een client + informatie nodig heeft die normaliter in een van die lokale + bestanden staat, dan vraagt die het in plaats daarvan aan + de NIS servers waarmee hij verbonden is. + + + Soorten Machines + + + + NIS + + master server + + + + Een NIS master server. Deze + server onderhoudt, analoog aan een &windowsnt; primary + domain controller, de bestanden die door alle NIS clients + gebruikt worden. De bestanden + passwd, group + en andere bestanden die door de NIS clients gebruikt + worden staan op de master server. + + + Het is mogelijk om één machine master + server te laten zijn voor meerdere NIS domeinen. Dat + wordt in deze inleiding echter niet beschreven, omdat + die uitgaat van een relatief kleine omgeving. + + + + + NIS + + slave server + + + + NIS slave servers. Deze zijn + te vergelijken met &windowsnt; backup domain controllers. + NIS slave servers beheren een kopie van de bestanden met + gegevens op de NIS master. NIS slave servers bieden + redundantie, die nodig is in belangrijke omgevingen. Ze + helpen ook om de belasting te verdelen met de master + server: NIS client maken altijd een verbinding met de NIS + server die het eerst reageert en dat geldt ook voor + antwoorden van slave servers. + + + + NIS + + client + + + + NIS clients. NIS clients + authenticeren, net als de meeste &windowsnt; + werkstations, tegen de NIS server (of de &windowsnt; + domain controller in het geval van &windowsnt; + werkstations) bij het aanmelden. + + + + + + + NIS/YP Gebruiken + + Dit onderdeel behandelt het opzetten van een + NIS voorbeeldomgeving. + + + Dit onderdeel veronderstelt dat &os; 3.3 of later + draait. De nu volgende instructies werken + waarschijnlijk voor iedere versie van + &os; hoger dan 3.0, maar dat hoeft niet waar te zijn. + + + + Plannen + + Er wordt uitgegaan van een beheerder van een klein + universiteitslab. Dat lab, dat bestaat uit &os; machines, + kent op dit moment geen centraal beheer. Iedere machine + heeft zijn eigen /etc/passwd en + /etc/master.passwd. Die bestanden + worden alleen met elkaar in lijn gehouden door handmatige + handelingen. Als er op dit moment een gebruiker aan het lab + wordt toegevoegd, moet adduser op alle 15 + machines gedraaid worden. Dat moet natuurlijk veranderen en + daarom is besloten het lab in te richten met NIS, waarbij + twee machines als server worden gebruikt. + + Het lab ziet er ongeveer als volgt uit: + + + + + + Machinenaam + + IP adres + + Rol Machine + + + + + + ellington + + 10.0.0.2 + + NIS master + + + + coltrane + + 10.0.0.3 + + NIS slave + + + + basie + + 10.0.0.4 + + Wetenschappelijk werkstation + + + + bird + + 10.0.0.5 + + Client machine + + + + cli[1-11] + + 10.0.0.[6-17] + + Andere client machines + + + + + + Bij het voor de eerste keer instellen van een NIS schema + is het verstandig eerst na te denken over hoe dat opgezet + moet worden. Hoe groot een netwerk ook is, er moeten een + aantal beslissingen gemaakt worden. + + + Een NIS Domeinnaam Kiezen + + + NIS + + domeinnaam + + + Dit is wellicht niet de bekende + domeinnaam. Daarom wordt het ook de + NIS domeinnaam genoemd. Bij de broadcast + van een client om informatie wordt ook de naam van het NIS + domein waar hij onderdeel van uitmaakt meegezonden. Zo + kunnen meerdere servers op een netwerk bepalen of er + antwoord gegeven dient te worden op een verzoek. De NIS + domeinnaam is kan voorgesteld worden als de naam van een + groep hosts op op een of andere manier aan elkaar + gerelateerd zijn. + + Sommige organisaties kiezen hun internet domeinnaam als + NIS domeinnaam. Dat wordt niet aangeraden omdat het voor + verwarring kan zorgen bij het debuggen van + netwerkproblemen. De NIS domeinnaam moet uniek zijn binnen + een netwerk en het is handig als die de groep machines + beschrijft waarvoor hij geldt. Zo kan bijvoorbeeld de + Financiële afdeling van Acme Inc. als NIS domeinnaam + acme-fin hebben. In dit voorbeeld wordt + de naam test-domain gekozen. + + SunOS + + Sommige besturingssystemen gebruiken echter (met name + &sunos;) hun NIS domeinnaam als hun internet domeinnaam. + Als er machines zijn op een netwerk die deze restrictie + kennen, dan moet de internet + domeinnaam als de naam voor het NIS domainnaam gekozen + worden. + + + + Systeemeisen + + Bij het kiezen van een machine die als NIS server wordt + gebruikt zijn er een aantal aandachtspunten. Een van de + onhandige dingen aan NIS is de afhankelijkheid van de + clients van de server. Als een client de server voor zijn + NIS domein niet kan bereiken, dan wordt die machine vaak + onbruikbaar. Door het gebrek aan gebruiker- en + groepsinformatie bevriezen de meeste systemen. Daarom moet + er een machine gekozen worden die niet vaak herstart hoeft + te worden of wordt gebruikt voor ontwikkeling. De NIS + server is in het meest ideale geval een alleenstaande + server die als enige doel heeft NIS server te zijn. Als + een netwerk niet zwaar wordt gebruikt, kan de NIS server op + een machine die ook andere diensten aanbiedt gezet worden, + maar het blijft belangrijk om ervan bewust te zijn dat als + de NIS server niet beschikbaar is, dat nadelige invloed + heeft op alle NIS clients. + + + + + NIS Servers + + De hoofdversies van alle NIS informatie staan opgeslagen + op één machine die de NIS master server heet. + De databases waarin de informatie wordt opgeslagen heten NIS + maps. In &os; worden die maps opgeslagen in + /var/yp/[domainnaam] waar + [domeinnaam] de naam is van het NIS + domein dat wordt bediend. Een enkele NIS server kan + tegelijkertijd meerdere NIS domeinen ondersteunen en het is + dus mogelijk dat er meerdere van zulke mappen zijn, een voor + ieder ondersteund domein. Ieder domein heeft zijn eigen + onafhankelijke set maps. + + In NIS master en slave servers worden alle NIS verzoeken + door de ypserv daemon afgehandeld. + ypserv is verantwoordelijk voor het + ontvangen van inkomende verzoeken van NIS clients, het + vertalen van de gevraagde domeinnaam en mapnaam naar een pad + naar het corresponderende databasebestand en het terugsturen + van de database naar de client. + + + Een NIS Master Server Opzetten + + + NIS + + server opzetten + + + Het opzetten van een master NIS server kan erg + eenvoudig zijn, afhankelijk van de behoeften. &os; heeft + ondersteuning voor NIS als basisfunctie. Alleen de + volgende regels hoeven aan + /etc/rc.conf toegevoegd te worden en + &os; doet de rest: + + + + nisdomainname="test-domain" + Deze regel stelt de NIS domainnaam in op + test-domain bij het instellen van + het netwerk (bij het opstarten). + + + + nis_server_enable="YES" + Dit geeft &os; aan de NIS server processen te starten + als het netwerk de volgende keer wordt + opgestart. + + + + nis_yppasswdd_enable="YES" + Dit schakelt de dameon rpc.yppasswdd + in die, zoals al eerder aangegeven, clients toestaat + om hun NIS wachtwoord vanaf een client machine te + wijzigen. + + + + + Afhankelijk van de inrichting van NIS, kunnen er nog + meer instellingen nodig zijn. In het onderdeel NIS Servers die + ook NIS Clients Zijn staan meer details. + + + Nu hoeft alleen /etc/netstart als + superuser uitgevoerd te worden. Dat stelt alles in met + gebruikmaking van de waarden uit + /etc/rc.conf. + + + + NIS Maps Initialiseren + + + NIS + + maps + + + Die NIS maps zijn + databasebestanden die in de map + /var/yp staan. Ze worden gemaakt uit + de bestanden met instellingen uit de map + /etc van de NIS master, met + één uitzondering: + /etc/master.passwd. Daar is een goede + reden voor, want het is niet wenselijk om de wachtwoorden + voor root en andere administratieve + accounts naar alle servers in het NIS domein te sturen. + Daar moet voor het initialiseren van de NIS maps het + volgende uitgevoerd worden: + + &prompt.root; cp /etc/master.passwd /var/yp/master.passwd +&prompt.root; cd /var/yp +&prompt.root; vi master.passwd + + Dan horen alle systeemaccounts verwijderd te worden + (bin, tty, + kmem, games, + enzovoort) en alle overige accounts waarvoor het niet + wenselijk is dat ze op de NIS clients terecht komen + (bijvoorbeeld root en alle andere UID + 0 (superuser) accounts). + + + /var/yp/master.passwd hoort niet + te lezen te zijn voor een groep of voor de wereld (dus + modus 600)! Voor het aanpassen van de rechten kan + chmod gebruikt worden. + + + Tru64 UNIX + + Als dat is gedaan, kunnen de NIS maps + geïnitialiseerd worden. Bij &os; zit een script + ypinit waarmee dit kan (in de hulppagina + staat meer informatie). Dit script is beschikbaar op de + meeste &unix; besturingssystemen, maar niet op allemaal. + Op Digital UNIX/Compaq Tru64 UNIX heet het + ypsetup. Omdat er maps voor een NIS + master worden gemaakt, wordt de optie + meegegeven aan + ypinit. Aangenomen dat de voorgaande + stappen zijn uitgevoerd, kunnen de NIS maps gemaakt worden + op de volgende manier: + + ellington&prompt.root; ypinit -m test-domain +Server Type: MASTER Domain: test-domain +Creating an YP server will require that you answer a few questions. +Questions will all be asked at the beginning of the procedure. +Do you want this procedure to quit on non-fatal errors? [y/n: n] n +Ok, please remember to go back and redo manually whatever fails. +If you don't, something might not work. +At this point, we have to construct a list of this domains YP servers. +rod.darktech.org is already known as master server. +Please continue to add any slave servers, one per line. When you are +done with the list, type a <control D>. +master server : ellington +next host to add: coltrane +next host to add: ^D +The current list of NIS servers looks like this: +ellington +coltrane +Is this correct? [y/n: y] y + +[..uitvoer van het maken van de maps..] + +NIS Map update completed. +ellington has been setup as an YP master server without any errors. + + ypinit hoort + /var/yp/Makefile gemaakt te hebben uit + /var/yp/Makefile.dist. Als dit + bestand is gemaakt, neemt dat bestand aan dat er in een + omgeving met een enkele NIS server wordt gewerkt met alleen + &os; machines. Omdat test-domain ook + een slave server bevat, dient + /var/yp/Makefile gewijzigd te + worden: + + ellington&prompt.root; vi /var/yp/Makefile + + Als de onderstaande regel niet al uitgecommentarieerd + is, dient dat alsnog te gebeuren: + + NOPUSH = "True" + + + + Een NIS Slave Server Opzetten + + + NIS + + slave server + + + Het opzetten van een NIS slave server is nog + makkelijker dan het opzetten van de master. Dit kan door + aan te melden op de slave server en net als voor de master + server /etc/rc.conf te wijzigen. Het + enige verschil is dat nu de optie + gebruikt wordt voor het draaien van + ypinit. Met de optie + moet ook de naam van de NIS + master meegegven worden. Het commando ziet er dus als + volgt uit: + + coltrane&prompt.root; ypinit -s ellington test-domain + +Server Type: SLAVE Domain: test-domain Master: ellington + +Creating an YP server will require that you answer a few questions. +Questions will all be asked at the beginning of the procedure. + +Do you want this procedure to quit on non-fatal errors? [y/n: n] n + +Ok, please remember to go back and redo manually whatever fails. +If you don't, something might not work. +There will be no further questions. The remainder of the procedure +should take a few minutes, to copy the databases from ellington. +Transferring netgroup... +ypxfr: Exiting: Map successfully transferred +Transferring netgroup.byuser... +ypxfr: Exiting: Map successfully transferred +Transferring netgroup.byhost... +ypxfr: Exiting: Map successfully transferred +Transferring master.passwd.byuid... +ypxfr: Exiting: Map successfully transferred +Transferring passwd.byuid... +ypxfr: Exiting: Map successfully transferred +Transferring passwd.byname... +ypxfr: Exiting: Map successfully transferred +Transferring group.bygid... +ypxfr: Exiting: Map successfully transferred +Transferring group.byname... +ypxfr: Exiting: Map successfully transferred +Transferring services.byname... +ypxfr: Exiting: Map successfully transferred +Transferring rpc.bynumber... +ypxfr: Exiting: Map successfully transferred +Transferring rpc.byname... +ypxfr: Exiting: Map successfully transferred +Transferring protocols.byname... +ypxfr: Exiting: Map successfully transferred +Transferring master.passwd.byname... +ypxfr: Exiting: Map successfully transferred +Transferring networks.byname... +ypxfr: Exiting: Map successfully transferred +Transferring networks.byaddr... +ypxfr: Exiting: Map successfully transferred +Transferring netid.byname... +ypxfr: Exiting: Map successfully transferred +Transferring hosts.byaddr... +ypxfr: Exiting: Map successfully transferred +Transferring protocols.bynumber... +ypxfr: Exiting: Map successfully transferred +Transferring ypservers... +ypxfr: Exiting: Map successfully transferred +Transferring hosts.byname... +ypxfr: Exiting: Map successfully transferred + +coltrane has been setup as an YP slave server without any errors. +Don't forget to update map ypservers on ellington. + + Nu hoort er een map + /var/yp/test-domain te zijn waarin + kopieë van de NIS master server maps staan. Die + moeten bijgewerkt blijven. De volgende regel in + /etc/crontab op de slave servers + regelt dat: + + 20 * * * * root /usr/libexec/ypxfr passwd.byname +21 * * * * root /usr/libexec/ypxfr passwd.byuid + + Met de bovenstaande twee regels wordt de slave + gedwongen zijn maps met de maps op de master server te + synchroniseren. Hoewel dit niet verplicht is, omdat de + master server probeert veranderingen aan de NIS maps door + te geven aan zijn slaves, is het wel verstandig om een + slave tot bijwerken te dwingen, omdat wachtwoordinformatie + van vitaal belang is voor systemen die van de server + afhankelijk zijn. Dit is des te belangrijker op drukke + netwerken, omdat daar het bijwerken van maps niet altijd + compleet afgehandeld hoeft te worden. + + Nu kan ook op de slave server het commando + /etc/netstart uitgevoerd worden, dat op + zijn beurt de NIS server start. + + + + + NIS Clients + + Een NIS client maakt wat heet een verbinding (binding) + met een NIS server met de ypbind daemon. + ypbind controleert het standaarddomein van + het systeem (zoals ingesteld met + domainname) en begint met het broadcasten + van RPC verzoeken op het lokale netwerk. Die verzoeken + bevatten de naam van het domein waarvoor + ypbind een binding probeert te maken. Als + een server die is ingesteld om het gevraagde domein te + bedienen een broadcast ontvangt, dan antwoordt die aan + ypbind dat dan het IP adres van de server + opslaat. Als er meerdere servers beschikbaar zijn, een + master en bijvoorbeeld meerdere slaves, dan gebruikt + ypbind het adres van de eerste server die + antwoord geeft. Vanaf dat moment stuurt de client alle NIS + verzoeken naar die server. ypbind + pingt de server zo nu en dan om te controleren + of die nog draait. Als er na een bepaalde tijd geen antwoord + komt op een ping, dan markeert ypbind het + domein als niet verbonden en begint het broadcasten opnieuw, + in de hoop dat er een andere server wordt + gelocaliseerd. + + + Een NIS Client Opzetten + + + NIS + + client instellen + + + Het opzetten van een &os; machine als NIS client is + redelijk doorzichtig: + + + + Wijzig /etc/rc.conf en voeg de + volgende regels toe om de NIS domeinnaam in te stellen + en ypbind mee te laten starten bij + het starten van het netwerk: + + nisdomainname="test-domain" +nis_client_enable="YES" + + + + Om alle mogelijke regels voor accounts uit de NIS + server te halen, dienen alle gebruikersaccounts uit + /etc/master.passwd verwijderd te + worden en dient met vipw de volgende + regel aan het einde van het bestand geplaatst te + worden: + + +::::::::: + + + Door deze regel wordt alle geldige accounts + in de password map van de NIS server toegang gegeven. + Er zijn veel manieren om de NIS client in te stellen + door deze regel te veranderen. In het onderdeel + netgroups + hieronder staat meer informatie. Zeer gedetailleerde + informatie staat in het boek NFS en NIS + beheren van O'Reilly. + + + + Er moet tenminste één lokale + account behouden blijven (dus niet geïmporteerd + via NIS) in /etc/master.passwd + en die hoort ook lid te zijn van de groep + wheel. Als er iets mis is met + NIS, dan kan die account gebruikt worden om via het + netwerk aan te melden, root te + worden en het systeem te repareren. + + + + + Om alle groepen van de NIS server te importeren, + kan de volgende regel aan + /etc/group toegevoegd + worden: + + +:*:: + + + + Na het afronden van deze stappen zou met ypcat + passwd de passwd map van de NIS server te zien + moeten zijn. + + + + + + NIS Beveiliging + + In het algemeen kan iedere netwerkgebruiker een RPC verzoek + doen uitgaan naar &man.ypserv.8; en de inhoud van de NIS maps + ontvangen, mits die gebruiker de domeinnaam kent. Omdat soort + ongeautoriseerde transacties te voorkomen, ondersteunt + &man.ypserv.8; de optie securenets, die gebruikt + kan worden om de toegang te beperken tot een opgegeven aantal + hosts. Bij het opstarten probeert&man.ypserv.8; de securenets + informatie te laden uit het bestand + /var/yp/securenets. + + + Dit pad kan verschillen, afhankelijk van het pad dat + opgegeven is met de optie . Dit + bestand bevat regels die bestaan uit een netwerkspecificatie + en een netwerkmasker, gescheiden door witruimte. Regels die + beginnen met # worden als commentaar + gezien. Een voorbeeld van een securenetsbestand zou er zo + uit kunnen zien: + + + # allow connections from local host -- mandatory +127.0.0.1 255.255.255.255 +# allow connections from any host +# on the 192.168.128.0 network +192.168.128.0 255.255.255.0 +# allow connections from any host +# between 10.0.0.0 to 10.0.15.255 +# this includes the machines in the testlab +10.0.0.0 255.255.240.0 + + Als &man.ypserv.8; een verzoek ontvangt van een adres dat + overeenkomt met een van de bovenstaande regels, dan wordt dat + verzoek normaal verwerkt. Als er geen enkele regel op het + verzoek van toepassing is, dan wordt het verzoek genegeerd en + wordt er een waarschuwing gelogd. Als het bestand + /var/yp/securenets niet bestaat, dan + accepteert ypserv verbindingen van iedere + host. + + Het programma ypserv ondersteunt ook + het pakket tcpwrapper van Wietse + Venema. Daardoor kan een beheerder de instellingenbestanden + van tcpwrapper gebruiken voor + toegangsbeperking in plaats van + /var/yp/securenets. + + + Hoewel beide methoden van toegangscontrole enige vorm van + beveiliging bieden, zijn ze net als de privileged port test + kwetsbaar voor IP spoofing aanvallen. Al het + NIS gerelateerde verkeer hoort door een firewall + tegengehouden te worden. + + Servers die gebruik maken van + /var/yp/securenets kunnen wellicht + legitieme verzoeken van NIS clients weigeren als die gebruik + maken van erg oude TCP/IP implementaties. Sommige van die + implementaties zetten alle host bits op nul als ze een + broadcast doen en/of kijken niet naar het subnetmasker als ze + het broadcastadres berekenen. Hoewel sommige van die + problemen opgelost kunnen worden door de instellingen op de + client aan te passen, zorgen andere problemen voor het + noodgedwongen niet langer kunnen gebruiker van NIS voor die + client of het niet langer gebruiken van + /var/yp/securenets. + + Het gebruik van /var/yp/securenets + op een server met zo'n oude implementatie van TCP/IP is echt + een slecht idee en zal leiden tot verlies van NIS + functionaliteit voor grote delen van een netwerk. + + tcpwrapper + + Het gebruik van het tcpwrapper + pakket leidt tot langere wachttijden op de NIS server. De + extra vertraging kan net lang genoeg zijn om een timeout te + veroorzaken in clientprogramma's, in het bijzonder als het + netwerk druk is of de NIS server traag is. Als een of meer + clients last hebben van dat symptoom, dan is het verstandig + om de clientsystemen in kwestie NIS slave server te maken en + naar zichzelf te laten wijzen. + + + + + Aanmelden voor Bepaalde Gebruiker Blokkeren + + In het lab staat de machine basie, die + alleen faculteitswerkstation hoort te zijn. Het is niet + gewenst die machine uit het NIS domein te halen, maar het + passwd bestand op de master NIS server + bevat nu eenmaal accounts voor zowel de faculteit als de + studenten. Hoe kan dat opgelost worden? + + Er is een manier om het aanmelden van specifieke gebruikers + op een machine te weigeren, zelfs als ze in de NIS database + staan. Daarvoor hoeft er alleen maar + username + aan het einde van /etc/master.passwd op de + client machine toegevoegd te worden, waar + username de gebruikersnaam van de + gebruiker die niet mag aanmelden is. Dit gebeurt bij voorkeur + met vipw, omdat vipw + de wijzigingen aan /etc/master.passwd + controleert en ook de wachtwoord database opnieuw bouwt na + het wijzigen. Om bijvoorbeeld de gebruiker + bill aan te kunnen laten aanmelden op + basie: + + basie&prompt.root; vipw +[add -bill to the end, exit] +vipw: rebuilding the database... +vipw: done + +basie&prompt.root; cat /etc/master.passwd + +root:[password]:0:0::0:0:The super-user:/root:/bin/csh +toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh +daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin +operator:*:2:5::0:0:System &:/:/sbin/nologin +bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin +tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin +kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin +games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin +news:*:8:8::0:0:News Subsystem:/:/sbin/nologin +man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin +bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin +uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico +xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin +pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin +nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin ++::::::::: +-bill + +basie&prompt.root; + + + + + + + Udo + Erdelhoff + Geschreven door + + + + + Netgroups Gebruiken + + netgroups + + De methode uit het vorige onderdeel werkt prima als er maar + voor een beperkt aantal gebruikers en/of machines speciale + regels nodig zijn. Op grotere netwerken + gebeurt het gewoon dat er wordt vergeten + om een aantal gebruikers de aanmeldrechten op gevoelige + machines te ontnemen of dat zelfs iedere individuele machine + aangepast moet worden, waardoor het voordeel van NIS teniet + wordt gedaan: centraal beheren. + + De ontwikkelaars van NIS hebben dit probleem opgelost met + netgroups. Het doel en de semantiek + kunnen vergeleken worden met de normale groepen die gebruikt + worden op &unix; bestandssystemen. De belangrijkste + verschillen zijn de afwezigheid van een numeriek ID en de + mogelijkheid om een netgroup aan te maken die zowel gebruikers + als andere netgroups bevat. + + Netgroups zijn ontwikkeld om gebruikt te worden voor grote, + complexe netwerken met honderden gebruikers en machines. Aan + de ene kant is dat iets Goeds. Aan de andere kant is het wel + complex en bijna onmogelijk om netgroups met een paar + eenvoudige voorbeelden uit te leggen. Dat probleem wordt in de + rest van dit onderdeel duidelijk gemaakt. + + Stel dat de succesvolle implementatie van NIS in het lab + de interesse heeft gewekt van een centrale beheerclub. De + volgende taak is het uitbreiden van het NIS domein met een + aantal andere machines op de campus. De onderstaande twee + tabellen bevatten de namen van de nieuwe gebruikers en de + nieuwe machines met een korte beschijving. + + + + + + Gebruikersna(a)m(en) + + Beschrijving + + + + + + alpha, + beta + + Gewone medewerkers van de IT afdeling + + + + charlie, + delta + + Junior medewerkers van de IT afdeling + + + + echo, + foxtrott, + golf, ... + + Gewone medewerkers + + + + able, + baker, ... + + Stagiairs + + + + + + + + + + Machinena(a)m(en) + + Beschrijving + + + + + + + + war, death, + famine, + pollution + + De belangrijkste servers. Alleen senior + medewerkers van de IT afdeling mogen hierop + aanmelden. + + + + + + pride, greed, + envy, wrath, + lust, sloth + + Minder belangrijke servers. Alle leden van + de IT afdeling mogen aanmelden op deze + machines. + + + + one, two, + three, four, + ... + + Gewone werkstations. Alleen + echte medewerkers mogen op deze + machines aanmelden. + + + + trashcan + + Een erg oude machine zonder kritische data. Zelfs + de stagiair mag deze doos gebruiken. + + + + + + Als deze restricties ingevoerd worden door iedere gebruiker + afzonderlijk te blokkeren, dan wordt er een + -user regel per + systeem toegevoegd aan de passwd voor + iedere gebruiker die niet mag aanmelden op dat systeem. Als + er maar één regel wordt vergeten, kan dat een + probleem opleveren. Wellicht lukt het nog dit juist in te + stellen bij de bouw van een machine, maar het wordt + echt vergeten de regels toe te voegen voor + nieuwe gebruikers in de produktiegase. Murphy was tenslotte + een optimist. + + Het gebruik van netgroups biedt in deze situatie een aantal + voordelen. Niet iedere gebruiker hoeft separaat afgehandeld te + worden. Een gebruik kan aan een of meer groepen worden + toegevoegd en aanmelden kan voor alle leden van zo'n groep + worden toegestaan of geweigerd. Als er een nieuwe machine + wordt toegevoegd, dan hoeven alleen de aanmeldrestricties voor + de netgroups te worden ingesteld. Als er een nieuwe gebruiker + wordt toegevoegd, dan hoeft die alleen maar aan de juiste + netgroups te worden toegevoegd. Die veranderingen zijn + niet van elkaar afhankelijk: geen voor iedere combinatie + van gebruiker en machine moet het volgende .... Als + de NIS opzet zorgvuldig is gepland, dan hoeft er maar + één instellingenbestand gewijzigd te worden om + toegang tot machines te geven of te ontnemen. + + De eerst stap is het initialiseren van de NIS map netgroup. + &man.ypinit.8; van &os; maakt deze map niet standaard, maar als + die is gemaakt, ondersteunt de NIS implementatie hem wel. Een + lege map wordt als volgt gemaakt: + + ellington&prompt.root; vi /var/yp/netgroup + + Nu kan hij gevuld worden. In het gebruikte voorbeeld zijn + tenminste vier netgroups: IT medewerkers, IT junioren, gewone + medewerkers en stagiars. + + IT_MW (,alpha,test-domain) (,beta,test-domain) +IT_APP (,charlie,test-domain) (,delta,test-domain) +USERS (,echo,test-domain) (,foxtrott,test-domain) \ + (,golf,test-domain) +STAGS (,able,test-domain) (,baker,test-domain) + + IT_MW, IT_APP + enzovoort, zijn de namen van de netgroups. Iedere groep tussen + haakjes bevat een of meer gebruikersnamen voor die groep. De + drie velden binnen een groep zijn: + + + + De na(a)m(en) van de host(s) waar de volgende + onderdelen geldig zijn. Als er geen hostnaam wordt + opgegeven dan is de regel geldig voor alle hosts. Als er + wel een hostnaam wordt opgegeven, dan wordt een donker, + spookachtig en verwarrend domein betreden. + + + + De naam van de account die bij deze netgroup + hoort. + + + + Het NIS domein voor de account. Er kunnen accounts + uit andere NIS domeinen geïmporteerd worden in een + netgroup als een beheerder zo ongelukkig is meerdere + NIS domeinen te hebben. + + + + Al deze velden kunnen jokerkarakters bevatten. Details + daarover staan in &man.netgroup.5;. + + + netgroups + + De naam van een netgroup mag niet langer zijn dan acht + karakters, zeker niet als er andere besturingssystemen binnen + een NIS domein worden gebruikt. De namen zijn + hoofdlettergevoelig: alleen hoofdletters gebruiken voor de + namen van netgroups is een makkelijke manier om onderscheid + te kunnen maken tussen gebruikers-, machine- en + netgroupnamen. + + Sommige NIS clients (andere dan die op &os; draaien) + kunnen niet omgaan met netgroups met veel leden. Sommige + oudere versies van &sunos; gaan bijvoorbeeld lastig doen als + een netgroup meer dan 15 leden heeft. + Dit kan omzeild worden door meerdere sub-netgroups te maken + met 15 gebruikers of minder en een echte netgroup die de + sub-netgroups bevat: + + BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] +BIGGRP2 (,joe16,domain) (,joe17,domain) [...] +BIGGRP3 (,joe31,domain) (,joe32,domain) +BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 + + Dit proces kan herhaald worden als er meer dan 225 + gebruikers in een netgroup moeten. + + + Het activeren en distribueren van de nieuwe NIS map is + eenvoudig: + + ellington&prompt.root; cd /var/yp +ellington&prompt.root; make + + Hiermee worden drie nieuwe NIS maps gemaakt: + netgroup, + netgroup.byhost en + netgroup.byuser. Met &man.ypcat.1; kan + bekeken worden op de nieuwe NIS maps beschikbaar zijn: + + ellington&prompt.user; ypcat -k netgroup +ellington&prompt.user; ypcat -k netgroup.byhost +ellington&prompt.user; ypcat -k netgroup.byuser + + De uitvoer van het eerste commando hoort te lijken op de + inhoud van /var/yp/netgroup. Het tweede + commando geeft geen uitvoer als er geen host-specifieke + netgroups zijn ingesteld. Het derde commando kan gebruikt + worden om een lijst van netgroups voor een gebruiker op te + vragen. + + Het instellen van de client is redelijk eenvoudig. Om de + server war in te stellen hoeft alleen met + &man.vipw.8; de volgende regel in de regel daarna vervangen te + worden: + + +::::::::: + + Vervang de bovenstaande regel in de onderstaande. + + +@IT_MW::::::::: + + Nu worden alleen de gebruikers die in de netgroup + IT_MW geïmporteerd in de wachtwoord + database van de host war, zodat alleen die + gebruikers kunnen aanmelden. + + Helaas zijn deze beperkingen ook van toepassing op de + functie ~ van de shell en alle routines + waarmee tussen gebruikersnamen en numerieke gebruikers ID's + wordt gewisseld. Met andere woorden: cd + ~user werkt niet, + ls –l toont het numerieke ID in plaats + van de gebruikersnaam en find . –user joe + –print faalt met de foutmelding No + such user. Om dit te repareren moeten alle + gebruikers geïmporteerd worden, zonder ze het + recht te geven aan te melden op een server. + + Dit kan gedaan worden door nog een regel aan + /etc/master.passwd toe te voegen: + + +:::::::::/sbin/nologin + + Dit betekent importeer alle gebruikers, maar vervang + de shell door /sbin/nologin. + Ieder veld in een passwd regel kan door een + standaardwaarde vervangen worden in + /etc/master.passwd. + + + + De regel +:::::::::/sbin/nologin moet + na +@IT_MW::::::::: komen. Anders krijgen + alle gebruikers die uit NIS komen + /sbin/nologin als aanmeldshell. + + + Na deze wijziging hoeft er nog maar één NIS + map gewijzigd te worden als er een nieuwe medewerker komt bij + de IT afdeling. Dezelfde aanpak kan gebruikt worden voor de + minder belangrijke servers door de oude regel + +::::::::: in de lokale versie van + /etc/master.passwd door iets als het + volgende te vervangen: + + +@IT_MW::::::::: ++@IT_APP::::::::: ++:::::::::/sbin/nologin + + Voor normale werkstations zijn het de volgende + regels: + + +@IT_MW::::::::: ++@USERS::::::::: ++:::::::::/sbin/nologin + + En dat zou allemaal leuk en aardig zijn als er niet na een + paar weken een beleidsverandering komt: de IT afdeling gaat + stagiairs aannemen. De IT stagiairs mogen de normale + werkstations en de minder belangrijke servers gebruiken en de + junior beheerders mogen gaan aanmelden op de hoofdservers. Dat + kan door een nieuwe groep IT_STAG te maken + en de nieuwe IT stagiairs toe te voegen aan die netgroup en dan + de instellingen op iedere machine te gaan veranderen. Maar + zoals het spreekwoord zegt: Fouten in een centrale + planning leiden tot complete chaos. + + Deze situaties kunnen voorkomen worden door gebruik te + maken van de mogelijkheid in NIS om netgroups in netgroups op + te nemen. Het is mogelijk om rol-gebaseerde netgroups te + maken. Er kan bijvoorbeeld een netgroup + BIGSRV gemaakt worden om het aanmelden op de + belangrijke servers te beperken en er kan een andere netgroup + SMALLSRV voor de minder belangrijke servers + zijn en een derde netgroup met de naam + USERBOX voor de normale werkstations. Al + die netgroups kunnen de netgroups bevatten die op die machines + mogen aanmelden. De nieuwe regels in de NIS map netgroup zien + er dan zo uit: + + BIGSRV IT_MW IT_APP +SMALLSRV IT_MW IT_APP ITSTAG +USERBOX IT_MW ITSTAG USERS + + Deze methode voor het instellen van aanmeldbeperkingen + werkt redelijk goed als er groepen van machines gemaakt kunnen + worden met identieke beperkingen. Helaas blijkt dat eerder + uitzondering dan regel. Meestal moet het mogelijk zijn om per + machine in te stellen wie wel en wie niet mogen + aanmelden. + + Daarom is het ook mogelijk om via machine-specifieke + netgroups de hierboven aangegeven beleidswijziging op te + vangen. In dat scenario bevat + /etc/master.passwd op iedere machine twee + regels die met + beginnen. De eerste voegt de + netgroup toe met de accounts die op de machine mogen aanmelden + en de tweede voegt alle andere accounts toe met + /sbin/nologin als shell. Het is + verstandig om als naam van de netgroup de machinenaam in + HOOFDLETTERS te gebruiken. De regels zien er + ongeveer als volgt uit: + + +@MACHINENAAM::::::::: ++:::::::::/sbin/nologin + + Als dit voor alle machines is gedaan, dan hoeven de lokale + versies van /etc/master.passwd nooit meer + veranderd te worden. Alle toekomstige wijzigingen kunnen dan + gemaakt worden door de NIS map te wijzigen. Hieronder staat + een voorbeeld van een mogelijke netgroup map voor het + beschreven scenario met een aantal toevoegingen: + + # Definieer eerst de gebruikersgroepen +IT_MW (,alpha,test-domain) (,beta,test-domain) +IT_APP (,charlie,test-domain) (,delta,test-domain) +DEPT1 (,echo,test-domain) (,foxtrott,test-domain) +DEPT2 (,golf,test-domain) (,hotel,test-domain) +DEPT3 (,india,test-domain) (,juliet,test-domain) +ITSTAG (,kilo,test-domain) (,lima,test-domain) +D_STAGS (,able,test-domain) (,baker,test-domain) +# +# En nu een aantal groepen op basis van rollen +USERS DEPT1 DEPT2 DEPT3 +BIGSRV IT_MW IT_APP +SMALLSRV IT_MW IT_APP ITSTAG +USERBOX IT_MW ITSTAG USERS +# +# Een een groep voor speciale taken. +# Geef echo en golf toegang tot de anti-virus machine. +SECURITY IT_MW (,echo,test-domain) (,golf,test-domain) +# +# Machine-gebaseerde netgroups +# Hoofdservers +WAR BIGSRV +FAMINE BIGSRV +# Gebruiker india heeft toegang tot deze server nodig. +POLLUTION BIGSRV (,india,test-domain) +# +# Deze is erg belangrijk en heeft strengere toegangseisen nodig. +DEATH IT_MW +# +# De anti-virus machine als hierboven genoemd. +ONE SECURITY +# +# Een machine die maar door 1 gebruiker gebruikt mag worden. +TWO (,hotel,test-domain) +# [...hierna volgen de andere groepen] + + Als er een soort database wordt gebruikt om de + gebruikersaccounts te beheren, dan is het in ieder geval nodig + dat ook het eerste deel van de map met de database + rapportagehulpmiddelen gemaakt kan worden. Dan krijgen nieuwe + gebruikers automatisch toegang tot de machines. + + Nog een laatste waarschuwing: het is niet altijd aan te + raden gebruik te maken van machine-gebaseerde netgroups. Als + er tientallen of zelfs honderden gelijke machines voor + bijvoorbeeld studentenruimtes worden uitgerold, dan is het + verstandiger rol-gebaseerde netgroups te gebruiken in plaats + van machine-gebaseerde netgroups om de grootte van de NIS map + binnen de perken te houden. + + + + Belangrijk om te Onthouden + + In een NIS omgeving werken een aantal dingen wel + anders. + + + + Als er een gebruiker toegevoegd moet worden, dan moet + die alleen toegevoegd worden aan de + master NIS server en mag niet vergeten worden dat + de NIS maps herbouwd moeten worden. Als dit + wordt vergeten, dan kan de nieuwe gebruiker nergens anders + aanmelden dan op de NIS master. Als bijvoorbeeld een + nieuwe gebruiker jsmith toegevoegd + moet worden: + + &prompt.root; pw useradd jsmith +&prompt.root; cd /var/yp +&prompt.root; make test-domain + + Er kan ook adduser jsmith in plaats + van pw useradd jsmith gebruikt + worden. + + + + De beheeraccounts moeten buiten de NIS maps + gehouden worden. Het is niet handig als de + beheeraccounts en wachtwoorden naar machines waarop + gebruikers aanmelden die geen toegang tot die informatie + horen te hebben zouden gaan. + + + + De NIS master en slave moeten veilig blijven + en zo min mogelijk niet beschikbaar zijn. Als + de machine wordt gehackt of als hij wordt uitgeschakeld, + dan kunnen er in theorie nogal wat mensen niet meer + aanmelden. + + Dit is de belangrijkste zwakte van elk gecentraliseerd + beheersysteem. Als de NIS servers niet goed beschermd + worden, dan worden veel gebruikers boos! + + + + + + NIS v1 Compatibiliteit + + ypserv voor &os; biedt wat + ondersteuning voor NIS v1 clients. De NIS implementatie van + &os; gebruikt alleen het NIS v2 protocol, maar andere + implementaties bevatten ondersteuning voor het v1 protocol voor + achterwaartse compatibiliteit met oudere systemen. De + ypbind daemons die bij deze systemen + zitten proberen een binding op te zetten met een NIS v1 server, + hoewel dat niet per se ooit nodig is (en ze gaan misschien nog + wel door met broadcasten nadat ze een antwoord van een v2 + server hebben ontvangen). Het is belangrijk om te melden dat + hoewel ondersteuning voor gewone clientcalls aanwezig is, deze + versie van ypserv geen v1 map + transferverzoeken af kan handelen. Daarom kan + ypserv niet gebruikt worden als + master of slave in combinatie met oudere NIS servers die alleen + het v1 protocol ondersteunen. Gelukkig worden er in deze tijd + niet meer zoveel van deze servers gebruikt. + + + + NIS Servers die ook NIS Clients Zijn + + Het is belangrijk voorzichtig om te gaan met het draaien + van ypserv in een multi-server + domein waar de server machines ook NIS clients zijn. Het is + in het algemeen verstandiger om de servers te dwingen met + zichzelf te binden dan ze toe te staan een bindverzoek te + broadcasten en het risico te lopen dat ze een binding met + elkaar maken. Er kunnen vreemde fouten optreden als een van de + servers plat gaat als er andere servers van die server + afhankelijk zijn. Na verloop van tijd treedt op de clients wel + een timeout op en verbinden ze met een andere server, maar de + daarmee gepaard gaande vertraging kan aanzienlijk zijn en de + foutmodus is nog steeds van toepassing, omdat de servers dan + toch weer opnieuw een verbinding met elkaar kunnen + vinden. + + Het is mogelijk een host aan een specifieke server te + binden door aan ypbind de vlag + mee te geven. Om dit niet iedere + keer handmatig na een herstart te hoeven uitvoeren, kan de + volgende regel worden opgenomen in + /etc/rc.conf van de NIS server: + + nis_client_enable="YES" # start ook het client gedeelte +nis_client_flags="-S NIS domain,server" + + In &man.ypbind.8; staat meer informatie. + + + + Wachtwoordformaten + + + NIS + + wachtwoordformaten + + + Een van de meest voorkomende problemen bij het + implementeren van NIS is de compatibiliteit van het + wachtwoordformaat. Als een NIS server wachtwoorden gebruikt + die met DES gecodeerd zijn, dan kunnen alleen clients die ook + DES gebruiken ondersteund worden. Als er bijvoorbeeld + &solaris; NIS clients in een netwerk zijn, dan moet er vrijwel + zeker gebruik gemaakt worden van met DES gecodeerde + wachtwoorden. + + Van welk formaat clients en servers gebruik maken is te + zien in /etc/login.conf. Als een host + gebruik maakt van met DES gecodeerde wachtwoorden, dan staat er + in de klasse default een regel als de + volgende: + + default:\ + :passwd_format=des:\ + :copyright=/etc/COPYRIGHT:\ + [Overige regels weggelaten] + + Andere mogelijke waarden voor + passwd_format zijn + blf en md5 + (respectievelijk voor Blowfish en MD5 gecodeerde + wachtwoorden). + + Als er wijzigingen gemaakt zijn aan + /etc/login.conf dan moet de + login capability database herbouwd worden door het volgende + commando als root uit te voeren: + + &prompt.root; cap_mkdb /etc/login.conf + + + Het formaat van de wachtwoorden die al in + /etc/master.passwd staan worden niet + bijgewerkt totdat een gebruiker zijn wachtwoord voor de + eerste keer wijzigt nadat de login + capability database is herbouwd. + + + Om te zorgen dat de wachtwoorden in het gekozen formaat + zijn gecodeerd, moet daarna gecontroleerd worden of de waarde + crypt_default in + /etc/auth.conf de voorkeur geeft aan het + gekozen formaat. Om dat te realiseren dient het gekozen + formaat vooraan gezet te worden in de lijst. Als er + bijvoorbeeld gebruik gemaakt wordt van DES gecodeerde + wachtwoorden, dan hoort de regel er als volgt uit te + zien: + + crypt_default = des blf md5 + + Als de bovenstaande stappen op alle &os; gebaseerde NIS + servers en clients zijn uitgevoerd, dan is het zeker dat ze het + allemaal eens zijn over welk wachtwoordformaat er op het + netwerk wordt gebruikt. Als er problemen zijn bij de + authenticatie op een NIS client, dan is dit een prima startpunt + voor het uitzoeken waar de problemen vandaan komen. Nogmaals: + als er een NIS server in een heterogene omgeving wordt + geplaatst, dan is het waarschijnlijk dat er gebruik gemaakt + moet worden van DES op alle systemen, omdat dat de laagst + overeenkomende standaard is. + + + + + + + + Greg + Sutter + Geschreven door + + + + + Automatisch Netwerk Instellen (DHCP) + + + Wat Is DHCP? + + + Dynamic Host Configuration Protocol + + DHCP + + + Internet Software Consortium (ISC) + + DHCP, het Dynamic Host Configuration Protocol, schrijft + voor hoe een systeem verbinding kan maken met een netwerk en + hoe het de benodigde informatie kan krijgen om met dat netwerk + te communiceren. &os; gebruikt de ISC (Internet Software + Consortium) DHCP implementatie, dus alle + implementatie-specifieke informatie die hier wordt gegeven is + bedoeld voor de ISC distributie. + + + + Wat Behandeld Wordt + + In dit onderdeel worden de client- en servercomponenten van + het ISC DHCP systeem beschreven. Het programma voor de client, + dhclient, zit standaard in &os; en de server + is beschrikbaar via de net/isc-dhcp3-server port. Naast + de onderstaande informatie, zijn de hulppagina's van + &man.dhclient.8;, &man.dhcp-options.5; en &man.dhclient.conf.5; + bruikbare bronnen. + + + + Hoe Het Werkt + + UDP + + Als dhclient, de DHCP client, wordt + uitgevoerd op een clientmachine, dan begint die met het + broadcasten van verzoeken om instellingeninformatie. Standaard + worden deze verzoeken op UDP poort 68 gedaan. De server + antwoordt op UDP 67 en geeft de client een IP adres en andere + relevante netwerkinformatie, zoals een netmasker, router en DNS + servers. Al die informatie komt in de vorm van een DHCP + lease en is voor een bepaalde tijd geldig + (die is ingesteld door de beheerder van de DHCP server). Op + die manier kunnen IP adressen voor clients die niet langer met + het netwerk verbonden zijn (stale) automatisch weer ingenomen + worden. + + DHCP clients kunnen veel informatie van de server krijgen. + Er staat een uitputtende lijst in &man.dhcp-options.5;. + + + + &os; Integratie + + &os; integreert de ISC DHCP client + dhclient volledig. Er is ondersteuning voor + de DHCP client in zowel het installatieprogramma als in het + basissysteem, waardoor het niet noodzakelijk is om kennis te + hebben van het maken van netwerkinstellingen voor het netwerk + waar een DHCP server draait. dhclient is + onderdeel van &os; distributies sinds 3.2. + + sysinstall + + DHCP wordt ondersteund door + sysinstall. Bij het instellen van + een netwerkinterface binnen + sysinstall is de eerste vraag: + Wil je proberen deze interface met DHCP in te + stellen? Als het antwoord bevestigend luidt, dan + wordt dhclient uitgevoerd en als dat + succesvol verloopt, dan worden de netwerkinstellingen + automatisch ingevuld. + + Voor het gebruiken van DHCP bij het opstarten van het + systeem zijn twee instellingen nodig: + + + DHCP + + vereisten + + + + + Het apparaat bpf moet in de + kernel gecompileerd zijn. Dit kan door + device bpf (pseudo-device + bpf onder &os; 4.X) aan het bestand met + kernelinstellingen toe te voegen en de kernel te herbouwen. + Meer informatie over het bouwen van een kernel staat in + . + + Het apparaat bpf is al + onderdeel van de GENERIC kernel die + bij &os; zit, dus als er geen sprake is van een aangepaste + kernel, dan hoeft er geen nieuwe gemaakt te worden om DHCP + aan te praat te krijgen. + + + Voor de lezer die bijzonder begaan is met + beveiliging, is het belangrijk aan te geven dat + bpf ook het apparaat is waardoor + pakketsnuffelaars hun werk kunnen doen (hoewel ze nog + steeds als root moeten draaien). + bpf is + noodzakelijk voor DHCP, maar als beveiliging bijzonder + belangrijk is, dan hoort bpf + waarschijnlijk niet in een kernel te zitten omdat de + verwachting dat er in de toekomst ooit DHCP gebruikt gaat + worden. + + + + + In /etc/rc.conf moet het volgende + worden opgenomen: + + ifconfig_fxp0="DHCP" + + + fxp0 dient vervangen te worden + door de juiste aanduiding van de interface die dynamisch + ingesteld moet worden, zoals beschreven staat in . + + + Als er een andere lokatie voor + dhclient wordt gebruikt of als er extra + parameters aan dhclient meegegeven + moeten worden, dan dient ook iets als het volgende + toegevoegd te worden: + + dhcp_program="/sbin/dhclient" +dhcp_flags="" + + + + + DHCP + + server + + + De DHCP server, dhcpd, zit bij + de port net/isc-dhcp3-server in de + portscollectie. Deze port bevat de ISC DHCP server en + documentatie. + + + + Bestanden + + + DHCP + + instellingenbestanden + + + + + /etc/dhclient.conf + + Voor dhclient is een + instellingenbestand /etc/dhclient.conf + nodig. Dat bestand bevat meestal alleen maar commentaar, + omdat de standaardinstellingen redelijk zinvol zijn. Dit + bestand wordt beschreven in &man.dhclient.conf.5;. + + + + /sbin/dhclient + + dhclient is statisch gelinkt en + staat in /sbin. Er staat meer + informatie over dhclient in + &man.dhclient.8;. + + + + /sbin/dhclient-script + + dhclient-script is het + &os;-specifieke DHCP client instellingenscript. Het wordt + beschreven in &man.dhclient-script.8;, maar het is niet + nodig het te wijzigen om goed te werken. + + + + /var/db/dhclient.leases + + De DHCP client houdt in dit bestand een database bij + van geldige leases, die naar een logboekbestand worden + geschreven. In &man.dhclient.leases.5; staat een iets + uitgebreidere beschrijving. + + + + + + Verder Lezen + + Het DHCP protocol staat volledig beschreven in RFC 2131. + Er is nog een bron van informatie ingesteld op . + + + + Een DHCP Server Installeren en Instellen + + + Wat Behandeld Wordt + + In dit onderdeel wordt beschreven hoe een &os; systeem + zo ingesteld kan worden dat het opereert als DHCP server + door gebruik te maken van de ISC (Internet Software + Consortium) implementatie van de DHCP suite. + + Het servergedeelte van de suite is geen + standaardonderdeel van &os; en om deze dienst aan te bieden + dient de port net/isc-dhcp3-server + geïnstalleerd te worden. In + staat meer informatie over de portscollectie. + + + + DHCP Serverinstallatie + + + DHCP + + installatie + + + Om een &os; systeem in te stellen als DHCP server moet + het apparaat &man.bpf.4; in de kernel zijn opgenomen. Om dit + te doen dient device bpf + (pseudo-device bpf onder &os; 4.X) + aan het bestand met kernelinstellingen toegegvoegd te worden + en dient de kernel herbouwd te worden. Meer informatie over + het bouwen van kernels staat in . + + Het apparaat bpf is al onderdeel + van de GENERIC kernel die bij &os;, dus + het is meestal niet nodig om een aangepaste kernel te bouwen + om DHCP aan de praat te krijgen. + + + Het is belangrijk te vermelden dat + bpf ook het apparaat is waardoor + pakketsnuffelaars kunnen werken (hoewel de programma's die + er gebruik van maken wel bijzondere toegang nodig hebben). + bpf is + verplicht voor DHCP, maar als beveiliging van belang is, + dan is het waarschijnlijk niet verstandig om + bpf in een kernel op te nemen + alleen omdat er in de toekomst misschien ooit DHCP gebruikt + gaat worden. + + + Hierna dient het standaardbestand + dhcpd.conf dat door de port net/isc-dhcp3-server is + geïnstalleerd gewijzigd te worden. Standaard is dit + /usr/local/etc/dhcpd.conf.sample en dit + bestand dient gekopieerd te worden naar + /usr/local/etc/dhcpd.conf voordat de + wijzgingen worden gemaakt. + + + + De DHCP Server Instellen + + + DHCP + + dhcpd.conf + + + dhcpd.conf is opgebouwd uit + declaraties over subnetten en hosts en is wellicht het meest + eenvoudig te beschijven met een voorbeeld: + + option domain-name "example.com"; +option domain-name-servers 192.168.4.100; +option subnet-mask 255.255.255.0; + +default-lease-time 3600; +max-lease-time 86400; +ddns-update-style none; + +subnet 192.168.4.0 netmask 255.255.255.0 { + range 192.168.4.129 192.168.4.254; + option routers 192.168.4.1; +} + +host mailhost { + hardware ethernet 02:03:04:05:06:07; + fixed-address mailhost.example.com; +} + + + + Deze optie geeft het domein aan dat door clients als + standaard zoekdomein wordt gebruikt. In + &man.resolv.conf.5; staat meer over wat dat + betekent. + + + + Deze optie beschrijft een door komma's gescheiden + lijst met DNS servers die de client moet + gebruiken. + + + + Het netmasker dat aan de clients wordt + voorgeschreven. + + + + Een client kan om een bepaalde duur vragen die een + lease geldig is. Anders geeft de server aan wanneer de + lease vervalt (in seconden). + + + + Dit is de maximale duur voor een lease die de server + toestaat. Als een client vraagt om een langere lease, + dan wordt die wel verstrekt, maar is de maar geldig + gedurende max-lease-time + seconden. + + + + Deze optie geeft aan of de DHCP server moet proberen + de DNS server bij te werken als een lease is geaccepteerd + of wordt vrijgegeven. In de ISC implementatie is deze + optie verplicht. + + + + Dit geeft aan welke IP adressen in de groep met + adressen zitten die zijn gereserveerd om uitgegeven te + worden aan clients. Alle IP adressen tussen de + aangegeven adressen en die adressen zelf worden aan + clients uitgegeven. + + + + Geeft de default gateway aan die aan de clients + wordt voorgeschreven. + + + + Het hardware MAC adres van een host, zodat de DHCP + server een host kan herkennen als die een verzoek + doet. + + + + Geeft een host aan die altijd hetzelfde IP adres + moet krijgen. Hier kan een hostnaam gebruikt worden, + omdat de DHCP server de hostnaam zelf opzoekt voordat de + lease-informatie terug wordt gegeven. + + + + Als dhcpd.conf is ingesteld, kan de + server met het volgende commando gestart worden: + + &prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh start + + Als er later wijzigingen in de instellingen gemaakt + moeten worden, dan is het belangrijk te onthouden dat het + sturen van een SIGHUP signaal naar + dhcpd niet + resulteert in het opnieuw laden van de instellingen, zoals + voor de meeste daemons geldt. Voor deze daemon dient een + signaal SIGTERM gestuurd te worden om het + proces te stoppen. Daarna dient de daemon met het hiervoor + beschreven commando weer gestart worden. + + + + Bestanden + + + DHCP + + instellingenbestanden + + + + + /usr/local/sbin/dhcpd + + dhcpd is statisch gelinkt + en staat in /usr/local/sbin. In de + hulppagina voor &man.dhcpd.8; die meekomt met de port + staat meer informatie over + dhcpd. + + + + /usr/local/etc/dhcpd.conf + + dhcpd heeft een + instellingenbestand, + /usr/local/etc/dhcpd.conf, nodig + voordat de daemon diensten aan clients kan leveren. Het + bestand moet alle informatie bevatten die aan clients + gegeven moet worden en de informatie die nodig is voor + het draaien van de dienst. Dit instellingenbestand staat + beschreven in de hulppagina voor &man.dhcpd.conf.5; die + meekomt met de port. + + + + /var/db/dhcpd.leases + + De DHCP server houdt in dit bestand een database bij + met leases die zijn uitgegeven en die naar een logboek + worden geschreven. In de hulppagina &man.dhcpd.leases.5; + die bij de port zit wordt dit uitvoeriger + beschreven. + + + + /usr/local/sbin/dhcrelay + + dhcrelay wordt in + uitgebreidere omgevingen gebruikt waar de ene DHCP server + een verzoek van een client naar een andere DHCP server op + een ander netwerk doorstuurt. Als deze functionaliteit + nodig is, kan die beschikbaar komen door de port + net/isc-dhcp3-relay + te installeren. De hulppagina voor &man.dhcrelay.8; die + bij de port zit bevat meer details. + + + + + + + + + + + Chern + Lee + Geschreven door + + + + + Domeinnaamsysteem (DNS) + + + Overzicht + + BIND + + &os; gebruikt standaard een versie van BIND (Berkeley + Internet Name Domain), wat de meest gebruikte implementatie van + het DNS protocol is. DNS is het protocol waarmee namen aan + IP adressen gebonden worden en vice versa. Zo wordt + bijvoorbeeld op een zoekopdracht voor www.FreeBSD.org geantwoord met het IP + adres van de webserver van het &os; Project en op een + zoekopdracht voor ftp.FreeBSD.org + wordt geantwoord met het bijbehorende IP adres van de FTP + machine. Het tegenovergestelde kan ook gebeuren. Een + zoekopdracht voor een IP adres kan de bijbehorende hostnaam + opleveren. Het is niet nodig om een nameserver te draaien om + op een systeem zoekopdrachten met DNS te maken. + + DNS + + DNS wordt op internet onderhouden door een complex systeem + van autoritaire root nameservers en andere nameservers met een + kleinere scope die domeininformatie hosten en cachen. + + In dit document wordt BIND 8.x beschreven, de stabiele + versie die in &os; wordt gebruikt. BIND 9.x kan op &os; + geïnstaleerd worden met de net/bind9 port. + + RFC1034 and RFC1035 schrijven het DNS protocol voor. + + Op dit moment wordt BIND beheerd door het Internet Software + Consortium . + + + + Terminologie + + Voor het begrip van dit document dienen aan aantal termen + begrepen te worden. + + resolver + + reverse DNS + + root zone + + + + + + + + + + Term + + Definitie + + + + + + Voorwaartse DNS + + Het koppelen van hostnamen aan IP + adressen; + + + + Herkomst (origin) + + Verwijst naar het domein dat door een bepaald + zonebestand wordt gedekt; + + + + named, BIND, + nameserver + + Vaak gebruikte namen voor het BIND nameserver + pakket in &os;; + + + + Resolver + + Een systeemproces waarmee een machine + zoekopdrachten om zoneinformatie aan een nameserver + stelt; + + + + Reverse DNS + + Het tegenovergestelde van voorwaartse DNS. Het + koppelen van IP adressen aan hostnamen; + + + + Root zone + + Het begin van de internet zonehiërarchie. + Alle zones vallen onder de root zone, net zoals alle + bestanden in een bestandssysteem onder de rootmap + vallen; + + + + Zone + + Een individueel domein, subdomein of een deel van + de DNS die door dezelfde autoriteit wordt + beheerd. + + + + + + + zones + + voorbeelden + + + Voorbeelden van zones: + + + + . is de root zone; + + + + org. is een zone onder de root + zone; + + + + example.org. is een + zone onder het zone org.; + + + + foo.example.org. is + een subdomein onder de zone example.org.; + + + + 1.2.3.in-addr.arpa is een zone waarin + alle IP adressen die onder de IP ruimte 3.2.1.* vallen. + + + + + Zoals te zien is staat het meer specifieke deel van een + hostnaam aan de linkerkant. Zo is example.org. bijvoorbeeld meer + specifiek dan org. en is org. + meer specifiek van de root zone. De indeling van ieder deel + van een hostnaam lijkt veel op een bestandssysteem: de map + /dev valt onder de root, enzovoort. + + + + Redenen om een Nameserver te Draaien + + Nameservers bestaan in het algemeen in twee smaken: een + authoritative namserver en een caching namserver. + + Er is een authoritative namserver nodig als: + + + + het nodig is DNS informatie aan te bieden aan de wereld + om met autoriteit (authoritatively) op verzoeken te + antwoorden; + + + + een domein, zoals example.org, is geregistreerd + en er IP adressen aan hostnamen die daaronder liggen + toegewezen moeten worden; + + + + een IP adresblok reverse DNS entries nodig heeft (IP + naar hostnaam); + + + + een backup namserver, die slave wordt genoemd, moet + antwoorden op verzoeken als de primaire down of niet + toegankelijk is. + + + + Er is een caching namserver nodig als: + + + + een lokale DNS server kan cachen en wellicht sneller + kan antwoorden dan een namserver die verder weg + staat; + + + + het wenselijk is om het totale netwerkverkeer te + reduceren. Er is ooit vastgesteld dat DNS verkeer 5% of + meer van het totale verkeer op internet uitmaakt. + + + + Als er een verzoek wordt gedaan voor www.FreeBSD.org, dan doet de resolver + meestal een verzoek bij de nameserver van de ISP die de uplink + levert en ontvangt daarop een antwoord. Met een lokale, + caching namserver hoeft het verzoek maar één + keer door de caching nameserver naar de buitenwereld gedaan te + worden. Voor ieder volgend verzoek hoeft niet buiten het + lokale netwerk gekeken te worden omdat het al lokaal in de + cache staat. + + + + Hoe Het Werkt + + Om begrijpelijke redenen heet de BIND daemon in &os; + named. + + + + + + Bestand + + Beschrijving + + + + + + named + + de BIND daemon + + + + ndc + + name daemon beheerprogramma + + + + /etc/namedb + + map waar BIND zoneinformatie staat + + + + /etc/namedb/named.conf + + daemon instellingenbestand + + + + + + Zonebestanden staat meestal binnen de map + /etc/namedb en bevatten de DNS zone + informatie die de namserver aanbiedt. + + + + BIND Starten + + + BIND + + starten + + + Omdat BIND standaard wordt geïnstalleerd, is het + instellen relatief eenvoudig. + + Om de named daemon bij het + booten te laten starten kan de volgende regel in + /etc/rc.conf gezet worden: + + named_enable="YES" + + Om na het instellen de daemon handmatig te starten: + + &prompt.root; ndc start + + + + Instellingenbestanden + + + BIND + + instellingenbestanden/secondary> + + + + <command>make-localhost</command> Gebruiken + + Het volgende commando dient uitgevoerd te worden om het + bestand voor de lokale reverse DNS zone in + /etc/namedb/localhost.rev op de juiste + wijze aan te maken: + + &prompt.root; cd /etc/namedb +&prompt.root; sh make-localhost + + + + <filename>/etc/namedb/named.conf</filename> + + // $FreeBSD$ +// +// In de hulppagina named(8) zijn meer details te vinden. Voor het +// opzetten van een primaire server is begrip van de werking van DNS +// noodzakelijk. Zelfs eenvoudige fouten kunnen de werking verstoren +// of veel onnodig verkeer veroorzaken. + +options { + directory "/etc/namedb"; + +// Als toevoeging op de "forwarders" clausule kan de namserver ook +// worden aangegeven dat hij nooit zelf verzoeken mag maken, maar dat +// altijd aan zijn forwarders moet vragen door de volgende regel te +// activeren: +// +// forward only; + +// Als er een DNS server beschikbaar is bij een upstream provider dan +// kan het IP adres op de regel hieronder ingegeven worden en kan die +// geactiveerd worden. Hierdoor wordt voordeel gehaald uit de cache, +// waardoor het DNS verkeer op internet vermindert. +/* + forwarders { + 127.0.0.1; + }; +*/ + + Zoals al in het commentaar staat kan het gebruik van een + cache in de uplink met forwarders + ingeschakeld worden. In normale omstandigheden maakt een + namserver recursief verzoeken tot er een antwoord komt waar + de server naar op zoek is. Door de bovenstaande optie in te + schakelen wordt eerst bij de namserver die is opgegeven + gevraagd, waardoor er gebruik gemaakt kan worden van de + cache van die server. Als die namserver een drukke, snelle + namserver is, kan het erg de moeite waard zijn van deze + optie gebruik te maken. + + + 127.0.0.1 werkt hier + niet. Dat IP adres dient gewijzigd te + worden naar een werkende namserver in de uplink. + + + /* + * Als er een firewall tussen een host en namservers staat waarmee + * gesproken moet worden, dan dient het commentaar voor het + * query-source hieronder verwijderd te worden. In eerdere versies van + * BIND werden verzoeken altijd via poort 53 gedaan, maar vanaf + * BIND 8.1 wordt een poort zonder privileges gebruikt. + */ +// query-source address * port 53; + +/* + * Als de namserver in een sandbox draait, kan het wenselijk zijn om + * een andere lokatie voor het dumpbestand in te geven. + */ +// dump-file "s/named_dump.db"; +}; + +// Opmerking: het volgende wordt in een latere release ondersteund. +/* +host { any; } { + topology { + 127.0.0.0/8; + }; +}; +*/ + +// Het opzetten van een secondary is veel eenvoudiger en dat wordt +// hieronder ruweg beschreven. +// +// Als er een lokale nameserver wordt gebruikt, dan dient niet +// vergeten te worden om 127.0.0.1 in /etc/resolv.conf te zetten zodat +// die eerst bevraagd wordt. Het is ook belangrijk wijzigingen aan te +// brengen in /etc/rc.conf om named te starten. + +zone "." { + type hint; + file "named.root"; +}; + +zone "0.0.127.IN-ADDR.ARPA" { + type master; + file "localhost.rev"; +}; + +zone +"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" { + type master; + file "localhost.rev"; +}; + +// NB: De IP adressen hieronder zijn bedoeld als voorbeeld en dienen +// niet gebruikt te worden! +// +// Voorbeeld secondary instellingen. Het kan handig zijn om tenminste +// secondary te worden voor de zone waar de host onderdeel van +// uitmaakt. Bij netwerkbeheerders kan nagevraagd worden welke server +// de primaire server is. +// +// De reverse lookup zone (IN-ADDR.ARPA) mag nooit vergeten worden! Dat +// zijn de eerste bytes van het respectievelijke IP adres in omgekeerde +// volgorde met daarachter ".IN-ADDR.ARPA". +// +// Het is echter van groot belang om de werking van DNS en BIND te +// begrijpen voordat er een primaire zone wordt opgeset. Er zijn +// nogal wat onverwachte valkuiten. Het opzetten van een secondary is +// veel eenvoudiger. +// +// NB: Het wordt afgeraden de onderstaande voorbeelden actief te maken. +// Er dienen bestaande namen en adressen gebruikt te worden. +// +// BELANGRIJK!!! &os; draait BIND in een zandbak (zie named_flags in +// rc.conf). In de map waarin de secundaire zones staat moet +// geschreven kunnen worden door BIND. Dat kan als volgt: +// +// mkdir /etc/namedb/s +// chown bind:bind /etc/namedb/s +// chmod 750 /etc/namedb/s + + Meer informatie over het draaien van BIND in een zandbak + staat in named + in een Zandbak Draaien. + + + /* +zone "example.com" { + type slave; + file "s/example.com.bak"; + masters { + 192.168.1.1; + }; +}; + +zone "0.168.192.in-addr.arpa" { + type slave; + file "s/0.168.192.in-addr.arpa.bak"; + masters { + 192.168.1.1; + }; +}; +*/ + + De bovenstaande voorbeelden komen uit + named.conf en zijn voorbeelden van + instellingen voor een slave, voor een forward en reverse + zone. + + Voor iedere nieuwe zone die wordt aangeboden dient een + nieuwe instelling voor de zone aan + named.conf toegevoegd te worden. + + De meest eenvoudige instelling voor de zone example.org kan er als volgt + uitzien: + + zone "example.org" { + type master; + file "example.org"; +}; + + De zone is een master, dat geeft de instelling + aan, waarvan de zoneinformatie in + /etc/namedb/example.org staat, wat de + instelling aangeeft. + + zone "example.org" { + type slave; + file "example.org"; +}; + + In het geval van de slave wordt de zoneinformatie + voor een zone getransporteerd van de master namserver en + opgeslagen in het ingestelde bestand. Als een master server + het niet meer doet of niet bereikbaar is, dan heeft de slave + server de getransporteerde zoneinformatie nog en kan die + aanbieden. + + + + Zonebestanden + + Een voorbeeldbestand voor een master zone voor example.org (als bestand + /etc/namedb/example.org): + + $TTL 3600 + +example.org. IN SOA ns1.example.org. admin.example.org. ( + 5 ; Serial + 10800 ; Refresh + 3600 ; Retry + 604800 ; Expire + 86400 ) ; Minimum TTL + +; DNS Servers +@ IN NS ns1.example.org. +@ IN NS ns2.example.org. + +; Machinenamen +localhost IN A 127.0.0.1 +ns1 IN A 3.2.1.2 +ns2 IN A 3.2.1.3 +mail IN A 3.2.1.10 +@ IN A 3.2.1.30 + +; Aliases +www IN CNAME @ + +; MX Record +@ IN MX 10 mail.example.org. + + Iedere hostnaam die eindigt op een . is + een exacte hostnaam, terwijl alles zonder een + . op het einde refereert aan de oorsprong. + Zo wordt www bijvoorbeeld vertaald naar + www.origin. + In de zone uit het voorbeeld hierboven is de oorsprong + example.org., dus www + vertaalt naar www.example.org. + + De regels in een zonebestand volgen de volgende + opmaak: + + recordnaam IN recordtype waarde + + + DNS + + records + + + De meest gebruikte DNS records: + + + + SOA + + + begin van zoneautoriteit (start of + authority) + + + + + NS + + + een bevoegde (authoritative) name + server + + + + + A + + + een hostadres + + + + + CNAME + + + de canonieke (canonical) naam voor een + alias + + + + + MX + + + mail exchanger + + + + + PTR + + + een domeinnaam pointer (gebruikt in + reverse DNS) + + + + + +example.org. IN SOA ns1.example.org. admin.example.org. ( + 5 ; Serial + 10800 ; Refresh after 3 hours + 3600 ; Retry after 1 hour + 604800 ; Expire after 1 week + 86400 ) ; Minimum TTL of 1 day + + + + example.org. + + + de domeinnaam, ook de oorsprong voor dit + zonebestand. + + + + ns1.example.org. + + + de primaire/bevoegde namserver voor deze + zone. + + + + + admin.example.org. + + + de persoon die verantwoordelijk is voor + deze zone, e-mailadres met @ vervangen. + admin@example.org wordt + admin.example.org. + + + + + 5 + + + het serienummer van het bestand. Dit moet iedere + keer als het zonebestand wordt aangepast opgehoogd + worden. Tegenwoordig geven veel beheerders de voorkeur + aan de opmaak yyyymmddrr voor het + serienummer. 2001041002 betekent + dan dat het voor het laatst is aangepast op + 10–04–2001. De laatste + 02 betekent dat het zonebestand een + aantal keer is aangepast op die dag. Het serienummer + is belangrijk omdat het slave nameservers aangeeft dat + een zone is bijgewerkt. + + + + + +@ IN NS ns1.example.org. + + Hierboven staat een NS regel. Voor iedere nameserver + die bevoegde antwoorden moet geven voor de zone hoort er + zo'n regel te zijn. De @ betekent + hetzelfde als example.org. + Een @ vertaalt naar de oorsprong. + + +localhost IN A 127.0.0.1 +ns1 IN A 3.2.1.2 +ns2 IN A 3.2.1.3 +mail IN A 3.2.1.10 +@ IN A 3.2.1.30 + + Een A record geeft een machinenaam aan. Hierboven is te + zien dat ns1.example.org zou + resolven naar 3.2.1.2. + Nogmaals, het symbool voor oorsprong, @, + wordt hier gebruikt en dus zou example.org resolven naar + 3.2.1.30. + + +www IN CNAME @ + + Een canoniek name record wordt meestal gebruikt voor het + geven van aliasen aan een machine. In het voorbeeld is + www een alias naar de machine die gelijk is + aan de oorsprong, example.org (3.2.1.30). CNAME's kunnen gebruikt + worden om een alias aan hostnamen te geven of om round robin + één hostnaam naar meerdere machines te laten + wijzen. + + MX record + + +@ IN MX 10 mail.example.org. + + MX records geven aan welke mailservers verantwoordelijk + zijn voor het afhandelen van inkomende mail voor de zone. + mail.example.org is de hostnaam + voor de mailserver en 10 is de prioriteit voor die + mailserver. + + Het is mogelijk meerdere mailservers in te stellen met + prioriteiten 3, 2 en 1. Een mailserver die probeert mail + af te leveren voor example.org probeert dat eerst + bij de MX met de hoogste prioriteit, daarna de op een na + hoogste, enzovoort, totdat de mail afgeleverd kan + worden. + + Voor in-addr.arpa zonebestanden (reverse DNS) wordt + dezelfde opmaak gebruikt, maar dan met PTR regels in plaats + van A of CNAME. + + $TTL 3600 + +1.2.3.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( + 5 ; Serial + 10800 ; Refresh + 3600 ; Retry + 604800 ; Expire + 3600 ) ; Minimum + +@ IN NS ns1.example.org. +@ IN NS ns2.example.org. + +2 IN PTR ns1.example.org. +3 IN PTR ns2.example.org. +10 IN PTR mail.example.org. +30 IN PTR example.org. + + Dit bestand geeft de juiste IP adressen voor hostnamen + in het voorbeelddomein hierboven. + + + + + Caching Nameserver + + + BIND + + caching namserver + + + Een caching namserver is een namserver die voor geen + enkele zone bevoegd is en alleen verzoeken doet en die onthoudt + voor later gebruik. Het opzetten ervan is eenvoudigweg het + opzetten van een namserver zonder zones toe te voegen. + + + + <application>named</application> in een Zandbak + Draaien + + + BIND + + in een zandbak draaien + + + chroot + + Als extra beveiligingsmaatregel is het wellicht wenselijk + om &man.named.8; als een gebruiker zonder privileges te draaien + en de instellingen zo te maken dat die &man.chroot.8; in een + zandbakmap draait. Hierdoor is alles buiten de zandbak niet + toegankelijk voor de named daemon. + Hierdoor wordt de schade die aangericht kan worden beperkt in + het geval dat named wordt gehackt. + Standaard kent &os; een gebruiker en groep + bind die voor dit doel bestemd + zijn. + + + Er wordt ook wel gesteld dat het verstandiger is om + named met + chroot te draaien, maar in plaats daarvan + in een &man.jail.8; te draaien. Dit wordt hier niet + beschreven. + + + Omdat named niet in staat is + ook maar iets buiten de zankbak te raadplegen (zoals gedeelde + bibliotheken, log sockets, enzovoort), moeten er een aantal + stappen gevolgd worden om named goed + te laten draaien. In de onderstaande controlelijst wordt + aangenomen dat het pad naar de zandbak + /etc/namedb is en dat er geen wijzigingen + gemaakt zijn aan de inhoud van die map. De volgende stappen + dienen als root uitgevoerd te + worden: + + + + Maak alle mappen die named + verwacht: + + &prompt.root; cd /etc/namedb +&prompt.root; mkdir -p bin dev etc var/tmp var/run master slave +&prompt.root; chown bind:bind slave var/* + + + + named hoeft alleen in + deze mappen te schrijven, dus krijgt het alleen daar + rechten. + + + + + + Herschik en maak de basiszone en stel het bestand met + instellingen in: + + &prompt.root; cp /etc/localtime etc +&prompt.root; mv named.conf etc && ln -sf etc/named.conf +&prompt.root; mv named.root master + +&prompt.root; sh make-localhost && mv localhost.rev localhost-v6.rev master +&prompt.root; cat > master/named.localhost +$ORIGIN localhost. +$TTL 6h +@ IN SOA localhost. postmaster.localhost. ( + 1 ; serial + 3600 ; refresh + 1800 ; retry + 604800 ; expiration + 3600 ) ; minimum + IN NS localhost. + IN A 127.0.0.1 +^D + + + + Hierdoor kan named de + correcte tijd melden aan &man.syslogd.8;. + + + + + + syslog + + + logs + + DNS + + + Als er een oudere versie dan &os; 4.9-RELEASE draait, + dient een statisch gelinkte kopie van + named-xfer gebouwd te worden en + naar de zankbak gekopieerd te worden: + + &prompt.root; cd /usr/src/lib/libisc +&prompt.root; make cleandir && make cleandir && make depend && make all +&prompt.root; cd /usr/src/lib/libbind +&prompt.root; make cleandir && make cleandir && make depend && make all +&prompt.root; cd /usr/src/libexec/named-xfer +&prompt.root; make cleandir && make cleandir && make depend && make NOSHARED=yes all +&prompt.root; cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer + + Nadat de statisch gelinkte + named-xfer is geïnstalleerd, is het + nodig wat op te ruimen om te voorkomen dat er kopieen van + bibliotheken of programma's in de boomstructuur met + broncode achterblijven: + + &prompt.root; cd /usr/src/lib/libisc +&prompt.root; make cleandir +&prompt.root; cd /usr/src/lib/libbind +&prompt.root; make cleandir +&prompt.root; cd /usr/src/libexec/named-xfer +&prompt.root; make cleandir + + + + Deze stap gaat wel eens verkeerd. Als dit gebeurt, + kan het volgende commando uitgevoerd worden: + + &prompt.root; cd /usr/src && make cleandir && make cleandir + + Daarnaast kan de /usr/obj + structuur verwijderd worden: + + &prompt.root; rm -fr /usr/obj && mkdir /usr/obj + + Hiermee wordt aanwezige rommel uit de + broncodestructuur verwijderd en kunnen de hierboven + beschreven stappen opnieuw uitgevoerd worden. + + + + Als &os; version 4.9-RELEASE of later wordt gebruikt, + dan is named-xfer in + /usr/libexec standaard statisch + gelinkt en kan er simpelweg met &man.cp.1; een kopie naar + de zandbak gemaakt worden. + + + + Maak een dev/null die zichtbaar is + voor named en waar + named kan schrijven: + + &prompt.root; cd /etc/namedb/dev && mknod null c 2 2 +&prompt.root; chmod 666 null + + + + Symlink /var/run/ndc naar + /etc/namedb/var/run/ndc: + + &prompt.root; ln -sf /etc/namedb/var/run/ndc /var/run/ndc + + + Hiermee wordt voorkomen dat er iedere keer als + &man.ndc.8; wordt uitgevoerd de optie + meegegeven moet worden. Omdat de inhoud van + /var/run bij het booten wordt + verwijderd, kan het wenselijk zijn dit commando aan de + &man.crontab.5; van root toe te + voegen met de optie . + + + + + syslog + + + logboeken + + named + + + Stel &man.syslogd.8; in om een extra + log socket te maken waar + named heen kan schrijven. Dit + kan door -l /etc/namedb/dev/log toe te + voegen aan de syslogd_flags variable in + /etc/rc.conf. + + + + chroot + + Maak de instelling om named + te starten en zich met chroot in een + zandbak te plaatsen met de volgende aanpassing in + /etc/rc.conf: + + named_enable="YES" +named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf" + + + In het instellingenbestand + /etc/named.conf staan + volledige paden relatief aan de + zandbak. Het bestand in de regel hierboven + is dus feitelijk + /etc/namedb/etc/named.conf. + + + + + Nu dient /etc/namedb/etc/named.conf + gewijzigd te worden, zodat named + weet welke zones geladen moeten worden en waar ze staan. Nu + volgt een van commentaar voorzien voorbeeld. Alle regels + zonder commentaar wijken niet af van de opzet voor een DNS + server die niet in een zandbak draait: + + options { + directory "/"; + named-xfer "/bin/named-xfer"; + version ""; // Laat versie BIND niet zien + query-source address * port 53; +}; +// ndc control socket +controls { + unix "/var/run/ndc" perm 0600 owner 0 group 0; +}; +// Zones follow: +zone "localhost" IN { + type master; + file "master/named.localhost"; + allow-transfer { localhost; }; + notify no; +}; +zone "0.0.127.in-addr.arpa" IN { + type master; + file "master/localhost.rev"; + allow-transfer { localhost; }; + notify no; +}; +zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" { + type master; + file "master/localhost-v6.rev"; + allow-transfer { localhost; }; + notify no; +}; +zone "." IN { + type hint; + file "master/named.root"; +}; +zone "private.example.net" in { + type master; + file "master/private.example.net.db"; + allow-transfer { 192.168.10.0/24; }; +}; +zone "10.168.192.in-addr.arpa" in { + type slave; + masters { 192.168.10.2; }; + file "slave/192.168.10.db"; +}; + + + + De opdracht directory heeft als + waarde / omdat alle bestanden die + named nodig heeft binnen die + map staan. Dit staat dus gelijk aan + /etc/namedb voor een + normale gebruiker. + + + + Geeft het volledige pad naar het uitvoerbare bestand + named-xfer (vanuit de optiek van + named). Dit is nodig omdat + named is gecompileerd om + standaard te zoeken naar named-xfer in + /usr/libexec. + + + + Geeft de bestandsnaam + (relatief aan de instelling directory + hierboven) waar named het + zonebestand voor deze zone kan vinden. + + + + Geeft de bestandsnaam + (relatief aan de instelling directory + hierboven) waar named een kopie + van het zonebestand moet schrijven nadat die succesvol van + de master server is gekopieerd. Daarom moest de eigenaar + van de map slave naar + bind gewijzigd worden in een eerdere + stap. + + + + Na het doorlopen van de hierboven beschreven stappen kan + de server herstart worden of kunnen &man.syslogd.8; herstart en + &man.named.8; gestart worden, mits de nieuwe opties voor + syslogd_flags en + named_flags zijn ingesteld. Dan draait + named in een zandbak! + + + + Beveiliging + + Hoewel BIND de meest gebruikte implementatie van DNS is, + is er altijd nog het beveiligingsvraagstuk. Soms worden er + mogelijke en te misbruiken beveiligingsgaten gevonden. + + Het is verstandig om bij te blijven met CERT + beveiligingswaarschuwingen en een abonnement te nemen op de + &a.security-notifications; om bij te blijven met de + beveiligingsproblemen wat betreft internet en &os;. + + + Als er problemen ontstaan, kan het bijwerken van broncode + en het opnieuw bouwen van named + geen kwaad doen. + + + + + Verder Lezen + + BIND/named hulppagina's: + &man.ndc.8;, &man.named.8;, &man.named.conf.5; + + + + Officiële + ISC BIND pagina + + + + + BIND FAQ + + + + O'Reilly + DNS en BIND 4e Editie + + + + RFC1034 + - Domeinnamen - Concepten en Faciliteiten + + + + RFC1035 + - Domeinnamen - Implementatie en + Specificatie + + + + + + + + + + Tom + Rhodes + Geschreven door + + + + + <acronym>BIND</acronym>9 en &os; + + + + + bind9 + + instellen + + + Het uitbrengen van &os; 5.3 was het moment van + introductie van de BIND9 + DNS server software in de distributie. + Dit betekende nieuwe beveiligingsmogelijkheden, een nieuwe + indeling van het bestandssysteem en automatische instelling van + &man.chroot.8;. Deze paragraaf bestaat uit twee delen. In het + eerste deel worden de nieuwe mogelijkheden en hun instelling + beschreven en het tweede gedeelte gaat over hulp bij het upgraden + naar &os; 5.3. Vanaf dit moment wordt er simpelweg verwezen + naar &man.named.8; in plaats van naar BIND. + Dit onderdeel slaat het beschrijven van de terminologie over, + omdat die eerder is besproken. De theorie wordt ook niet + beschreven. Het is aan te raden om die eerdere onderdelen te + lezen voor dit onderdeel. + + De bestanden met instellingen named staan + op dit moment in /var/named/etc/namedb/ en moeten + voor gebruik aangepast worden. Daar worden de meeste + instellingen gemaakt. + + + Een Master Zone Instellen + + Om een master zone in te stellen kan in /var/named/etc/namedb/ het volgende + uitgevoerd worden: + + &prompt.root; sh make-localhost + + Als alles goed is gegaan hoort er een nieuw bestand in de + master map te staan. De + bestandsnamen horen localhost.rev voor de + lokale domeinnaam te zijn en + localhost-v6.rev voor + IPv6 instellingen. Instellingen voor + standaardgebruik staan al in het instellingenbestand + named.conf file. + + + + Een Slave Zone Instellen + + Instellingen voor extra domeinen of subdomeinen kunnen + worden ingesteld als slave zones. In de meeste gevallen kan + master/localhost.rev gewoon naar de + slave map gekopieerd + worden en aangepast worden. Als dat is gedaan, moeten de + bestanden op de juiste wijze toegevoegd worden aan + named.conf, zoals in het volgende + voorbeeld voor example.com: + + zone "example.com" { + type slave; + file "slave/example.com"; + masters { + 10.0.0.1; + }; +}; + +zone "0.168.192.in-addr.arpa" { + type slave; + file "slave/0.168.192.in-addr.arpa"; + masters { + 10.0.0.1; + }; +}; + + In dit voorbeeld is het master IP adres + de primaire domain server vanwaar de zones gehaald worden. Die + hoeft niet per se zelf een DNS server te + zijn. + + + + Opstarten Instellen + + Om de named daemon met het systeem te + laten starten, hoort de volgende optie in + rc.conf te staan: + + named_enable="YES" + + Hoewel er nog andere mogelijkheden bestaan, is dit het + absolute minimum. In &man.rc.conf.5; staan nog meer + mogelijkheden beschreven. Als er niets in + rc.conf staat, kan + named gestart worden vanaf de commandoregel + met: + + &prompt.root; /etc/rc.d/named start + + + + <acronym>BIND</acronym>9 Beveiliging + + Hoewel &os; named automatisch in een + &man.chroot.8; omgeving zet, zijn er nog een aantal andere + beveiligingsmogelijkheden die kunnen helpen om mogelijke + aanvallen op de DNS dienst af te + slaan. + + + Toegangscontrolelijsten Opvragen + + Een toegangscontrolelijst (acl) voor vraagstellingen kan + gebruikt worden om vraagstellingen voor zones te beperken. + De instelling gaat door een netwerk te definiëren binnen + het token acl en dan een lijst met + IP adressen aan te geven in de + instellingen voor de zone. Om domeinen toe te staan om de + voorbeeldhost te gebruiken, kan iets als het volgende + gebruikt worden: + + acl "example.com" { + 192.168.0.0/24; +}; + +zone "example.com" { + type slave; + file "slave/example.com"; + masters { + 10.0.0.1; + }; + allow-query { example.com; }; +}; + +zone "0.168.192.in-addr.arpa" { + type slave; + file "slave/0.168.192.in-addr.arpa"; + masters { + 10.0.0.1; + }; + allow-query { example.com; }; +}; + + + + Opvragen Versie Beperken + + Het opvragen van de versie van de DNS + server kan een ingang zijn voor een aanvaller, die deze + informatie kan gebruiken om te zoeken naar bekende exploits + of bugs om in te breken op de host. Er kan een vervalste + versiestring gezet worden in de sectie + options van + named.conf: + + options { + directory "/etc/namedb"; + pid-file "/var/run/named/pid"; + dump-file "/var/dump/named_dump.db"; + statistics-file "/var/stats/named.stats"; + version "None of your business"; + + + + + + + + + + Murray + Stokely + Geschreven door + + + + + Apache HTTP Server + + + web server + + setting up + + + Apache + + + Overzicht + + &os; wordt gebruikt om een paar van de drukste websites ter + wereld te draaien. De meeste webservers op internet maken + gebruik van de Apache HTTP Server. + Apache softwarepackages staan op de + &os; installatiemedia. Als Apache + niet bij de oorsponkelijke installatie van &os; is + meegeïnstalleerd, dan kan dat vanuit de www/apache13 of www/apache2 port. + + Als Apache succesvol is + geïnstalleerd, moeten er instelingen gemaakt + worden. + + + In dit onderdeel wordt versie 1.3.X van de + Apache HTTP Server behandeld omdat + die het meest gebruikt wordt op &os;. + Apache 2.X biedt veel nieuwe + mogelijkheden, maar wordt hier niet beschreven. Meer + informatie over Apache 2.X is + te vinden op . + + + + + Instellen + + + Apache + + configuration file + + + Het belangrijkste bestand met instellingen voor de + Apache HTTP Server op &os; is + /usr/local/etc/apache/httpd.conf. Dit + bestand is een typisch &unix; tekstgebaseerd + instellingenbestand waarin regels met commentaar beginnen met + het karakter #. Het uitputtend beschrijven + van alle mogelijke instellingen valt buiten het bereik van dit + boek, dus worden alleen de meest gebruikte directieven + beschreven. + + + + ServerRoot "/usr/local" + + + Hierin wordt de standaard mappenhiërarchie voor + de Apache installatie + aangegeven. Binaire bestanden staan in de submappen + bin en sbin van de serverroot en + bestanden met instellingen staan in etc/apache. + + + + + ServerAdmin beheerder@beheer.adres + + + Het adres waaraan problemen met de server gemaild + kunnen worden. Dit adres verschijnt op een aantal door + de server gegenereerde pagina's, zoals documenten met + foutmeldingen. + + + + + ServerName www.example.com + + + Met ServerName kan een hostnaam + ingesteld worden die wordt teruggezonden aan de clients + als de naam van de server anders is dan die is ingesteld + (gebruik bijvoorbeeld www in plaats van + de echte hostnaam). + + + + + DocumentRoot "/usr/local/www/data" + + + DocumentRoot: de map waaruit de + documenten worden geserveerd. Standaard worden alle + verzoeken uit deze map gehaald, maar er kunnen + symbolische links en aliasen gebruikt worden om naar + andere locaties te wijzen. + + + + + Het is altijd een goed idee om back-ups te maken van het + instellingenbestand voor Apache + vóór het maken van wijzigingen. Als de juiste + instellingen gemaakt zijn, kan + Apache gestart worden. + + + + + + + + + <application>Apache</application> Draaien + + + Apache + + starten of stoppen + + + Apache draait niet vanuit de + inetd super server zoals veel andere + netwerkdiensten. Hij is ingesteld om zelfstandig te draaien + vanwege beter prestaties voor het afhandelen van inkomende + HTTP verzoeken van client webbrowsers. Er wordt een + shellscriptwrapper bijgeleverd om het starten, stoppen en + herstarten zo eenvoudig mogelijk te maken. Het volgende + commando start Apache voor de eerste + keer: + + &prompt.root; /usr/local/sbin/apachectl start + + De server kan op iedere moment gestopt worden met: + + &prompt.root; /usr/local/sbin/apachectl stop + + Na het maken van wijzigingen aan het instellingenbestand + moet de dienst herstart worden: + + &prompt.root; /usr/local/sbin/apachectl restart + + Om Apache te herstarten zonder + bestaande connecties te verbreken: + + &prompt.root; /usr/local/sbin/apachectl graceful + + In &man.apachectl.8; staat meer informatie. + + Om Apache met het systeem mee te + starten kan de volgende regel aan + /etc/rc.conf worden toegevoegd: + + apache_enable="YES" + + Als het nodig is additionele commandoregelopties op te + geven voor de Apache + httpd bij het opstarten, dan kunnen die in + de volgende regel in rc.conf meegegeven + worden: + + apache_flags="" + + Nu de webserver draait, is die te benaderen door een + webbrowser te wijzen naar http://localhost/. + De standaard webpagina is + /usr/local/www/data/index.html. + + + + Virtuele Hosting + + Apache ondersteunt twee + verschillende manieren van Virtuele Hosting. De eerste + methode is Naam-gebaseerde Virtuele Hosting. Naam-gebaseerde + Virtuele Hosting gebruikt de HTTP/1.1 headers van de clients + om de hostnaam uit te zoeken. Hierdoor kunnen meerdere + domeinen hetzelfde IP adres delen. + + Om Apache gebruik te laten + maken van Naam-gebaseerde Virtuele Hosting kan een regel als + de volgende in httpd.conf worden + opgenomen: + + NameVirtualHost * + + Als een webserver www.domein.tld heet en er moet een + virtueel domein voor www.anderdomein.tld gaan draaien, dan + kunnen de volgende regels aan httpd.conf + worden toegevoegd: + + <VirtualHost *> + ServerName www.domein.tld + DocumentRoot /www/domein.tld +<VirtualHost> + +<VirtualHost *> + ServerName www.anderdomein.tld + DocumentRoot /www/anderdomein.tld +</VirtualHost> + + De adressen en de paden uit dit voorbeeld kunnen in echte + implementaties uiteraard gewijzigd worden. + + Meer informatie over het opzetten van virtuele hosts staat + in de officiële documentatie voor + Apache op + + + + Apache Modules + + + Apache + + modules + + + Er zijn veel verschillende + Apache modules die functionaliteit + toevoegen aan de basisdienst. De &os; portscollectie biedt + op een eenvoudige manier de mogelijkheid om + Apache samen met de meeste populaire + add-on modules te installeren. + + + mod_ssl + + + webserver + + veilig + + + SSL + + cryptografie + + De module mod_ssl gebruikt + de OpenSSL bibliotheek om sterke cryptografie te leveren via + de protocollen Secure Sockets Layer (SSL v2/v3) en + Transport Layer Security (TLS v1). Deze module levert + alles wat nodig is om een getekend certificaat aan te vragen + bij een vertrouwde certificaatautoriteit om een veilige + webserver onder &os; te kunnen draaien. + + Als Apache nog niet is + geïnstalleerd, dan is er een versie van + Apache 1.3.X die + mod_ssl bevat en + geïnstalleerd kan worden met de www/apache13-modssl port. SSL + ondersteuning is ook voor Apache 2.X beschikbaar in de + www/apache2 port, + waar het standaard is ingeschakeld. + + + + + + + + mod_perl + + Perl + + Het Apache/Perl + integratieproject brengt de volledige kracht van de Perl + programmeertaal en de Apache HTTP + Server samen. Met de + mod_perl module is het mogelijk om + Apache modules volledig in Perl te + schrijven. Daarnaast voorkomt een ingebouwde persistente + interpreter in de server de overhead van het starten van een + externe interpreter en de nadelen van het opstarten van + Perl. + + Als Apache nog niet is + geïnstalleerd, dan is er een versie van + Apache die + mod_perl bevat en + geïnstalleerd kan worden met de www/apache13-modperl port. + + + + PHP + + PHP + + PHP, dat staat voor PHP: Hypertext + Preprocessor, is een veelgebruikte algemene Open + Source scripttaal die bijzonder bruikbaar is voor + webontwikkeling en die ingebed kan worden in HTML. De + syntaxis is afgeleid van C, &java; en Perl en blijkt + makkelijk te leren. Het belangrijkste doel van de taal is + webontwikkelaars in staat te stellen om gemakkelijk dynamisch + samengestelde webpagina's te schrijven. Maar er kan nog veel + meer met PHP gedaan worden. + + PHP kan geïnstalleerd worden met de lang/php5 port. + + + + + + + + + Murray + Stokely + Geschreven door + + + + + File Transfer Protocol (FTP) + + FTP server + + + Overzicht + + Het File Transfer Protocol (FTP) biedt gebruikers een + eenvoudige manier om bestanden van en naar een FTP server te + verplaatsen. &os; bevat FTP + server software, ftpd, in het + basissysteem. Hierdoor is het opzetten en beheren van een + FTP server op + &os; erg overzichtelijk. + + + + Instellen + + De belangrijkste stap bij het instellen is de beslissing + welke accounts toegang krijgen tot de FTP server. Een normaal + &os; systeem heeft een aantal systeemaccounts die gebruikt + worden voor daemons, maar onbekende gebruikers mag niet + toegestaan worden van die accounts gebruikt te maken. In + /etc/ftpusers staat een lijst met + gebruikers die geen FTP toegang hebben. Standaard staan daar + de voorgenoemde accounts in, maar het is ook mogelijk om daar + gebruikers toe te voegen die geen FTP toegang mogen + hebben. + + Het kan ook wenselijk zijn de FTP toegang voor sommige + gebruikers te beperken, maar niet onmogelijk te maken. Dit kan + met /etc/ftpchroot. In dat bestand staan + gebruikers en groepen waarop FTP toegangsbeperkingen van + toepassing zijn. In &man.ftpchroot.5; staan alle details die + hier niet beschreven zijn. + + Om anonieme FTP toegang voor een server in te schakelen, + dient er een gebruiker ftp op een &os; + systeem aangemaakt te worden. Dan kunnen gebruikers op de + server aanmelden met de gebruikersnaam ftp + of anonymous en met ieder wachtwoord + (de geldende conventie schrijft voor dat dit een e-mail adres + van de gebruiker is). De FTP server roep bij een anonieme + aanmelding &man.chroot.2; aan, zodat er alleen toegang is tot + de thuismap van de gebruiker ftp. + + Er zijn twee tekstbestanden waarin welkomstberichten voor + de FTP clients gezet kunnen worden. De inhoud van + /etc/ftpwelcome wordt getoond voordat + gebruikers een aanmeldprompt zien. Na een succesvolle + aanmelding wordt de inhoud van + /etc/ftpmotd getoond. Het genoemde pad + is relatief ten opzichte van de aanmeldomgeving, dus voor + anonieme gebruikers wordt ~ftp/etc/ftpmotd + getoond. + + Als een FTP server eenmaal correct is ingesteld, moet die + ingeschakeld worden in /etc/inetd.conf. + Daar moet het commentaarkarakter # voor de + bestaande ftpd regel verwijderd + worden: + + ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l + + Nadat het bestand met instellingen is gewijzigd, moet er + een HangUP signaal verstuurd worden naar + inetd, zoals uitgelegd in . + + Nu kan aangemeld worden op de FTP server met: + + &prompt.user; ftp localhost + + + + Beheren + + syslog + + + logboeken + + FTP + + + De ftpd daemon gebruikt + &man.syslog.3; om berichten te loggen. Standaard plaatst de + systeemlogdaemon berichten over FTP in + /var/log/xferlog. De lokatie van het FTP + logboek kan gewijzigd worden door de volgende regels in + /etc/syslog.conf te wijzigen: + + ftp.info /var/log/xferlog + + Het is verstandig na te denken over de gevaren die op de + loer liggen bij het draaien van een anonieme FTP server. Dat + geldt in het bijzonder voor het laten uploaden ven bestanden. + Het is dan goed mogelijk dat een FTP site een forum wordt om + commerciële software zonder licenties uit te wisselen of + erger. Als anonieme uploads toch nodig zijn, dan horen de + rechten op die bestanden zo te staan dat ze niet door andere + anonieme gebruikers gelezen kunnen worden tot er door een + beheerder naar gekeken is. + + + + + + + + Murray + Stokely + Geschreven door + + + + + Bestands- en Printdiensten voor µsoft.windows; clients + (Samba) + + Samba server + + Microsoft Windows + + + file server + + Windows clients + + + + print server + + Windows clients + + + + Overzicht + + Samba is een populair open + source softwarepakket dat bestands- en printdiensten voor + µsoft.windows; clients biedt. Die clients kunnen + dan ruimte op een &os; bestandssysteem gebruiken alsof het + een lokale schijf is en &os; printers gebruiken alsof het + lokale printers zijn. + + Samba software packages horen + op de &os; installatiemedia te staan. Als + Samba bij de basisinstallatie niet + mee is geïnstalleerd, dan kan dat alsnog via de net/samba3 port of met het + package. + + + + + + Instellen + + Een standaardbestand met instellingen voor + Samba wordt geïnstalleerd als + /usr/local/etc/smb.conf.default. Dit + bestand dient gekopieerd te worden naar + /usr/local/etc/smb.conf en voordat + Samba gebruikt kan worden, moeten er + aanpassingen aan worden gemaakt. + + smb.conf bevat de instellingen voor + Samba, zoals die voor de printers en + de gedeelde bestandssystemen die gedeeld worden + met &windows; clients. Het Samba + pakket bevat een webgebaseerde beheermodule die + swat heet, waarmee + smb.conf op een eenvoudige manier + ingesteld kan worden. + + + De Samba Webbeheermodule Gebruiken (SWAT) + + De Samba Webbeheermodule (SWAT) draait als een daemon + vanuit inetd. Daarom dient voor + de volgende regel uit /etc/inetd.conf + het commentaarkarakter verwijderd te worden voordat + swat gebruikt kan worden om + Samba in te stellen: + + swat stream tcp nowait/400 root /usr/local/sbin/swat + + Nadat het bestand met instellingen is gewijzigd, moet er + een HangUP signaal verstuurd worden naar + inetd, zoals uitgelegd in . + + Als swat is ingeschakeld in + inetd.conf, kan de module gebruikt + worden door met een browser een verbinding te maken met + . Er dient + aangemeld te worden met de root account + van het systeem. + + + + Na succesvol aanmelden op de hoofdpagina voor de + Samba instellingen, is het + mogelijk de systeemdocumentatie te bekijken of te starten + door op het tabblad Globals te klikken. + Het onderdeel Globals correspondeert met + de sectie [global] in + /usr/local/etc/smb.conf. + + + + Systeembrede Instellingen + + Of Samba nu wordt ingesteld + door /usr/local/etc/smb.conf direct te + bewerken of met swat, de eerste + instellingen die gemaakt moeten worden zijn de + volgende: + + + + workgroup + + + NT Domeinnaam of Werkgroepnaam voor de computers + die verbinding gaan maken met de server. + + + + + netbios name + + NetBIOS + + + Hiermee wordt de NetBIOS naam waaronder de + Samba server bekend zal zijn + ingesteld. Standaard is de naam het eerste gedeelte + van de DNS naam van een host. + + + + + server string + + + Hiermee wordt de string ingesteld die te zien is + als het commando net view en een + aantal andere commando's die gebruik maken van de + descriptieve tekst voor de server gebruikt + worden. + + + + + + + Beveiligingsinstellingen + + Twee van de belangrijkste instellingen in + /usr/local/etc/smb.conf zijn het + gekozen beveiligingsmodel en het wachtwoord voor + clientgebruikers. Deze worden met de volgende instellingen + gemaakt: + + + + security + + + De twee meest gebruikte mogelijkheden hier zijn + security = share en + security = user. Als de clients + gebruikersnamen hebben die overeenkomen met hun + gebruikersnaam op de &os; machine, dan is het + verstandig om te kiezen voor beveiliging op + gebruikersniveau. Dit is het standaard + beveiligingsbeleid en kent als voorwaarde dat + gebruikers zich eerst moeten aanmelden voordat ze + toegang krijgen tot gedeelde bronnen. + + Bij beveiliging op shareniveau hoeft een client + niet met een geldige gebruikersnaam en wachtwoord aan + te melden op de server voor het mogelijk is om een + verbinding te proberen te krijgen met een gedeelde + bron. Dit was het standaardbeveiligingsmodel voor + oudere versies van + Samba. + + + + + passdb backend + + NIS+ + + LDAP + + SQL database + + + Samba kent aan de + achterkant verschillende authenticatiemodellen. + Clients kunnen authenticeren met LDAP, NIS+, een SQL + database of een aangepast wachtwoordbestand. De + standaard authenticatiemethode is + smbpasswd. Meer wordt hier niet + behandeld. + + + + + Als aangenomen wordt dat de standaard achterkant + smbpasswd wordt gebruikt, dan moet + /usr/local/private/smbpasswd gemaakt + worden om Samba in staat te + stellen clients te authenticeren. Alle &unix; + gebruikersaccounts toegang geven vanaf &windows; clients gaat + met het volgende commando: + + &prompt.root; grep -v "^#" /etc/passwd | make_smbpasswd > /usr/local/private/smbpasswd +&prompt.root; chmod 600 /usr/local/private/smbpasswd + + In de Samba documentatie staat + meer informatie over instellingen. Met de hier gegeven + basisuitleg moet het mogelijk zijn + Samba draaiende te krijgen. + + + + + <application>Samba</application> Starten + + Om Samba in te schakelen bij het + starten van een systeem dient de volgende regel aan + /etc/rc.conf toegevoegd te worden: + + samba_enable="YES" + + Samba kan op ieder moment + gestart worden met: + + &prompt.root; /usr/local/etc/rc.d/samba.sh start +Starting SAMBA: removing stale tdbs : +Starting nmbd. +Starting smbd. + + Samba bestaat feitelijk uit drie + afzonderlijke daemons. Het script + samba.sh start de daemons + nmbd en + smbd. Als de winbind name + resolution diensten in smb.conf zijn + ingeschakeld, dan start ook de daemon + winbindd. + + Samba kan op ieder moment + gestopt worden met: + + &prompt.root; /usr/local/etc/rc.d/samba.sh stop + + Samba is een complexe + softwaresuite met functionaliteit waarmee verregaande + ingratie met µsoft.windows; netwerken mogelijk wordt. + Informatie die verder gaat dan de basisinstallatie staat op + . + + + + + + + + Tom + Hukins + Geschreven door + + + + + Tijd Synchroniseren met NTP + + NTP + + + Overzicht + + Na verloop van tijd gaat de tijd van een computer meestal + uit de pas lopen. Het Netwerk Tijd Protocol (NTP) kan ervoor + zorgen dat de tijd accuraat blijft. + + Veel diensten op internet zijn afhankelijk, of hebben veel + voordeel, van het betrouwbaar zijn van de tijd. Zo ontvangt + een webserver bijvoorbeeld veel verzoeken om een bestand te + sturen als dat gewijzigd is sinds een bepaald moment. In een + LAN omgeving is het van groot belang dat computers die + bestanden delen van eenzelfde server gesynchroniseerde tijd + hebben zodat de tijdstempels consistent blijven. Diensten + zoals &man.cron.8; zijn ook afhankelijk van een betrouwbare + systeemtijd om commando's op het ingestelde moment uit te + voeren. + + + NTP + + ntpd + + + Bij &os; zit de &man.ntpd.8; NTP server die gebruikt kan worden + om bij andere NTP servers de tijd op + te vragen om de eigen klok gelijk te zetten of om de juiste + tijd te verstrekken aan andere apparaten. + + + + Passende NTP Servers Kiezen + + + NTP + + choosing servers + + + Om de tijd te synchroniseren moeten er één + of meer NTP + servers beschikbaar zijn. Een lokale systeembeheerder of een + ISP heeft wellicht een NTP server voor dit doel opgezet. Het + is verstandig om documentatie te raadplegen en te bekijken of + dat het geval is. Er is een online + lijst van publiek toegankelijke NTP servers waarop een + NTP server gezocht kan worden die in geografische zin dichtbij + een te synchroniseren computer ligt. Het is belangrijk te + voldoen aan het beleid voor de betreffende server en + toestemming te vragen als dat in de voorwaarden staat. + + Het is verstandig meerdere, niet van elkaar afhankelijke, + NTP servers te kiezen voor het geval een van de servers niet + langer betrouwbaar is of niet bereikbaar is. &man.ntpd.8; + gebruikt de antwoorden die van andere servers ontvangen worden + op intelligente wijze: betrouwbare servers krijgen voorrang + boven ontbetrouwbare servers. + + + + Machine Instellen + + + NTP + + instellen + + + + Basisinstellingen + + ntpdate + + Als het alleen de bedoeling is de tijd te synchroniseren + bij het opstarten van een machine, dan kan &man.ntpdate.8; + gebruikt worden. Dit kan van toepassing zijn op desktops + die regelmatig herstart worden en niet echt regelmatig + gesynchroniseerd hoeven te worden. Op sommige machines hoort + echter &man.ntpd.8; te draaien. + + Het gebruik van &man.ntpdate.8; bij het opstarten is ook + een goed idee voor machines waarop &man.ntpd.8; draait. De + &man.ntpd.8; wijzigt de tijd geleidelijk, terwijl + &man.ntpdate.8; gewoon de tijd instelt, hoe groot het + verschil tussen de bestaande tijd van een machine en de + correcte tijd ook is. + + Om &man.ntpdate.8; tijdens het opstarten in te schakelen + kan ntpdate_enable="YES" aan + /etc/rc.conf worden toegevoegd. Alle + voor de synchronisatie te gebruiken servers moeten dan, + samen met eventuele opties voor &man.ntpdate.8;, in + ntpdate_flags aangegeven worden. + + + + + NTP + + ntp.conf + + + Algemene Instellingen + + NTP wordt ingesteld met het bestand + /etc/ntp.conf in het formaat dat + beschreven staat in &man.ntp.conf.5;. Hieronder volgt een + eenvoudig voorbeeld: + + server ntplocal.example.com prefer +server timeserver.example.org +server ntp2a.example.net + +driftfile /var/db/ntp.drift + + De optie server geeft aan welke + servers er gebruikt moeten worden, met op elke regel een + server. Als de server wordt ingesteld met het argument + prefer, zoals bij ntplocal.example.com, dan krijgt die + server de voorkeur boven de andere. Een antwoord van een + voorkeursserver wordt genegeerd als dat significant afwijkt + van de antwoorden van de andere servers. In andere gevallen + wordt het gebruikt zonder rekening te houden met de andere + antwoorden. Het argument prefer wordt + meestal gebruikt voor NTP servers waarvan bekend is dat ze + erg betrouwbaar zijn, zoals die met speciale tijdbewaking + hardware. + + De optie driftfile geeft aan welk + bestand gebruikt wordt om de offset van de klokfrequentie van + het systeem op te slaan. &man.ntpd.8; gebruikt die om + automatisch te compenseren voor het natuurlijke afwijken van + de tijd, zodat er zelfs bij gebrek aan externe bronnen een + redelijke accurate tijdsinstelling mogelijk is. + + De optie driftfile geeft aan welk + bestand gebruikt wordt om informatie over eerdere + antwoorden van NTP servers die gebruikt worden op te slaan. + Dit bestand bevat interne informatie voor NTP. Het hoort + niet door andere processen gewijzigd te worden. + + + + Toegang tot een Server Instellen + + Een NTP server is standaard toegankelijk voor alle + hosts op een netwerk. De optie restrict + in /etc/ntp.conf maakt het mogelijk om + aan te geven welke machines de dienst mogen benaderen. + + Voor het blokkeren van toegang voor alle andere machines + kan de volgende regel aan /etc/ntp.conf + toegevoegd worden: + + restrict default ignore + + Om alleen machines op bijvoorbeeld het locale netwerk toe + te staan hun tijd te synchroniseren met een server, maar + ze tegelijkertijd niet toe te staan om de server te draaien + of de server als referentie voor synchronisatie te gebruiken, + kan de volgende regel toegevoegd worden: + + restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap + + Hierboven is 192.168.1.0 + een IP adres op een LAN en 255.255.255.0 is het bijbehorende + netwerkmasker. + + /etc/ntp.conf mag meerdere regels + met restrict bevatten. Meer details staan + in het onderdeel Access Control Support + van &man.ntp.conf.5;. + + + + + De NTP Server Draaien + + De NTP server kan bij het opstarten gestart worden door de + regel ntpd_enable="YES" aan + /etc/rc.conf toe te voegen. Om extra + opties aan &man.ntpd.8; mee te geven kan de parameter + ntpd_flags in + /etc/rc.conf gebruikt worden. + + Om de server zonder een herstart van de machine te starten + kan ntpd uitgevoerd worden, met toevoeging + van de parameters uit ntpd_flags in + /etc/rc.conf. Bijvoorbeeld: + + &prompt.root; ntpd -p /var/run/ntpd.pid + + + In &os; 4.X, dienen de + ntpd uit het bovenstaande voorbeeld + vervangen te worden door xntpd. + + + + + ntpd Gebruiken met een Tijdelijke + Internetverbinding + + &man.ntpd.8; heeft geen permanente verbinding met een + netwerk nodig om goed te werken. Maar als er gebruik gemaakt + wordt van een inbelverbinding, is het wellicht verstandig om + ervoor te zorgen dat uitgaande NTP verzoeken geen uitgaande + verbinding kunnen starten. Als er gebruik gemaakt wordt van + user PPP, kunnen er filter commando's + ingesteld worden in /etc/ppp/ppp.conf. + Bijboorbeeld: + + set filter dial 0 deny udp src eq 123 +# NTP verkeer zorgt niet voor uitbellen +set filter dial 1 permit 0 0 +set filter alive 0 deny udp src eq 123 +# Inkomend NTP verkeer houdt de verbinding niet open +set filter alive 1 deny udp dst eq 123 +# Uitgaand NTP verkeer houdt de verbinding niet open +set filter alive 2 permit 0/0 0/0 + + Meer details staan in de PACKET + FILTERING sectie in &man.ppp.8; en in de voorbeelden + in /usr/share/examples/ppp/. + + + Sommige internet providers blokkeren lage poorten, + waardoor NTP niet kan werken omdat er nooit een antwoord + ontvangen kan worden door een machine. + + + + + Meer Informatie + + HTML documentatie voor de NTP server staat in + /usr/share/doc/ntp/. + + + + + +