Yellow Pages 2 : De client zijde
    ArticleCategory:
    System Administration
    AuthorImage:
    ![[Frederic Raynal]](../../common/images/Frederic_Raynal.png) 
    TranslationInfo:
    Original in fr Frédéric
    Raynal
    fr to en Jo
    Simons
    en to en:Lorne Bailey
    en to nl: HJ Heins
    AboutTheAuthor:
    Frédéric
    Raynal schrijft een these over informatisering aan de INRIA. Hij houdt van lezen (zowel Tolkien
    als Balzac) en van luisteren naar muziek (van Mozart tot Philip Glass en
    van Led Zeppelin tot Massive Attack via Björk en Boris Vian,
    maar daarbij vermijdt hij rap, techno en andere soorten lawaai
    ;-)
    Abstract:
    Het vorige artikel was een inleiding in het basisconcept achter
    yellow pages (YP). In dit artikel zullen we zien hoe je de
    client moet configureren, een praktisch voorbeeld laat zien hoe de
    client werkt en er zal een presentatie van de verschillende gereedschappen
    gegeven worden. Tenslotte zullen we wat meer vertellen over NIS+.
    ArticleIllustration:
![[Illustratie]](../../common/images/illustration164.gif) 
    ArticleBody:
    Inleiding
    De client kant van de service die gekoppeld is met yellow pages is
    in feite gebaseerd op de ypbind daemon:
    deze stuurt de aanvraag naar de YP server. We zullen eerst uitleggen hoe het
    werkt en hoe je hem kunt configureren. Daarna zullen we zien hoe het NIS
    protocol werkt. Het laatste deel van het artikel wordt gebruikt om de
    verschillende gereedschappen voor YP (yp-tools) die de client  tot
    z'n beschikking heeft.
    
    De NIS client configureren
    Het enige dat je hoeft te doen om een NIS client te draaien op een machine
    is het starten van de ypbind daemon.
    ypbind
    ypbind legt een verbinding tussen
    de client en de NIS server. Deze link is zichtbaar in de directory
    /var/yp/binding1 in een bestand
    dat meestal domainname.version heet. Op het moment is versie 2 de enige versie
    die ondersteund wordt. Dus, als mijn NIS domain naam "messiah" is, dan is de
    naam van het bestand messiah.2
    Het programma ypbind
    is van de super gebruiker (root dus), dus het moet zitten in
    /sbin, of in /usr/sbin.
    Wanneer je ypbind draait, zal
    deze op zoek gaan naar z'n instructies in het bestand /etc/yp.conf. Dit bestand heeft de volgende
    inhoud:
    
      - domein nisdomein server gastheernaam: de client
      zal op zoek gaan naar de gastheernaam voor het domein nisdomein
      ;
- domein nisdomein zender: de client
      zendt op het lokale network op zoek naar het nisdomein
      ;
- ypserver gastheernaam: de client spreekt de
      gastheernaam direct aan voor het lokale domein. In deze
      opstelling moet het IP adres van de server terug te vinden zijn
      in /etc/hosts.
    
    Als er een fout zit in het configuratiebestand of als het niet bestaat,
    zal ypbind een oproep zenden
    2 over het lokale netwerk
    op zoek naar de NIS server voor het lokale domein.
    Enkele eenvoudige tests helpen ons te verifieren dat ypbind goed is geconfigureerd.
    
      - Maak je eigen /etc/yp.conf bestand;
- controleer of portmap
      draait (ps aux | grep portmap). Als hij niet draait, dan dienen we
      hem alsnog starten. Dit programma koppelt de TCP/IP poorten (of
      UDP/IP poorten) aan programma's. Gedurende de initialisatie van
      een RPC server, stuurt deze portmap
      de poorten waarop hij luistert en het programma nummer dat hij wil
      aanspreken. Als een client een RPC aanvraag doet op een gegeven
      programma nummer, zal deze eerst verbinding maken met de
      portmap om uit te vinden
      welke poort hij gebruiken moet om RPC pakketten naar toe te sturen.
      Deze uitleg laat zien dat het absoluut noodzakelijk  is om
      portmap aan te hebben staan
      voor ypbind ;
