diff options
Diffstat (limited to 'nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml')
-rw-r--r-- | nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml | 6179 |
1 files changed, 6179 insertions, 0 deletions
diff --git a/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml new file mode 100644 index 0000000000..8fc23de52a --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/network-servers/chapter.xml @@ -0,0 +1,6179 @@ +<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> +<!-- + The FreeBSD Dutch Documentation Project + + $FreeBSD$ + + %SOURCE% en_US.ISO8859-1/books/handbook/network-servers/chapter.sgml + %SRCID% 39544 +--> + +<chapter id="network-servers"> + <chapterinfo> + <authorgroup> + <author> + <firstname>Murray</firstname> + <surname>Stokely</surname> + <contrib>Gereorganiseerd door </contrib> + </author> + </authorgroup> + <!-- 23 July 2004 --> + <authorgroup> + <author> + <firstname>Siebrand</firstname> + <surname>Mazeland</surname> + <contrib>Vertaald door </contrib> + </author> + <author> + <firstname>René</firstname> + <surname>Ladan</surname> + </author> + </authorgroup> + </chapterinfo> + + <title>Netwerkdiensten</title> + + <sect1 id="network-servers-synopsis"> + <title>Overzicht</title> + + <para>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.</para> + + <para>Na het lezen van dit hoofdstuk weet de lezer:</para> + + <itemizedlist> + <listitem> + <para>Hoe om te gaan met de <application>inetd</application> + daemon;</para> + </listitem> + + <listitem> + <para>Hoe een netwerkbestandssysteem opgezet kan worden;</para> + </listitem> + + <listitem> + <para>Hoe een netwerkinformatiedienst (NIS) opgezet kan worden + voor het delen van gebruikersaccounts;</para> + </listitem> + + <listitem> + <para>Hoe automatische netwerkinstellingen gemaakt kunnen + worden met DHCP;</para> + </listitem> + + <listitem> + <para>Hoe een domeinnaam server opgezet kan worden;</para> + </listitem> + + <listitem> + <para>Hoe een <application>Apache</application> HTTP Server + opgezet kan worden;</para> + </listitem> + + <listitem> + <para>Hoe een File Transfer Protocol (FTP) Server opgezet kan + worden;</para> + </listitem> + + <listitem> + <para>Hoe een bestand-- en printserver voor &windows; + cliënten opgezet kan worden met + <application>Samba</application>;</para> + </listitem> + + <listitem> + <para>Hoe datum en tijd gesynchroniseerd kunnen worden en hoe + een tijdserver opgezet kan worden met het NTP-protocol.</para> + </listitem> + + <listitem> + <para>Hoe het standaard log-daemon <command>syslogd</command> in + te stellen om logs van hosts op afstand te accepteren.</para> + </listitem> + </itemizedlist> + + <para>Veronderstelde voorkennis:</para> + + <itemizedlist> + <listitem> + <para>Basisbegrip van de scripts in + <filename>/etc/rc</filename>;</para> + </listitem> + + <listitem> + <para>Bekend zijn met basis netwerkterminologie;</para> + </listitem> + + <listitem> + <para>Kennis van de installatie van software van derde partijen + (<xref linkend="ports"/>).</para> + </listitem> + </itemizedlist> + </sect1> + + <sect1 id="network-inetd"> + <sect1info> + <authorgroup> + <author> + <firstname>Chern</firstname> + <surname>Lee</surname> + <contrib>Bijgedragen door </contrib> + </author> + </authorgroup> + + <authorgroup> + <author> + <contrib>Bijgewerkt door </contrib> + <othername>The &os; Documentation Project</othername> + </author> + </authorgroup> + </sect1info> + + <title>De <application>inetd</application> + <quote>Super-Server</quote></title> + + <sect2 id="network-inetd-overview"> + <title>Overzicht</title> + + <para>&man.inetd.8; wordt soms de + <quote>Internet Super-Server</quote> genoemd, omdat het + verbindingen voor meerdere diensten beheert. Als door + <application>inetd</application> een verbinding wordt ontvangen, + bepaalt die voor welk programma de verbinding bedoeld is, + splitst het dat proces af en delegeert de socket (het programma + wordt gestart met de socket van de dienst als zijn + standaardinvoer, -uitvoer en -foutbeschrijvingen). Het draaien + van <application>inetd</application> voor servers die niet veel + gebruikt worden kan de algehele werklast verminderen in + vergelijking met het draaien van elke daemon individueel in + stand-alone modus.</para> + + <para><application>inetd</application> wordt primair gebruikt om + andere daemons aan te roepen, maar het handelt een aantal + triviale protocollen direct af, zoals + <application>chargen</application>, + <application>auth</application> en + <application>daytime</application>.</para> + + <para>In deze paragraaf worden de basisinstellingen van + <application>inetd</application> behandeld met de opties vanaf + de commandoregel en met het instellingenbestand + <filename>/etc/inetd.conf</filename>.</para> + </sect2> + + <sect2 id="network-inetd-settings"> + <title>Instellingen</title> + + <para><application>inetd</application> wordt gestart door het + &man.rc.8;-systeem. De + optie <literal>inetd_enable</literal> staat standaard op + <literal>NO</literal>, maar kan tijdens de installatie door + <application>sysinstall</application> worden aangezet. Door het + plaatsen van</para> + + <programlisting>inetd_enable="YES"</programlisting> + + <para>of</para> + + <programlisting>inetd_enable="NO"</programlisting> + + <para>in <filename>/etc/rc.conf</filename> wordt + <application>inetd</application> bij het opstarten van een + systeem wel of niet ingeschakeld. Het commando:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/inetd rcvar</userinput></screen> + + <para>kan gedraaid worden om de huidige effectieve instellingen + weer te geven.</para> + + <para>Dan kunnen er ook nog een aantal commandoregelopties aan + <application>inetd</application> meegegeven worden met de optie + <literal>inetd_flags</literal>.</para> + </sect2> + + <sect2 id="network-inetd-cmdline"> + <title>Commandoregelopties</title> + + <para>Zoals de meeste serverdaemons heeft + <application>inetd</application> een aantal opties die + doorgegeven kunnen worden om het gedrag aan te passen. Zie de + handleidingpagina &man.inetd.8; voor een volledige lijst van de + opties.</para> + + <para>Opties kunnen door middel van de optie + <literal>inetd_flags</literal> in + <filename>/etc/rc.conf</filename> aan + <application>inetd</application> worden doorgegeven. Standaard + staat <literal>inetd_flags</literal> ingesteld op + <literal>-wW -C 60</literal>, dat TCP-wrapping aanzet voor de + diensten van <application>inetd</application>, en voorkomt dat + elk enkelvoudig IP-adres enige dienst meer dan 60 keer per + minuut opvraagt.</para> + + <para>Ook al worden er hieronder rate-limiting opties besproken, + beginnende gebruikers kunnen blij zijn met het feit dat deze + parameters gewoonlijk niet hoeven te worden aangepast. Deze + opties kunnen interessant zijn wanneer er een buitensporige + hoeveelheid verbindingen worden opgezet. Een volledige lijst + van opties staat in de hulppagina &man.inetd.8;.</para> + + <variablelist> + <varlistentry> + <term>-c maximum</term> + + <listitem> + <para>Geeft het maximale aantal gelijktijdige verzoeken voor + iedere dienst aan. De standaard is ongelimiteerd. Kan + per dienst ter zijde geschoven worden met de parameter + <option>max-child</option>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-C rate</term> + + <listitem> + <para>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 + <option>max-connections-per-ip-per-minute</option>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-R rate</term> + + <listitem> + <para>Geeft het maximale aantal keren aan dat een dienst + per minuut aangeroepen kan worden. De standaard is 256. + De instelling <literal>0</literal> geeft aan dat er geen + limiet is.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-s maximum</term> + + <listitem> + <para>Specificeert het maximaal aantal keer per minuut dat + een dienst aangeroepen kan worden vanuit een enkelvoudig + IP-adres; de standaard is onbeperkt. Kan worden + overstemd op een per-dienst-basis met de parameter + <option>max-child-per-ip</option>.</para> + </listitem> + </varlistentry> + </variablelist> + </sect2> + + <sect2 id="network-inetd-conf"> + <title><filename>inetd.conf</filename></title> + + <para>De instellingen van <application>inetd</application> + worden beheerd in <filename>/etc/inetd.conf</filename>.</para> + + <para>Als er een wijziging wordt aangebracht in + <filename>/etc/inetd.conf</filename>, dan kan + <application>inetd</application> gedwongen worden om de + instellingen opnieuw in te lezen door dit commando te draaien:</para> + + <example id="network-inetd-reread"> + <title>Het instellingenbestand van <application>inetd</application> + herladen</title> + + <screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen> + </example> + + <para>Iedere regel in het bestand met instellingen heeft + betrekking op een individuele daemon. Commentaar wordt vooraf + gegaan door een <literal>#</literal>. De opmaak van elke regel + van <filename>/etc/inetd.conf</filename> is als volgt:</para> + + <programlisting>service-name +socket-type +protocol +{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] +user[:group][/login-class] +server-program +server-program-arguments</programlisting> + + <para>Een voorbeeldregel voor de daemon &man.ftpd.8; met IPv4 kan + eruit zien als:</para> + + <programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting> + + <variablelist> + <varlistentry> + <term>service-name</term> + + <listitem> + <para>Dit is de dienstnaam van een daemon. Die moet + overeenkomen met een dienst uit + <filename>/etc/services</filename>. Hiermee kan de + poort waarop <application>inetd</application> moet + luisteren aangegeven worden. Als er een nieuwe dienst + wordt gemaakt, moet die eerst in + <filename>/etc/services</filename> gezet worden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>socket-type</term> + + <listitem> + <para>Dit is <literal>stream</literal>, + <literal>dgram</literal>, <literal>raw</literal> of + <literal>seqpacket</literal>. <literal>stream</literal> + moet gebruikt worden voor verbindingsgebaseerde + TCP-daemons, terwijl <literal>dgram</literal> wordt + gebruikt voor daemons die gebruik maken van het + transportprotocol <acronym>UDP</acronym>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>protocol</term> + + <listitem> + <para>Een van de volgende:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Protocol</entry> + + <entry>Toelichting</entry> + </row> + </thead> + + <tbody> + <row> + <entry>tcp, tcp4</entry> + + <entry>TCP IPv4</entry> + </row> + + <row> + <entry>udp, udp4</entry> + + <entry>UDP IPv4</entry> + </row> + + <row> + <entry>tcp6</entry> + + <entry>TCP IPv6</entry> + </row> + + <row> + <entry>udp6</entry> + + <entry>UDP IPv6</entry> + </row> + + <row> + <entry>tcp46</entry> + + <entry>Zowel TCP IPv4 als v6</entry> + </row> + + <row> + <entry>udp46</entry> + + <entry>Zowel UDP IPv4 als v6</entry> + </row> + </tbody> + </tgroup> + </informaltable> + </listitem> + </varlistentry> + + <varlistentry> + <term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term> + + <listitem> + <para><option>wait|nowait</option> geeft aan of de daemon + die door <application>inetd</application> wordt + aangesproken zijn eigen sockets kan afhandelen of niet. + <option>dgram</option> sockettypen moeten de optie + <option>wait</option> gebruiken, terwijl streamsocket + daemons, die meestal multi-threaded zijn, de optie + <option>nowait</option> horen te gebruiken. + <option>wait</option> geeft meestal meerdere sockets aan + een daemon, terwijl <option>nowait</option> een kinddaemon + draait voor iedere nieuwe socket.</para> + + <para>Het maximum aantal kinddaemons dat + <application>inetd</application> mag voortbrengen kan + ingesteld worden met de optie <option>max-child</option>. + Als een limiet van tien instanties van een bepaalde + daemon gewenst is, dan zou er <literal>/10</literal> + achter <option>nowait</option> gezet worden. Door + <literal>/0</literal> wordt een onbeperkt aantal kinderen + toegestaan.</para> + + <para>Naast <option>max-child</option> zijn er nog twee + andere opties waarmee het maximale aantal verbindingen van + een bepaalde plaats naar een daemon ingesteld kan worden. + <option>max-connections-per-ip-per-minute</option> beperkt + het aantal verbindingen per minuut voor enig IP-adres, een + waarde van tien betekent hier dat er van ieder IP-adres + maximaal tien verbindingen naar een bepaalde dienst tot + stand gebracht kunnen worden. + <option>max-child-per-ip</option> beperkt het aantal + kindprocessen dat namens enig IP-adres op enig moment + gestart kan worden. Deze opties kunnen zijn nuttig om + bedoeld en onbedoeld buitensporig bronnengebruik van en + Denial of Service (DoS) aanvallen op een machine te + voorkomen.</para> + + <para>In dit veld is één van + <option>wait</option> of <option>nowait</option> + verplicht. <option>max-child</option>, + <option>max-connections-per-ip-per-minute</option> en + <option>max-child-per-ip</option> zijn optioneel.</para> + + <para>Een stream-type multi-threaded daemon zonder + één van de limieten + <option>max-child</option>, + <option>max-connections-per-ip-per-minute</option> of + <option>max-child-per-ip</option> is eenvoudigweg: + <literal>nowait</literal>.</para> + + <para>Dezelfde daemon met een maximale limiet van tien + daemons zou zijn: <literal>nowait/10</literal>.</para> + + <para>Dezelfde instellingen met een limiet van twintig + verbindingen per IP-adres per minuut en een totaal maximum + van tien kinddaemons zou zijn: + <literal>nowait/10/20</literal>.</para> + + <para>Deze opties worden allemaal gebruikt door de + standaardinstellingen van de daemon &man.fingerd.8;:</para> + + <programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting> + + <para>Als afsluiting, een voorbeeld in dit veld met een + maximum van 100 kinderen in totaal, met een maximum van 5 + voor enig IP-adres zou zijn: + <literal>nowait/100/0/5</literal>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>user</term> + + <listitem> + <para>Dit is de gebruikersnaam waar een daemon onder + draait. Daemons draaien meestal als de gebruiker + <username>root</username>. Om veiligheidsredenen draaien + sommige daemons onder de gebruiker + <username>daemon</username> of de gebruiker met de minste + rechten: <username>nobody</username>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>server-program</term> + + <listitem> + <para>Het volledige pad van de daemon die uitgevoerd moet + worden als er een verbinding wordt ontvangen. Als de + daemon een dienst is die door + <application>inetd</application> intern wordt geleverd, + dan moet de optie <option>internal</option> gebruikt + worden.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>server-program-arguments</term> + + <listitem> + <para>Deze optie werkt samen met de optie + <option>server-program</option> en hierin worden de + argumenten ingesteld, beginnend met + <literal>argv[0]</literal>, die bij het starten aan de + daemon worden meegegeven. Als + <command>mijndaemon -d</command> de commandoregel is, + dan zou <literal>mijndaemon -d</literal> de waarde van + <option>server-program-arguments</option> zijn. Hier + geldt ook dat als de daemon een interne dienst is, hier + de optie <option>internal</option> moet worden.</para> + </listitem> + </varlistentry> + </variablelist> + </sect2> + + <sect2 id="network-inetd-security"> + <title>Beveiliging</title> + + <para>Afhankelijk van keuzes gemaakt tijdens de installatie, + kunnen veel van de diensten van <application>inetd</application> + standaard ingeschakeld zijn. Het is verstandig te overwegen om + een daemon dat niet noodzakelijk is uit te schakelen. Plaats + een <literal>#</literal> voor de daemon in + <filename>/etc/inetd.conf</filename> en <link + linkend="network-inetd-reread">herlaad vervolgens de + instellingen van inetd</link>. Sommige daemons, zoals + <application>fingerd</application>, zijn wellicht helemaal niet + gewenst omdat ze informatie geven die nuttig kan zijn voor een + aanvaller.</para> + + <para>Sommige daemons zijn zich niet echt bewust van beveiliging + en hebben lange of niet bestaande timeouts 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 + <option>max-connections-per-ip-per-minute</option>, + <option>max-child</option> of <option>max-child-per-ip</option> + te gebruiken als ze naar uw smaak teveel verbindingen hebben.</para> + + <para>TCP-wrapping staat standaard aan. Er staat meer informatie + over het zetten van TCP-restricties op de verschillende daemons + die door <application>inetd</application> worden aangesproken + in &man.hosts.access.5;.</para> + </sect2> + + <sect2 id="network-inetd-misc"> + <title>Allerlei</title> + + <para><application>daytime</application>, + <application>time</application>, + <application>echo</application>, + <application>discard</application>, + <application>chargen</application> en + <application>auth</application> zijn allemaal interne diensten + van <application>inetd</application>.</para> + + <para>De dienst <application>auth</application> biedt + identiteitsnetwerkdiensten en is tot op een bepaald niveau + instelbaar, terwijl de anderen eenvoudigweg aan of uit staan.</para> + + <para>Meer diepgaande informatie staat in &man.inetd.8;.</para> + </sect2> + </sect1> + + <sect1 id="network-nfs"> + <sect1info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Gereorganiseerd en verbeterd door </contrib> + </author> + </authorgroup> + + <authorgroup> + <author> + <firstname>Bill</firstname> + <surname>Swingle</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Netwerkbestandssysteem (NFS)</title> + + <indexterm><primary>NFS</primary></indexterm> + + <para>Het Netwerkbestandssysteem (Network File System) is een van + de vele bestandssystemen die &os; ondersteunt. Het staat ook wel + bekend als <acronym role="Network File System">NFS</acronym>. + Met <acronym role="Network File System">NFS</acronym> is het + mogelijk om mappen en bestanden met anderen in een netwerk te + delen. Door het gebruik van <acronym + role="Network File System">NFS</acronym> kunnen gebruikers en + programma's bij bestanden op andere systemen op bijna dezelfde + manier als bij hun eigen lokale bestanden.</para> + + <para>De grootste voordelen van <acronym>NFS</acronym> zijn:</para> + + <itemizedlist> + <listitem> + <para>Lokale werkstations gebruiken minder schijfruimte omdat + veel gebruikte data op één machine opgeslagen + kan worden en nog steeds toegankelijk is voor gebruikers via + het netwerk;</para> + </listitem> + + <listitem> + <para>Gebruikers hoeven niet op iedere machine een thuismap te + hebben. Thuismappen kunnen op de <acronym>NFS</acronym> + server staan en op het hele netwerk beschikbaar zijn;</para> + </listitem> + + <listitem> + <para>Opslagapparaten als floppydisks, CD-ROM 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.</para> + </listitem> + </itemizedlist> + + <sect2> + <title>Hoe <acronym>NFS</acronym> werkt</title> + + <para><acronym>NFS</acronym> bestaat uit tenminste twee + hoofdonderdelen: een server en een of meer cliënten. De + cliënt benadert de gegevens die op een servermachine zijn + opgeslagen via een netwerk. Om dit mogelijk te maken moeten er + een aantal processen ingesteld en gestart worden.</para> + + <para>Op de server moeten de volgende daemons draaien:</para> + <indexterm> + <primary>NFS</primary> + + <secondary>server</secondary> + </indexterm> + + <indexterm> + <primary>bestandsserver</primary> + + <secondary>UNIX cliënten</secondary> + </indexterm> + + <indexterm><primary><application>rpcbind</application></primary></indexterm> + + <indexterm><primary><application>mountd</application></primary></indexterm> + + <indexterm><primary><application>nfsd</application></primary></indexterm> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <colspec colwidth="1*"/> + + <colspec colwidth="3*"/> + + <thead> + <row> + <entry>Daemon</entry> + + <entry>Beschrijving</entry> + </row> + </thead> + + <tbody> + <row> + <entry><application>nfsd</application></entry> + + <entry>De <acronym>NFS</acronym>-daemon die verzoeken van + de <acronym>NFS</acronym> cliënten afhandelt.</entry> + </row> + + <row> + <entry><application>mountd</application></entry> + + <entry>De <acronym>NFS</acronym> koppeldaemon die + doorgestuurde verzoeken van &man.nfsd.8; + uitvoert.</entry> + </row> + + <row> + <entry><application>rpcbind</application></entry> + + <entry>Deze daemon geeft voor + <acronym>NFS</acronym>-cliënten aan welke poort de + <acronym>NFS</acronym>-server gebruikt.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Op de cliënt kan ook een daemon draaien: + <application>nfsiod</application>. De daemon + <application>nfsiod</application> handelt verzoeken van de + <acronym>NFS</acronym>-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;.</para> + </sect2> + + <sect2 id="network-configuring-nfs"> + <title><acronym>NFS</acronym> instellen</title> + + <indexterm> + <primary>NFS</primary> + + <secondary>instellen</secondary> + </indexterm> + + <para><acronym>NFS</acronym> instellen gaat redelijk rechtlijnig. + Alle processen die moeten draaien kunnen meestarten bij het + opstarten door een paar wijzigingen in + <filename>/etc/rc.conf</filename>.</para> + + <para>Op de <acronym>NFS</acronym> server dienen de volgende + opties in <filename>/etc/rc.conf</filename> te staan:</para> + + <programlisting>rpcbind_enable="YES" +nfs_server_enable="YES" +mountd_flags="-r"</programlisting> + + <para><application>mountd</application> start automatisch als de + <acronym>NFS</acronym> server is ingeschakeld.</para> + + <para>Op de cliënt dient de volgende optie in + <filename>/etc/rc.conf</filename> te staan:</para> + + <programlisting>nfs_client_enable="YES"</programlisting> + + <para>In het bestand <filename>/etc/exports</filename> staat + beschreven welke bestandssystemen <acronym>NFS</acronym> moet + exporteren (soms heet dat ook wel delen of + <quote>sharen</quote>). Iedere regel in + <filename>/etc/exports</filename> 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;.</para> + + <para>Nu volgen een aantal voorbeelden voor + <filename>/etc/exports</filename>:</para> + + <indexterm> + <primary>NFS</primary> + + <secondary>exportvoorbeelden</secondary> + </indexterm> + + <para>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 <filename>/cdrom</filename> te exporteren + naar drie machines die dezelfde domeinnaam hebben als de server + (vandaar dat de machinenamen geef domeinachtervoegsel hebben) + of in <filename>/etc/hosts</filename> staan. De vlag + <option>-ro</option> exporteert het bestandssysteem als + alleen–lezen. Door die vlag kan een ander systeem niet + schrijven naar het geëxporteerde bestandssysteem.</para> + + <programlisting>/cdrom -ro host1 host2 host3</programlisting> + + <para>Het volgende voorbeeld exporteert + <filename>/home</filename> naar drie hosts op basis van + IP-adres. Dit heeft zin als er een privaat netwerk bestaat, + zonder dat er een <acronym>DNS</acronym> server is ingesteld. + Optioneel kan <filename>/etc/hosts</filename> gebruikt worden + om interne hostnamen in te stellen. Er is meer informatie te + vinden in &man.hosts.5;. Met de vlag <option>-alldirs</option> + mogen submappen ook koppelpunten zijn. De submap wordt dan niet + feitelijk aangekoppeld, maar de cliënt koppelt dan alleen + de submappen aan die verplicht of nodig zijn.</para> + + <programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting> + + <para>Het volgende voorbeeld exporteert <filename>/a</filename> + zo dat twee cliënten uit verschillende domeinen bij het + bestandssysteem mogen. Met de vlag + <option>–maproot=root</option> mag de gebruiker op het + andere systeem gegevens naar het geëxporteerde + bestandssysteem schrijven als <username>root</username>. Als + de vlag <option>-maproot=root</option> niet wordt gebruikt, dan + kan een gebruiker geen bestanden wijzigen op het + geëxporteerde bestandssysteem, zelfs niet als een gebruiker + daar <username>root</username> is.</para> + + <programlisting>/a -maproot=root host.example.com box.example.org</programlisting> + + <para>Om een cliënt toegang te geven tot een + geëxporteerd bestandssysteem, moet die cliënt daar + rechten voor hebben. De cliënt moet daarvoor genoemd + worden in <filename>/etc/exports</filename>.</para> + + <para>In <filename>/etc/exports</filename> 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 + <filename>/usr</filename> een enkel bestandssysteem is. Dan is + de volgende <filename>/etc/exports</filename> niet geldig:</para> + + <programlisting>># Werkt niet als /usr 1 bestandssysteem is +/usr/src client +/usr/ports client</programlisting> + + <para>Eén bestandssysteem, <filename>/usr</filename>, + heeft twee regels waarin exports naar dezelfde host worden + aangegeven, <hostid>client</hostid>. In deze situatie is de + juiste instelling:</para> + + <programlisting>/usr/src /usr/ports client</programlisting> + + <para>De eigenschappen van een bestandssysteem dat naar een + bepaalde host wordt geëxporteerd moeten allemaal op + één regel staan. Regels waarop geen cliënt + wordt aangegeven worden behandeld als een enkele host. Dit + beperkt hoe bestandssysteem geëxporteerd kunnen worden, + maar dat blijkt meestal geen probleem te zijn.</para> + + <para>Het volgende voorbeeld is een geldige exportlijst waar + <filename>/usr</filename> en <filename>/exports</filename> + lokale bestandssystemen zijn:</para> + + <programlisting># Exporteer src en ports naar client01 en client02, +# maar alleen client01 heeft er rootprivileges +/usr/src /usr/ports -maproot=root client01 +/usr/src /usr/ports client02 +# De cliëntmachines hebben rootrechten en kunnen overal aankoppelen +# op /exports. Iedereen in de wereld kan /exports/obj als alleen-lezen aankoppelen. +/exports -alldirs -maproot=root client01 client02 +/exports/obj -ro</programlisting> + + <para>De daemon <application>mountd</application> moet gedwongen + worden om het bestand <filename>/etc/exports</filename> te + controleren steeds wanneer het is aangepast, zodat de + veranderingen effectief kunnen worden. Dit kan worden bereikt + door òfwel een HUP-signaal naar de draaiende daemon te + sturen:</para> + + <screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen> + + <para>of door het &man.rc.8; script <command>mountd</command> met + de juiste parameter aan te roepen:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen> + + <para>Raadpleeg <xref linkend="configtuning-rcd"/> voor meer + informatie over het gebruik van rc-scripts.</para> + + <para>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 + <username>root</username> hoort hetzelfde resultaat te + hebben.</para> + + <para>Op de <acronym>NFS</acronym> server:</para> + + <screen>&prompt.root; <userinput>rpcbind</userinput> +&prompt.root; <userinput>nfsd -u -t -n 4</userinput> +&prompt.root; <userinput>mountd -r</userinput></screen> + + <para>Op de <acronym>NFS</acronym> cliënt:</para> + + <screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen> + + <para>Nu is alles klaar om feitelijk het netwerkbestandssysteem + aan te koppelen. In de volgende voorbeelden is de naam van de + server <hostid>server</hostid> en de naam van de cliënt is + <hostid>client</hostid>. Om een netwerkbestandssysteem slechts + tijdelijk aan te koppelen of om alleen te testen, kan een + commando als het onderstaande als <username>root</username> op + de cliënt uitgevoerd worden:</para> + + <indexterm> + <primary>NFS</primary> + + <secondary>aankoppelen</secondary> + </indexterm> + + <screen>&prompt.root; <userinput>mount server:/home /mnt</userinput></screen> + + <para>Hiermee wordt de map <filename>/home</filename> op de server + aangekoppeld op <filename>/mnt</filename> op de cliënt. + Als alles juist is ingesteld, zijn nu in + <filename>/mnt</filename> op de cliënt de bestanden van de + server zichtbaar.</para> + + <para>Om een netwerkbestandssysteem iedere keer als een computer + opstart aan te koppelen, kan het bestandssysteem worden + toegevoegd aan het bestand <filename>/etc/fstab</filename>:</para> + + <programlisting>server:/home /mnt nfs rw 0 0</programlisting> + + <para>Alle beschikbare opties staan in &man.fstab.5;.</para> + </sect2> + + <sect2> + <title>Op slot zetten</title> + + <para>Voor sommige applicaties (b.v. + <application>mutt</application>) is het nodig dat bestanden op + slot staan om correct te werken. In het geval van + <acronym>NFS</acronym>, kan <application>rpc.lockd</application> + worden gebruikt voor het op slot zetten van bestanden. Voeg het + volgende toe aan het bestand <filename>/etc/rc.conf</filename> + op zowel de cliënt als de server om het aan te zetten (het + wordt aangenomen dat de <acronym>NFS</acronym>-cliënt en + -server reeds zijn geconfigureerd):</para> + + <programlisting>rpc_lockd_enable="YES" +rpc_statd_enable="YES"</programlisting> + + <para>Start de applicatie met:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/lockd start</userinput> +&prompt.root; <userinput>/etc/rc.d/statd start</userinput></screen> + + <para>Als echt op slot zetten tussen de + <acronym>NFS</acronym>-cliënten en de + <acronym>NFS</acronym>-server niet nodig is, is het mogelijk om + de <acronym>NFS</acronym>-cliënt bestanden lokaal op slot + te laten zetten door <option>-L</option> aan &man.mount.nfs.8; + door te geven. In de handleidingpagina &man.mount.nfs.8; staan + verdere details.</para> + </sect2> + + <sect2> + <title>Mogelijkheden voor gebruik</title> + + <para><acronym>NFS</acronym> is voor veel doeleinden in te zetten. + Een aantal voorbeelden:</para> + + <indexterm> + <primary>NFS</primary> + + <secondary>gebruik</secondary> + </indexterm> + + <itemizedlist> + <listitem> + <para>Een aantal machines een CD-ROM of andere media laten + delen. Dat is goedkoper en vaak ook handiger, bijvoorbeeld + bij het installeren van software op meerdere + machines;</para> + </listitem> + + <listitem> + <para>Op grote netwerken kan het praktisch zijn om een + centrale <acronym>NFS</acronym> 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;</para> + </listitem> + + <listitem> + <para>Meerdere machines kunnen een gezamenlijke map + <filename>/usr/ports/distfiles</filename> hebben. Dan is + het mogelijk om een port op meerdere machines te + installeren, zonder op iedere machine de broncode te hoeven + downloaden.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2 id="network-amd"> + <sect2info> + <authorgroup> + <author> + <firstname>Wylie</firstname> + <surname>Stilwell</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + + <authorgroup> + <author> + <firstname>Chern</firstname> + <surname>Lee</surname> + <contrib>Herschreven door </contrib> + </author> + </authorgroup> + </sect2info> + + <title>Automatisch aankoppelen met + <application>amd</application></title> + + <indexterm><primary>amd</primary></indexterm> + + <indexterm><primary>automatic mounter daemon</primary></indexterm> + + <para>&man.amd.8; (de automatic mounter daemon) koppelt + automatisch netwerkbestandssystemen aan als er aan een bestand + of map binnen dat bestandssysteem wordt gerefereerd. + <application>amd</application> ontkoppelt ook bestandssystemen + die een bepaalde tijd niet gebruikt worden. Het gebruikt van + <application>amd</application> is een aantrekkelijk en eenvoudig + alternatief ten opzichte van permanente koppelingen, die meestal + in <filename>/etc/fstab</filename> staan.</para> + + <para><application>amd</application> werkt door zichzelf als + NFS-server te koppelen aan de mappen <filename>/host</filename> + en <filename>/net</filename>. Als binnen die mappen een bestand + wordt geraadpleegd, dan zoekt <application>amd</application> de + bijbehorende netwerkkoppeling op en koppelt die automatisch aan. + <filename>/net</filename> wordt gebruikt om een + geëxporteerd bestandssysteem van een IP-adres aan te + koppelen, terwijl <filename>/host</filename> wordt gebruikt om + een geëxporteerd bestandssysteem van een hostnaam aan te + koppelen.</para> + + <para>Het raadplegen van een bestand in + <filename>/host/foobar/usr</filename> geeft + <application>amd</application> aan dat die moet proberen de + <filename>/usr</filename> export op de host + <hostid>foobar</hostid> aan te koppelen.</para> + + <example> + <title>Een export aankoppelen met + <application>amd</application></title> + + <para>De beschikbare koppelingen van een netwerkhost zijn te + bekijken met <command>showmount</command>. Om bijvoorbeeld + de koppelingen van de host <hostid>foobar</hostid> te + bekijken:</para> + + <screen>&prompt.user; <userinput>showmount -e foobar</userinput> +Exports list on foobar: +/usr 10.10.10.0 +/a 10.10.10.0 +&prompt.user; <userinput>cd /host/foobar/usr</userinput></screen> + </example> + + <para>Zoals in het bovenstaande voorbeeld te zien is, toont + <command>showmount</command> <filename>/usr</filename> als een + export. Als er naar de map + <filename>/host/foobar/usr</filename> wordt gegaan, probeert + <application>amd</application> de hostnaam + <hostid>foobar</hostid> te resolven en de gewenste export + automatisch aan te koppelen.</para> + + <para><application>amd</application> kan gestart worden door de + opstartscript door de volgende regel in + <filename>/etc/rc.conf</filename> te plaatsen:</para> + + <programlisting>amd_enable="YES"</programlisting> + + <para>Er kunnen ook nog opties meegegeven worden aan + <application>amd</application> met de optie + <varname>amd_flags</varname>. Standaard staat + <varname>amd_flags</varname> ingesteld op:</para> + + <programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting> + + <para>In het bestand <filename>/etc/amd.map</filename> staan + de standaardinstellingen waarmee exports aangekoppeld worden. + In het bestand <filename>/etc/amd.conf</filename> staan een + aantal van de meer gevorderde instellingen van + <application>amd</application>.</para> + + <para>In &man.amd.8; en &man.amd.conf.5; staat meer + informatie.</para> + </sect2> + + <sect2 id="network-nfs-integration"> + <sect2info> + <authorgroup> + <author> + <firstname>John</firstname> + <surname>Lind</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect2info> + + <title>Problemen bij samenwerking met andere systemen</title> + + <para>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.</para> + + <para>Het probleem ontstaat bijna altijd als (&os;) PC-systemen + netwerken met hoog presterende werkstations, zoals van Silicon + Graphics, Inc. en Sun Microsystems, Inc. De NFS-koppeling werkt + prima en wellicht lukken een aantal acties ook, maar dan ineens + lijkt de server niet meer te reageren voor de cliënt, + hoewel verzoeken van en naar andere systemen gewoon verwerkt + worden. Dit gebeurt op een cliëntsysteem, of de + cliënt nu het &os; systeem is of het werkstation. Op veel + systemen is er geen manier om de cliënt netjes af te + sluiten als dit probleem is ontstaan. Vaak is de enige + mogelijkheid een reset van de cliënt, omdat het probleem + met NFS niet opgelost kan worden.</para> + + <para>Hoewel de enige <quote>correcte</quote> 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 <emphasis>server</emphasis> is, kan de + optie <option>-w=1024</option> gebruikt worden bij het + aankoppelen door de cliënt. Als het &os; systeem de + <emphasis>cliënt</emphasis> is, dan dient het + NFS-bestandssysteem aangekoppeld te worden met de optie + <option> r=1024</option>. Deze opties kunnen het vierde + veld zijn in een regel in <filename>fstab</filename> voor + automatische aankoppelingen en bij handmatige aankoppelingen met + &man.mount.8; kan de parameter <option>-o</option> gebruikt + worden.</para> + + <para>Soms wordt een ander probleem voor dit probleem versleten, + als servers en cliënten zich op verschillende netwerken + bevinden. Als dat het geval is, dan dient + <emphasis>vastgesteld</emphasis> te worden dat routers de + <acronym>UDP</acronym> informatie op de juiste wijze routeren, + omdat er anders nooit NFS-verkeer gerouteerd kan worden.</para> + + <para>In de volgende voorbeelden is <hostid>fastws</hostid> de + host(interface)naam van een hoog presterend werkstation en + <hostid>freebox</hostid> is de host(interface)naam van een &os; + systeem met een Ethernet adapter die mindere prestaties levert. + <filename>/sharedfs</filename> wordt het geëxporteerde + NFS-bestandssysteem (zie &man.exports.5;) en + <filename>/project</filename> wordt het koppelpunt voor het + geëxporteerde bestandssysteem op de cliënt.</para> + + <note> + <para>In sommige gevallen kunnen applicaties beter draaien als + extra opties als <option>hard</option> of + <option>soft</option> en <option>bg</option> gebruikt + worden.</para> + </note> + + <para>Voorbeelden voor het &os; systeem (<hostid>freebox</hostid>) + als de cliënt in <filename>/etc/fstab</filename> op + <hostid>freebox</hostid>:</para> + + <programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting> + + <para>Als een handmatig aankoppelcommando op + <hostid>freebox</hostid>:</para> + + <screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen> + + <para>Voorbeelden voor het &os; systeem als de server in + <filename>/etc/fstab</filename> op + <hostid>fastws</hostid>:</para> + + <programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting> + + <para>Als een handmatig aankoppelcommando op + <hostid>fastws</hostid>:</para> + + <screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen> + + <para>Bijna iedere 16–bit Ethernet adapter werkt zonder de + hierboven beschreven restricties op de lees- en + schrijfgrootte.</para> + + <para>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 + <quote>block</quote>grootte 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 <quote>block</quote> opgesplitst in meerdere + Ethernetpakketten, hoewel het hoger in de code nog steeds + één eenheid is, en wordt ontvangen, samengevoegd en + <emphasis>bevestigd</emphasis> als een eenheid. De hoog + presterende 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 timeout en probeert die de eenheid + opnieuw te sturen, maar dan weer de hele eenheid van 8 K, + waardoor het proces wordt herhaald, ad infinitum.</para> + + <para>Door de grootte van de eenheid kleiner te houden dan de + grootte van een Ethernet pakket, is het zeker dat elk + Ethernetpakket dat compleet is aangekomen bevestigd kan worden, + zodat de deadlock niet ontstaat.</para> + + <para>Toch kan een PC systeem nog wel overrompeld worden als hoog + presterende werkstations er op inhakken, maar met de betere + netwerkkaarten valt het dan in ieder geval niet om door de NFS + <quote>eenheden</quote>. 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.</para> + </sect2> + </sect1> + + <sect1 id="network-nis"> + <sect1info> + <authorgroup> + <author> + <firstname>Bill</firstname> + <surname>Swingle</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + + <authorgroup> + <author> + <firstname>Eric</firstname> + <surname>Ogren</surname> + <contrib>Verbeterd door </contrib> + </author> + + <author> + <firstname>Udo</firstname> + <surname>Erdelhoff</surname> + </author> + </authorgroup> + </sect1info> + + <title>Netwerkinformatiesysteem (NIS/YP)</title> + + <sect2> + <title>Wat is het?</title> + + <indexterm><primary>NIS</primary></indexterm> + + <indexterm><primary>Solaris</primary></indexterm> + + <indexterm><primary>HP-UX</primary></indexterm> + + <indexterm><primary>AIX</primary></indexterm> + + <indexterm><primary>Linux</primary></indexterm> + + <indexterm><primary>NetBSD</primary></indexterm> + + <indexterm><primary>OpenBSD</primary></indexterm> + + <para><acronym role="Network Information System">NIS</acronym>, + 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 <acronym + role="Network Information System">NIS</acronym>.</para> + + <indexterm><primary>yellow pages</primary><see>NIS</see></indexterm> + + <para><acronym role="Network Information System">NIS</acronym> + 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.</para> + + <indexterm> + <primary>NIS</primary> + + <secondary>domeinen</secondary> + </indexterm> + + <para>Het is een op RPC-gebaseerd cliënt/serversysteem + waarmee een groep machines binnen een NIS-domein een + gezamenlijke verzameling 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.</para> + + <indexterm><primary>Windows NT</primary></indexterm> + + <para>Het is te vergelijken met het &windowsnt; domeinsysteem en + hoewel de interne implementatie van de twee helemaal niet + overeenkomt, is de basisfunctionaliteit vergelijkbaar.</para> + </sect2> + + <sect2> + <title>Termen en processen om te onthouden</title> + + <para>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-cliënt is:</para> + + <indexterm><primary><application>rpcbind</application></primary></indexterm> + + <indexterm><primary><application>portmap</application></primary></indexterm> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <colspec colwidth="1*"/> + <colspec colwidth="3*"/> + + <thead> + <row> + <entry>Term</entry> + + <entry>Beschrijving</entry> + </row> + </thead> + + <tbody> + <row> + <entry>NIS-domeinnaam</entry> + + <entry>Een NIS-masterserver en al zijn cliënten + (inclusief zijn slave master) hebben een NIS-domeinnaam. + Vergelijkbaar met een &windowsnt; domeinnaam, maar de + NIS-domeinnaam heeft niets te maken met + <acronym>DNS</acronym>.</entry> + </row> + + <row> + <entry><application>rpcbind</application></entry> + + <entry>Moet draaien om <acronym>RPC</acronym> (Remote + Procedure Call in te schakelen, een netwerkprotocol dat + door NIS gebruikt wordt). Als + <application>rpcbind</application> niet draait, dan kan + er geen NIS-server draaien en kan een machine ook geen + NIS-cliënt zijn.</entry> + </row> + + <row> + <entry><application>ypbind</application></entry> + + <entry><quote>Verbindt</quote> een NIS-cliënt aan + zijn NIS-server. Dat gebeurt door met de NIS-domeinnaam + van het systeem en door het gebruik van + <acronym>RPC</acronym> te verbinden met de server. + <application>ypbind</application> is de kern van + cliënt-server communicatie in een NIS-omgeving. + Als <application>ypbind</application> op een machine + stopt, dan kan die niet meer bij de NIS-server komen.</entry> + </row> + + <row> + <entry><application>ypserv</application></entry> + + <entry>Hoort alleen te draaien op NIS-servers. Dit is + het NIS-serverproces zelf. Als &man.ypserv.8; stopt, + dan kan de server niet langer reageren op NIS-verzoeken + (hopelijk is er dan een slaveserver 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 serverproces herstarten (of + zelfs de hele server) of het + <application>ypbind</application>-proces op de + cliënt.</entry> + </row> + + <row> + <entry><application>rpc.yppasswdd</application></entry> + + <entry>Nog een proces dat alleen op NIS-masterservers + hoort te draaien. Dit is een daemon waarbij + NIS-cliënten hun NIS-wachtwoorden kunnen wijzigen. + Als deze daemon niet draait, moeten gebruikers zich + aanmelden op de NIS-masterserver en daar hun wachtwoord + wijzigen.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + <!-- XXX Missing: rpc.ypxfrd (not important, though) May only run + on the master --> + </sect2> + + <sect2> + <title>Hoe werkt het?</title> + + <para>Er zijn drie typen hosts in een NIS-omgeving: master + servers, slaveservers en cliënten. Servers zijn het + centrale depot voor instellingen voor een host. Masterservers + bevatten de geautoriseerd kopie van die informatie, terwijl + slaveservers die informatie spiegelen voor redundantie. + Cliënten verlaten zich op de servers om hun die informatie + ter beschikking te stellen.</para> + + <para>Op deze manier kan informatie uit veel bestanden gedeeld + worden. De bestanden <filename>master.passwd</filename>, + <filename>group</filename> en <filename>hosts</filename> + worden meestal via NIS gedeeld. Als een proces op een + cliënt 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.</para> + + <sect3> + <title>Soorten machines</title> + + <itemizedlist> + <indexterm> + <primary>NIS</primary> + + <secondary>masterserver</secondary> + </indexterm> + + <listitem> + <para>Een <emphasis>NIS-masterserver</emphasis>. Deze + server onderhoudt, analoog aan een &windowsnt; primaire + domeincontroller, de bestanden die door alle + NIS-cliënten gebruikt worden. De bestanden + <filename>passwd</filename>, <filename>group</filename> en + andere bestanden die door de NIS-cliënten gebruikt + worden staan op de masterserver.</para> + + <note> + <para>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.</para> + </note> + </listitem> + + <listitem> + <indexterm> + <primary>NIS</primary> + + <secondary>slaveserver</secondary> + </indexterm> + + <para><emphasis>NIS-slaveservers</emphasis>. Deze zijn + te vergelijken met &windowsnt; backup domain controllers. + NIS-slaveservers beheren een kopie van de bestanden met + gegevens op de NIS-master. NIS-slaveservers bieden + redundantie, die nodig is in belangrijke omgevingen. Ze + helpen ook om de belasting te verdelen met de master + server: NIS-cliënten maken altijd een verbinding met + de NIS-server die het eerst reageert en dat geldt ook voor + antwoorden van slaveservers.</para> + </listitem> + + <listitem> + <indexterm> + <primary>NIS</primary> + + <secondary>cliënt</secondary> + </indexterm> + + <para><emphasis>NIS-cliënten</emphasis>. + NIS-cliënten 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.</para> + </listitem> + </itemizedlist> + </sect3> + </sect2> + + <sect2> + <title>NIS/YP gebruiken</title> + + <para>Dit onderdeel behandelt het opzetten van een + NIS-voorbeeldomgeving.</para> + + <sect3> + <title>Plannen</title> + + <para>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 <filename>/etc/passwd</filename> en + <filename>/etc/master.passwd</filename>. 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 <command>adduser</command> 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.</para> + + <para>Het lab ziet er ongeveer als volgt uit:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="3"> + <thead> + <row> + <entry>Machinenaam</entry> + + <entry>IP-adres</entry> + + <entry>Rol Machine</entry> + </row> + </thead> + + <tbody> + <row> + <entry><hostid>ellington</hostid></entry> + + <entry><hostid role="ipaddr">10.0.0.2</hostid></entry> + + <entry>NIS-master</entry> + </row> + + <row> + <entry><hostid>coltrane</hostid></entry> + + <entry><hostid role="ipaddr">10.0.0.3</hostid></entry> + + <entry>NIS-slave</entry> + </row> + + <row> + <entry><hostid>basie</hostid></entry> + + <entry><hostid role="ipaddr">10.0.0.4</hostid></entry> + + <entry>Wetenschappelijk werkstation</entry> + </row> + + <row> + <entry><hostid>bird</hostid></entry> + + <entry><hostid role="ipaddr">10.0.0.5</hostid></entry> + + <entry>Cliënt machine</entry> + </row> + + <row> + <entry><hostid>cli[1-11]</hostid></entry> + + <entry><hostid + role="ipaddr">10.0.0.[6-17]</hostid></entry> + + <entry>Andere cliënt machines</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>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.</para> + + <sect4> + <title>Een NIS-domeinnaam kiezen</title> + + <indexterm> + <primary>NIS</primary> + + <secondary>domeinnaam</secondary> + </indexterm> + + <para>Dit is wellicht niet de bekende + <quote>domeinnaam</quote>. Daarom wordt het ook de + <quote>NIS-domeinnaam</quote> genoemd. Bij de broadcast + van een cliënt 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 kan voorgesteld worden als de naam van een + groep hosts die op een of andere manier aan elkaar + gerelateerd zijn.</para> + + <para>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 <quote>acme-fin</quote> hebben. + In dit voorbeeld wordt de naam + <literal>test-domain</literal> gekozen.</para> + + <indexterm><primary>SunOS</primary></indexterm> + + <para>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 <emphasis>moet</emphasis> de Internet-domeinnaam + als de naam voor het NIS-domeinnaam gekozen worden.</para> + </sect4> + + <sect4> + <title>Systeemeisen</title> + + <para>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 + cliënten van de server. Als een cliënt 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 <emphasis>alle</emphasis> NIS-cliënten.</para> + </sect4> + </sect3> + + <sect3> + <title>NIS-servers</title> + + <para>De hoofdversies van alle NIS-informatie staan opgeslagen + op één machine die de NIS-masterserver heet. De + databases waarin de informatie wordt opgeslagen heten + NIS-afbeeldingen. In &os; worden die afbeeldingen opgeslagen + in <filename>/var/yp/[domeinnaam]</filename> waar + <filename>[domeinnaam]</filename> 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 verzameling afbeeldingen.</para> + + <para>In NIS-master- en -slaveservers worden alle NIS-verzoeken + door de daemon <command>ypserv</command> afgehandeld. + <command>ypserv</command> is verantwoordelijk voor het + ontvangen van inkomende verzoeken van NIS-cliënten, het + vertalen van de gevraagde domeinnaam en mapnaam naar een pad + naar het corresponderende databasebestand en het terugsturen + van de database naar de cliënten.</para> + + <sect4> + <title>Een NIS-masterserver opzetten</title> + + <indexterm> + <primary>NIS</primary> + + <secondary>server opzetten</secondary> + </indexterm> + + <para>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 <filename>/etc/rc.conf</filename> + toegevoegd te worden en &os; doet de rest:</para> + + <procedure> + <step> + <para><programlisting>nisdomainname="test-domain"</programlisting> + + Deze regel stelt de NIS-domeinnaam in op + <literal>test-domain</literal> bij het instellen van het + netwerk (bij het opstarten).</para> + </step> + + <step> + <para><programlisting>nis_server_enable="YES"</programlisting> + + Dit geeft &os; aan de NIS-serverprocessen te starten + als het netwerk de volgende keer wordt opgestart.</para> + </step> + + <step> + <para><programlisting>nis_yppasswdd_enable="YES"</programlisting> + + Dit schakelt de daemon <command>rpc.yppasswdd</command> + in die, zoals al eerder aangegeven, cliënten + toestaat om hun NIS-wachtwoord vanaf een + cliënt-machine te wijzigen.</para> + </step> + </procedure> + + <note> + <para>Afhankelijk van de inrichting van NIS, kunnen er nog + meer instellingen nodig zijn. In het onderdeel <link + linkend="network-nis-server-is-client">NIS-servers die + ook NIS-cliënten zijn</link> staan meer details.</para> + </note> + + <para>Draai na het instellen van bovenstaande regels het commando + <command>/etc/netstart</command> als supergebruiker. Het zal alles + voor u instellen, gebruikmakende van de waarden die u in + <filename>/etc/rc.conf</filename> heeft ingesteld. Start als + laatste stap, voor het initialiseren van de NIS-afbeeldingen, de + daemon <application>ypserv</application> handmatig:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/ypserv start</userinput></screen> + </sect4> + + <sect4> + <title>NIS-afbeeldingen initialiseren</title> + + <indexterm> + <primary>NIS</primary> + + <secondary>afbeeldingen</secondary> + </indexterm> + + <para>Die <emphasis>NIS-afbeeldingen</emphasis> zijn + databasebestanden die in de map <filename>/var/yp</filename> + staan. Ze worden gemaakt uit de bestanden met instellingen + uit de map <filename>/etc</filename> van de NIS-master, met + één uitzondering: + <filename>/etc/master.passwd</filename>. Daar is een goede + reden voor, want het is niet wenselijk om de wachtwoorden + voor <username>root</username> en andere administratieve + accounts naar alle servers in het NIS-domein te sturen. + Daar moet voor het initialiseren van de NIS-afbeeldingen het + volgende uitgevoerd worden:</para> + + <screen>&prompt.root; <userinput>cp /etc/master.passwd /var/yp/master.passwd</userinput> +&prompt.root; <userinput>cd /var/yp</userinput> +&prompt.root; <userinput>vi master.passwd</userinput></screen> + + <para>Dan horen alle systeemaccounts verwijderd te worden + (<username>bin</username>, <username>tty</username>, + <username>kmem</username>, <username>games</username>, + enzovoort) en alle overige accounts waarvoor het niet + wenselijk is dat ze op de NIS-cliënten terecht komen + (bijvoorbeeld <username>root</username> en alle andere UID 0 + (supergebruiker) accounts).</para> + + <note> + <para><filename>/var/yp/master.passwd</filename> hoort niet + te lezen te zijn voor een groep of voor de wereld (dus + modus 600)! Voor het aanpassen van de rechten kan + <command>chmod</command> gebruikt worden.</para> + </note> + + <indexterm><primary>Tru64 UNIX</primary></indexterm> + + <para>Als dat is gedaan, kunnen de NIS-afbeeldingen + geïnitialiseerd worden. Bij &os; zit een script + <command>ypinit</command> 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 + <command>ypsetup</command>. Omdat er afbeeldingen voor een + NIS-master worden gemaakt, wordt de optie + <option>–m</option> meegegeven aan + <command>ypinit</command>. Aangenomen dat de voorgaande + stappen zijn uitgevoerd, kunnen de NIS-afbeeldingen gemaakt + worden op de volgende manier:</para> + + <screen>ellington&prompt.root; <userinput>ypinit -m test-domain</userinput> +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] <userinput>n</userinput> +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: <userinput>coltrane</userinput> +next host to add: <userinput>^D</userinput> +The current list of NIS servers looks like this: +ellington +coltrane +Is this correct? [y/n: y] <userinput>y</userinput> + +[..uitvoer van het maken van de afbeeldingen..] + +NIS Map update completed. +ellington has been setup as an YP master server without any errors.</screen> + + <para><command>ypinit</command> hoort + <filename>/var/yp/Makefile</filename> gemaakt te hebben uit + <filename>/var/yp/Makefile.dist</filename>. 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 <literal>test-domain</literal> ook een + slaveserver bevat, dient + <filename>/var/yp/Makefile</filename> gewijzigd te + worden:</para> + + <screen>ellington&prompt.root; <userinput>vi /var/yp/Makefile</userinput></screen> + + <para>Als de onderstaande regel niet al uitgecommentarieerd + is, dient dat alsnog te gebeuren:</para> + + <programlisting>NOPUSH = "True"</programlisting> + </sect4> + + <sect4> + <title>Een NIS-slaveserver opzetten</title> + + <indexterm> + <primary>NIS</primary> + + <secondary>slaveserver</secondary> + </indexterm> + + <para>Het opzetten van een NIS-slaveserver is nog makkelijker + dan het opzetten van de master. Dit kan door aan te melden + op de slaveserver en net als voor de masterserver + <filename>/etc/rc.conf</filename> te wijzigen. Het enige + verschil is dat nu de optie <option>–s</option> + gebruikt wordt voor het draaien van + <command>ypinit</command>. Met de optie + <option>–s</option> moet ook de naam van de NIS-master + meegegeven worden. Het commando ziet er dus als volgt uit:</para> + + <screen>coltrane&prompt.root; <userinput>ypinit -s ellington test-domain</userinput> + +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] <userinput>n</userinput> + +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.</screen> + + <para>Nu hoort er een map + <filename>/var/yp/test-domain</filename> te zijn waarin + kopieë van de NIS-masterserver afbeeldingen staan. Die + moeten bijgewerkt blijven. De volgende regel in + <filename>/etc/crontab</filename> op de slaveservers regelt + dat:</para> + + <programlisting>20 * * * * root /usr/libexec/ypxfr passwd.byname +21 * * * * root /usr/libexec/ypxfr passwd.byuid</programlisting> + + <para>Met de bovenstaande twee regels wordt de slave gedwongen zijn + afbeeldingen met de afbeeldingen op de masterserver te + synchroniseren. Dit is niet verplicht omdat de masterserver + automatisch probeert veranderingen aan de NIS-afbeeldingen door te + geven aan zijn slaves. Echter, vanwege het belang van correcte + wachtwoordinformatie op andere cliënten die van de slaveserver + afhankelijk zijn, is het aanbevolen om specifiek de + wachtwoordafbeeldingen vaak tot bijwerken te dwingen. Dit is des + te belangrijker op drukke netwerken, omdat daar het bijwerken van + afbeeldingen niet altijd compleet afgehandeld hoeft te + worden.</para> + + <para>Nu kan ook op de slaveserver het commando + <command>/etc/netstart</command> uitgevoerd worden, dat op + zijn beurt de NIS-server start.</para> + </sect4> + </sect3> + + <sect3> + <title>NIS-cliënten</title> + + <para>Een NIS-cliënt maakt wat heet een verbinding + (binding) met een NIS-server met de daemon + <command>ypbind</command>. <command>ypbind</command> + controleert het standaarddomein van het systeem (zoals + ingesteld met <command>domainname</command>) en begint met het + broadcasten van RPC-verzoeken op het lokale netwerk. Die + verzoeken bevatten de naam van het domein waarvoor + <command>ypbind</command> een binding probeert te maken. Als + een server die is ingesteld om het gevraagde domein te + bedienen een broadcast ontvangt, dan antwoordt die aan + <command>ypbind</command> dat dan het IP-adres van de server + opslaat. Als er meerdere servers beschikbaar zijn, een master + en bijvoorbeeld meerdere slaves, dan gebruikt + <command>ypbind</command> het adres van de eerste server die + antwoord geeft. Vanaf dat moment stuurt de cliënt alle + NIS-verzoeken naar die server. <command>ypbind</command> + <quote>pingt</quote> 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 <command>ypbind</command> het + domein als niet verbonden en begint het broadcasten opnieuw, + in de hoop dat er een andere server wordt gelocaliseerd.</para> + + <sect4> + <title>Een NIS-cliënt opzetten</title> + + <indexterm> + <primary>NIS</primary> + + <secondary>cliënt instellen</secondary> + </indexterm> + + <para>Het opzetten van een &os; machine als NIS-cliënt is + redelijk doorzichtig:</para> + + <procedure> + <step> + <para>Wijzig <filename>/etc/rc.conf</filename> en voeg de + volgende regels toe om de NIS-domeinnaam in te stellen + en <command>ypbind</command> mee te laten starten bij + het starten van het netwerk:</para> + + <programlisting>nisdomainname="test-domain" +nis_client_enable="YES"</programlisting> + </step> + + <step> + <para>Om alle mogelijke regels voor accounts uit de + NIS-server te halen, dienen alle gebruikersaccounts uit + <filename>/etc/master.passwd</filename> verwijderd te + worden en dient met <command>vipw</command> de volgende + regel aan het einde van het bestand geplaatst te + worden:</para> + + <programlisting>+:::::::::</programlisting> + + <note> + <para>Door deze regel wordt alle geldige accounts + in de wachtwoordafbeelding van de NIS-server toegang + gegeven. Er zijn veel manieren om de NIS-cliënt + in te stellen door deze regel te veranderen. In het + onderdeel <link + linkend="network-netgroups">netgroepen</link> + hieronder staat meer informatie. Zeer gedetailleerde + informatie staat in het boek <literal>NFS en NIS + beheren</literal> van O'Reilly.</para> + </note> + + <note> + <para>Er moet tenminste één lokale account + behouden blijven (dus niet geïmporteerd via NIS) + in <filename>/etc/master.passwd</filename> en die + hoort ook lid te zijn van de groep + <groupname>wheel</groupname>. Als er iets mis is met + NIS, dan kan die account gebruikt worden om via het + netwerk aan te melden, <username>root</username> te + worden en het systeem te repareren.</para> + </note> + </step> + + <step> + <para>Om alle groepen van de NIS-server te importeren, kan + de volgende regel aan <filename>/etc/group</filename> + toegevoegd worden:</para> + + <programlisting>+:*::</programlisting> + </step> + </procedure> + + <para>Voer, om de NIS-cliënt onmiddelijk te starten, de volgende + commando's als supergebruiker uit:</para> + + <screen>&prompt.root; <userinput>/etc/netstart</userinput> +&prompt.root; <userinput>/etc/rc.d/ypbind start</userinput></screen> + + <para>Na het afronden van deze stappen zou met <command>ypcat + passwd</command> de passwd map van de NIS-server te zien + moeten zijn.</para> + </sect4> + </sect3> + </sect2> + + <sect2> + <title>NIS-beveiliging</title> + + <para>In het algemeen kan iedere netwerkgebruiker een RPC-verzoek + doen uitgaan naar &man.ypserv.8; en de inhoud van de + NIS-afbeeldingen ontvangen, mits die gebruiker de domeinnaam + kent. Omdat soort ongeautoriseerde transacties te voorkomen, + ondersteunt &man.ypserv.8; de optie <quote>securenets</quote>, + 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 + <filename>/var/yp/securenets</filename>.</para> + + <note> + <para>Dit pad kan verschillen, afhankelijk van het pad dat + opgegeven is met de optie <option>–p</option>. Dit + bestand bevat regels die bestaan uit een netwerkspecificatie + en een netwerkmasker, gescheiden door witruimte. Regels die + beginnen met <literal>#</literal> worden als commentaar + gezien. Een voorbeeld van een securenetsbestand zou er zo uit + kunnen zien:</para> + </note> + + <programlisting># 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</programlisting> + + <para>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 + <filename>/var/yp/securenets</filename> niet bestaat, dan + accepteert <command>ypserv</command> verbindingen van iedere + host.</para> + + <para>Het programma <command>ypserv</command> ondersteunt ook het + pakket <application>TCP Wrapper</application> van Wietse Venema. + Daardoor kan een beheerder de instellingenbestanden van + <application>TCP Wrapper</application> gebruiken voor + toegangsbeperking in plaats van + <filename>/var/yp/securenets</filename>.</para> + + <note> + <para>Hoewel beide methoden van toegangscontrole enige vorm van + beveiliging bieden, zijn ze net als de geprivilegieerde + poorttest kwetsbaar voor <quote>IP spoofing</quote> aanvallen. + Al het NIS-gerelateerde verkeer hoort door een firewall + tegengehouden te worden.</para> + + <para>Servers die gebruik maken van + <filename>/var/yp/securenets</filename> kunnen wellicht + legitieme verzoeken van NIS-cliënten 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 + cliënt aan te passen, zorgen andere problemen voor het + noodgedwongen niet langer kunnen gebruiker van NIS voor die + cliënt of het niet langer gebruiken van + <filename>/var/yp/securenets</filename>.</para> + + <para>Het gebruik van <filename>/var/yp/securenets</filename> + 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.</para> + + <indexterm><primary>tcpwrapper</primary></indexterm> + + <para>Het gebruik van het pakket <application>TCP + Wrapper</application> leidt tot langere wachttijden op de + NIS-server. De extra vertraging kan net lang genoeg zijn om + een timeout te veroorzaken in cliëntprogramma's, in het + bijzonder als het netwerk druk is of de NIS-server traag is. + Als een of meer cliënten last hebben van dat symptoom, + dan is het verstandig om de cliëntsysteem in kwestie + NIS-slaveserver te maken en naar zichzelf te laten wijzen.</para> + </note> + </sect2> + + <sect2> + <title>Aanmelden voor bepaalde gebruikers blokkeren</title> + + <para>In het lab staat de machine <hostid>basie</hostid>, die + alleen faculteitswerkstation hoort te zijn. Het is niet + gewenst die machine uit het NIS-domein te halen, maar het + <filename>passwd</filename> bestand op de master NIS-server + bevat nu eenmaal accounts voor zowel de faculteit als de + studenten. Hoe kan dat opgelost worden?</para> + + <para>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 + <literal>–<replaceable>username</replaceable></literal> + aan het einde van <filename>/etc/master.passwd</filename> op de + cliënt machine toegevoegd te worden, waar + <replaceable>username</replaceable> de gebruikersnaam van de + gebruiker die niet mag aanmelden is. Dit gebeurt bij voorkeur + met <command>vipw</command>, omdat <command>vipw</command> + de wijzigingen aan <filename>/etc/master.passwd</filename> + controleert en ook de wachtwoord database opnieuw bouwt na het + wijzigen. Om bijvoorbeeld de gebruiker + <username>bill</username> aan te kunnen laten aanmelden op + <hostid>basie</hostid>:</para> + + <screen>basie&prompt.root; <userinput>vipw</userinput> +<userinput>[add -bill to the end, exit]</userinput> +vipw: rebuilding the database... +vipw: done + +basie&prompt.root; <userinput>cat /etc/master.passwd</userinput> + +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;</screen> + </sect2> + + <sect2 id="network-netgroups"> + <sect2info> + <authorgroup> + <author> + <firstname>Udo</firstname> + <surname>Erdelhoff</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect2info> + + <title>Netgroups gebruiken</title> + + <indexterm><primary>netgroepen</primary></indexterm> + + <para>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 + <emphasis>gebeurt</emphasis> 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: + <emphasis>centraal</emphasis> beheren.</para> + + <para>De ontwikkelaars van NIS hebben dit probleem opgelost met + <emphasis>netgroepen</emphasis>. 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 netgroep aan te maken die zowel gebruikers als andere + netgroepen bevat.</para> + + <para>Netgroepen 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 netgroepen met een paar + eenvoudige voorbeelden uit te leggen. Dat probleem wordt in de + rest van dit onderdeel duidelijk gemaakt.</para> + + <para>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.</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Gebruikersna(a)m(en)</entry> + + <entry>Beschrijving</entry> + </row> + </thead> + + <tbody> + <row> + <entry><username>alpha</username>, + <username>beta</username></entry> + + <entry>Gewone medewerkers van de IT-afdeling</entry> + </row> + + <row> + <entry><username>charlie</username>, + <username>delta</username></entry> + + <entry>Junior medewerkers van de IT-afdeling</entry> + </row> + + <row> + <entry><username>echo</username>, + <username>foxtrott</username>, + <username>golf</username>, ...</entry> + + <entry>Gewone medewerkers</entry> + </row> + + <row> + <entry><username>able</username>, + <username>baker</username>, ...</entry> + + <entry>Stagiairs</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Machinena(a)m(en)</entry> + + <entry>Beschrijving</entry> + </row> + </thead> + + <tbody> + <row> + <!-- Names taken from "Good Omens" by Neil Gaiman and + Terry Pratchett. Many thanks for a brilliant + book. --> + + <entry><hostid>war</hostid>, <hostid>death</hostid>, + <hostid>famine</hostid>, + <hostid>pollution</hostid></entry> + + <entry>De belangrijkste servers. Alleen senior + medewerkers van de IT-afdeling mogen hierop + aanmelden.</entry> + </row> + + <row> + <!-- gluttony was omitted because it was too fat --> + + <entry><hostid>pride</hostid>, <hostid>greed</hostid>, + <hostid>envy</hostid>, <hostid>wrath</hostid>, + <hostid>lust</hostid>, <hostid>sloth</hostid></entry> + + <entry>Minder belangrijke servers. Alle leden van + de IT-afdeling mogen aanmelden op deze machines.</entry> + </row> + + <row> + <entry><hostid>one</hostid>, <hostid>two</hostid>, + <hostid>three</hostid>, <hostid>four</hostid>, + ...</entry> + + <entry>Gewone werkstations. Alleen + <emphasis>echte</emphasis> medewerkers mogen zich op + deze machines aanmelden.</entry> + </row> + + <row> + <entry><hostid>trashcan</hostid></entry> + + <entry>Een erg oude machine zonder kritische data. Zelfs + de stagiair mag deze doos gebruiken.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Als deze restricties ingevoerd worden door iedere gebruiker + afzonderlijk te blokkeren, dan wordt er een + <literal>-<replaceable>user</replaceable></literal> regel per + systeem toegevoegd aan de <filename>passwd</filename> 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 + <emphasis>echt</emphasis> vergeten de regels toe te voegen voor + nieuwe gebruikers in de productiefase. Murphy was tenslotte een + optimist.</para> + + <para>Het gebruik van netgroepen 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 + netgroepen te worden ingesteld. Als er een nieuwe gebruiker + wordt toegevoegd, dan hoeft die alleen maar aan de juiste + netgroepen te worden toegevoegd. Die veranderingen zijn niet + van elkaar afhankelijk: geen <quote>voor iedere combinatie van + gebruiker en machine moet het volgende ...</quote>. 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.</para> + + <para>De eerst stap is het initialiseren van de NIS-afbeelding + 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:</para> + + <screen>ellington&prompt.root; <userinput>vi /var/yp/netgroup</userinput></screen> + + <para>Nu kan hij gevuld worden. In het gebruikte voorbeeld zijn + tenminste vier netgroepen: IT-medewerkers, IT-junioren, gewone + medewerkers en stagiars.</para> + + <programlisting>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)</programlisting> + + <para><literal>IT_MW</literal>, <literal>IT_APP</literal> + enzovoort, zijn de namen van de netgroepen. Iedere groep tussen + haakjes bevat een of meer gebruikersnamen voor die groep. De + drie velden binnen een groep zijn:</para> + + <orderedlist> + <listitem> + <para>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.</para> + </listitem> + + <listitem> + <para>De naam van de account die bij deze netgroep hoort.</para> + </listitem> + + <listitem> + <para>Het NIS-domein voor de account. Er kunnen accounts uit + andere NIS-domeinen geïmporteerd worden in een netgroep + als een beheerder zo ongelukkig is meerdere NIS-domeinen te + hebben.</para> + </listitem> + </orderedlist> + + <para>Al deze velden kunnen jokerkarakters bevatten. Details + daarover staan in &man.netgroup.5;.</para> + + <note> + <indexterm><primary>netgroepen</primary></indexterm> + + <para>De naam van een netgroep 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 netgroepen is een makkelijke manier om onderscheid + te kunnen maken tussen gebruikers-, machine- en + netgroepnamen.</para> + + <para>Sommige NIS-cliënten (andere dan die op &os; draaien) + kunnen niet omgaan met netgroepen met veel leden. Sommige + oudere versies van &sunos; gaan bijvoorbeeld lastig doen als + een netgroep meer dan 15 <emphasis>leden</emphasis> heeft. + Dit kan omzeild worden door meerdere subnetgroepen te maken + met 15 gebruikers of minder en een echte netgroep die de + subnetgroepen bevat:</para> + + <programlisting>BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] +BIGGRP2 (,joe16,domain) (,joe17,domain) [...] +BIGGRP3 (,joe31,domain) (,joe32,domain) +BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3</programlisting> + + <para>Dit proces kan herhaald worden als er meer dan 225 + gebruikers in een netgroep moeten.</para> + </note> + + <para>Het activeren en distribueren van de nieuwe NIS-map is + eenvoudig:</para> + + <screen>ellington&prompt.root; <userinput>cd /var/yp</userinput> +ellington&prompt.root; <userinput>make</userinput></screen> + + <para>Hiermee worden drie nieuwe NIS-afbeeldingen gemaakt: + <filename>netgroup</filename>, + <filename>netgroup.byhost</filename> en + <filename>netgroup.byuser</filename>. Met &man.ypcat.1; kan + bekeken worden op de nieuwe NIS-afbeeldingen beschikbaar zijn:</para> + + <screen>ellington&prompt.user; <userinput>ypcat -k netgroup</userinput> +ellington&prompt.user; <userinput>ypcat -k netgroup.byhost</userinput> +ellington&prompt.user; <userinput>ypcat -k netgroup.byuser</userinput></screen> + + <para>De uitvoer van het eerste commando hoort te lijken op de + inhoud van <filename>/var/yp/netgroup</filename>. Het tweede + commando geeft geen uitvoer als er geen host-specifieke + netgroepen zijn ingesteld. Het derde commando kan gebruikt + worden om een lijst van netgroepen voor een gebruiker op te + vragen.</para> + + <para>Het instellen van de cliënt is redelijk eenvoudig. Om + de server <hostid>war</hostid> in te stellen hoeft alleen met + &man.vipw.8; de volgende regel in de regel daarna vervangen te + worden:</para> + + <programlisting>+:::::::::</programlisting> + + <para>Vervang de bovenstaande regel in de onderstaande.</para> + + <programlisting>+@IT_MW:::::::::</programlisting> + + <para>Nu worden alleen de gebruikers die in de netgroep + <literal>IT_MW</literal> geïmporteerd in de + wachtwoorddatabase van de host <hostid>war</hostid>, zodat + alleen die gebruikers zich kunnen aanmelden.</para> + + <para>Helaas zijn deze beperkingen ook van toepassing op de + functie <literal>~</literal> van de shell en alle routines + waarmee tussen gebruikersnamen en numerieke gebruikers ID's + wordt gewisseld. Met andere woorden: <command>cd + ~<replaceable>user</replaceable></command> werkt niet, + <command>ls –l</command> toont het numerieke ID in plaats + van de gebruikersnaam en <command>find . –user joe + –print</command> faalt met de foutmelding <errorname>No + such user</errorname>. Om dit te repareren moeten alle + gebruikers geïmporteerd worden, <emphasis>zonder ze het + recht te geven aan te melden op een server</emphasis>.</para> + + <para>Dit kan gedaan worden door nog een regel aan + <filename>/etc/master.passwd</filename> toe te voegen:</para> + + <programlisting>+:::::::::/sbin/nologin</programlisting> + + <para>Dit betekent <quote>importeer alle gebruikers, maar vervang + de shell door <filename>/sbin/nologin</filename></quote>. Ieder + veld in een <literal>passwd</literal> regel kan door een + standaardwaarde vervangen worden in + <filename>/etc/master.passwd</filename>.</para> + + <!-- Been there, done that, got the scars to prove it - ue --> + <warning> + <para>De regel <literal>+:::::::::/sbin/nologin</literal> moet + na <literal>+@IT_MW:::::::::</literal> komen. Anders krijgen + alle gebruikers die uit NIS-komen + <filename>/sbin/nologin</filename> als aanmeldshell.</para> + </warning> + + <para>Na deze wijziging hoeft er nog maar één + NIS-afbeelding 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 + <literal>+:::::::::</literal> in de lokale versie van + <filename>/etc/master.passwd</filename> door iets als het + volgende te vervangen:</para> + + <programlisting>+@IT_MW::::::::: ++@IT_APP::::::::: ++:::::::::/sbin/nologin</programlisting> + + <para>Voor normale werkstations zijn het de volgende regels:</para> + + <programlisting>+@IT_MW::::::::: ++@USERS::::::::: ++:::::::::/sbin/nologin</programlisting> + + <para>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 + juniorbeheerders mogen gaan aanmelden op de hoofdservers. Dat + kan door een nieuwe groep <literal>IT_STAG</literal> te maken en + de nieuwe IT-stagiairs toe te voegen aan die netgroep en dan de + instellingen op iedere machine te gaan veranderen. Maar zoals + het spreekwoord zegt: <quote>Fouten in een centrale planning + leiden tot complete chaos.</quote></para> + + <para>Deze situaties kunnen voorkomen worden door gebruik te maken + van de mogelijkheid in NIS om netgroepen in netgroepen op te + nemen. Het is mogelijk om rolgebaseerde netgroepen te maken. + Er kan bijvoorbeeld een netgroep <literal>BIGSRV</literal> + gemaakt worden om het aanmelden op de belangrijke servers te + beperken en er kan een andere netgroep + <literal>SMALLSRV</literal> voor de minder belangrijke servers + zijn en een derde netgroep met de naam + <literal>USERBOX</literal> voor de normale werkstations. Al die + netgroepen kunnen de netgroepen bevatten die op die machines + mogen aanmelden. De nieuwe regels in de NIS-afbeelding netgroup + zien er dan zo uit:</para> + + <programlisting>BIGSRV IT_MW IT_APP +SMALLSRV IT_MW IT_APP ITSTAG +USERBOX IT_MW ITSTAG USERS</programlisting> + + <para>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 zich wel en wie zich niet mogen + aanmelden.</para> + + <para>Daarom is het ook mogelijk om via machinespecifieke + netgroepen de hierboven aangegeven beleidswijziging op te + vangen. In dat scenario bevat + <filename>/etc/master.passwd</filename> op iedere machine twee + regels die met <quote>+</quote> beginnen. De eerste voegt de + netgroep toe met de accounts die op de machine mogen aanmelden + en de tweede voegt alle andere accounts toe met + <filename>/sbin/nologin</filename> als shell. Het is verstandig + om als naam van de netgroep de machinenaam in + <quote>HOOFDLETTERS</quote> te gebruiken. De regels zien er + ongeveer als volgt uit:</para> + + <programlisting>+@<replaceable>MACHINENAAM</replaceable>::::::::: ++:::::::::/sbin/nologin</programlisting> + + <para>Als dit voor alle machines is gedaan, dan hoeven de lokale + versies van <filename>/etc/master.passwd</filename> nooit meer + veranderd te worden. Alle toekomstige wijzigingen kunnen dan + gemaakt worden door de NIS-afbeelding te wijzigen. Hieronder + staat een voorbeeld van een mogelijke netgroep map voor het + beschreven scenario met een aantal toevoegingen:</para> + + <programlisting># 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) +# +# Machinegebaseerde netgroepen +# 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]</programlisting> + + <para>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 afbeelding met de + databaserapportagehulpmiddelen gemaakt kan worden. Dan krijgen + nieuwe gebruikers automatisch toegang tot de machines.</para> + + <para>Nog een laatste waarschuwing: het is niet altijd aan te + raden gebruik te maken van machinegebaseerde netgroepen. Als er + tientallen of zelfs honderden gelijke machines voor bijvoorbeeld + studentenruimtes worden uitgerold, dan is het verstandiger + rolgebaseerde netgroepen te gebruiken in plaats van + machinegebaseerde netgroepen om de grootte van de NIS-afbeelding + binnen de perken te houden.</para> + </sect2> + + <sect2> + <title>Belangrijk om te onthouden</title> + + <para>In een NIS-omgeving werken een aantal dingen wel + anders.</para> + + <itemizedlist> + <listitem> + <para>Als er een gebruiker toegevoegd moet worden, dan moet + die <emphasis>alleen</emphasis> toegevoegd worden aan de + master NIS-server en <emphasis>mag niet vergeten worden dat + de NIS-afbeeldingen herbouwd moeten worden</emphasis>. Als + dit wordt vergeten, dan kan de nieuwe gebruiker nergens + anders aanmelden dan op de NIS-master. Als bijvoorbeeld een + nieuwe gebruiker <username>jsmith</username> toegevoegd moet + worden:</para> + + <screen>&prompt.root; <userinput>pw useradd jsmith</userinput> +&prompt.root; <userinput>cd /var/yp</userinput> +&prompt.root; <userinput>make test-domain</userinput></screen> + + <para>Er kan ook <command>adduser jsmith</command> in plaats + van <command>pw useradd jsmith</command> gebruikt + worden.</para> + </listitem> + + <listitem> + <para><emphasis>De beheeraccounts moeten buiten de + NIS-afbeeldingen gehouden worden</emphasis>. Het is niet + handig als de beheeraccounts en wachtwoorden naar machines + waarop gebruikers zich aanmelden die geen toegang tot die + informatie horen te hebben zouden gaan.</para> + </listitem> + + <listitem> + <para><emphasis>De NIS-master en slave moeten veilig blijven + en zo min mogelijk niet beschikbaar zijn</emphasis>. Als de + machine wordt gehackt of als hij wordt uitgeschakeld, dan + kunnen er in theorie nogal wat mensen niet meer aanmelden.</para> + + <para>Dit is de belangrijkste zwakte van elk gecentraliseerd + beheersysteem. Als de NIS-servers niet goed beschermd + worden, dan worden veel gebruikers boos!</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>NIS v1-compatibiliteit</title> + + <para><application>ypserv</application> voor &os; biedt wat + ondersteuning voor NIS v1 cliënten. 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 + <application>ypbind</application>-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 cliëntoproepen aanwezig + is, deze versie van <application>ypserv</application> geen + overdrachtsverzoeken voor v1-afbeeldingen af kan handelen. + Daarom kan <application>ypserv</application> 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.</para> + </sect2> + + <sect2 id="network-nis-server-is-client"> + <title>NIS-servers die ook NIS-cliënten zijn</title> + + <para>Het is belangrijk voorzichtig om te gaan met het draaien van + <application>ypserv</application> in een multi-server domein + waar de server machines ook NIS-cliënten 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 cliënten 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.</para> + + <para>Het is mogelijk een host aan een specifieke server te binden + door aan <command>ypbind</command> de vlag + <option>–S</option> mee te geven. Om dit niet iedere keer + handmatig na een herstart te hoeven uitvoeren, kan de volgende + regel worden opgenomen in <filename>/etc/rc.conf</filename> van + de NIS-server:</para> + + <programlisting>nis_client_enable="YES" # start ook het cliënt gedeelte +nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</replaceable>"</programlisting> + + <para>In &man.ypbind.8; staat meer informatie.</para> + </sect2> + + <sect2> + <title>Wachtwoordformaten</title> + + <indexterm> + <primary>NIS</primary> + + <secondary>wachtwoordformaten</secondary> + </indexterm> + + <para>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 cliënten die ook DES gebruiken + ondersteund worden. Als er bijvoorbeeld &solaris; + NIS-cliënten in een netwerk zijn, dan moet er vrijwel zeker + gebruik gemaakt worden van met DES gecodeerde wachtwoorden.</para> + + <para>Van welk formaat cliënten en servers gebruik maken is + te zien in <filename>/etc/login.conf</filename>. Als een host + gebruik maakt van met DES gecodeerde wachtwoorden, dan staat er + in de klasse <literal>default</literal> een regel als de + volgende:</para> + + <programlisting>default:\ + :passwd_format=des:\ + :copyright=/etc/COPYRIGHT:\ + [Overige regels weggelaten]</programlisting> + + <para>Andere mogelijke waarden voor + <literal>passwd_format</literal> zijn + <literal>blf</literal> en <literal>md5</literal> + (respectievelijk voor Blowfish en MD5 gecodeerde + wachtwoorden).</para> + + <para>Als er wijzigingen gemaakt zijn aan + <filename>/etc/login.conf</filename> dan moet de + login capability database herbouwd worden door het volgende + commando als <username>root</username> uit te voeren:</para> + + <screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen> + + <note> + <para>Het formaat van de wachtwoorden die al in + <filename>/etc/master.passwd</filename> staan worden niet + bijgewerkt totdat een gebruiker zijn wachtwoord voor de eerste + keer wijzigt <emphasis>nadat</emphasis> de login capability + database is herbouwd.</para> + </note> + + <para>Om te zorgen dat de wachtwoorden in het gekozen formaat zijn + gecodeerd, moet daarna gecontroleerd worden of de waarde + <literal>crypt_default</literal> in + <filename>/etc/auth.conf</filename> 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:</para> + + <programlisting>crypt_default = des blf md5</programlisting> + + <para>Als de bovenstaande stappen op alle &os; gebaseerde + NIS-servers en cliënten 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-cliënt, 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.</para> + </sect2> + </sect1> + + <sect1 id="network-dhcp"> + <sect1info> + <authorgroup> + <author> + <firstname>Greg</firstname> + <surname>Sutter</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Automatisch netwerk instellen (DHCP)</title> + + <sect2> + <title>Wat is DHCP?</title> + + <indexterm> + <primary>Dynamic Host Configuration Protocol</primary> + + <see>DHCP</see> + </indexterm> + + <indexterm><primary>Internet Systems Consortium + (ISC)</primary></indexterm> + + <para>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 OpenBSD <command>dhclient</command> + welke uit OpenBSD 3.7 komt. + Alle informatie over <command>dhclient</command> kan + zowel voor de ISC als de OpenBSD DHCP-cliënt gebruikt + worden. De DHCP-server zit bij de ISC-distributie.</para> + </sect2> + + <sect2> + <title>Wat behandeld wordt</title> + + <para>In dit onderdeel worden de cliëntcomponenten van de + ISC en OpenBSD DHCP-cliënt en de servercomponenten van het + ISC DHCP-systeem beschreven. Het programma voor de cliënt, + <command>dhclient</command>, zit standaard in &os; en de server + is beschikbaar via de port <filename + role="package">net/isc-dhcp42-server</filename>. Naast de + onderstaande informatie, zijn de hulppagina's van + &man.dhclient.8;, &man.dhcp-options.5; en &man.dhclient.conf.5; + bruikbare bronnen.</para> + </sect2> + + <sect2> + <title>Hoe het werkt</title> + + <indexterm><primary>UDP</primary></indexterm> + + <para>Als <command>dhclient</command>, de DHCP-cliënt, wordt + uitgevoerd op een cliëntmachine, 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 cliënt een IP-adres en + andere relevante netwerkinformatie, zoals een netmasker, + router en DNS-servers. Al die informatie komt in de vorm van + een DHCP <quote>lease</quote> en is voor een bepaalde tijd + geldig (die is ingesteld door de beheerder van de DHCP-server). + Op die manier kunnen IP-adressen voor cliënten die niet + langer met het netwerk verbonden zijn (stale) automatisch weer + ingenomen worden.</para> + + <para>DHCP-cliënten kunnen veel informatie van de server + krijgen. Er staat een uitputtende lijst in + &man.dhcp-options.5;.</para> + </sect2> + + <sect2> + <title>&os; integratie</title> + + <para>&os; integreert de OpenBSD DHCP-cliënt + <command>dhclient</command> volledig. + Er is ondersteuning voor de + DHCP-cliënt 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.</para> + + <indexterm><primary><application>sysinstall</application></primary></indexterm> + + <para>DHCP wordt ondersteund door + <application>sysinstall</application>. Bij het instellen van + een netwerkinterface binnen + <application>sysinstall</application> is de tweede vraag: + <quote>Wil je proberen de interface met DHCP in te + stellen?</quote> Als het antwoord bevestigend luidt, dan wordt + <command>dhclient</command> uitgevoerd en als dat succesvol + verloopt, dan worden de netwerkinstellingen automatisch + ingevuld.</para> + + <para>Voor het gebruiken van DHCP bij het opstarten van het + systeem zijn twee instellingen nodig:</para> + + <indexterm> + <primary>DHCP</primary> + + <secondary>vereisten</secondary> + </indexterm> + + <itemizedlist> + <listitem> + <para>Het apparaat <devicename>bpf</devicename> moet in de + kernel gecompileerd zijn. Dit kan door + <literal>device bpf</literal> aan het bestand met + kernelinstellingen toe te voegen en de kernel te herbouwen. + Meer informatie over het bouwen van een kernel staat in + <xref linkend="kernelconfig"/>.</para> + + <para>Het apparaat <devicename>bpf</devicename> is al + onderdeel van de <filename>GENERIC</filename> 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.</para> + + <note> + <para>Voor de lezer die bijzonder begaan is met beveiliging, + is het belangrijk aan te geven dat + <devicename>bpf</devicename> ook het apparaat is waardoor + pakketsnuffelaars hun werk kunnen doen (hoewel ze nog + steeds als <username>root</username> moeten draaien). + <devicename>bpf</devicename> <emphasis>is</emphasis> + noodzakelijk voor DHCP, maar als beveiliging bijzonder + belangrijk is, dan hoort <devicename>bpf</devicename> + waarschijnlijk niet in een kernel te zitten omdat de + verwachting dat er in de toekomst ooit DHCP gebruikt gaat + worden.</para> + </note> + </listitem> + + <listitem> + <para>Standaard draait de DHCP-synchronisatie op &os; in de + achtergrond, of <firstterm>asynchroon</firstterm>. Andere + opstartscripten gaan verder terwijl DHCP wordt voltooid, wat het + opstarten van het systeem versnelt.</para> + + <para>DHCP in de achtergrond werkt goed als de DHCP-server snel op + verzoeken reageert en het DHCP-configuratieproces snel gaat. Op + sommige systemen kan het lang duren voordat DHCP klaar is. Als + netwerkdiensten proberen te draaien voordat DHCP voltooid is, zullen + ze falen. Door DHCP in <firstterm>synchrone</firstterm> modus te + draaien wordt dit probleem voorkomen en wordt het opstarten + gepauzeerd totdat de DHCP-configuratie voltooid is.</para> + + <para>Gebruik om in de achtergrond verbinding te maken met een + DHCP-server terwijl andere opstartscripts verder gaan (asynchrone + modus) de waarde <quote><literal>DHCP</literal></quote> in + <filename>/etc/rc.conf</filename>:</para> + + <programlisting>ifconfig_<replaceable>fxp0</replaceable>="DHCP"</programlisting> + + <para>Gebruik om het opstarten te pauzeren totdat DHCP voltooid is de + synchrone modus met waarde + <quote><literal>SYNDHCP</literal></quote>:</para> + + <programlisting>ifconfig_<replaceable>fxp0</replaceable>="SYNDHCP"</programlisting> + + <note> + <para>Vervang <replaceable>fxp0</replaceable> zoals getoond in deze + voorbeelden met de naam van de interface dat dynamisch + geconfigureerd moet worden, zoals getoond in <xref + linkend="config-network-setup"/>.</para> + </note> + + <para>Als er een andere lokatie voor + <command>dhclient</command> wordt gebruikt of als er extra + parameters aan <command>dhclient</command> meegegeven moeten + worden, dan dient ook iets als het volgende toegevoegd te + worden:</para> + + <programlisting>dhclient_program="/sbin/dhclient" +dhclient_flags=""</programlisting> + </listitem> + </itemizedlist> + + <indexterm> + <primary>DHCP</primary> + + <secondary>server</secondary> + </indexterm> + + <para>De DHCP-server, <application>dhcpd</application>, zit bij de + port <filename role="package">net/isc-dhcp42-server</filename> + in de Portscollectie. Deze port bevat de ISC DHCP-server en + documentatie.</para> + </sect2> + + <sect2> + <title>Bestanden</title> + + <indexterm> + <primary>DHCP</primary> + + <secondary>instellingenbestanden</secondary> + </indexterm> + + <itemizedlist> + <listitem> + <para><filename>/etc/dhclient.conf</filename></para> + + <para>Voor <command>dhclient</command> is een + instellingenbestand <filename>/etc/dhclient.conf</filename> + nodig. Dat bestand bevat meestal alleen maar commentaar, + omdat de standaardinstellingen redelijk zinvol zijn. Dit + bestand wordt beschreven in &man.dhclient.conf.5;.</para> + </listitem> + + <listitem> + <para><filename>/sbin/dhclient</filename></para> + + <para><command>dhclient</command> is statisch gelinkt en staat + in <filename>/sbin</filename>. Er staat meer informatie + over <command>dhclient</command> in &man.dhclient.8;.</para> + </listitem> + + <listitem> + <para><filename>/sbin/dhclient-script</filename></para> + + <para><command>dhclient-script</command> is het + &os;-specifieke DHCP-cliënt instellingenscript. Het + wordt beschreven in &man.dhclient-script.8;, maar het is + niet nodig het te wijzigen om goed te werken.</para> + </listitem> + + <listitem> + <para><filename>/var/db/dhclient.leases.<replaceable>interface</replaceable></filename></para> + + <para>De DHCP-cliënt 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.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Verder lezen</title> + + <para>Het DHCP-protocol staat volledig beschreven in <ulink + url="http://www.freesoft.org/CIE/RFC/2131/">RFC 2131</ulink>. + Er is nog een bron van informatie ingesteld op <ulink + url="http://www.dhcp.org/"></ulink>.</para> + </sect2> + + <sect2 id="network-dhcp-server"> + <title>Een DHCP-server installeren en instellen</title> + + <sect3> + <title>Wat behandeld wordt</title> + + <para>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 Systems Consortium) + implementatie van de DHCP-server.</para> + + <para>De server wordt niet geleverd als deel van &os; en om deze + dienst aan te bieden dient de port <filename + role="package">net/isc-dhcp42-server</filename> + geïnstalleerd te worden. In <xref linkend="ports"/> staat + meer informatie over de Portscollectie.</para> + </sect3> + + <sect3> + <title>DHCP-serverinstallatie</title> + + <indexterm> + <primary>DHCP</primary> + + <secondary>installatie</secondary> + </indexterm> + + <para>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 <literal>device bpf</literal> aan het bestand met + kernelinstellingen toegevoegd te worden en dient de kernel + herbouwd te worden. Meer informatie over het bouwen van + kernels staat in <xref linkend="kernelconfig"/>.</para> + + <para>Het apparaat <devicename>bpf</devicename> is al onderdeel + van de <filename>GENERIC</filename> kernel die bij &os;, dus + het is meestal niet nodig om een aangepaste kernel te bouwen + om DHCP aan de praat te krijgen.</para> + + <note> + <para>Het is belangrijk te vermelden dat + <devicename>bpf</devicename> ook het apparaat is waardoor + pakketsnuffelaars kunnen werken (hoewel de programma's die + er gebruik van maken wel bijzondere toegang nodig hebben). + <devicename>bpf</devicename> <emphasis>is</emphasis> + verplicht voor DHCP, maar als beveiliging van belang is, dan + is het waarschijnlijk niet verstandig om + <devicename>bpf</devicename> in een kernel op te nemen + alleen omdat er in de toekomst misschien ooit DHCP gebruikt + gaat worden.</para> + </note> + + <para>Hierna dient het standaardbestand + <filename>dhcpd.conf</filename> dat door de port <filename + role="package">net/isc-dhcp42-server</filename> is + geïnstalleerd gewijzigd te worden. Standaard is dit + <filename>/usr/local/etc/dhcpd.conf.sample</filename> en dit + bestand dient gekopieerd te worden naar + <filename>/usr/local/etc/dhcpd.conf</filename> voordat de + wijzigingen worden gemaakt.</para> + </sect3> + + <sect3> + <title>De DHCP-server instellen</title> + + <indexterm> + <primary>DHCP</primary> + + <secondary>dhcpd.conf</secondary> + </indexterm> + + <para><filename>dhcpd.conf</filename> is opgebouwd uit + declaraties over subnetten en hosts en is wellicht het meest + eenvoudig te beschrijven met een voorbeeld:</para> + + <programlisting>option domain-name "example.com";<co id="domain-name"/> +option domain-name-servers 192.168.4.100;<co id="domain-name-servers"/> +option subnet-mask 255.255.255.0;<co id="subnet-mask"/> + +default-lease-time 3600;<co id="default-lease-time"/> +max-lease-time 86400;<co id="max-lease-time"/> +ddns-update-style none;<co id="ddns-update-style"/> + +subnet 192.168.4.0 netmask 255.255.255.0 { + range 192.168.4.129 192.168.4.254;<co id="range"/> + option routers 192.168.4.1;<co id="routers"/> +} + +host mailhost { + hardware ethernet 02:03:04:05:06:07;<co id="hardware"/> + fixed-address mailhost.example.com;<co id="fixed-address"/> +}</programlisting> + + <calloutlist> + <callout arearefs="domain-name"> + <para>Deze optie geeft het domein aan dat door cliënten + als standaard zoekdomein wordt gebruikt. In + &man.resolv.conf.5; staat meer over wat dat + betekent.</para> + </callout> + + <callout arearefs="domain-name-servers"> + <para>Deze optie beschrijft een door komma's gescheiden + lijst met DNS-servers die de cliënt moet + gebruiken.</para> + </callout> + + <callout arearefs="subnet-mask"> + <para>Het netmasker dat aan de cliënten wordt + voorgeschreven.</para> + </callout> + + <callout arearefs="default-lease-time"> + <para>Een cliënt kan om een bepaalde duur vragen die + een lease geldig is. Anders geeft de server aan wanneer + de lease vervalt (in seconden).</para> + </callout> + + <callout arearefs="max-lease-time"> + <para>Dit is de maximale duur voor een lease die de server + toestaat. Als een cliënt vraagt om een langere + lease, dan wordt die wel verstrekt, maar is de maar geldig + gedurende <literal>max-lease-time</literal> seconden.</para> + </callout> + + <callout arearefs="ddns-update-style"> + <para>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 <emphasis>verplicht</emphasis>.</para> + </callout> + + <callout arearefs="range"> + <para>Dit geeft aan welke IP-adressen in de groep met + adressen zitten die zijn gereserveerd om uitgegeven te + worden aan cliënten. Alle IP-adressen tussen de + aangegeven adressen en die adressen zelf worden aan + cliënten uitgegeven.</para> + </callout> + + <callout arearefs="routers"> + <para>Geeft de default gateway aan die aan de cliënten + wordt voorgeschreven.</para> + </callout> + + <callout arearefs="hardware"> + <para>Het hardware MAC-adres van een host, zodat de + DHCP-server een host kan herkennen als die een verzoek + doet.</para> + </callout> + + <callout arearefs="fixed-address"> + <para>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.</para> + </callout> + </calloutlist> + + <para>Wanneer u klaar bent met het schrijven van uw + <filename>dhcpd.conf</filename>, dient u de DHCP-server in + <filename>/etc/rc.conf</filename> aan te zetten, door het + volgende toe te voegen:</para> + + <programlisting>dhcpd_enable="YES" +dhcpd_ifaces="dc0"</programlisting> + + <para>Vervang de interfacenaam <literal>dc0</literal> door de + interface (of interfaces, gescheiden door witruimtes) waarop + uw DHCP-server moet luisteren naar DHCP-verzoeken van + cliënten.</para> + + <para>Daarna kunt u doorgaan met het starten van de server door + het volgende commando te geven:</para> + + <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd start</userinput></screen> + + <para>Als er later wijzigingen in de instellingen gemaakt moeten + worden, dan is het belangrijk te onthouden dat het sturen van + een <literal>SIGHUP</literal> signaal naar + <application>dhcpd</application> <emphasis>niet</emphasis> + resulteert in het opnieuw laden van de instellingen, zoals + voor de meeste daemons geldt. Voor deze daemon dient een + signaal <literal>SIGTERM</literal> gestuurd te worden om het + proces te stoppen. Daarna dient de daemon met het hiervoor + beschreven commando weer gestart worden.</para> + </sect3> + + <sect3> + <title>Bestanden</title> + + <indexterm> + <primary>DHCP</primary> + + <secondary>instellingenbestanden</secondary> + </indexterm> + + <itemizedlist> + <listitem> + <para><filename>/usr/local/sbin/dhcpd</filename></para> + + <para><application>dhcpd</application> is statisch gelinkt + en staat in <filename>/usr/local/sbin</filename>. In de + hulppagina voor &man.dhcpd.8; die meekomt met de port + staat meer informatie over + <application>dhcpd</application>.</para> + </listitem> + + <listitem> + <para><filename>/usr/local/etc/dhcpd.conf</filename></para> + + <para><application>dhcpd</application> heeft een + instellingenbestand, + <filename>/usr/local/etc/dhcpd.conf</filename>, nodig + voordat de daemon diensten aan cliënten kan leveren. + Het bestand moet alle informatie bevatten die aan + cliënten 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.</para> + </listitem> + + <listitem> + <para><filename>/var/db/dhcpd.leases</filename></para> + + <para>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.</para> + </listitem> + + <listitem> + <para><filename>/usr/local/sbin/dhcrelay</filename></para> + + <para><application>dhcrelay</application> wordt in + uitgebreidere omgevingen gebruikt waar de ene DHCP-server + een verzoek van een cliënt naar een andere + DHCP-server op een ander netwerk doorstuurt. Als deze + functionaliteit nodig is, kan die beschikbaar komen door + de port <filename + role="package">net/isc-dhcp42-relay</filename> te + installeren. De hulppagina voor &man.dhcrelay.8; die bij + de port zit bevat meer details.</para> + </listitem> + </itemizedlist> + </sect3> + </sect2> + </sect1> + + <sect1 id="network-dns"> + <sect1info> + <authorgroup> + <author> + <firstname>Chern</firstname> + <surname>Lee</surname> + <contrib>Geschreven door </contrib> + </author> + + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + </author> + + <author> + <firstname>Daniel</firstname> + <surname>Gerzo</surname> + </author> + </authorgroup> + </sect1info> + + <title>Domeinnaamsysteem (<acronym>DNS</acronym>)</title> + + <sect2> + <title>Overzicht</title> + + <indexterm><primary>BIND</primary></indexterm> + + <para>&os; gebruikt standaard een versie van BIND (Berkeley + Internet Name Domain), wat de meest gebruikte implementatie van + het <acronym>DNS</acronym>-protocol is. <acronym>DNS</acronym> + is het protocol waarmee namen aan <acronym>IP</acronym>-adressen + gebonden worden en vice versa. Zo wordt bijvoorbeeld op een + zoekopdracht voor <hostid + role="fqdn">www.FreeBSD.org</hostid> geantwoord met het + <acronym>IP</acronym>-adres van de webserver van het &os; + Project en op een zoekopdracht voor <hostid + role="fqdn">ftp.FreeBSD.org</hostid> wordt geantwoord met het + <acronym>IP</acronym>-adres van de bijbehorende + <acronym>FTP</acronym>-machine. Het tegenovergestelde kan ook + gebeuren. Een zoekopdracht voor een <acronym>IP</acronym>-adres + kan de bijbehorende hostnaam opleveren. Het is niet nodig om + een naamserver te draaien om op een systeem zoekopdrachten met + <acronym>DNS</acronym> uit te voeren.</para> + + <para>&os; wordt momenteel standaard geleverd met de + <acronym>BIND</acronym>9 <acronym>DNS</acronym>-serversoftware. + Onze installatie biedt verbeterde beveilingsmogelijkheden, een + nieuwe indeling van het bestandssysteem en geautomatiseerde + configuratie van &man.chroot.8;.</para> + + <indexterm><primary>DNS</primary></indexterm> + + <para><acronym>DNS</acronym> wordt op Internet onderhouden door + een enigszins complex systeem van autoritaire root, Top Level + Domain (<acronym>TLD</acronym>), en andere kleinschaligere + naamservers die individuele domeininformatie hosten en cachen.</para> + + <para>Op dit moment wordt BIND beheerd door het Internet Systems + Consortium <ulink url="https://www.isc.org/"></ulink>.</para> + </sect2> + + <sect2> + <title>Terminologie</title> + + <para>Om dit document te begrijpen moeten een aantal termen + gerelateerd aan <acronym>DNS</acronym> begrepen worden.</para> + + <indexterm><primary>resolver</primary></indexterm> + + <indexterm><primary>reverse DNS</primary></indexterm> + + <indexterm><primary>root zone</primary></indexterm> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <colspec colwidth="1*"/> + + <colspec colwidth="3*"/> + + <thead> + <row> + <entry>Term</entry> + + <entry>Definitie</entry> + </row> + </thead> + + <tbody> + <row> + <entry>Voorwaartse <acronym>DNS</acronym></entry> + + <entry>Het afbeelden van hostnamen op IP-adressen.</entry> + </row> + + <row> + <entry>Herkomst (origin)</entry> + + <entry>Verwijst naar het domein dat door een bepaald + zonebestand wordt gedekt.</entry> + </row> + + <row> + <entry><application>named</application>, BIND</entry> + + <entry>Vaak gebruikte namen voor het naamserverpakket BIND + in &os;.</entry> + </row> + + <row> + <entry>Resolver</entry> + + <entry>Een systeemproces waarmee een machine + zoekopdrachten om zoneinformatie aan een naamserver + geeft.</entry> + </row> + + <row> + <entry>Reverse <acronym>DNS</acronym></entry> + + <entry>Het afbeelden van <acronym>IP</acronym>-adressen op + hostnamen.</entry> + </row> + + <row> + <entry>Rootzone</entry> + + <entry>Het begin van de Internet zonehiërarchie. + Alle zones vallen onder de rootzone, net zoals alle + bestanden in een bestandssysteem onder de rootmap + vallen.</entry> + </row> + + <row> + <entry>Zone</entry> + + <entry>Een individueel domein, subdomein of een deel van + de <acronym>DNS</acronym> die door dezelfde autoriteit + wordt beheerd.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <indexterm> + <primary>zones</primary> + + <secondary>voorbeelden</secondary> + </indexterm> + + <para>Voorbeelden van zones:</para> + + <itemizedlist> + <listitem> + <para><hostid>.</hostid> is hoe de rootzone normaliter in de + documentatie genoemd wordt.</para> + </listitem> + + <listitem> + <para><hostid>org.</hostid> is een Top Level Domain + (<acronym>TLD</acronym>) onder de rootzone.</para> + </listitem> + + <listitem> + <para><hostid role="domainname">example.org.</hostid> is een + zone onder het <acronym>TLD</acronym> + <hostid>org.</hostid>.</para> + </listitem> + + <listitem> + <para><hostid>1.168.192.in-addr.arpa</hostid> is een zone die + naar alle <acronym>IP</acronym>-adressen verwijst die onder + de <acronym>IP</acronym>-adresruimte <hostid + role="ipaddr">192.168.1.*</hostid> vallen.</para> + </listitem> + </itemizedlist> + + <para>Zoals te zien is staat het specifiekere deel van een + hostnaam aan de linkerkant. Zo is bijvoorbeeld <hostid + role="domainname">example.org.</hostid> specifieker dan + <hostid>org.</hostid> en is <hostid>org.</hostid> + specifieker dan de rootzone. De indeling van ieder deel van een + hostnaam lijkt veel op een bestandssysteem: de map + <filename>/dev</filename> valt onder de root, enzovoort.</para> + </sect2> + + <sect2> + <title>Redenen om een naamserver te draaien</title> + + <para>Naamservers bestaan in het algemeen in twee smaken: autoratieve + naamservers en caching (ook bekend als resolving) naamservers.</para> + + <para>Er is een autoratieve naamserver nodig als:</para> + + <itemizedlist> + <listitem> + <para>Het gewenst is om <acronym>DNS</acronym>-informatie aan + te bieden aan de wereld om met autoriteit op verzoeken te + antwoorden.</para> + </listitem> + + <listitem> + <para>Een domein, zoals <hostid + role="domainname">example.org</hostid>, is geregistreerd + en er <acronym>IP</acronym>-adressen aan hostnamen die + daaronder liggen toegewezen moeten worden.</para> + </listitem> + + <listitem> + <para>Een <acronym>IP</acronym>-adresblok omgekeerde + <acronym>DNS</acronym>-ingangen nodig heeft + (<acronym>IP</acronym> naar hostnaam).</para> + </listitem> + + <listitem> + <para>Een omgekeerde of tweede naamserver, die een slaaf wordt + genoemd, moet antwoorden op verzoeken.</para> + </listitem> + </itemizedlist> + + <para>Er is een caching naamserver nodig als:</para> + + <itemizedlist> + <listitem> + <para>Een lokale <acronym>DNS</acronym>-server kan cachen en + wellicht sneller kan antwoorden dan een naamserver die + verder weg staat.</para> + </listitem> + </itemizedlist> + + <para>Als er een verzoek wordt gedaan voor <hostid + role="fqdn">www.FreeBSD.org</hostid>, dan doet de resolver + meestal een verzoek bij de naamserver van de + <acronym>ISP</acronym> die de uplink levert en ontvangt daarop + een antwoord. Met een lokale, caching + <acronym>DNS</acronym>-server hoeft het verzoek maar + één keer door de caching + <acronym>DNS</acronym>-server naar de buitenwereld gedaan te + worden. Voor aanvullende verzoeken hoeft niet buiten het lokale + netwerk te gaan omdat het al lokaal in de cache staat.</para> + </sect2> + + <sect2> + <title>Hoe het werkt</title> + + <para>De daemon BIND heet in &os; + <application>named</application>.</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>Bestand</entry> + + <entry>Beschrijving</entry> + </row> + </thead> + + <tbody> + <row> + <entry>&man.named.8;</entry> + + <entry>De daemon BIND.</entry> + </row> + + <row> + <entry>&man.rndc.8;</entry> + + <entry>Naamserverbeheerprogramma.</entry> + </row> + + <row> + <entry><filename class="directory">/etc/namedb</filename></entry> + + <entry>Map waar zoneinformatie van BIND staat.</entry> + </row> + + <row> + <entry><filename>/etc/namedb/named.conf</filename></entry> + + <entry>Instellingenbestand van de daemon.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Afhankelijk van hoe en gegeven zone op de server is + geconfigureerd, staan de bestanden gerelateerd aan die zone in + de submappen <filename class="directory">master</filename>, + <filename class="directory">slave</filename>, of <filename + class="directory">dynamic</filename> van de map <filename + class="directory">/etc/namedb</filename>. Deze bestanden + bevatten de <acronym>DNS</acronym>-informatie die door de + naamserver als antwoord op zoekopdrachten gegeven zal worden.</para> + </sect2> + + <sect2> + <title>BIND starten</title> + + <indexterm> + <primary>BIND</primary> + + <secondary>starten</secondary> + </indexterm> + + <para>Omdat BIND standaard wordt geïnstalleerd, is het + instellen relatief eenvoudig.</para> + + <para>De standaardconfiguratie van + <application>named</application> is die van een eenvoudige + resolverende naamserver, draaiende in een &man.chroot.8;-omgeving, + en beperkt tot het luisteren op het lokale IPv4-teruglusadres + (127.0.0.1). Gebruik het volgende commando om de server eenmaal + met deze configuratie te starten:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/named onestart</userinput></screen> + + <para>Om er zeker van te zijn dat de daemon + <application>named</application> elke keer bij het opstarten + gestart wordt, moet de volgende regel in + <filename>/etc/rc.conf</filename> gezet worden:</para> + + <programlisting>named_enable="YES"</programlisting> + + <para>Het is duidelijk dat er vele instelopties voor + <filename>/etc/namedb/named.conf</filename> zijn die buiten het + bereik van dit document vallen. Als u echter + geïnteresseerd bent in de opstartopties voor + <application>named</application> op &os;, bekijk dan de + <literal>named_<replaceable>*</replaceable></literal>-vlaggen in + <filename>/etc/defaults/rc.conf</filename> en raadpleeg de + handleidingpagina &man.rc.conf.5;. De sectie <xref + linkend="configtuning-rcd"/> is ook nuttig om te lezen.</para> + </sect2> + + <sect2> + <title>Instellingenbestanden</title> + + <indexterm> + <primary>BIND</primary> + + <secondary>instellingenbestanden</secondary> + </indexterm> + + <para>Instellingenbestanden voor <application>named</application> + bevinden zich momenteel in <filename + class="directory">/etc/namedb</filename> en moeten gewijzigd + worden voor gebruik, tenzij er alleen een eenvoudige resolver + nodig is. Hier vindt de meeste configuratie plaats.</para> + + <sect3> + <title><filename>/etc/namedb/named.conf</filename></title> + + <programlisting>// $FreeBSD$ +// +// In de handleidingpagina's named.conf(5) en named(8), en in de +// documentatie in /usr/share/doc/bind9 zijn meer details te vinden. +// +// Voor het opzetten van een autoratieve server is een grondig begrip +// van de werking van DNS noodzakelijk. Zelfs eenvoudige fouten kunnen // de werking verstoren voor beïnvloede partijen of veel onnodig +// Internetverkeer veroorzaken. + +options { + // Alle namen van bestanden en paden zijn relatief aan de chroot-map, + // indien aanwezig, en moeten volledig gekwalificeerd zijn. + directory "/etc/namedb/working"; + pid-file "/var/run/named/pid" + dump-file "/var/dump/named_dump.db" + statistics-file "/var/stats/named.stats" + +// Als named alleen als een lokale resolver gebruikt wordt, is dit een +// veilige standaardinstelling. Om named toegang tot het netwerk te +// verschaffen, dient deze optie gecommentarieerd te worden, het +// juiste IP-adres opgegeven te worden, of dient deze optie verwijderd +// te worden. + listen-on { 127.0.0.1; }; + +// Als u IPv6 aan heeft staan op dit systeem, dient deze optie +// uitgecommentarieerd te worden om als lokale resolver te dienen. Om +// toegang tot het netwerk te verschaffen, dient een IPv6-adres of het +// sleutelwoord "any" gegeven te worden. +// listen-on-v6 { ::1; }; + +// Deze zones zijn reeds opgenomen door de lege zones die hieronder +// staan. Als u de gerelateerde lege zones hieronder verwijdert, +// dienen deze regels uitgecommentarieerd te worden. + disable-empty-zone "255.255.255.255.IN-ADDR.ARPA"; + disable-empty-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.0.IP6.ARPA"; + disable-empty-zone "1.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.ARPA"; + +// 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 algehele DNS-verkeer op het Internet vermindert. +/* + forwarders { + 127.0.0.1; + }; + +*/ + +// Als de 'forwarders'-clausule niet leeg is, is de standaard om "forward +// first" te gebruiken, welke terug zal vallen op het versturen van een +// verzoek naar uw lokale server als de naamservers in 'forwarders' het +// antwoord niet weten. Als alternatief kunt u uw naamserver dwingen om +// nooit zelf verzoeken in te dienen door de volgende regel aan te +// zetten: +// forward only; + +// Als u forwarding automatisch wilt configureren gebaseerd op de regels +// in /etc/resolv.conf, verwijder dan het commentaar van de volgende +// regel en stel in /etc/rc.conf named_auto_forward=yes in. U kunt ook +// named_auto_forward_only aanzetten (het effect hiervan is hierboven +// beschreven). +// include "/etc/namedb/auto_forward.conf";</programlisting> + + <para>Zoals al in het commentaar staat kan van een cache in de + uplink geprofiteerd worden als <literal>forwarders</literal> + ingeschakeld worden. Onder normale omstandigheden maakt een + naamserver recursief verzoeken tot het Internet op zoek naar + zekere naamservers tot er een antwoord komt waar het naar op + zoek is. Door de bovenstaande optie in te schakelen wordt + eerst de uplink naamserver (of de opgegeven naamserver) + gevraagd, waardoor er gebruik gemaakt kan worden van de cache + van die server. Als die uplink naamserver een drukke, + snelle naamserver is, kan het erg de moeite waard zijn om dit + aan te zetten.</para> + + <warning> + <para><hostid role="ipaddr">127.0.0.1</hostid> werkt hier + <emphasis>niet</emphasis>. Verander dit + <acronym>IP</acronym>-adres in een naamserver in de + uplink.</para> + </warning> + + <programlisting>/* + Moderne versies van BIND gebruiken standaard een random + UDP-poort voor elk uitgaand verzoek om de kans op cache + poisoning drastisch te verminderen. Alle gebruikers wordt met + klem verzocht om deze mogelijkheid te gebruiken en hun + firewalls overeenkomstig aan te passen. + + ALS EEN LAATSTE UITVLUCHT om een beperkende firewall te + omzeilen kunt u proberen om onderstaande optie aan te zetten. + Het gebruik van deze optie vermindert uw kans om een cache + poisoning aanval te weerstaan aanzienlijk, en dient indien + mogelijk te worden vermeden. + + Vervang NNNNN in het voorbeeld door een getal tussen 49160 en + 65530. + */ + // query-source address * port NNNNN; +}; + +// Als er een lokale naamserver wordt gebruikt, vergeet dan niet om +// eerst 127.0.0.1 in /etc/resolv.conf te zetten zodat die gevraagd +// wordt. Controleer ook dat het in /etc/rc.conf is aangezet. + +// Het traditionele root-hint-mechanisme. Gebruik dit OF de +// onderstaande slaafzones. +zone "." { type hint; file "/etc/namedb/named.root"; }; + +/* Het slaaf maken van de volgende zones vanaf de root-naamservers + heeft een aantal aanzienlijke voordelen: + 1. Snellere lokale resolutie voor uw gebruikers + 2. Geen vals verkeer dat vanaf uw netwerk naar de roots wordt verzonden + 3. Betere weerstand tegen elke mogelijk falen van de rootserver/DDoS + + Wel is het zo dat deze methode meer toezicht vraagt dan het + hintbestand om er zeker van te zijn dat een onverwachte + faalmodus uw server niet heeft lamgelegd. Naamservers die + veel clienten serveren zullen meer voordeel uit deze aanpak + halen dan individuele hosts. Met zorg gebruiken. + + Verwijder het commentaar uit de onderstaande regels en + commentarieer de bovenstaande hintzone om dit mechanisme te + gebruiken. + + Zoals gedocumenteerd op http://dns.icann.org/services/axfr/ zijn deze + zones: "." (de root), ARPA, IN-ADDR.ARPA, IP6.ARPA en ROOT-SERVERS.NET + beschikbaar voor AXFR van deze servers op IPv4 en IPv6: + xfr.lax.dns.icann.org, xfr.cjr.dns.icann.org +*/ + +zone "." { + type slave; + file "/etc/namedb/slave/root.slave"; + masters { + 192.5.5.241; // F.ROOT-SERVERS.NET. + }; + notify no; +}; + +zone "arpa" { + type slave; + file "/etc/namedb/slave/arpa.slave"; + masters { + 192.5.5.241; // F.ROOT-SERVERS.NET. + }; + notify no; +}; + +/* Het lokaal serveren van de volgende zones voorkomt dat enig + verzoek voor deze zones uw netwerk verlaat en naar de + root-naamservers gaat. Dit heeft twee aanzienlijke voordelen: + 1. Snellere lokale resolutie voor uw gebruikers + 2. Er zal geen vals verkeer vanaf uw netwerk naar de roots worden verzonden +*/ +// RFCs 1912 en 5735 (en BCP32 voor localhost) +zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; }; +zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; +zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// RFC 1912-stijl zone voor IPv6 localhost adres +zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; + +// "Dit" netwerk (RFCs 1912 en 5735) +zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// Netwerken voor privaat gebruik (RFC 1918 en 5735) +zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// Lokale link/APIPA (RFCs 3927 en 5735) +zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// IETF protocol-toewijzingen (RFCs 5735 en 5736) +zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// TEST-NET-[1-3] voor documentatie (RFCs 5735 en 5737) +zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; +zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// IPv6-bereik voor documentatie (RFC 3849) +zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; + +// Domeinnamen voor documentatie en testen (BCP 32) +zone "test" { type master; file "/etc/namedb/master/empty.db"; }; +zone "example" { type master; file "/etc/namedb/master/empty.db"; }; +zone "invalid" { type master; file "/etc/namedb/master/empty.db"; }; +zone "example.com" { type master; file "/etc/namedb/master/empty.db"; }; +zone "example.net" { type master; file "/etc/namedb/master/empty.db"; }; +zone "example.org" { type master; file "/etc/namedb/master/empty.db"; }; + +// Router benchmarken (RFC 2544 en 5735) +zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } + +// Gereserveerd door IANA - oude ruimte van klasse E (RFC 5735) +zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; } + +// Niet-toegewezen IPv6-adressen (RFC 4291) +zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } + +// IPv6 ULA (RFC 4193) +zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } + +// IPv6 lokale link (RFC 4291) +zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } + +// IPv6 verouderde site-lokale adressen (RFC 3879) +zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } +zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; } + +// IP6.INT is verouderd (RFC 4159) +zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; } + +// NB: De IP-adressen hieronder zijn bedoeld als voorbeeld en dienen +// niet gebruikt te worden! +// +// Voorbeeld instellingen voor slaafzones. Het kan handig zijn om +// tenminste slaaf te worden voor de zone waar de host onderdeel van +// uitmaakt. Bij uw netwerkbeheerder kan het IP-adres van de +// verantwoordelijke meester-naamserver nagevraagd worden. +// +// Vergeet niet om de omgekeerde lookup-zone op te nemen! +// Dit is genoemd na de eerste bytes van het IP-adres, in omgekeerde +// volgorde, met daarachter ".IN-ADDR.ARPA", of "IP6.ARPA" voor IPv6. +// +// Het is van groot belang om de werking van DNS en BIND te begrijpen +// voordat er een meester-zone wordt opgezet. Er zijn nogal wat +// onverwachte valkuilen. Het opzetten van een slaafzone is +// gewoonlijk eenvoudiger. +// +// NB: Zet de onderstaande voorbeelden niet blindelings aan. :-) +// Gebruik in plaats hiervan echte namen en adressen. +/* Een voorbeeld van een dynamische zone +key "exampleorgkey" { + algorithm hmac-md5; + secret "sf87HJqjkqh8ac87a02lla=="; +}; + +zone "example.org" { + type master; + allow-update { + key "exampleorgkey"; + }; + file "/etc/namedb/dynamic/example.org"; +}; +*/ + +/* Voorbeeld van een omgekeerde slaafzone +zone "1.168.192.in-addr.arpa" { + type slave; + file "/etc/namedb/slave/1.168.192.in-addr.arpa"; + masters { + 192.168.1.1; + }; +}; +*/</programlisting> + + <para>In <filename>named.conf</filename> zijn dit voorbeelden + van slaafregels voor een voorwaartse en een omgekeerde + zone.</para> + + <para>Voor iedere nieuwe zone die wordt aangeboden dient een + nieuwe instelling voor de zone aan + <filename>named.conf</filename> toegevoegd te worden.</para> + + <para>De eenvoudigste instelling voor de zone <hostid + role="domainname">example.org</hostid> kan er als volgt + uitzien:</para> + + <programlisting>zone "example.org" { + type master; + file "master/example.org"; +};</programlisting> + + <para>De zone is een master, zoals aangegeven door het statement + <option>type</option>, waarvan de zoneinformatie in + <filename>/etc/namedb/example.org</filename> staat, zoals het + statement <option>file</option> aangeeft.</para> + + <programlisting>zone "example.org" { + type slave; + file "slave/example.org"; +};</programlisting> + + <para>In het geval van de slaaf wordt de zoneinformatie voor een + zone overgedragen van de master naamserver en opgeslagen in + het ingestelde bestand. Als de masterserver het niet meer + doet of niet bereikbaar is, dan heeft de slaveserver de + overgedragen zoneinformatie nog en kan het die aanbieden.</para> + </sect3> + + <sect3> + <title>Zonebestanden</title> + + <indexterm> + <primary>BIND</primary> + + <secondary>zonebestanden</secondary> + </indexterm> + + <para>Een voorbeeldbestand voor een masterzone voor <hostid + role="domainname">example.org</hostid> (bestaande binnen + <filename>/etc/namedb/master/example.org</filename>) ziet er + als volgt uit:</para> + + <programlisting>$TTL 3600 ; 1 uur standaard TTL +example.org. IN SOA ns1.example.org. admin.example.org. ( + 2006051501 ; Serienummer + 10800 ; Verversen + 3600 ; Opnieuw proberen + 604800 ; Verlopen + 300 ; Negatieve antwoord-TTL + ) + +; DNS Servers + IN NS ns1.example.org. + IN NS ns2.example.org. + +; MX Records + IN MX 10 mx.example.org. + IN MX 20 mail.example.org. + + IN A 192.168.1.1 + +; Machinenamen +localhost IN A 127.0.0.1 +ns1 IN A 192.168.1.2 +ns2 IN A 192.168.1.3 +mail IN A 192.168.1.4 +mx IN A 192.168.1.5 + +; Aliases +www IN CNAME example.org.</programlisting> + + + <para>Iedere hostnaam die eindigt op een <quote>.</quote> is + een exacte hostnaam, terwijl alles zonder een + <quote>.</quote> op het einde relatief is aan de oorsprong. + Zo wordt <literal>ns1</literal> bijvoorbeeld vertaald naar + <literal>ns1.<replaceable>example.org.</replaceable></literal>.</para> + + <para>De regels in een zonebestand volgen de volgende opmaak:</para> + + <programlisting>recordnaam IN recordtype waarde</programlisting> + + <indexterm> + <primary>DNS</primary> + + <secondary>records</secondary> + </indexterm> + + <para>De meest gebruikte DNS-records:</para> + + <variablelist> + <varlistentry> + <term>SOA</term> + + <listitem> + <para>begin van autoriteit (start of + authority)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>NS</term> + + <listitem> + <para>een bevoegde (autoratieve) name + server</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>A</term> + + <listitem> + <para>een hostadres</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>CNAME</term> + + <listitem> + <para>de canonieke naam voor een alias</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>MX</term> + + <listitem> + <para>mail exchanger</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>PTR</term> + + <listitem> + <para>een domeinnaam pointer (gebruikt in + omgekeerde DNS)</para> + </listitem> + </varlistentry> + </variablelist> + + <programlisting>example.org. IN SOA ns1.example.org. admin.example.org. ( + 2006051501 ; Serienummer + 10800 ; Ververs na 3 uur + 3600 ; Opnieuw proberen na 1 uur + 604800 ; Verlopen na 1 week + 300 ; Negatieve antwoord-TTL</programlisting> + + <variablelist> + <varlistentry> + <term><hostid + role="domainname">example.org.</hostid></term> + + <listitem> + <para>de domeinnaam, ook de oorsprong voor dit + zonebestand.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><hostid role="fqdn">ns1.example.org.</hostid></term> + + <listitem> + <para>de primaire/bevoegde naamserver voor deze + zone.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>admin.example.org.</literal></term> + + <listitem> + <para>de persoon die verantwoordelijk is voor + deze zone, emailadres met <quote>@</quote> vervangen. + <email>admin@example.org</email> wordt + <literal>admin.example.org</literal>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>2006051501</literal></term> + + <listitem> + <para>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 <literal>yyyymmddrr</literal> voor het + serienummer. <literal>2006051501</literal> betekent + dan dat het voor het laatst is aangepast op + 15–05–2006, de laatste + <literal>01</literal> betekent dat het zonebestand die + dag voor het eerst is aangepast. Het serienummer is + belangrijk omdat het slaafnaamservers aangeeft dat een + zone is bijgewerkt.</para> + </listitem> + </varlistentry> + </variablelist> + + <programlisting> IN NS ns1.example.org.</programlisting> + + <para>Hierboven staat een NS-regel. Voor iedere naamserver die + bevoegde antwoorden moet geven voor de zone hoort er zo'n + regel te zijn.</para> + + <programlisting>localhost IN A 127.0.0.1 +ns1 IN A 192.168.1.2 +ns2 IN A 192.168.1.3 +mx IN A 192.168.1.4 +mail IN A 192.168.1.5</programlisting> + + <para>Een A-record geeft een machinenaam aan. Hierboven is te + zien dat <hostid role="fqdn">ns1.example.org</hostid> zou + resolven naar <hostid role="ipaddr">192.168.1.2</hostid>.</para> + + <programlisting> IN A 192.168.1.1</programlisting> + + <para>Deze regel kent IP-adres <hostid + role="ipaddr">192.168.1.1</hostid> toe aan de huidige + oorsprong, in dit geval <hostid + role="domainname">example.org</hostid>.</para> + + <programlisting>www IN CNAME @</programlisting> + + <para>Een canoniek naamrecord wordt meestal gebruikt voor het + geven van aliassen aan een machine. In het voorbeeld is + <hostid>www</hostid> een alias naar de <quote>master</quote> + machine waarvan de naam gelijk is aan de domeinnaam <hostid + role="domainname">example.org</hostid> (<hostid + role="ipaddr">192.168.1.1</hostid>). CNAME's kunnen + nooit samen met een ander soort record voor dezelfde hostnaam + gebruikt worden.</para> + + <indexterm><primary>MX record</primary></indexterm> + + <programlisting> IN MX 10 mail.example.org.</programlisting> + + <para>MX records geven aan welke mailservers verantwoordelijk + zijn voor het afhandelen van inkomende mail voor de zone. + <hostid role="fqdn">mail.example.org</hostid> is de hostnaam + van een mailserver en 10 is de prioriteit voor die mailserver.</para> + + <para>Het is mogelijk meerdere mailservers in te stellen met + prioriteiten 10, 20, enzovoorts. Een mailserver die probeert + mail af te leveren voor <hostid + role="domainname">example.org</hostid> probeert dat eerst + bij de MX met de hoogste prioriteit (het record met het + laagste prioriteitsnummer), daarna de tweede hoogste, + enzovoort, totdat de mail afgeleverd kan worden.</para> + + <para>Voor in-addr.arpa zonebestanden (omgekeerd DNS) wordt + dezelfde opmaak gebruikt, maar dan met PTR-regels in plaats + van A of CNAME.</para> + + <programlisting>$TTL 3600 + +1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. ( + 2006051501 ; Serienummer + 10800 ; Ververs + 3600 ; Opnieuw proberen + 604800 ; Verlopen + 300 ) ; Negatieve antwoord-TTL + + IN NS ns1.example.org. + IN NS ns2.example.org. + +1 IN PTR example.org. +2 IN PTR ns1.example.org. +3 IN PTR ns2.example.org. +4 IN PTR mx.example.org. +5 IN PTR mail.example.org.</programlisting> + + <para>Dit bestand geeft de juiste IP-adressen voor hostnamen + in het voorbeelddomein hierboven.</para> + + <para>Het is het vernoemen waard dat alle namen aan de rechterkant + van een PTR-record volledig gekwalificeerd dienen te zijn + (i.e., met een <quote>.</quote> eindigen).</para> + </sect3> + </sect2> + + <sect2> + <title>Caching naamserver</title> + + <indexterm> + <primary>BIND</primary> + + <secondary>caching naamserver</secondary> + </indexterm> + + <para>Een caching naamserver is een naamserver wiens primaire rol + het oplossen van recursieve verzoeken is. Het dient simpelweg + zelf verzoeken in en onthoudt de antwoorden voor later gebruik.</para> + </sect2> + + <sect2> + <title><acronym + role="Domain Name Security Extensions">DNSSEC</acronym></title> + + <indexterm> + <primary>BIND</primary> + + <secondary>DNS veiligheidsuitbreidingen</secondary> + </indexterm> + + <para>Domain Name Security System Extensions, ofwel <acronym + role="Domain Name Security Extensions">DNSSEC</acronym>, is een + verzameling van specificaties om resolvende naamservers te beschermen + tegen valse <acronym>DNS</acronym>-gegevens, zoals vervalste + <acronym>DNS</acronym>-records. Door digitale handtekeningen te + gebruiken kan een resolver de integriteit van een record controleren. + Merk op dat <acronym + role="Domain Name Security Extensions">DNSSEC</acronym> + alleen integriteit biedt via het digitaal ondertekenen van het Resource + Record (<acronym role="Resource Record">RR</acronym>s). Het biedt noch + betrouwbaarheid noch bescherming tegen onjuiste aannames van + eindgebruikers. Dit betekent dat het mensen niet kan beschermen tegen + het bezoeken van <hostid role="domainname">voorbeeld.net</hostid> in + plaats van <hostid role="domainname">voorbeeld.com</hostid>. Het enige + wat <acronym>DNSSEC</acronym> doet is authenticeren dat de gegevens + niet tijdens het transport zijn gecompromitteerd. De beveiliging van + <acronym>DNSSEC</acronym> is een belangrijke stap in het beveiligen van + het internet in het algemeen. De relevante <acronym>RFC</acronym>s zijn + een goed beginpunt voor meer gedetailleerde gegevens over hoe + <acronym>DNSSEC</acronym> werkt. Raadpleeg de lijst in + <xref linkend="dns-read"/>.</para> + + <para>De volgende secties laten zien hoe <acronym>DNSSEC</acronym> voor + een autoratieve <acronym>DNS</acronym>-server en een recursieve (of + caching) <acronym>DNS</acronym>-server die <acronym>BIND</acronym> 9 + draait kan worden bewerkstelligd. Hoewel alle versies van + <acronym>BIND</acronym> 9 <acronym>DNSSEC</acronym> ondersteunen, is + tenminste versie 9.6.2 nodig om gebruik te kunnen maken van de + ondertekende rootzones tijdens het valideren van + <acronym>DNS</acronym>-verzoeken. Dit komt doordat + eerdere versies de benodigde algoritmes om validatie met de sleutel + voor de rootzone te uit te voeren niet hebben. Het wordt sterk + aangeraden om de nieuwste versie van <acronym>BIND</acronym> 9.7 te + gebruiken om gebruik te kunnen maken van automatische sleutel-updates + voor de rootsleutel en van andere mogelijkheden om zones ondertekend en + sleutel up-to-date te houden. Wanneer configuraties tussen 9.6.2 en 9.7 + en later verschillen, zullen deze worden toegelicht.</para> + + <sect3> + <title>Configuratie van een recursieve + <acronym>DNS</acronym>-server</title> + + <para>Het aanzetten van <acronym>DNSSEC</acronym>-validatie van + verzoeken die door een recursieve <acronym>DNS</acronym>-server worden + uitgevoerd heeft enkele aanpassingen aan + <filename>named.conf</filename> nodig. Voordat deze wijzigingen + worden gemaakt dient de rootzone-sleutel, of vertrouwensanker, te + worden opgehaald. Momenteel is de rootzone-sleutel niet beschikbaar + in een bestandsformaat dat <acronym>BIND</acronym> begrijpt, dus moet + het handmatig in het juiste formaat omgezet worden. De sleutel zelf + kan verkregen worden door de rootzone ervoor met + <application>dig</application> te ondervragen. Door</para> + + <screen>&prompt.user; <userinput>dig +multi +noall +answer DNSKEY . > root.dnskey</userinput></screen> + + <para>te draaien, wordt de sleutel in <filename>root.dnskey</filename> + opgeslagen. De inhoud dient er ongeveer als volgt uit te zien:</para> + + <programlisting>. 93910 IN DNSKEY 257 3 8 ( + AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ + bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh + /RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA + JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp + oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3 + LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO + Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc + LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= + ) ; key id = 19036 +. 93910 IN DNSKEY 256 3 8 ( + AwEAAcaGQEA+OJmOzfzVfoYN249JId7gx+OZMbxy69Hf + UyuGBbRN0+HuTOpBxxBCkNOL+EJB9qJxt+0FEY6ZUVjE + g58sRr4ZQ6Iu6b1xTBKgc193zUARk4mmQ/PPGxn7Cn5V + EGJ/1h6dNaiXuRHwR+7oWh7DnzkIJChcTqlFrXDW3tjt + ) ; key id = 34525</programlisting> + + <para>Schrik niet als de verkregen sleutels anders zijn dan in dit + voorbeeld. Ze kunnen zijn veranderd nadat deze instructies voor het + laatst waren bijgewerkt. De uitvoer bevat in feite twee sleutels. De + eerste sleutel, met de waarde 257 na het DNSKEY-recordtype, is degene + die nodig is. Deze waarde geeft aan dat dit een Secure Entry Point ( + <acronym role="Secure Entry Point">SEP</acronym>) is, beter bekend als + een Key Signing Key (<acronym role="Key Signing Key">KSK</acronym>). + De tweede sleutel, met de waarde 256, is een deelsleutel, beter bekend + als een Zone Signing Key (<acronym + role="Zone Signing Key">ZSK</acronym>). Meer over de verschillende + soorten sleutels komt aan bod in <xref + linkend="dns-dnssec-auth"/>.</para> + + <para>Nu moet de sleutel gecontroleerd en geformatteerd worden zodat + <acronym>BIND</acronym> deze kan gebruiken. Maak om de sleutel te + controleren een <acronym role="Delegation Signer">DS</acronym> - + <acronym role="Resource Record">RR</acronym>-paar aan. Maak een + bestand aan dat deze <acronym role="Resource Record">RR</acronym>s + bevat aan met</para> + + <screen>&prompt.user; <userinput>dnssec-dsfromkey -f root-dnskey . > root.ds</userinput></screen> + + <para>Deze records gebruiken respectievelijk SHA-1 en SHA-256, en dienen + er als het volgende voorbeeld uit te zien, waarbij het langere record + SHA-256 gebruikt.</para> + + <programlisting>. IN DS 19036 8 1 B256BD09DC8DD59F0E0F0D8541B8328DD986DF6E +. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5</programlisting> + + <para>Het SHA-256 <acronym>RR</acronym> kan nu worden vergeleken met de + digest in <ulink + url="https://data.iana.org/root-anchors/root-anchors.xml">https://data.iana.org/root-anchors/root-anchors.xml</ulink>. + Om er absoluut zeker van te zijn dat er niet geknoeid is met de + sleutel kunnen de gegevens in het <acronym>XML</acronym>-bestand + worden gecontroleerd met de <acronym>PGP</acronym>-handtekening in + <ulink + url="https://data.iana.org/root-anchors/root-anchors.asc">https//data.iana.org/root-anchors/root-anchors.asc</ulink>.</para> + + <para>Vervolgens dient de sleutel juist geformateerd te worden. Dit + verschilt een beetje tussen versie 9.6.2 en versie 9.7 en later van + <acronym>BIND</acronym>. In versie 9.7 is ondersteuning toegevoegd om + automatisch veranderingen aan de sleutel te volgen en deze bij te + werken indien nodig. Dit wordt gedaan met + <literal>managed-keys</literal> zoals in het volgende voorbeeld te + zien is. Als de oudere versie gebruikt wordt, wordt de sleutel + toegevoegd met een commando <literal>trusted-keys</literal> en dient + deze handmatig bijgewerkt te worden. Voor <acronym>BIND</acronym> + 9.6.2 ziet het formaat er uit als:</para> + + <programlisting>trusted-keys { + "." 257 3 8 + "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq + QxA+Uk1ihz0="; +};</programlisting> + + <para>Voor versie 9.7 ziet het formaat er echter zo uit:</para> + + <programlisting>managed-keys { + "." initial-key 257 3 8 + "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq + QxA+Uk1ihz0="; +};</programlisting> + + <para>De rootsleutel kan nu aan <filename>named.conf</filename> worden + toegevoegd, ofwel direct of door een bestand dat de sleutel bevat te + includen. Stel na deze stappen <acronym>BIND</acronym> in zodat het + <acronym>DNSSEC</acronym>-validatie uitvoert op verzoeken door + <filename>named.conf</filename> te bewerken en het volgende aan de + directief <literal>options</literal> toe te voegen:</para> + + <programlisting>dnssec-enable yes; +dnssec-validation yes;</programlisting> + + <para>Om te controleren dat het ook echt werkt, kan + <application>dig</application> gebruikt worden om een verzoek op een + ondertekende zone uit te voeren met de zojuist geconfigureerde + resolver. Een succesvol antwoord zal de vlag <literal>AD</literal> + bevatten om aan te geven dat de gegevens zijn geautenticeerd. Een + verzoek als</para> + + <screen>&prompt.user; <userinput>dig @<replaceable>resolver</replaceable> +dnssec se ds </userinput></screen> + + <para>zou het <acronym>DS</acronym> <acronym>RR</acronym> paar voor de + <literal>.se</literal>-zone moeten teruggeven. In de sectie + <literal>flags:</literal> moet de vlag <literal>AD</literal> te zien + zijn, als in:</para> + + <programlisting>... +;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 +...</programlisting> + + <para>De resolver is nu in staat om <acronym>DNS</acronym>-verzoeken te + autenticeren.</para> + </sect3> + + <sect3 id="dns-dnssec-auth"> + <title>Configuratie van een autoratieve + <acronym>DNS</acronym>-server</title> + + <para>Om een autoratieve naamserver een met <acronym>DNSSEC</acronym> + ondertekende zone te laten serveren is wat meer werk nodig. Een zone + wordt ondertekend met cryptografische sleutels die aangemaakt moeten + worden. Het is mogelijk om hier slechts één sleutel + voor te gebruiken. De methode die de voorkeur verdient is echter om + een sterke, goed beschermde Key Signing Key (<acronym + role="Key Signing Key">KSK</acronym>) die niet vaak wordt geroteerd + en een Zone Signing Key (<acronym + role="Zone Signing Key">ZSK</acronym>) die vaker wordt geroteerd te + hebben. Informatie over aanbevolen procedures staat in <ulink + url="http://tools.ietf.org/rfc/rfc4641.txt"><acronym>RFC</acronym> + 4641: <acronym>DNSSEC</acronym> Operational Practices</ulink>. + Procedures betreffende de rootzone staan in <ulink + url="http://www.root-dnssec.org/wp-content/uploads/2010/06/icann-dps-00.txt"><acronym>DNSSEC</acronym> + Practice Statement for the Root Zone <acronym>KSK</acronym> + operator</ulink> en <ulink + url="http://www.root-dnssec.org/wp-content/uploads/2010/06/vrsn-dps-00.txt"><acronym>DNSSEC</acronym> + Practice Statement for the Root Zone <acronym>ZSK</acronym> + operator</ulink>. De <acronym role="Key Signing Key">KSK</acronym> + wordt gebruikt om een autoriteitsketen voor de te valideren gegevens + op te bouwen en wordt daarom ook een Secure Entry Point (<acronym + role="Secure Entry Point">SEP</acronym>)-sleutel genoemd. Een + bericht-digest van deze sleutel, dat Delegation Signer (<acronym + role="Delegation Signer">DS</acronym>)-record genoemd wordt, moet + gepubliceerd zijn in de ouderzone om een vertrouwensketen op te + bouwen. Hoe dit bereikt wordt hangt af van de eigenaar van de + ouderzone. De <acronym role="Zone Signing Key">ZSK</acronym> wordt + gebruikt om de zone te ondertekenen, en hoeft alleen daar gepubliceerd + te worden.</para> + + <para>Om <acronym>DNSSEC</acronym> aan te zetten voor de zone <hostid + role="domainname">voorbeeld.com</hostid> zoals beschreven in de + voorgaande voorbeelden, dient als eerste + <application>dnssec-keygen</application> gebruikt te worden om het + sleutelpaar met de <acronym>KSK</acronym> en <acronym>ZSK</acronym> + te genereren. Dit sleutelpaar kan verschillende cryptografische + algoritmes gebruiken. Het wordt aanbevolen om RSA/SHA-256 voor de + sleutels te gebruiken, een sleutellengte van 2048 bits zou voldoende + moeten zijn. Om de <acronym>KSK</acronym> voor <hostid + role="domainname">voorbeeld.com</hostid> te genereren:</para> + + <screen>&prompt.user; <userinput>dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE voorbeeld.com</userinput></screen> + + <para>en om de <acronym>ZSK</acronym> te genereren:</para> + + <screen>&prompt.user; <userinput>dnssec-keygen -a RSASHA256 -b 2048 -n ZONE voorbeeld.com</userinput></screen> + + <para><application>dnssec-keygen</application> maakt twee bestanden, de + publieke en private sleutels in bestanden met namen als + <filename>Kvoorbeeld.com.+005+nnnnn.key</filename> (publiek) en + <filename>Kvoorbeeld.com.+005+nnnnn.private</filename> (privaat). Het + gedeelte <literal>nnnnn</literal> van de bestandsnaam is een + sleutel-ID van vijf cijfers. Houd bij welke sleutel-ID bij welke + sleutel hoort. Dit is in het bijzonder van belang wanneer er meerdere + sleutels per zone zijn. Het is ook mogelijk om de sleutels te + hernoemen. Voor elk <acronym>KSK</acronym>-bestand:</para> + + <screen>&prompt.user; <userinput>mv Kvoorbeeld.com.+005+nnnnn.key Kvoorbeeld.com.+005+nnnn.KSK.key</userinput> +&prompt.user; <userinput>mv Kvoorbeeld.com.+005+nnnnn.private Kvoorbeeld.com.+005+nnnnn.KSK.private</userinput></screen> + + <para>Voor <acronym>ZSK</acronym>-bestanden dient <literal>KSK</literal> + waar nodig door <literal>ZSK</literal> vervangen te worden. De + bestanden kunnen nu worden opgenomen in het zonebestand, door de + opdracht <literal>$include</literal> te gebruiken. Het zou er + ongeveer als volgt uit moeten zien:</para> + + <programlisting>$include Kvoorbeeld.com.+005+nnnnn.KSK.key ; KSK +$include Kvoorbeeld.com.+005+nnnnn.ZSK.key ; ZSK</programlisting> + + <para>Onderteken tenslotte de zone en vertel <acronym>BIND</acronym> om + het ondertekende zonebestand te gebruiken. Voor het ondertekenen van + een zone wordt <application>dnssec-signzone</application> gebruikt. + Het commando om de zone <hostid + role="domainname">voorbeeld.com</hostid>, dat zich in + <filename>voorbeeld.com.db</filename> bevindt, zou er ongeveer zo + uit moeten zien:</para> + + <screen>&prompt.user; <userinput>dnssec-signzone -o voorbeeld.com -k Kvoorbeeld.com.+005+nnnnn.KSK voorbeeld.com.db Kvoorbeeld.com.+005+nnnnn.ZSK.key</userinput></screen> + + <para>De sleutel die aan het argument <option>-k</option> wordt + meegegeven is de <acronym>KSK</acronym> en het andere sleutelbestand + is de <acronym>ZSK</acronym> dat bij het ondertekenen gebruikt moet + worden. Het is mogelijk om meer dan één + <acronym>KSK</acronym> en <acronym>ZSK</acronym> op te geven, wat tot + gevolg heeft dat de zone met alle meegegeven sleutels wordt + ondertekend. Dit kan nodig zijn om zonegegevens aan te leveren die + met meerdere algoritmes zijn ondertekend. De uitvoer van + <application>dnssec-signzone</application> is een zonebestand met + daarin alle <acronym>RR</acronym>s ondertekend. Deze uitvoer komt in + een bestand met de extensie <literal>.signed</literal> terecht, zoals + <filename>voorbeeld.com.db.signed</filename>. De <acronym + role="Delegation Signer">DS</acronym>-records worden ook naar een + apart bestand <filename>dsset-voorbeeld.com</filename> geschreven. Om + deze ondertekende zone te gebruiken hoeft alleen de zone-directief in + <filename>named.conf</filename> veranderd te worden om + <filename>voorbeeld.com.db.signed</filename>. Standaard zijn de + ondertekeningen slechts 30 dagen geldig, wat betekent dat de zone over + ongeveer 15 dagen hertekend moet worden om er zeker van te zijn dat + resolvers geen records met oude ondertekeningen cachen. Het is + mogelijk om hiervoor een script en een crontaak te maken. Bekijk de + relevante handleidingen voor details.</para> + + <para>Zorg ervoor dat de private sleutels veilig blijven, zoals met alle + cryptografische sleutels. Bij het veranderen van een sleutel kan het + beste de nieuwe sleutel in de zone opgenomen worden, en nog met de + oude sleutel te ondertekenen, en om daarna over te stappen op de + nieuwe sleutel. Nadat deze handelingen zijn voltooid kan de oude + sleutel uit de zone worden verwijderd. Wanneer dit niet wordt gedaan + kunnen de <acronym>DNS</acronym>-gegevens tijdelijk onbeschikbaar zijn + totdat de nieuwe sleutel door de + <acronym>DNS</acronym>-hiërarchie is gepropageerd. Meer + informatie over sleutelwisselingen en andere + praktijken rondom <acronym>DNSSEC</acronym> staan in <ulink + url="http://www.ietf.org/rfc/rfc4641.txt"><acronym>RFC</acronym> + 4641: <acronym>DNSSEC</acronym> Operational + practices</ulink>.</para> + </sect3> + + <sect3> + <title>Automatisering met <acronym>BIND</acronym> 9.7 of nieuwer</title> + + <para>In versie 9.7 van <acronym>BIND</acronym> is een nieuwe + mogelijkheid genaamd <emphasis>Smart Signing</emphasis> + geïntroduceerd. Deze mogelijkheid heeft als doel om het + sleutelbeheer en ondertekenproces eenvoudiger te maken door delen van + deze taken te automatiseren. Door de sleutels in een + <emphasis>sleutelreservoir</emphasis> te stoppen en de nieuwe optie + <literal>auto-dnssec</literal> te gebruiken, is het mogelijk om een + dynamische zone aan te maken welke opnieuw getekend wordt indien dat + nodig is. Gebruik om deze zone bij te werken + <application>nsupdate</application> met de nieuwe <option>-l</option>. + <application>rndc</application> kan nu ook zones ondertekenen met + sleutels uit het sleutelreservoir door de optie <option>sign</option> + te gebruiken. Voeg, om <acronym>BIND</acronym> dit automatische + ondertekenen en bijwerken van zones te laten gebruiken voor <hostid + role="domainname">voorbeeld.com</hostid>, het volgende aan + <filename>named.conf</filename> toe:</para> + + <programlisting>zone voorbeeld.com { + type master; + key-directory "/etc/named/keys"; + update-policy local; + auto-dnssec maintain; + file "/etc/named/dynamic/voorbeeld.com.zone"; +};</programlisting> + + <para>Nadat deze veranderingen gemaakt zijn, dienen de sleutels voor de + zone aangemaakt te worden zoals uitgelegd in <xref + linkend="dns-dnssec-auth"/>, deze sleutels in het sleutelreservoir + gestopt te worden dat als argument aan de + <literal>key-directory</literal> in het zoneconfiguratie is + meegegeven, waarna de zone automatisch zal worden ondertekend. Zones + die op deze manier zijn geconfigureerd dienen met + <application>nsupdate</application> te worden gedaan, dat voor het + opnieuw ondertekenen van de zone met de nieuw toegevoegde gegevens zal + zorgen. Zie voor meer details <xref linkend="dns-read"/> en de + <acronym>BIND</acronym>-documentatie.</para> + </sect3> + </sect2> + + <sect2> + <title>Beveiliging</title> + + <para>Hoewel BIND de meest gebruikte implementatie van DNS is, is + er altijd nog het beveiligingsvraagstuk. Soms worden er + mogelijke en te misbruiken beveiligingsgaten gevonden.</para> + + <para>Hoewel &os; <application>named</application> automatisch in + een &man.chroot.8;-omgeving plaatst; zijn er verschillende + andere beveiligingsmechanismen actief die zouden kunnen helpen + om mogelijke aanvallen op de <acronym>DNS</acronym>-dienst af te + wenden.</para> + + <para>Het is altijd verstandig om de <ulink + url="http://www.cert.org/">CERT</ulink> + beveiligingswaarschuwingen te lezen en een abonnement te nemen + op de &a.security-notifications; om bij te blijven met de + beveiligingsproblemen wat betreft Internet en &os;.</para> + + <tip> + <para>Als er problemen ontstaan, kan het bijwerken van broncode + en het opnieuw bouwen van <application>named</application> + hulp bieden.</para> + </tip> + </sect2> + + <sect2 id="dns-read"> + <title>Verder lezen</title> + + <para>BIND/<application>named</application> hulppagina's: + &man.rndc.8; &man.named.8; &man.named.conf.5; &man.nsupdate.8; + &man.dnssec-signzone.8; &man.dnssec-keygen.8;</para> + + <itemizedlist> + <listitem> + <para><ulink + url="https://www.isc.org/software/bind/">Officiële + ISC BIND pagina</ulink></para> + </listitem> + + <listitem> + <para><ulink + url="https://www.isc.org/software/guild/">Officieel ISC BIND + Forum</ulink></para> + </listitem> + + <listitem> + <para><ulink + url="http://www.oreilly.com/catalog/dns5/">O'Reilly DNS en + BIND 5e Editie</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://www.root-dnssec.org/documentation/">Root + <acronym>DNSSEC</acronym></ulink></para> + </listitem> + + <listitem> + <para><ulink + url="http://data.iana.org/root-anchors/draft-icann-dnssec-trust-anchor.html"> + <acronym>DNSSEC</acronym> Trust Anchor Publication for the Root + Zone</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc1034">RFC1034 - + Domain Names - Concepts and Facilitities</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc1035">RFC1035 - + Domain Names - Implementation and Specification</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc4033">RFC4033 - + DNS Security Introduction and Requirements</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc4034">RFC4034 - + Resource Records for the DNS Security Extensions</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc4035">RFC4035 - + Protocol Modifications for the DNS Security + Extensions</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc4641">RFC4641 - + DNSSEC Operational Practices</ulink></para> + </listitem> + + <listitem> + <para><ulink url="http://tools.ietf.org/html/rfc5011">RFC5011 - + Automated Updates of DNS Security (<acronym>DNSSEC</acronym> + Trust Anchors)</ulink></para> + </listitem> + </itemizedlist> + </sect2> + </sect1> + + <sect1 id="network-apache"> + <sect1info> + <authorgroup> + <author> + <firstname>Murray</firstname> + <surname>Stokely</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Apache HTTP server</title> + + <indexterm> + <primary>webservers</primary> + + <secondary>opzetten</secondary> + </indexterm> + + <indexterm><primary>Apache</primary></indexterm> + + <sect2> + <title>Overzicht</title> + + <para>&os; wordt gebruikt om een paar van de drukste websites ter + wereld te draaien. De meeste webservers op Internet maken + gebruik van de <application>Apache HTTP Server</application>. + <application>Apache</application> softwarepakketten staan op de + &os; installatiemedia. Als <application>Apache</application> + niet bij de oorspronkelijke installatie van &os; is + meegeïnstalleerd, dan kan dat vanuit de port <filename + role="package">www/apache22</filename>.</para> + + <para>Als <application>Apache</application> succesvol is + geïnstalleerd, moeten er instellingen gemaakt worden.</para> + + <note> + <para>In dit onderdeel wordt versie 2.2.X van de + <application>Apache HTTP Server</application> behandeld omdat + die het meest gebruikt wordt op &os;. + Meer gedetailleerde informatie over + <application>Apache 2.X</application> dat buiten het bereik van + dit document valt is te vinden op <ulink + url="http://httpd.apache.org/"></ulink>.</para> + </note> + </sect2> + + <sect2> + <title>Instellen</title> + + <indexterm> + <primary>Apache</primary> + + <secondary>configuratiebestand</secondary> + </indexterm> + + <para>Het belangrijkste bestand met instellingen voor de + <application>Apache HTTP Server</application> op &os; is + <filename>/usr/local/etc/apache22/httpd.conf</filename>. Dit + bestand is een typisch &unix; tekstgebaseerd + instellingenbestand waarin regels met commentaar beginnen met + het karakter <literal>#</literal>. Het uitputtend beschrijven + van alle mogelijke instellingen valt buiten het bereik van dit + boek, dus worden alleen de meest gebruikte directieven + beschreven.</para> + + <variablelist> + <varlistentry> + <term><literal>ServerRoot "/usr/local"</literal></term> + + <listitem> + <para>Hierin wordt de standaard mappenhiërarchie voor + de <application>Apache</application> installatie + aangegeven. Binaire bestanden staan in de submappen + <filename class="directory">bin</filename> en <filename + class="directory">sbin</filename> van de serverroot en + bestanden met instellingen staan in <filename + class="directory">etc/apache</filename>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>ServerAdmin beheerder@beheer.adres</literal></term> + + <listitem> + <para>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.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>ServerName www.example.com</literal></term> + + <listitem> + <para>Met <literal>ServerName</literal> kan een hostnaam + ingesteld worden die wordt teruggezonden aan de + cliënten als de naam van de server anders is dan diegene + is ingesteld (gebruik bijvoorbeeld <hostid>www</hostid> in + plaats van de echte hostnaam).</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>DocumentRoot + "/usr/local/www/apache22/data"</literal></term> + + <listitem> + <para><literal>DocumentRoot</literal>: de map waaruit de + documenten worden geserveerd. Standaard worden alle + verzoeken uit deze map gehaald, maar er kunnen symbolische + links en aliassen gebruikt worden om naar andere locaties + te wijzen.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Het is altijd een goed idee om reservekopieën te maken + van het instellingenbestand voor + <application>Apache</application> vóór het maken + van wijzigingen. Als de juiste instellingen gemaakt zijn, kan + <application>Apache</application> gestart worden.</para> + </sect2> + + <sect2> + <title><application>Apache</application> draaien</title> + + <indexterm> + <primary>Apache</primary> + + <secondary>starten of stoppen</secondary> + </indexterm> + + <para>De port <filename role="package">www/apache2</filename> installeert + een &man.rc.8;-script dat helpt met het starten, stoppen en herstarten + van <application>Apache</application> en is te vinden in de map + <filename class="directory">/usr/local/etc/rc.d/</filename>.</para> + + <para>Om <application>Apache</application> met het systeem mee te + starten kan de volgende regel aan + <filename>/etc/rc.conf</filename> worden toegevoegd:</para> + + <programlisting>apache22_enable="YES"</programlisting> + + <para>Als het nodig is <application>Apache</application> met afwijkende + opties op te starten, kan de volgende regel aan + <filename>/etc/rc.conf</filename> worden toegevoegd:</para> + + <programlisting>apache22_flags=""</programlisting> + + <para>De configuratie van <application>Apache</application> kan worden + getest op fouten voordat het daemon <command>httpd</command> voor de + eerste keer wordt gestart, of na het maken van wijzigingen aan de + instellingen terwijl <command>httpd</command> draait. Dit kan direct + door het &man.rc.8;-script worden gedaan, of door het gereedschap + &man.service.8; door één van de volgende commando's op te + geven:</para> + + <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 configtest</userinput></screen> + + <screen>&prompt.root; <userinput>service apache22 configtest</userinput></screen> + + <note> + <para>Het is belangrijk om op te merken dat + <literal>configtest</literal> geen &man.rc.8;-standaard is, verwacht + niet dat het met alle &man.rc.8;-opstartscripts werkt.</para> + </note> + + <para>Als <application>Apache</application> geen instellingsfouten meldt, + kan <application>Apache</application> <command>httpd</command> + gestart worden met dezelfde &man.rc.8;- en + &man.service.8;-mechanismen:</para> + + <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 start</userinput></screen> + + <screen>&prompt.root; <userinput>service apache22 start</userinput></screen> + + <para>De dienst <command>httpd</command> kan getest worden door + <literal>http://<hostid + role="fqdn"><replaceable>localhost</replaceable></hostid></literal> + in een webbrowser te typen, waarbij <replaceable>localhost</replaceable> + door de volledig gekwalificeerde domeinnaam wordt vervangen van de + machine die <command>httpd</command> draait, als het niet de lokale + machine is. De standaard webpagina die afgebeeld wordt is + <filename>/usr/local/www/apache22/data/index.html</filename>.</para> + </sect2> + + <sect2> + <title>Virtuele hosting</title> + + <para><application>Apache</application> ondersteunt twee + verschillende manieren van Virtuele Hosting. De eerste methode + is Naamgebaseerde Virtuele Hosting. Naamgebaseerde Virtuele + Hosting gebruikt de HTTP/1.1 headers van de cliënten om de + hostnaam uit te zoeken. Hierdoor kunnen meerdere domeinen + hetzelfde IP-adres delen.</para> + + <para>Om <application>Apache</application> gebruik te laten maken + van Naamgebaseerde Virtuele Hosting kan een regel als de + volgende in <filename>httpd.conf</filename> worden opgenomen:</para> + + <programlisting>NameVirtualHost *</programlisting> + + <para>Als een webserver <hostid + role="fqdn">www.domein.tld</hostid> heet en er moet een + virtueel domein voor <hostid + role="fqdn">www.anderdomein.tld</hostid> gaan draaien, dan + kunnen de volgende regels aan <filename>httpd.conf</filename> + worden toegevoegd:</para> + + <screen><VirtualHost *> + ServerName www.domein.tld + DocumentRoot /www/domein.tld +</VirtualHost> + +<VirtualHost *> + ServerName www.anderdomein.tld + DocumentRoot /www/anderdomein.tld +</VirtualHost></screen> + + <para>De adressen en de paden uit dit voorbeeld kunnen in echte + implementaties uiteraard gewijzigd worden.</para> + + <para>Meer informatie over het opzetten van virtuele hosts staat + in de officiële documentatie voor + <application>Apache</application> op <ulink + url="http://httpd.apache.org/docs/vhosts/"></ulink></para> + </sect2> + + <sect2> + <title>Apache modules</title> + + <indexterm> + <primary>Apache</primary> + + <secondary>modules</secondary> + </indexterm> + + <para>Er zijn veel verschillende + <application>Apache</application> modules die functionaliteit + toevoegen aan de basisdienst. De &os; Portscollectie biedt + op een eenvoudige manier de mogelijkheid om + <application>Apache</application> samen met de meeste populaire + add-on modules te installeren.</para> + + <sect3> + <title><application>mod_ssl</application></title> + + <indexterm> + <primary>webserver</primary> + + <secondary>veilig</secondary> + </indexterm> + + <indexterm><primary>SSL</primary></indexterm> + + <indexterm><primary>cryptografie</primary></indexterm> + + <para>De module <application>mod_ssl</application> gebruikt de + bibliotheek OpenSSL 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.</para> + + <para>De module <application>mod_ssl</application> wordt standaard + gebouwd, maar kan worden aangezet door tijdens het compileren + <literal>-DWITH_SSL</literal> op te geven.</para> + </sect3> + + <sect3> + <title>Taalbindingen</title> + + <para>Er zijn Apache-modules beschikbare voor de meeste grote + scriptingtalen. Deze modules maken het typisch mogelijk om + <application>Apache</application>-modules geheel in een + scriptingtaal te schrijven. Ze worden ook vaak gebruikt als + een persistente interpreter die in de server zit en die de + rompslomp van het starten van een externe interpreter en de + opstartvertraging voor dynamische websites vermijdt, zoals + beschreven in de volgende sectie.</para> + </sect3> + </sect2> + + <sect2> + <title>Dynamische websites</title> + + <indexterm> + <primary>webservers</primary> + + <secondary>dynamisch</secondary> + </indexterm> + + <para>In het afgelopen decennium hebben steeds meer bedrijven zich + op Internet gericht om hun omzet te verhogen en hun + zichtbaarheid te vergroten. Hiermee is ook de behoefte aan + interactieve webinhoud toegenomen. Hoewel sommige bedrijven + zoals µsoft; oplossingen hebben geïntroduceerd voor + hun eigen (propriëtaire) producten, heeft ook de open + source gemeenschap een antwoord op de vraag gegeven. Moderne + opties voor dynamische webinhoud zijn onder andere Django, Ruby + on Rails, <application>mod_perl2</application>, en + <application>mod_php</application>.</para> + + <sect3> + <title>Django</title> + + <para>Django is een BSD-gelicenseerd raamwerk ontworpen om + ontwikkelaars in staat te stellen om snel hoog presterende, + elegante webapplicaties te schrijven. Het biedt een vertaling + van objecten naar relaties zodat datatypes ontwikkeld kunnen + worden als Python-objecten, en er een rijke dynamische + databasetoegang voor die objecten kan worden geboden zonder + dat de ontwikkelaar ooit SQL hoeft te schrijven. Het biedt + ook een uitbreidbaar sjabloonsysteem zodat de applicatielogica + is gescheiden van de HTML-presentatie.</para> + + <para>Django is afhankelijk van + <application>mod_python</application>, + <application>Apache</application>, en een SQL-database-engine + naar keuze. De &os;-port zal al deze vereisten met de juiste + vlaggen voor u installeren.</para> + + <example id="network-www-django-install"> + <title>Django installeren met <application>Apache2</application>, + <application>mod_python3</application> en + <application>PostgreSQL</application></title> + + <screen>&prompt.root; <userinput>cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL</userinput></screen> + </example> + + <para>Als Django en deze vereisten eenmaal zijn + geïnstalleerd, dient u een Django-projectmap te maken en + vervolgens Apache te configureren om de ingebakken + Python-interpreter te gebruiken om uw applicatie voor + specifieke URL's op uw site aan te roepen.</para> + + <example id="network-www-django-apache-config"> + <title>Apache-configuratie voor Django/mod_python</title> + + <para>U moet een regel aan het Apache-bestand + <filename>httpd.conf</filename> toevoegen om Apache in te + stellen om verzoeken voor bepaalde URL's aan uw + webapplicatie door te geven:</para> + + <screen><Location "/"> + SetHandler python-program + PythonPath "['/map/naar/uw/django-pakketten/'] + sys.path" + PythonHandler django.core.handlers.modpython + SetEnv DJANGO_SETTINGS_MODULE mijnsite.settings + PythonAutoReload On + PythonDebug On +</Location></screen> + </example> + </sect3> + + <sect3> + <title>Ruby on Rails</title> + + <indexterm><primary>Ruby on Rails</primary></indexterm> + + <para>Ruby on Rails is een ader opensource webraamwerk dat een + volledige ontwikkelstack biedt en geoptimaliseerd is om + webontwikkelaars productiever te maken en snel krachtige + applicaties te laten ontwikkelen. Het kan eenvoudig vanuit + het portssysteem geïnstalleerd worden.</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/www/rubygem-rails; make all install clean</userinput></screen> + </sect3> + + <sect3> + <title><application>mod_perl2</application></title> + + <indexterm> + <primary>mod_perl2</primary> + + <secondary>Perl</secondary> + </indexterm> + + <para>Het <application>Apache</application>/Perl + integratieproject brengt de volledige kracht van de + programmeertaal Perl en de <application>Apache HTTP + Server</application> samen. Met de module + <application>mod_perl2</application> is het mogelijk om + <application>Apache</application>-modules volledig in Perl te + schrijven. Daarnaast voorkomt een ingebouwde persistente + interpreter in de server de rompslomp van het starten van een + externe interpreter en de nadelen van de opstarttijd van + Perl.</para> + + <para><application>mod_perl2</application> is beschikbaar in de port + <filename role="package">www/mod_perl2</filename>.</para> + </sect3> + + <sect3> + <sect3info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect3info> + + <title><application>mod_php</application></title> + + <indexterm> + <primary>mod_php</primary> + + <secondary>PHP</secondary> + </indexterm> + + <para><acronym>PHP</acronym>, ook bekend als <quote>PHP: + Hypertext Preprocessor</quote>, is een algemene scripttaal die + bijzonder geschikt is voor webontwikkeling. Het is mogelijk + de taal in te bedden in <acronym>HTML</acronym> en de syntaxis + is afgeleid van C, &java; en Perl met de bedoeling + webontwikkelaars in staat te stellen om snel dynamisch + samengestelde pagina's te schrijven.</para> + + <para>Om ondersteuning voor <acronym>PHP</acronym>5 toe te + voegen aan de <application>Apache</application> webserver kan + eerst de port <filename role="package">lang/php5</filename> + geïnstalleerd worden.</para> + + <para>Als de port <filename role="package">lang/php5</filename> + voor het eerst geïnstalleerd wordt, worden automatisch de + beschikbare <literal>OPTIONS</literal> weergegeven. Als er + geen menu wordt weergegeven, omdat de port <filename + role="package">lang/php5</filename> reeds in het verleden is + geïnstalleerd, is het altijd mogelijk om het optiedialoog + weer te laten verschijnen door</para> + + <screen>&prompt.root; <userinput>make config</userinput></screen> + + <para>uit te voeren in de map van de port.</para> + + <para>Controleer in het optiedialoog dat de optie + <literal>APACHE</literal> <application>mod_php5</application> + als een laadbare module voor de webserver + <application>Apache</application> bouwt.</para> + + <note> + <para>Een heleboel sites draaien nog steeds + <acronym>PHP</acronym>4 om verschillende redenen + (compatibiliteitszaken of reeds in gebruik genomen + webapplicaties). Als <application>mod_php4</application> + nodig is in plaats van <application>mod_php5</application>, + gebruik dan de port <filename + role="package">lang/php4</filename>. De port <filename + role="package">lang/php4</filename> ondersteunt een groot + deel van de configuratie- en bouwopties van de port + <filename role="package">lang/php5</filename>.</para> + </note> + + <para>Hiermee worden de modules die nodig zijn voor de + ondersteuning van dynamische + <acronym>PHP</acronym>-applicaties geïnstalleerd en + ingesteld. Controleer dat de volgende secties aan + <filename>/usr/local/etc/apache22/httpd.conf</filename> zijn + toegevoegd:</para> + + <programlisting>LoadModule php5_module libexec/apache/libphp5.so</programlisting> + + <programlisting>AddModule mod_php5.c + <IfModule mod_php5.c> + DirectoryIndex index.php index.html + </IfModule> + <IfModule mod_php5.c> + AddType application/x-httpd-php .php + AddType application/x-httpd-php-source .phps + </IfModule></programlisting> + + <para>Na voltooiing is een eenvoudige aanroep van het commando + <command>apachectl</command> voor een nette herstart nodig om + de module <acronym>PHP</acronym> te laden:</para> + + <screen>&prompt.root; <userinput>apachectl graceful</userinput></screen> + + <para>Voor toekomstig bijwerken van <acronym>PHP</acronym> zal + het commando <command>make config</command> niet nodig zijn; + de geselecteerde <literal>OPTIONS</literal> worden automatisch + bewaard door het &os; Ports raamwerk.</para> + + <para>De ondersteuning voor <acronym>PHP</acronym> in &os; is + extreem modulair waardoor de basisinstallatie zeer beperkt is. + Het is heel gemakkelijk om ondersteuning toe te voegen door de + port <filename role="package">lang/php5-extensions</filename> + te gebruiken. Deze port biedt een menugestuurde interface voor + de installatie van <acronym>PHP</acronym>-uitbreidingen. Als + alternatief kunnen individuele uitbreidingen worden + geïnstalleerd door de juiste port te gebruiken.</para> + + <para>Om bijvoorbeeld ondersteuning voor de + <application>MySQL</application> databaseserver aan + <acronym>PHP</acronym>5 toe te voegen kan gewoonweg de port + <filename>databases/php5-mysql</filename> + geïnstalleerd worden:</para> + + <para>Na de installatie van een uitbreiding moet de + <application>Apache</application>-server herladen worden om de + nieuwe veranderingen in de configuratie op te pikken:</para> + + <screen>&prompt.root; <userinput>apachectl graceful</userinput></screen> + </sect3> + </sect2> + </sect1> + + <sect1 id="network-ftp"> + <sect1info> + <authorgroup> + <author> + <firstname>Murray</firstname> + <surname>Stokely</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>File Transfer Protocol (FTP)</title> + + <indexterm><primary>FTP servers</primary></indexterm> + + <sect2> + <title>Overzicht</title> + + <para>Het File Transfer Protocol (FTP) biedt gebruikers een + eenvoudige manier om bestanden van en naar een <acronym + role="File Transfer Protocol">FTP</acronym> server te + verplaatsen. &os; bevat <acronym + role="File Transfer Protocol">FTP</acronym> + server software, <application>ftpd</application>, in het + basissysteem. Hierdoor is het opzetten en beheren van een + <acronym role="File Transfer Protocol">FTP</acronym> server op + &os; erg overzichtelijk.</para> + </sect2> + + <sect2> + <title>Instellen</title> + + <para>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 + <filename>/etc/ftpusers</filename> 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.</para> + + <para>Het kan ook wenselijk zijn de FTP toegang voor sommige + gebruikers te beperken, maar niet onmogelijk te maken. Dit kan + met <filename>/etc/ftpchroot</filename>. 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.</para> + + <indexterm> + <primary>FTP</primary> + + <secondary>anoniem</secondary> + </indexterm> + + <para>Om anonieme FTP toegang voor een server in te schakelen, + dient er een gebruiker <username>ftp</username> op een &os; + systeem aangemaakt te worden. Dan kunnen gebruikers op de + server aanmelden met de gebruikersnaam <username>ftp</username> + of <username>anonymous</username> en met ieder wachtwoord (de + geldende conventie schrijft voor dat dit een emailadres + 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 <username>ftp</username>.</para> + + <para>Er zijn twee tekstbestanden waarin welkomstberichten voor de + FTP-cliënten gezet kunnen worden. De inhoud van + <filename>/etc/ftpwelcome</filename> wordt getoond voordat + gebruikers een aanmeldprompt zien. Na een succesvolle + aanmelding wordt de inhoud van + <filename>/etc/ftpmotd</filename> getoond. Het genoemde pad is + relatief ten opzichte van de aanmeldomgeving, dus voor anonieme + gebruikers wordt <filename>~ftp/etc/ftpmotd</filename> + getoond.</para> + + <para>Als een FTP server eenmaal correct is ingesteld, moet die + ingeschakeld worden in <filename>/etc/inetd.conf</filename>. + Daar moet het commentaarkarakter <literal>#</literal> voor de + bestaande <application>ftpd</application> regel verwijderd + worden:</para> + + <programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting> + + <para>Zoals is uitgelegd in <xref linkend="network-inetd-reread"/>, + moet de configuratie van <application>inetd</application> worden + herladen nadat dit instellingenbestand is gewijzigd. Details + over het aanzetten van <application>inetd</application> op uw + systeem staan in <xref linkend="network-inetd-settings"/>.</para> + + <para>Als alternatief kan <application>ftpd</application> ook + gestart worden als een op zichzelf staande dienst. In dat geval + volstaat het om de juiste variabele in te stellen in + <filename>/etc/rc.conf</filename>:</para> + + <programlisting>ftpd_enable="YES"</programlisting> + + <para>Na het instellen van de bovenstaande variabele zal de op + zichzelf staande server gestart worden nadat de computer opnieuw + is opgestart, of het kan handmatig worden gestart door het + volgende commando als <username>root</username> uit te + voeren:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/ftpd start</userinput></screen> + + <para>Nu kan aangemeld worden op de FTP-server met:</para> + + <screen>&prompt.user; <userinput>ftp localhost</userinput></screen> + </sect2> + + <sect2> + <title>Beheren</title> + + <indexterm><primary>syslog</primary></indexterm> + + <indexterm> + <primary>logboekbestanden</primary> + + <secondary>FTP</secondary> + </indexterm> + + <para>De <application>ftpd</application> daemon gebruikt + &man.syslog.3; om berichten te loggen. Standaard plaatst de + systeemlogdaemon berichten over FTP in + <filename>/var/log/xferlog</filename>. De lokatie van het FTP + logboek kan gewijzigd worden door de volgende regels in + <filename>/etc/syslog.conf</filename> te wijzigen:</para> + + <programlisting>ftp.info /var/log/xferlog</programlisting> + + <indexterm> + <primary>FTP</primary> + + <secondary>anoniem</secondary> + </indexterm> + + <para>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.</para> + </sect2> + </sect1> + + <sect1 id="network-samba"> + <sect1info> + <authorgroup> + <author> + <firstname>Murray</firstname> + <surname>Stokely</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Bestands- en printdiensten voor µsoft.windows; + cliënten (Samba)</title> + + <indexterm><primary>Samba server</primary></indexterm> + + <indexterm><primary>Microsoft Windows</primary></indexterm> + + <indexterm> + <primary>bestandsserver</primary> + + <secondary>Windows-cliënten</secondary> + </indexterm> + + <indexterm> + <primary>printserver</primary> + + <secondary>Windows-cliënten</secondary> + </indexterm> + + <sect2> + <title>Overzicht</title> + + <para><application>Samba</application> is een populair open + source softwarepakket dat bestands- en printdiensten voor + µsoft.windows; cliënten biedt. Die cliënten + kunnen dan ruimte op een &os; bestandssysteem gebruiken alsof + het een lokale schijf is en &os; printers gebruiken alsof het + lokale printers zijn.</para> + + <para><application>Samba</application> softwarepakketten horen + op de &os; installatiemedia te staan. Als + <application>Samba</application> bij de basisinstallatie niet + mee is geïnstalleerd, dan kan dat alsnog via de <filename + role="package">net/samba34</filename> port of met het + pakket.</para> + +<!-- mention LDAP, Active Directory, WinBIND, ACL, Quotas, PAM, .. --> + </sect2> + + <sect2> + <title>Instellen</title> + + <para>Een standaardbestand met instellingen voor + <application>Samba</application> wordt geïnstalleerd als + <filename>/usr/local/share/examples/samba34/smb.conf.default</filename>. + Dit bestand dient gekopieerd te worden naar + <filename>/usr/local/etc/smb.conf</filename> en voordat + <application>Samba</application> gebruikt kan worden, moeten er + aanpassingen aan worden gemaakt.</para> + + <para><filename>smb.conf</filename> bevat de instellingen voor + <application>Samba</application>, zoals die voor de printers en + de <quote>gedeelde bestandssystemen</quote> die gedeeld worden + met &windows; cliënten. Het pakket + <application>Samba</application> bevat een webgebaseerde + beheermodule die <application>swat</application> heet, waarmee + <filename>smb.conf</filename> op een eenvoudige manier ingesteld + kan worden.</para> + + <sect3> + <title>De Samba webbeheermodule gebruiken (SWAT)</title> + + <para>De Samba Webbeheermodule (SWAT) draait als een daemon + vanuit <application>inetd</application>. Daarom dient voor de + volgende regel uit <filename>/etc/inetd.conf</filename> het + commentaarkarakter verwijderd te worden voordat + <application>swat</application> gebruikt kan worden om + <application>Samba</application> in te stellen:</para> + + <programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat swat</programlisting> + + <para>Zoals is uitgelegd in <xref + linkend="network-inetd-reread"/>, moet de configuratie van + <application>inetd</application> worden herladen nadat dit + instellingenbestand is gewijzigd.</para> + + <para>Als <application>swat</application> is ingeschakeld in + <filename>inetd.conf</filename>, kan de module gebruikt worden + door met een browser een verbinding te maken met <ulink + url="http://localhost:901"></ulink>. Er dient aangemeld te + worden met het <username>root</username> account van het + systeem.</para> + +<!-- XXX screenshots go here, loader is creating them --> + + <para>Na succesvol aanmelden op de hoofdpagina voor de + <application>Samba</application> instellingen, is het mogelijk + de systeemdocumentatie te bekijken of te starten door op het + tabblad <guimenu>Globals</guimenu> te klikken. Het onderdeel + <guimenu>Globals</guimenu> correspondeert met de sectie + <literal>[global]</literal> in + <filename>/usr/local/etc/smb.conf</filename>.</para> + </sect3> + + <sect3> + <title>Systeembrede instellingen</title> + + <para>Of <application>Samba</application> nu wordt ingesteld + door <filename>/usr/local/etc/smb.conf</filename> direct te + bewerken of met <application>swat</application>, de eerste + instellingen die gemaakt moeten worden zijn de volgende:</para> + + <variablelist> + <varlistentry> + <term><literal>workgroup</literal></term> + + <listitem> + <para>NT Domeinnaam of Werkgroepnaam voor de computers die + verbinding gaan maken met de server.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>netbiosnaam</literal></term> + + <listitem> + <indexterm><primary>NetBIOS</primary></indexterm> + + <para>Hiermee wordt de NetBIOS naam waaronder de + <application>Samba</application> server bekend zal zijn + ingesteld. Standaard is de naam het eerste gedeelte van + de DNS-naam van een host.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>server string</literal></term> + + <listitem> + <para>Hiermee wordt de string ingesteld die te zien is als + het commando <command>net view</command> en een aantal + andere commando's die gebruik maken van de + beschrijvende tekst voor de server gebruikt worden.</para> + </listitem> + </varlistentry> + </variablelist> + </sect3> + + <sect3> + <title>Beveiligingsinstellingen</title> + + <para>Twee van de belangrijkste instellingen in + <filename>/usr/local/etc/smb.conf</filename> zijn het gekozen + beveiligingsmodel en het wachtwoord voor + cliëntgebruikers. Deze worden met de volgende + instellingen gemaakt:</para> + + <variablelist> + <varlistentry> + <term><literal>security</literal></term> + + <listitem> + <para>De twee meest gebruikte mogelijkheden hier zijn + <literal>security = share</literal> en + <literal>security = user</literal>. Als de + cliënten 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.</para> + + <para>Bij beveiliging op shareniveau hoeft een cliënt + 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 <application>Samba</application>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>passdb backend</literal></term> + + <listitem> + <indexterm><primary>NIS+</primary></indexterm> + + <indexterm><primary>LDAP</primary></indexterm> + + <indexterm><primary>SQL database</primary></indexterm> + + <para><application>Samba</application> kent aan de + achterkant verschillende authenticatiemodellen. + Cliënten kunnen authenticeren met LDAP, NIS+, een + SQL-database of een aangepast wachtwoordbestand. De + standaard authenticatiemethode is + <literal>smbpasswd</literal>. Meer wordt hier niet + behandeld.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Als aangenomen wordt dat de standaard achterkant + <literal>smbpasswd</literal> wordt gebruikt, dan moet + <filename>/usr/local/etc/samba/smbpasswd</filename> gemaakt + worden om <application>Samba</application> in staat te stellen + cliënten te authenticeren. Als het gewenst is om uw + &unix; gebruikersaccounts toegang te geven vanaf &windows; + cliënten, gebruik dan het volgende commando:</para> + + <screen>&prompt.root; <userinput>smbpasswd -a gebruikersnaam</userinput></screen> + + <note> + <para>De aanbevolen backend is nu <literal>tdbsam</literal>, + en het volgende command moet gebruikt worden om + gebruikersaccounts toe te voegen:</para> + + <screen>&prompt.root; <userinput><command>pdbedit <option>-a</option> <option>-u</option> <replaceable>gebruikersnaam</replaceable></command></userinput></screen> + </note> + + <para>In de <ulink + url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection">Official + Samba HOWTO</ulink> staat meer informatie over instelopties. + Met de hier gegeven basisuitleg moet het mogelijk zijn + <application>Samba</application> draaiende te krijgen.</para> + </sect3> + </sect2> + + <sect2> + <title><application>Samba</application> starten</title> + + <para>De port <filename role="package">net/samba34</filename> voegt + een nieuw opstartscript toe, dat gebruikt kan worden om + <application>Samba</application> te beheren. Om dit script te + activeren, zodat het bijvoorbeeld gebruikt kan worden om + <application>Samba</application> te starten, stoppen, of te + herstarten, dient de volgende regel aan + <filename>/etc/rc.conf</filename> toegevoegd te worden:</para> + + <programlisting>samba_enable="YES"</programlisting> + + <para>Of, voor fijnkorrelig beheer:</para> + + <programlisting>nmbd_enable="YES"</programlisting> + + <programlisting>smbd_enable="YES"</programlisting> + + <note> + <para>Dit stelt <application>Samba</application> ook in om + automatisch tijdens het opstarten te starten.</para> + </note> + + <para>Vervolgens is het mogelijk om + <application>Samba</application> op elk moment te starten door + dit te typen:</para> + + <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput> +Starting SAMBA: removing stale tdbs : +Starting nmbd. +Starting smbd.</screen> + + <para>Refereer aan <xref linkend="configtuning-rcd"/> voor meer + informatie over het gebruikt van rc-scripts.</para> + + <para><application>Samba</application> bestaat feitelijk uit drie + afzonderlijke daemons. Het script + <filename>samba</filename> start de daemons + <application>nmbd</application> en + <application>smbd</application>. Als de winbind + naamresolutiediensten in <filename>smb.conf</filename> zijn + ingeschakeld, dan start ook de daemon + <application>winbindd</application>.</para> + + <para><application>Samba</application> kan op ieder moment gestopt + worden met:</para> + + <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen> + + <para><application>Samba</application> is een complexe + softwaresuite met functionaliteit waarmee verregaande integratie + met µsoft.windows; netwerken mogelijk wordt. Informatie + die verder gaat dan de basisinstallatie staat op + <ulink url="http://www.samba.org"></ulink>.</para> + </sect2> + </sect1> + + <sect1 id="network-ntp"> + <sect1info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Hukins</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Tijd synchroniseren met NTP</title> + + <indexterm><primary>NTP</primary></indexterm> + + <sect2> + <title>Overzicht</title> + + <para>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.</para> + + <para>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.</para> + + <indexterm> + <primary>NTP</primary> + + <secondary>ntpd</secondary> + </indexterm> + + <para>Bij &os; zit de &man.ntpd.8; <acronym role="Network Time + Protocol">NTP</acronym> server die gebruikt kan worden om bij + andere <acronym + role="Network Time Protocol">NTP</acronym> servers de tijd op + te vragen om de eigen klok gelijk te zetten of om de juiste tijd + te verstrekken aan andere apparaten.</para> + </sect2> + + <sect2> + <title>Passende NTP-servers kiezen</title> + + <indexterm> + <primary>NTP</primary> + + <secondary>servers kiezen</secondary> + </indexterm> + + <para>Om de tijd te synchroniseren moeten er één of + meer <acronym role="Network Time Protocol">NTP</acronym>-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 <ulink + url="http://support.ntp.org/bin/view/Servers/WebHome">online lijst + van publiek toegankelijke NTP-servers</ulink> 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.</para> + + <para>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 onbetrouwbare servers.</para> + </sect2> + + <sect2> + <title>Machine instellen</title> + + <indexterm> + <primary>NTP</primary> + + <secondary>instellen</secondary> + </indexterm> + + <sect3> + <title>Basisinstellingen</title> + + <indexterm><primary>ntpdate</primary></indexterm> + + <para>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.</para> + + <para>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.</para> + + <para>Om &man.ntpdate.8; tijdens het opstarten in te schakelen + kan <literal>ntpdate_enable="YES"</literal> aan + <filename>/etc/rc.conf</filename> worden toegevoegd. Alle + voor de synchronisatie te gebruiken servers moeten dan, samen + met eventuele opties voor &man.ntpdate.8;, in + <varname>ntpdate_flags</varname> aangegeven worden.</para> + </sect3> + + <sect3> + <title>Algemene instellingen</title> + + <indexterm> + <primary>NTP</primary> + + <secondary>ntp.conf</secondary> + </indexterm> + + <para>NTP wordt ingesteld met het bestand + <filename>/etc/ntp.conf</filename> in het formaat dat + beschreven staat in &man.ntp.conf.5;. Hieronder volgt een + eenvoudig voorbeeld:</para> + + <programlisting>server ntplocal.example.com prefer +server timeserver.example.org +server ntp2a.example.net + +driftfile /var/db/ntp.drift</programlisting> + + <para>De optie <literal>server</literal> geeft aan welke servers + er gebruikt moeten worden, met op elke regel een server. Als + de server wordt ingesteld met het argument + <literal>prefer</literal>, zoals bij <hostid + role="fqdn">ntplocal.example.com</hostid>, 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 <literal>prefer</literal> wordt + meestal gebruikt voor NTP-servers waarvan bekend is dat ze erg + betrouwbaar zijn, zoals die met speciale + tijdbewakingshardware.</para> + + <para>De optie <literal>driftfile</literal> 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.</para> + + <para>De optie <literal>driftfile</literal> 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.</para> + </sect3> + + <sect3> + <title>Toegang tot een server instellen</title> + + <para>Een NTP-server is standaard toegankelijk voor alle hosts + op een netwerk. De optie <literal>restrict</literal> in + <filename>/etc/ntp.conf</filename> maakt het mogelijk om aan + te geven welke machines de dienst mogen benaderen.</para> + + <para>Voor het blokkeren van toegang voor alle andere machines + kan de volgende regel aan <filename>/etc/ntp.conf</filename> + toegevoegd worden:</para> + + <programlisting>restrict default ignore</programlisting> + + <note> + <para>Dit zal ook toegang van uw server naar alle servers die + vermeld staan in uw lokale configuratie verhinderen. Als u + uw NTP-server moet synchroniseren met een externe + NTP-server, dient u deze specifieke server toe te staan. + Lees de handleiding voor &man.ntp.conf.5; voor meer + informatie.</para> + </note> + + <para>Om alleen machines op bijvoorbeeld het lokale 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:</para> + + <programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting> + + <para>Hierboven is <hostid role="ipaddr">192.168.1.0</hostid> + een IP-adres op een LAN en <hostid + role="netmask">255.255.255.0</hostid> is het bijbehorende + netwerkmasker.</para> + + <para><filename>/etc/ntp.conf</filename> mag meerdere regels met + <literal>restrict</literal> bevatten. Meer details staan in + het onderdeel <literal>Access Control Support</literal> van + &man.ntp.conf.5;.</para> + </sect3> + </sect2> + + <sect2> + <title>De NTP-server draaien</title> + + <para>De NTP-server kan bij het opstarten gestart worden door de + regel <literal>ntpd_enable="YES"</literal> aan + <filename>/etc/rc.conf</filename> toe te voegen. Om extra + opties aan &man.ntpd.8; mee te geven kan de parameter + <varname>ntpd_flags</varname> in + <filename>/etc/rc.conf</filename> gebruikt worden.</para> + + <para>Om de server zonder een herstart van de machine te starten + kan <command>ntpd</command> uitgevoerd worden, met toevoeging + van de parameters uit <varname>ntpd_flags</varname> in + <filename>/etc/rc.conf</filename>. Bijvoorbeeld:</para> + + <screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen> + </sect2> + + <sect2> + <title><application>ntpd</application> gebruiken met een tijdelijke + Internetverbinding</title> + + <para>&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 + gebruikers-PPP, kunnen er <literal>filter</literal> commando's + ingesteld worden in <filename>/etc/ppp/ppp.conf</filename>. + Bijvoorbeeld:</para> + + <programlisting>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</programlisting> + + <para>Meer details staan in de sectie <literal>PACKET + FILTERING</literal> in &man.ppp.8; en in de voorbeelden in + <filename>/usr/share/examples/ppp/</filename>.</para> + + <note> + <para>Sommige Internetproviders blokkeren lage poorten, waardoor + NTP niet kan werken omdat er nooit een antwoord ontvangen kan + worden door een machine.</para> + </note> + </sect2> + + <sect2> + <title>Meer informatie</title> + + <para>HTML-documentatie voor de NTP-server staat in + <filename>/usr/share/doc/ntp/</filename>.</para> + </sect2> + </sect1> + + <sect1 id="network-syslogd"> + <sect1info> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Bijgedragen door </contrib> + </author> + </authorgroup> + </sect1info> + + <title>Hosts op afstand loggen met + <command>syslogd</command></title> + + <para>Het omgaan met systeemlogs is een cruciaal aspect van zowel + beveiligings- als systeembeheer. Het in de gaten houden van + logbestanden van meerdere hosts kan nogal onhandelbaar worden als + deze hosts over (middel)grote netwerken zijn verspreid, of wanneer + ze deel zijn van verschillende soorten netwerken. In deze + gevallen kan het op afstand loggen het gehele proces een stuk + aangenamer maken.</para> + + <para>Het centraal loggen naar een specifieke loghost kan wat van de + administratieve last van het beheren van logbestanden wegnemen. + Het aggregeren, samenvoegen, en roteren van logbestanden kan op + één enkele plaats worden ingesteld, door gebruik te + maken van de eigen gereedschappen van &os;, zoals &man.syslogd.8; + en &man.newsyslog.8;. In de volgende voorbeeldconfiguratie zal + host <hostid>A</hostid>, genaamd <hostid + role="fqdn">logserv.example.com</hostid>, loginformatie voor het + plaatselijke netwerk verzamelen. Host <hostid>B</hostid>, genaamd + <hostid role="fqdn">logclient.example.com</hostid>, zal + loginformatie aan het serversysteem doorgeven. In echte + configuraties hebben beide hosts degelijke voor- en terugwaartse + <acronym>DNS</acronym> of regels in + <filename>/etc/hosts</filename> nodig. Anders worden de gegevens + geweigerd door de server.</para> + + <sect2> + <title>Configuratie van de logserver</title> + + <para>Logservers zijn machines die zijn geconfigureerd om + loginformatie van hosts op afstand te accepteren. In de meeste + gevallen is dit om de configuratie te vergemakkelijken, in + andere gevallen kan het gewoon een beheersbeslissing zijn. + Ongeacht de reden zijn er enkele eisen voordat er verder wordt + gegaan.</para> + + <para>Een juist geconfigureerde logserver voldoet aan de volgende + minimale eisen:</para> + + <itemizedlist> + <listitem> + <para>De regels van de firewall staan toe dat + <acronym>UDP</acronym> wordt doorgegeven op poort 514 van + zowel de cliënt als de server;</para> + </listitem> + + <listitem> + <para>syslogd is ingesteld om berichten op afstand van + cliëntmachines te accepteren;</para> + </listitem> + + <listitem> + <para>De syslogd-server en alle cliëntmachines moeten + geldige regels hebben voor zowel voorwaartse als + terugwaartse <acronym>DNS</acronym>, of correct zijn + geconfigureerd in <filename>/etc/hosts</filename>.</para> + </listitem> + </itemizedlist> + + <para>Om de logserver te configureren, moet de cliënt vermeld + zijn in <filename>/etc/syslog.conf</filename>, en moet de + logfaciliteit zijn gespecificeerd:</para> + + <programlisting>+logclient.example.com +*.* /var/log/logclient.log</programlisting> + + <note> + <para>Meer informatie over de verschillende ondersteunde en + beschikbare <emphasis>faciliteiten</emphasis> kan gevonden + worden in de handleidingpagina &man.syslog.conf.5;.</para> + </note> + + <para>Eenmaal toegevoegd worden alle + <literal>faciliteits</literal>-berichten gelogd naar het eerder + gespecificeerde bestand, + <filename>/var/log/logclient.log</filename>.</para> + + <para>De servermachine moet ook het volgende in + <filename>/etc/rc.conf</filename> hebben staan:</para> + + <programlisting>syslogd_enable="YES" +syslogd_flags="-a logclient.example.com -v -v"</programlisting> + + <para>De eerste optie zet de daemon <command>syslogd</command> aan + tijdens het opstarten, en de tweede regel staat toe dat gegevens + van de cliënt op deze server worden geaccepteerd. Het + laatste gedeelte, dat <option>-v -v</option> gebruikt, verhoogt de + verbositeit van gelogde berichten. Dit is extreem handig voor + het optimaal instellen van faciliteiten aangezien beheerders + kunnen zien welk soort berichten onder welke faciliteit worden + gelogd.</para> + + <para>Er kunnen meerdere opties <option>-a</option> worden + gespecificeerd om logging vanuit meerdere cliënten toe te + staan. <acronym>IP</acronym>-adressen en hele netblokken mogen + ook worden gespecificeerd, bekijk de hulppagina &man.syslog.3; + voor een volledige lijst van mogelijke opties.</para> + + <para>Als laatste dient het logbestand gecreëerd te worden. + De gebruikte manier maakt niet uit, maar &man.touch.1; werkt + prima in dit soort situaties:</para> + + <screen>&prompt.root; <userinput>touch <filename>/var/log/logclient.log</filename></userinput></screen> + + <para>Nu dient het <command>syslogd</command>-daemon herstart en + geverifieerd worden:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput> +&prompt.root; <userinput>pgrep syslog</userinput></screen> + + <para>Als er een <acronym>PID</acronym> wordt teruggegeven, dan is + de server succesvol herstart, en kan er begonnen worden met de + configuratie van de cliënt. Raadpleeg de log + <filename>/var/log/messages</filename> voor uitvoer als de + server niet is herstart.</para> + </sect2> + + <sect2> + <title>Configuratie van de logcliënt</title> + + <para>Een logcliënt is een machine die loginformatie naar een + logserver verstuurt en daarnaast lokale kopieën + bewaart.</para> + + <para>Net als logservers moeten logcliënten ook aan enkele + minimumeisen voldoen:</para> + + <itemizedlist> + <listitem> + <para>&man.syslogd.8; moet zijn ingesteld om berichten van + bepaalde soorten naar een logserver te sturen, die ze moet + accepteren;</para> + </listitem> + + <listitem> + <para>De firewall moet <acronym>UDP</acronym>-pakketten + doorlaten op poort 514;</para> + </listitem> + + <listitem> + <para>Zowel voorwaartse als terugwaartse + <acronym>DNS</acronym> moeten geconfigureerd zijn of juiste + regels in <filename>/etc/hosts</filename> hebben.</para> + </listitem> + </itemizedlist> + + <para>De configuratie van cliënten is wat soepeler dan die + van servers. De cliëntmachine moet de volgende regels in + <filename>/etc/rc.conf</filename> hebben:</para> + + <programlisting>syslogd_enable="YES" +syslogd_flags="-s -v -v"</programlisting> + + <para>Net als eerder zullen deze regels de daemon + <command>syslogd</command> tijdens het opstarten aanzetten, en + de verbositeit van gelogde berichten verhogen. De optie + <option>-s</option> voorkomt dat logs van deze cliënt + vanuit andere hosts worden geaccepteerd.</para> + + <para>Faciliteiten beschrijven het systeemgedeelte waarvoor een + bericht is gegenereerd. <acronym>ftp</acronym> en + <acronym>ipfw</acronym> bijvoorbeeld zijn beide faciliteiten. + Wanneer er logberichten worden gegenereerd voor deze twee + diensten, zullen ze normaalgesproken deze twee gereedschappen in + elk logbericht opnemen. Faciliteiten worden vergezeld van een + prioriteit of niveau, welke wordt gebruikt om aan te geven hoe + belangrijk een logbericht is. De meest voorkomende zullen + <literal>warning</literal> en <literal>info</literal> zijn. + Bekijk de handleidingpagina &man.syslog.3; voor een volledige + lijst van beschikbare faciliteiten en prioriteiten.</para> + + <para>De logserver moet in <filename>/etc/syslog.conf</filename> + van de cliënt zijn gedefinieerd. In dit geval wordt het + symbool <literal>@</literal> gebruikt om loggegevens naar een + server op afstand te sturen en zou er ongeveer als de volgende + regel uit moeten zien:</para> + + <programlisting>*.* @logserv.example.com</programlisting> + + <para>Eenmaal toegevoegd moet <command>syslogd</command> worden + herstart zodat de veranderingen effect hebben:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen> + + <para>Om te testen of logberichten over het netwerk worden + verzonden, wordt &man.logger.1; op de cliënt gebruikt om + een bericht naar <command>syslogd</command> te sturen:</para> + + <screen>&prompt.root; <userinput>logger "<replaceable>Testbericht van logclient</replaceable>"</userinput></screen> + + <para>Dit bericht dient nu zowel in + <filename>/var/log/messages</filename> op de cliënt als + <filename>/var/log/logclient.log</filename> op de logserver te + staan.</para> + </sect2> + + <sect2> + <title>Logservers debuggen</title> + + <para>In bepaalde gevallen kan het nodig zijn om te debuggen als + berichten niet door de logserver worden ontvangen. Er zijn + verschillende redenen waarom dit kan gebeuren; de twee meest + voorkomende zijn echter voorvallen met de netwerkverbinding en + <acronym>DNS</acronym>. Om deze gevallen te testen, dient te + worden nagegaan dat beide hosts elkaar kunnen bereiken door + de hostnaam in <filename>/etc/rc.conf</filename> te gebruiken. + Als dit juist lijkt te werken, dient de optie + <literal>syslogd_flags</literal> in + <filename>/etc/rc.conf</filename> te worden veranderd.</para> + + <para>In het volgende voorbeeld is + <filename>/var/log/logclient.log</filename> leeg, en noemt + <filename>/var/log/messages</filename> geen reden waarom het + mislukt. Verander de optie <literal>syslogd_flags</literal> + zoals in het volgende voorbeeld en herstart om de debuguitvoer + te verhogen:</para> + + <programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting> + + <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen> + + <para>Debuggegevens zoals de volgende zullen meteen na de herstart + over het scherm vliegen:</para> + + <screen>logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart +syslogd: restarted +logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel +Logging to FILE /var/log/messages +syslogd: kernel boot file is /boot/kernel/kernel +cvthname(192.168.1.10) +validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; +rejected in rule 0 due to name mismatch.</screen> + + <para>Het is duidelijk dat de berichten worden geweigerd wegens + een niet-overeenkomende naam. Na de configuratie grondig te + hebben herzien, lijkt het of een typefout in de volgende regel + in <filename>/etc/rc.conf</filename> een probleem heeft:</para> + + <programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting> + + <para>De regel dient <literal>logclient</literal>, niet + <literal>logclien</literal> te bevatten. Nadat de juiste + wijzigingen zijn gemaakt, wordt er herstart met de verwachte + resultaten:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput> +logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart +syslogd: restarted +logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel +syslogd: kernel boot file is /boot/kernel/kernel +logmsg: pri 166, flags 17, from logserv.example.com, +msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2 +cvthname(192.168.1.10) +validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; +accepted in rule 0. +logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2 +Logging to FILE /var/log/logclient.log +Logging to FILE /var/log/messages</screen> + + <para>Nu worden de berichten juist ontvangen en in het correcte + bestand geplaatst.</para> + </sect2> + + <sect2> + <title>Beveiligingsoverwegingen</title> + + <para>Zoals bij alle netwerkdiensten, dienen beveiligingseisen in + acht te worden genomen voordat deze configuratie wordt + geïmplementeerd. Soms kunnen logbestanden gevoelige + gegevens bevatten over diensten die aanstaan op de lokale host, + gebruikersaccounts, en configuratiegegevens. Netwerkgegevens + die van de cliënt naar de server worden verzonden worden + niet versleuteld noch met een wachtwoord beveiligd. Als + versleuteling nodig is, kan <filename + role="package">security/stunnel</filename> worden gebruikt, + wat gegevens over een versleutelde tunnel verstuurt.</para> + + <para>Aan lokale beveiliging moet ook gedacht worden. + Logbestanden worden niet versleuteld tijdens gebruik of na + logrotatie. Lokale gebruikers kunnen deze bestanden benaderen + om aanvullende inzichten over de systeemconfiguratie op te doen. + In deze gevallen is het van kritiek belang om de juiste rechten + op deze bestanden in te stellen. Het gereedschap + &man.syslogd.8; ondersteunt het instellen van rechten op nieuw + aangemaakte en geroteerde logbestanden. Het instellen van + logbestanden op modus <literal>600</literal> dient al het + ongewenste spieken door lokale gebruikers te verhinderen.</para> + </sect2> + </sect1> +</chapter> |