Yellow Pages 2 : De client zijde

ArticleCategory:

System Administration

AuthorImage:

[Frederic Raynal]

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]

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:



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.

  1. Maak je eigen /etc/yp.conf bestand;
  2. 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 ;
  3. Maak de directory /var/yp ;
  4. start ypbind ;
  5. Gebruik het commando rpcinfo om er zeker van te zijn dat ypbind inderdaad werkt: of je kan het volgende proberen: 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: 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



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:

  1. De NIS domein naam
  2. 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:

  1. Nobody: de gebruiker wordt niet geauthoriseerd;
  2. Owner: de gebruiker wordt geauthoriseerd als de eigenaar;
  3. Group: De gebruiker wordt geauthoriseerd en behoort tot een groep die toegang heeft tot dit object;
  4. 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.