- Maak de directory /var/yp ;
- start ypbind ;
- 
        Gebruik het commando rpcinfo om er zeker van te zijn dat
        ypbind inderdaad werkt:
        
          - 
            Uitvoering van een "rpc -p localhost" zou je de volgende
            informatie moeten geven:
            
              
                | programma | vers | proto | port |  |  
                | 100000 | 2 | tcp | 111 | portmapper |  
                | 100000 | 2 | udp | 111 | portmapper |  
                | 100007 | 2 | tcp | 637 | ypbind |  
                | 100007 | 2 | udp | 639 | ypbind |  
 of
              
                | programma | vers | proto | port |  |  
                | 100000 | 2 | tcp | 111 | portmapper |  
                | 100000 | 2 | udp | 111 | portmapper |  
                | 100007 | 2 | udp | 758 | ypbind |  
                | 100007 | 1 | udp | 758 | ypbind |  
                | 100007 | 2 | tcp | 761 | ypbind |  
                | 100007 | 1 | tcp | 761 | ypbind |  
 
 of je kan het volgende proberen:
          - 
            "rpcinfo -u localhost ypbind" dit zou je het volgende moeten geven:
 
              
                | programma 100007 version 2 ready and waiting |  
 of
              
                | programma 100007 version 1 ready and waiting |  
                | programma 100007 version 2 ready and waiting |  
 
 Afhankelijk van de versie van ypbind. De belangrijke informatie
        is die over versie 2.
Nu we ypbind aan de praat hebben,
    is je machine een NIS client geworden. Dus je kan hem gebruiken om aanvragen
    te doen aan je server. Bijvoorbeeld "ypcat passwd.byname", dat zal je
    alle wachtwoorden geven, geordend op gebruikersnaam, die aanwezig zijn
    in de corresponderende directory.Laatste details
    Enkele bestanden moeten nu nog een klein beetje veranderd worden om YP
    wat efficiënter te werk te laten gaan:
    
      - /etc/host.conf: voeg "nis" toe zodat de gastheer wordt opgezocht;
- /etc/passwd: voeg de volgende regel toe:
 +::::::
 Dit zal alle gebruikers die te vinden zijn in de server directory
       verbinden met de client. We kunnen deze authorisaties verfijnen door
       gebruik te maken van de + en- symbolen waarmee we toegang kunnen geven
       of verbieden tot de client. Om een gast gebruiker te weigeren, moet
       je de regel
 -guest::::::
 toevoegen. De velden die je niet wilt
       veranderen moeten leeg blijven. Het is echter mogelijk om meer toe te
       voegen:
 +me::::::/bin/ksh
 De gebruiker "me" zal gebruik maken van ksh in plaats van de standaard
       commandoregel (die gedefinieerd is in /etc/passwd van de NIS server).
 Een laatste belangrijke opmerking: Ik wil aangeven dat NIS het gebruik
       van netgroups uitstekend ondersteunt: 3
 +@sysadmins:::::::
 zal alle aanvragen van
      leden van de netgroep sysadmin toestaan.
- /etc/group (en/of /etc/shadow voor enkele versie van libc) :
      zoals in /etc/passwd, moet je zelf toevoegen
 +:
 Je kan ook wat spelen met groepsauthorisaties door gebruik te maken van + en
      -
- 
        /etc/nsswitch.conf: De Netwerk Services Switch laat ons de volgorde
        waarin de informatie moet worden gezocht aangeven, precies zoals met
        /etc/host.conf. De keuzes zijn:
        
          
            | nisplus | lookup via NIS+ ( NIS versie 3, een beveiligde versie
            van NIS) |  
            | nis | lookup via NIS (NIS versie 2, alias YPs |  
            | dns | lookup via een DNS (Domain Name Server) |  
            | files | lookup in de lokale bestanden |  
            | db | lookup in de database /var/db |  
 Na ieder lookup actie, kan je een commando van de
        volgende vorm opgeven
 `[' ( `!'? STATUS `=' ACTION )+ `]'
 waar:
          - STATUS => "success" of "notfound" of "unavail" of
          "tryagain"
- ACTION => "return" of "continue"
 Afhankelijk van de versie van libc die gebruikt wordt, zijn de lookups
        niet hetzelfde. De schaduw wachtwoorden bijvoorbeeld worden niet beheerd
        met libc5. De ondersteunde services op een machine gebruiken een bibliotheek
        die /lib/libnss_SERVICE.so.X heet. Zie voor meer informatie over deze service
        ook de man pagina's over nsswitch.conf.
De schadow wachtwoorden op NIS worden alleen ondersteund met
    with glibc2.x. Je moet onthouden dat ze gespecificeerd moeten
    worden in nsswitch.conf.Het NIS protocol
    Nu onze NIS client helemaal operationeel is, zullen we zien hoe
    hij de informatie die hij nodig heeft verkrijgt. 
    Zodra een client informatie nodig heeft die in een directory van de
    YP zit, begint hij met zoeken naar een NIS server. Om er een te vinden,
    start hij een TCP connectie naar de lokale 
    ypbind. De client vertelt hem bij welk  domein hij hoort en
    ypbind begint te zenden met behulp
    van de functie RPC YPPROC_DOMAIN_NOACK. Alleen NIS servers die dit domein
    beheren antwoorden hierop met een ACK. De anderen blijven stil.
    ypbind stuurt de client het
    resultaat van de opzoekactie (succes of falen) en , als hij deze heeft,
    het adres van de eerste YP server die antwoordde. De client kan nu de
    server aanspreken met zijn verzoek door het domain, de directory en de
    sleutel te specificeren.
    Dit protocol is vrij traag omdat het TCP connecties gebruikt. Om
    het nog erger te maken, gebruikt het ook nog eens vele sockets. Om deze
    problemen te vermijden, wacht ypbind
    niet op een client voordat hij begint met het zoeken van servers. Eigenlijk
    beheert hij zelfs een lijst met servers voor ieder domein in het bestand
    /var/yp/binding/<domainename>.<version> en hij controleert
    regelmatig of ze nog goed werken.
    
    yp-gereedschappen
    Deze sectie geeft kort enkele gereedschappen van het yp-tools
    pakket. Om hier meer over te leren, kan je een zeer gedetailleerde
    man pagina voor ieder van deze instructies vinden ;-P
    
      - domainname: geeft of herstelt (afhankelijk van de optie) de
      NIS domein naam;
- ypcat: laat de waardes van alle aanwezige sleutels in de NIS
      directory zien;
- ypmatch: laat de waarde van een of meer sleutels die in de NIS
      directory aanwezig zijn zien;
- ypset: specificeert welke NIS server ypbind gebruikt;
- ypwhich: geeft de naam van de NIS server. Met -m als argument, 
      gevolgd door een directory naam, geeft hij de naam van de 
      hoofddirectory.
- yppoll: neemt een map als argument en retourneert de domein naam
      van de hoofdserver.
    
    Enkele woorden over NIS+
    Tot nu toe hebben we niet gesproken over een variant van NIS. In een
    netwerk is het gebruik van NIS een groot gevaar voor de veiligheid. Als
    een van de NIS servers bijvoorbeeld niet goed beschermd is en een persoon
    met kwade bedoelingen daar achter komt, kan het volgende gebeuren:
    
    
      - De NIS domein naam
- Het IP adres van een NIS client
het wordt zeer eenvoudig om het IP adres van deze machine (laten we doen alsof het deze
    machine betreft) te spoofen en een ypcat passwd
    te sturen om de wachtwoord lijst zeer eenvoudig in handen te krijgen. :-(
    
    NIS+ levert een extra veiligheidslaag door een authenticatie protocol
    gebaseerd op de uitwisseling van sleutels te integreren, bovendien staat
    dit gegevensversleuteling toe.
    De informatie wordt bewaard in tabellen die in verschillende directories
    zitten. Iedere kolom van een tabel heeft een header die bijvoorbeeld specificeert
    of de gegevens "hoodletter gevoelig" zijn, in binair formaat staan enz...
    
    De hierboven genoemde structuur laat je op een eenvoudige manier de toegangsrechten
    op directories, tabellen en ook de kolommen in de tabellen beheren. Dit betekent
    dat het mogelijk is om de toegang tot de wachtwoorden tabel te verbieden voor iedere
    gebruiker die niet geauthoriseerd is op de NIS+ server. Maar het staat wel alle
    geauthoriseerde gebruikers toegang tot de volledige wachtwoorden tabel toe, behalve
    het veld  "passwd". Alleen de eigenaar van het "passwd" veld kan dat veld ophalen.
    Er zijn 4 veiligheidsniveau's:
    
      - Nobody: de gebruiker wordt niet geauthoriseerd;
- Owner: de gebruiker wordt geauthoriseerd als de eigenaar;
- Group: De gebruiker wordt geauthoriseerd en behoort tot een groep die
      toegang heeft tot dit object;
- World: De gebruiker wordt geauthoriseerd, maar hij is niet de eigenaar
      en hij behoort niet tot een groep die toegang heeft tot dit object.
    
    In deze configuratie is root een van de vele gebruikers ... temninste,
    bijna ;-). Als hij niet de correcte toegangsrechten heeft, kan hij de wachtwoorden
    van de andere gebruikers niet meer zien. Dus dan zou hij niet meer in kunnen loggen
    als een andere gebruiker...maar, hij kan nog steeds heel eenvoudig een
    su uitvoeren :).
    De gegevens die rondgaan over het netwerk zijn niet gecodeerd, behalve
    de wachtwoorden: geen enkel wachtwoord wordt als standaard tekst over het
    netwerk verzonden.
    NIS+ is een krachtig gereedschap... maar het is lastig op te zetten. Thorsten
    Kuduk schrijft het volgende (hij werkt aan NIS, NIS+, NIS-HOWTO ... dus hij weet
    waar hij het over heeft ;-):
    "De keuze tussen NIS en NIS+ is eenvoudig te zien: gebruik NIS zolang je
    geen bijzondere veiligheidseisen stelt. NIS+ is veel lastiger de beheren
    (vooral aan de server kant)"
    
    Conclusie
    We hebben geleerd hoe je een nieuwe machine toevoegt aan een bestaand netwerk
    met een draaiende NIS server. In het volgende artikel zullen we gaan zien hoe
    de server geconfigureerd moet worden en hoe hij werkt.
    
    Voetnoten
    
      - ... var/yp/binding1
- De exacte locaties van de bestanden worden niet vaak gespecificeerd
      daar dit kan verschillen per distributie.
      Als je bijvoorbeeld een ypbind
      daemon start tijdens het opstarten: /etc/init.d/nis, /sbin/init.d/ypclient,
      /etc/rc.d/init.d/ypbind, /etc/rc.local
      - ... broadcast2
- Dit betekent dat de boodschap wordt verzonden over het gehele subnet
      zonder een specifiek doeladres (type X.Y.0.0)
      - ... netgroup3
- Het bestand /etc/netgroup definieert de groepen bestaande uit
      drie delen (gastheer, gebruiker, domein) die dienen om de toestemmingen
      te verifiëren tijdens het gebruik van commando's op andere machines
      (zoals inloggen op afstand, commandoregels of mounten). Bekijk de
      man pagina's voor meer details.