Linux Systeembeheer/Computerparken opvolgen en beheren

Uit Wikibooks

In dit hoofdstuk van de cursus netwerken laten wij enkele manieren zien om een computerpark te beheren en op te volgen.


DHCP[bewerken]

Inleiding[bewerken]

Het DHCP (Dynamic Host Configuration Protocol) geeft client machines de mogelijkheid om zichzelf via het netwerk te configureren, inclusief netwerkadres. Via een DHCP server kunnen machines worden geconfigureerd met hun IP adres, een subnet mask, een default route, DNS server, WINS server etc. Als hiermee alle configuratiegegevens worden ingesteld die geraakt worden bij een omnummering, kan een omnummering voor deze machines dus volstaan met het aanpassen van de DHCP server configuratie.

DHCP kan ook gebruikt worden voor servers en printers, die veelal een vast IP adres nodig hebben (in verband met hun DNS entries). Veel DHCP servers ondersteunen dit doordat ze aan het MAC adres een vast nummer kunnen toewijzen. Het kan erg handig zijn om zo veel mogelijk machines via DHCP te configureren. De DHCP server is dan ook een vrij essentiële netwerk component: als die gestoord is kan er geen machine worden opgestart.

Het protocol maakt gebruik van twee componenten; de DHCP-server en de DHCP-client. De client verstuurt tijdens het opstarten een DHCP-verzoek (de DHCP-request) in de vorm van een broadcast naar de server. Omdat het een broadcast is, gaat het pakketje dus niet verder dan de lokale router en kan een DHCP-server op een ander netwerksegment niet bereikt worden. De DHCP-server stuurt als reactie op de DHCP-request een pakketje terug met daarin de benodigde informatie. Dit pakketje wordt ook wel de DHCP-offer genoemd. De client antwoordt hierop met een DHCP-ack om aan te geven dat hij met deze DHCP-server in zee wil gaan. Om een DHCP-verzoek succesvol te laten verlopen, is het nodig dat de DHCP-server op hetzelfde netwerksegment als de client voorkomt; het verzoek wordt immers verstuurd in de vorm van een Broadcast. Als de DHCP –server op een ander segment voorkomt, kan op de router gebruik gemaakt worden van de DHCP-relay-agent. Dit is een stukje software dat in staat is een DHCP-request door te sturen naar een DHCP-server op een ander netwerk. DHCP-relay agents zijn beschikbaar voor vrijwel elke router.

Leerdoelen[bewerken]

  • De functie van een DHCP-server begrijpen
  • Een Linux DHCP-server kunnen opzetten


DHCP: Algemene uitleg[bewerken]

De DHCP-server die wij opstellen kent adressen toe aan de hand van dynamische allocatie. Hierbij krijgt een client alleen voor een bepaalde periode de beschikking over een IP-adres. De duur van deze periode wordt gedefinieerd in de zogenaamde lease. Hierbij moet een reeks adressen die uitgedeeld kunnen worden (de range) gedefinieerd worden. Deze reeks bestaat uit een begin- en een eindadres. Elk adres dat tussen het begin en het eindadres voorkomt kan uitgedeeld worden. Nadat de lease-periode verstreken is, moet de client opnieuw vragen of hij het adres nog een tijdje kan gebruiken. Hoe lang de lease periode precies duurt en welke parameters er ingesteld worden, wordt bepaald in het algemene configuratiebestand dhcpd.conf.


Installatie en configuratie van een DHCP-server[bewerken]

Installeer de service.

 $ yum -y install dhcp

Zorg ervoor dat de dhcp-service start bij het opstarten van de server:

 $ chkconfig dhcpd on

Bovenstaand commando is gelijk aan "chkconfig --level 2345 dhcpd on && chkconfig --level 016 dhcpd off", maar korter.
In runlevel 0 (shutdown), 1 (single user mode) en 6 (reboot), staat de DHCP-server uit. In runlevel 2, 4 (user defined run levels), 3 (console), en 5 (gui), staat de DHCP-server aan.

Om de DHCP-server naar eth0 te laten luisteren, wijzigen we de systeemconfiguratie.

 $ vi /etc/sysconfig/dhcpd
 DHCPDARGS=eth0

Vooraleer we de service starten gaan we deze configureren. Het configuratiebestand vind je ergens in de map /etc, vaak /etc/dhcpd.conf maar soms ook /etc/dhcp/dhcpd.conf. Een voorbeeld configuratiebestand is eveneens beschikbaar, zie /usr/share/doc/dhcp-*/dhcpd.conf.sample.

Volgende lijnen voegen we toe aan de outer scope, dat is bovenaan het bestand.

 ddns-update-style interim;
 ignore client-updates;
 authoritative;

Voor meer informatie over bovenstaande parameters verwijzen we naar de man-page.

 $ man dhcpd.conf

Een subnet definiëren we met het sleutelwoord subnet. Voorbeeld:

 subnet 192.168.1.0 netmask 255.255.255.0 {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;
   option domain-name              "example.com";
   option domain-name-servers      192.168.1.1;
   option time-offset              -18000; # Eastern Standard Time
   range   192.168.1.10   192.168.1.100;
 }

Een client met een statisch IP adres definiëren we met het sleutelwoord host. Voorbeeld:

 host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
 }

Syntaxcontrole van het configuratiebestand (optioneel).

 $ service dhcpd configtest

Starten van de DHCP-service.

 $ service dhcpd start

Bij mislukking raadplegen we /var/log/messages.

 $ tail /var/log/messages


Labo-opdracht: configuratie van een DHCP-server[bewerken]

We willen in een computerlokaal alle desktop-pc's een vast IP-adres geven via een DHCP-server. Bezoekers die met een laptop op het netwerk in het lokaal aansluiten, krijgen een dynamisch toegewezen IP-adres. Het schrijven van een DHCP-configuratie die geschikt is voor deze opstelling is een saai en repetitief werkje dat we best kunnen automatiseren, bijvoorbeeld met een Bash script. Dat is het doel van dit labo.

Als invoer gebruiken we een tekstbestand met de gewenste IP-adrestoewijzingen per pc. Op elke lijn van het bestand staan de gewenste hostnaam, het MAC-adres, het gewenste IP-adres (enkel host-deel ervan) en (eventueel) commentaar, gescheiden door TAB-tekens, bijvoorbeeld:

 server1	00:04:e2:2a:c4:ad	10.0.0.1	Router
 server2	00:04:e2:2a:bf:4a	10.0.0.2	File-server
 labo-01	00:04:e2:03:cc:b7	10.0.1.1	Desktop
 labo-02	00:04:e2:2a:bf:45	10.0.1.2	Desktop
 labo-03	00:04:e2:03:cc:70	10.0.1.3	Desktop
 labo-04	00:04:e2:03:cc:94	10.0.1.4	Desktop
 [...]

De volgende algemene instellingen, moeten configureerbaar zijn m.h.v. variabelen:

  • De standaard-locatie van het invoerbestand (zie hierboven) en uitvoerbestand (bijv. /etc/dhcpd.conf)
  • Domeinnaam
  • Het network-mask en broadcast-adres
  • IP-adressen van gateway, en DNS server(s)
  • Bereik van de dynamisch uit te delen IP-adressen (= laagste en hoogste IP)
  • Standaard en maximale lease-tijd

Het resulterende configuratiebestand moet conform de syntaxis van /etc/dhcpd.conf zijn en makkelijk leesbaar (commentaar, indentatie, ...). Er is een deel met de vaste instellingen voor het hele netwerk (routers, subnet masker, broadcast-adres, lease-tijd en bereik van IP adressen. Daarna volgen de toewijzingen van IP-adressen per pc. Afhankelijk van het MAC-adres wordt een vast IP toegekend en een hostnaam ("fully qualified", d.w.z. met de domeinnaam er bij). Merk op dat Linux-hosts deze hostnaam zullen aanvaarden en gebruiken, maar dat Windows pc's deze optie negeren.

Verifieer de werking van je script door een opstelling te maken met een DHCP-server en een client. In het geval van fysieke pc's verbind je die best met een cross-overkabel, losgekoppeld van het netwerk. Je kan ook op een virtueel netwerk testen, maar zorg dan wel dat de virtuele DHCP-server (gesimuleerd door de virtualisatiesoftware) uit staat.


Testen[bewerken]

Stap 1: De DHCP-service van VirtualBox uitschakelen (File -> Preferences -> Network -> Host Only Ethernet adapter -> Enable DHCP Server uitzetten).
Stap 2: In de network settings (Settings -> Network) van de VM waar de DHCP-service op draait een bridged network adapter instellen.
Stap 3: VM starten en controleren of de DHCP-service aan staat.
Stap 4: Computer to computer wireless network opzetten. Vervolgens een andere computer verbinden met dat netwerk.
Stap 5: Controleren of de IP-adressen door de DHCP-server zijn toegekend.


DNS[bewerken]

Inleiding[bewerken]

DNS (intern en extern)

Het Domain Name System (DNS) is het systeem en protocol dat op het Internet gebruikt wordt. Alle domeinnamen en IP-adressen staan in een database en een DNS-server matcht deze gegevens. Een DNS-server vertaalt niet, omdat er geen enkele logica zit tussen de domeinnamen en IP-adressen. Een DNS-server of Domain Name Server is op deze technologie gebaseerd, en maakt deze matchen, zodat computers niet alleen via het (onpraktische) IP-adres benaderd kunnen worden, maar ook via een hostname (computernaam). Ook het omgekeerde is mogelijk (reverse DNS): een IP-adres wordt gematcht naar de ingestelde hostname. Hoewel dit de meest gebruikte mogelijkheden zijn, wordt DNS ook op andere manieren gebruikt, bijvoorbeeld voor het bepalen van de mailservers voor een domein. Daarnaast kan ook het Sender Policy Framework (SPF) aan TXT records in een DNS-server worden toegevoegd. Mailservers kunnen aan de hand van dit record checken of de herkomst van de e-mail klopt. SPF is één van de instrumenten die zijn ingezet ter bestrijding van wereldwijde spam.

De Domain Name Servers spelen een belangrijke rol in een omnummer proces. Omdat ze namen op IP adressen afbeelden (en andersom) is dit de plaats waar de meeste aandacht nodig is. Organisaties met een firewall hebben meestal twee DNS systemen: één waarin alle adressen voorkomen, voor intern gebruik, en een waarin alleen een aantal extern zichtbare adressen voorkomen, een zogenaamde splitDNS.

DNS werkt met expiration: aan de client wordt verteld hoe lang een bepaald gegeven geldig is. Deze periode staat meestal op een paar dagen. Het is verstandig dit voor een migratie terug te brengen naar een uur. Oude gegevens zullen dan minder lang overleven, ten koste van een verwaarloosbaar hogere belasting op de DNS servers.

Het is van essentieel belang dat het hele DNS beheer van een organisatie op orde is voordat aan een omnummering wordt begonnen. Zoals eerder is aangegeven is het verstandig dit beheer in overeenstemming te brengen met het beheer van machines en nummerplannen.

Leerdoelen[bewerken]

  • De werking van DNS begrijpen
  • Statische toewijzing van hostnamen aan IP-adressen via /etc/hosts kunnen instellen
  • Een Linux DNS relay server kunnen opzetten met Dnsmasq
  • Een Linux DNS server kunnen opzetten met BIND
    • de syntax van /etc/named.conf begrijpen en kunnen toepassen
    • de syntaxis van zone files begrijpen
    • zone files en reverse zone files voor een bepaald domein kunnen opstellen
      • Name-servers toewijzen (NS)
      • IP-adrestoewijzingen voor hosts instellen (A en AAAA, PTR)
      • Aliassen toekennen (CNAME)
      • Mailservers voor een domein instellen (MX)
      • Diensten in een domein adverteren (SRV)
    • een slave DNS-server voor een domein kunnen opzetten
    • de functie van de root hints file begrijpen


BIND9 (Berkeley Internet Name Deamon)[bewerken]

BIND (of Berkeley Internet Name Daemon) is de meest gebruikte DNS-server-software. De software werd ontwikkeld aan de Universiteit van Californië, Berkeley. Het project werd ondersteund en later overgenomen door het Internet Systems Consortium.


Installatie[bewerken]

 $ yum install bind bind-utils

Het pakket bind-utils bevat enkele handige tools zoals nslookup, host en dig.

Je kan het versienummer van de zojuist geïnstalleerde bind daemon controleren met het commando named.

 $ named -v


Configuratie[bewerken]

 $ vi /etc/named.conf
 options {
   directory "/var/named"; // the default
   forwarders {
     195.238.2.22; // Primary ISP DNS server
     195.238.2.21; // Secondary ISP DNS server
   };
 };
 
 zone "localhost" in {
   type master;
   file "localhost.zone";
 };
 
 zone "a.net" in {
   type master;
   file "a.net.db";
 };

We kopiëren het BIND9 voorbeeldbestand localhost.zone naar de map /var/named.

 $ cp /usr/share/doc/bind-9.3.6/sample/var/named/localhost.zone /var/named/

Wordt er geen voorbeeldbestand geleverd bij de installatie, maak dan zelf het bestand /var/named/localhost.zone aan en voeg er onderstaande configuratie aan toe.

 $TTL    86400
 $ORIGIN localhost.
 @ 1D IN SOA @ root (
  42   ; serial (d. adams)
  3H   ; refresh
  15M  ; retry
  1W   ; expiry
  1D ) ; minimum
 1D IN NS @
 1D IN A  127.0.0.1

Vervolgens maken we het bestand /var/named/a.net.db aan.

 $ vi /var/named/a.net.db
 $TTL  86400
 @ IN SOA phobos.a.net. admin.a.net (
   2010062801 ; serial
   10800      ; refresh
   3600       ; retry
   604800     ; expire
   86400      ; TTL
 )
 a.net.             IN NS phobos.a.net.
 a.net.             IN NS deimos.a.net.
 
 phobos.a.net.      IN A 192.0.2.1
 deimos.a.net.	     IN A 192.0.2.2
 mercurius.a.net.   IN A 192.0.2.10
 www.a.net.         CNAME mercurius
 venus.a.net.       IN A 192.0.2.11
 mars.a.net.        IN A 192.0.2.12
 ftp                CNAME mars
 
 a.net.             IN MX 10 venus.a.net.

We voegen nu onze DNS-server toe aan het bestand /etc/resolv.conf.

 $ vi /etc/resolv.conf
 search a.net
 nameserver 192.0.2.1

Tenslotte configureren we de firewall.

 $ iptables -A INPUT -p udp --dport 53 -s $dnsserverip -m state --state NEW -j ACCEPT
 $ iptables -A INPUT -p tcp --dport 53 -s $dnsserverip -m state --state NEW -j ACCEPT
 $ service iptables save
 $ service iptables restart

We starten de DNS-server met de service named.

 $ service named start

Een slave-server opzetten

Om een slave-server op te zetten moeten we het configuratiebestand named.conf aanpassen.

 zone "a.net" in {
   type slave;
   file "slave/a.net";
   masters { 
     192.0.2.1;
   };
 };

Deze regels geven aan dat we een slave-server opzetten voor het domein a.net, dat daarvoor een bestand met de naam slave/a.net wordt bijgehouden, en dat er gebruik gemaakt wordt van de master-server op 192.0.2.1.

Het a.net.db bestand van de master-server kunnen we gewoon kopiëren.

Als dit allemaal gedaan is kan je de DNS-server starten. De server neemt dan automatisch contact op met de root-server en haalt daar de gegevens op.


Testen[bewerken]

Een DNS-server ondervragen kunnen we doen met de tool dig (Domain Information Groper).

 $ dig @localhost phobos.a.net


Een query uitvoeren kunnen we doen met behulp van nslookup.

Labo-opdracht: een Linux DNS-server opzetten met BIND[bewerken]

We gaan met BIND een DNS-server opzetten voor het domein a.net met de volgende hosts:

Hostnaam IP-adres Functie
Phobos 192.0.2.1 DNS1
Deimos 192.0.2.2 DNS2
mercurius 192.0.2.10 Webserver
venus 192.0.2.11 Mailserver
mars 192.0.2.12 FTP-server

Zorg er voor dat:

  1. De server beschikt over een root hints file
  2. Elke server het correcte IP-adres toegewezen krijgt
  3. De webserver kan bereikt worden via "www.a.net"
  4. Mail verstuurd naar "naam@a.net" wordt afgeleverd bij de mailserver venus
  5. Mars geadverteerd wordt als een FTP server (prioriteit 10, weight 0, poort 21)


LDAP[bewerken]

Inleiding[bewerken]

OpenLDAP is het Open Source project voor het netwerkprotocol Lightweight Directory Access Protocol (LDAP). Dat is een protocol dat gebruikt wordt om informatie van een zgn. directory-server op te zoeken. Dit is eigenlijk een soort databank, maar informatie zit niet opgeslagen in tabellen zoals we gewend zijn bij relationele databanken. In plaats daarvan is de informatie georganiseerd in een hiërarchische structuur (een boom). Bij de wortel van de boom gebruikt men voor deze structuren vaak DNS-domeinen. Dieper in de boom vinden we vaak records die organisatorische eenheden (afdelingen in een bedrijf, bijvoorbeeld) voorstellen, personen, apparatuur, enz.

Je kan een LDAP-server “from scratch” manueel opzetten, maar dat is niet direct voor de hand liggend. Recentelijk heeft men binnen het Fedora project inspanningen gedaan om dit proces wat makkelijker te maken. Het resultaat is 389 Directory Server.

In wat volgt zetten we een LDAP-server op die toelaat het inloggen op computers te centraliseren.


Leerdoelen[bewerken]

  • Het inloggen op computers binnen een netwerk centraliseren met een LDAP-server


Installatie 389 Directory Server[bewerken]

Eerst voegen we een nieuwe gebruiker ldapuser toe op de machine die als LDAP-server zal dienen. Op client-machines zullen we als ldapuser kunnen inloggen terwijl die gebruiker op dat systeem lokaal niet bestaat.

 $ adduser ldapuser

Wijzig het wachtwoord van de zojuist aangemaakte gebruiker:

 $ passwd ldapuser


Installatie van de server[bewerken]

1. Installeer de 389 directory server via yum. De Fedora Directory server heet nu 389-ds.

 $ yum install 389-ds

Voor Centos is dit:

 $ yum install centos-ds

Installeer de server en de clients:

 $ yum -y install openldap openldap-clients openldap-devel openldap-servers


2. Voer het installatiescript uit vanuit een root console:

 $ setup-ds-admin.pl
Het doorlopen van het installatie script
2.1. Would like to continue with set up? [yes]
Druk op enter
2.2. Do you agree with the license terms? [no]
Voer Yes in
2.3. Would you like to continue? [no]:
Voer Yes in
2.4. Choose a setup type [2]:
Kies voor de standaard optie 2 (Typical Installation), om de setup te doorlopen.

De typical installation is de standaard en meest genomen setup mode. Deze mode helpt extra informatie te verschaffen bij de directory service,
zoals suffix en de configuratie directory informatie, terwijl de procedure snel doorheen het setup-proces gaat.
2.5. Computer name [computernaam]:
Druk ENTER om de standaard waarde te aanvaarden (dit is de volledige naam van de localhost).

Deze hostname wordt gebruikt om de Directory Server instantienaam , de administration domain en de basissuffix te creëren. Zorg ervoor dat deze naam verwijst naar een geldig IP-adres en dat dit IP-adres overeenkomt met de hostname.
2.6. System User [ldapuser] en System Group [ldapuser]:
Geef het user ID en group onder welke je de Directory Server wenst te draaien.
NOTE: If you enter root for the System User name, the Administration Server cannot start. The Administration Server runs as a component of the Apache server, and the HP-UX Apache-based Web Server does not allow the Apache server to run with the user ID root.
2.7 Do you want to register this software with an existing cofiguration Directory Server [no]?
Druk op enter
2.8 Configuration directory server administrator ID [admin]:
Druk op ENTER om de default waarde te gebruiken of geef zelf een ID in. Geef daarna een paswoord in.
2.9. Administration Domain[computername]:
Druk op ENTER om de default waarde te gebruiken of geef ze manueel in.
2.10. Directory server Network port [389]::
Druk op ENTER om de default waarde te gebruiken.
2.11. Directory server Identifier [...]::
Druk op ENTER om de default waarde te gebruiken.
2.12. Suffix[dc=...]::
Druk op ENTER om de default waarde te gebruiken (Let erop dat voor elk deel in je computername gescheiden door een punt een dc=DeelVanComputername bestaat.
2.13. Directory Manager DN [cn=Directory Manager]::
Druk op ENTER om de default waarde te gebruiken of geef het manueel in. Geef daarna een paswoord in.
2.14. Password::
Geef hier een wachtwoord in en bevestig het daarna.
2.15. Administration port number [9830]::
Druk op ENTER. Dit poortnummer wordt gebruikt om de instantie te gebruiken.
2.16.Are you ready to set up your servers? [yes]:
Dit is het einde van de installatie procedure, druk hier dus ENTER.


Indien er iets fout gelopen is tijdens de installatie, voer dan volgend commando uit:

 $ remove-ds-admin.pl


3. Maak dit toegankelijk voor SSL

 $ wget https://github.com/richm/scripts/raw/master/setupssl2.sh -O setupssl2.sh
 $ chmod +x setupssl2.sh
Als je fouten krijgt ga je naar de site zelf https://github.com/richm/scripts/tree/master%2Fsetupssl2.sh?raw=true en zoek je daar in de lijst van scripts naar setupssl2.sh. Kopieer het script en paste het in het reeds aangemaakte setupssl2.sh script
#./setupssl2.sh /etc/dirsrv/slapd-(computernaam)


4. Zowel administation server als directory server zouden nu moeten geïnstalleerd zijn en draaien

5. Download nu de migrationtools via yum:

 $ yum install migrationtools


6. de lokale users importeren in de LDAP database via commando:

 $ 389-console

De url om in te voeren in de 389-console login is vaak: http://localhost:9830. (Indien de melding wordt gegeven dat de server niet gestart is, geef dan het commando /etc/init.d/slapd start in.)

  vanuit /usr/share/migrationtools/
  $ migrate_base > base.ldif
  via 389-console (via een root console: 389-console invoeren)
  base.ldif importeren
  in root console: export ETC_SHADOW=/etc/shadow
  $ migrate_passwd.pl /etc/passwd people.ldif
  via 389-console people.ldif importeren


7. Start de 389-console via het commando 389-console. Als deze niet wil opstarten voer dan volgende commando's uit: service dirsrv start en service dirsrv-admin start. Ga naar de directory server en voeg daar een nieuwe gebruiker toe (bij keuzelijst kies voor "people") zelf users aanmaken in de 389-console: ENABLE POSIX USER ATTRIBUTES !!!!!! (dit is hét euvel der euvels, seriously) en zelf een UID toekennen (speelt geen role) en home directory instellen

Configuratie van de clients[bewerken]

Vanuit een root console:

 $ authconfig-tui

Kies er voor om LDAP te gebruiken als authenticatiemethode en MD5 als wachtwoordtype

Geef vervolgens het IP adres van de LDAP server in. Vergeet niet om er ldap:// voor te zetten
Vul daarna het domain dat je bij de configuratie van de LDAP server hebt gebruikt in.

De nodige configuratiebestanden zijn nu bijgewerkt

Labo-opdracht[bewerken]

Configureer een RedHat-gebaseerd Linux-systeem om LDAP-authenticatie te centraliseren.

  1. Voeg op de machine waarop de LDAP-server zal draaien een gebruiker ldapuser toe
  2. Zet een LDAP-server op die gebruikersinformatie bijhoudt
  3. Configureer een andere pc zodat die bij inloggen de LDAP-server zal aanspreken voor de wachtwoordcontrole
  4. Test dit door op de "client"-pc in te loggen als ldapuser

Je mag 389 Directory Server gebruiken voor het uitvoeren van de opdracht. Merk op dat je de software niet moet downloaden van de website. De applicatie zit in de repositories, dus een eenvoudige yum install volstaat.


SNMP[bewerken]

Inleiding[bewerken]

Niet aan iedere server wordt een toetsenbord en een scherm gekoppeld, dus is het handig deze van op afstand te kunnen beheren en bekijken. SNMP wordt veelal gebruikt om bij apparaten zoals servers en switches van op afstand toezicht te kunnen houden en ze te beheren. SNMP geeft de data van de server weer in de vorm van variabelen. Via een management applicatie zoals Nagios kan je die gegevens opvragen, bekijken en met sommige managers beheren.


Leerdoelen[bewerken]

  • Het Simple Network Management Protocol (SNMP) en de functie ervan kennen
    • Volgende gerelateerde termen kennen en begrijpen: agent, manager, fetch/store operaties, Management Information Base (MIB), Structure of Management Information (SMI) tree
    • Net-snmp kunnen installeren onder Fedora of CentOS als agent en als manager, vanuit de manager informatie opvragen aan een agent
    • Geavanceerde SNMP software kennen: Nagios, ZenOSS, OpenNMS


Wat is SNMP[bewerken]

SNMP maakt gebruik van het applicatie protocol om een server op afstand te monitoren en te beheren.

  • manager: monitoring / beheer applicatie op de sysadmin's computer (= client)
  • agent: applicatie die draait op de server

Je hebt 2 operaties:

  • fetch: een waarde verkrijgen van de server (monitor)
  • store: een waarde instellen (control)

Management Information Base (MIB)

MIB is een databank die alle objecten bevat die SNMP kan raadplegen. Ieder object heeft zijn unieke naam (Object ID, OID) en een definitie. Dit maakt het eenvoudig om een 'fetch & store' operaties uit te voeren. Alle MIB variabelen om protocollen zoals UDP, TCP, IP, Ethernet, ARP en apparaten zoals bridges, switches en printers zijn aanwezig. Maar de databank kan eenvoudig worden uitgebreid om nieuwe netwerk protocollen of nieuwe hardware apparaten te kunnen implementeren.

Structure of Management Information tree (SMI)

Bevat de structuur van de OID's. Dit is vastgelegd in de SNMP standaard.


Installatie SNMP op de agent[bewerken]

Installatie SNMP op de client (de server die je wil volgen op afstand).

 $ yum install net-snmp net-snmp-utils


Instellen SNMP[bewerken]

 $ cd /etc/snmp/

Een backup maken van het configuratiebestand, en vervolgens het bestand legen.

 $ cp snmpd.conf snmpd.conf-orig
 $ echo "" > snmpd.conf

Je hebt verschillende mogelijkheden wat betreft configuratie en beveiliging.

  • Minimaal en onveilig (SNMPv1)
 $ vi snmpd.conf
 rocommunity craz33guy
   # rocummunity: read-only toegang tot SNMP agent
   # craz33guy: community string (wachtwoord)
  • Beperkte toegang voor vertrouwde hosts (SNMPv1&2)
 $ vi snmpd.conf
 ## System location and contact information
 syslocation Gent
 syscontact Jan Janssens
 ##       sec.name     source         community
 ##       ========     ======         =========
 com2sec  local        localhost      craz33guy
 com2sec  network_1    172.16.1.0/24  craz33guy
 com2sec  network_2    192.168.2.0/24 craz33guy
 ##    Access.group.name sec.model sec.name
 ##    ================= ========= ========
 group MyROGroup_1       v1        local
 group MyROGroup_1       v1        network_1
 group MyROGroup_2       v2c       network_2
 ## MIB.view.name  incl/excl MIB.subtree mask
 ## ============== ========= =========== ====
 view all-mibs     included  .1          80
 ##     MIB
 ##     group.name  context sec.model sec.level prefix read     write notif
 ##     ==========  ======= ========= ========= ====== ====     ===== =====
 access MyROGroup_1 ""      v1        noauth    exact  all-mibs none  none
 access MyROGroup_2 ""      v2c       noauth    exact  all-mibs none  none
  • Beveiligde verbinding (SNMPv3)

Een SNMP user aanmaken met behulp van net-snmp-config

 $ net-snmp-config --create-snmpv3-user -ro -a MD5 \ -A mandeville -x DES -X savlamar securev3user
   # -ro: user can only fetch data
   # -a MD5: user password will be hashed with MD5
   # -A mandeville: user authentication password
   # -x DES: use DES encryption algorithm
   # -X savlamar: password for encryption
   # securev3user: user name


Opstarten SNMP[bewerken]

 $ chkconfig snmpd on
 $ service snmpd start


Testen SNMP[bewerken]

 $ snmpwalk -v 1 -c craz33guy localhost system
 $ snmpwalk -v 1 -c craz33guy localhost interface


Installatie van een manager[bewerken]

Er zijn verschillende software pakketten om de server op te volgen, voorbeelden zijn Zenoss en Nagios.

Zenoss[bewerken]

Installatie[bewerken]

Installeer eerst MySQL als dit nog niet gebeurd is.

Er mag default geen wachtwoord ingesteld zijn, indien dat wel het geval is voer dit commando uit:

 $ mysqladmin -u root -p'oud_wachtwoord' password '' (nieuw paswoord leeglaten)

Installatie van andere benodigde software.

 $ yum install -y gmp libgomp libgcj liberation-fonts libaio

Download en installeer de Zenoss software.

 $ wget https://downloads.sourceforge.net/zenoss/zenoss-3.0.3.el5.i386.rpm    # 32 bit
 $ wget https://downloads.sourceforge.net/zenoss/zenoss-3.0.3.el5.x86_64.rpm  # 64 bit
 $ rpm -ivh zenoss-3.0.3.el5.*.rpm

Iptables aanpassen.

 $ vi /etc/sysconfig/iptables
  -A RH-Firewall-1-INPUT -p tcp --dport 8080 -j ACCEPT

Firewall herstarten.

 $ /sbin/service iptables restart

Zenoss starten.

 $ service zenoss start
Testen[bewerken]

Surfen naar poort 8080 en de Zenoss pagina zou zichtbaar moeten zijn.

Daar wordt je gevraagd om een nieuw account aan te maken. De standaard username is "admin", het wachtwoord "zenoss".

Nagios[bewerken]

Installatie[bewerken]
 $ yum install nagios gcc glibc glibc-common  gd gd-devel

Email verificatie, voor als je alerts wilt ontvangen.

 $ vi /etc/nagios/objects/contacts.cfg

Account aanmaken voor web interface.

 $ htpasswd -c /etc/nagios/passwd nagiosadmin
 $ service httpd (re)start
 $ service nagios start
 $ chkconfig nagios on

Je kan nu per host, een generieke config file maken in de map /etc/nagios/objects en deze inladen in nagios.cfg. Voor de opzet van de nieuwe config file kan je localhost.cfg als voorbeeld gebruiken.

Testen[bewerken]

Bereikbaar via: http://localhost/nagios/.

Als je problemen hebt bij het inloggen, kijk je best eens de nagios.cfg file na. Verifiëer dat je username effectief op je gekozen username staat.

Om je config te testen op eventuele fouten kan je in commandline het volgende uitvoeren

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Methode Kevin Van den Bossche en Nicolas Van de Casteele[bewerken]

Deze methode implementeert zowel v1, v2c als v3. Deze methode is deels gebaseerd op bovenstaande tutorial. Werkt op Fedora 14.

Installatie en configuratie SNMP[bewerken]

 $ su -
 $ yum install net-snmp net-snmp-utils
 $ cd /etc/snmp
 $ cp snmpd.conf snmpd.conf.bak
 net-snmp-create-v3-user
      Enter a SNMPv3 user name to create: test
      Enter authentication pass-phrase: snmptest
      Enter encryption pass-phrase: snmptest
 $ service snmpd start
 $ chkconfig snmpds on
 

gedit snmpd.conf

 #community name
 rocommunity public
 #community name mappen in security names
 com2sec local localhost public
 com2sec mynetwork 10.0.0.0/24 public
 #security names mappen in group names
 group MyRWGroup v1 local
 group MyRWGroup v2c local
 group MyRWGroup usm local
 group MyROGroup v1 mynetwork
 group MyROGroup v2c mynetwork
 group MyROGroup usm mynetwork
 #view maken
 view all included .1 80
 #groepen toegang geven tot 1 view met verschillende permissies
 access MyROGroup "" any noauth exact all none none
 access MyRWGroup "" any noauth exact all all none
 $ service snmpd restart

SNMP testen[bewerken]

V1 testen:

 lokaal: $ snmpwalk -v 1 -c public localhost system
 remote: $ snmpwalk -v 1 -c public 10.0.0.5 system

V2C testen:

 lokaal: $ snmpwalk -v2c -c public localhost system
 remote: $ snmpwalk -v2c -c public 10.0.0.5 system

V3 testen:

 lokaal: $ snmpwalk -u test -l authPriv -a MD5 -A snmptest -x DES -X snmptest localhost system
 remote: $ snmpwalk -u test -l authPriv -a MD5 -A snmptest -x DES -X snmptest 10.0.0.5 system

Extra: syslocation en syscontact[bewerken]

Je kan zelf ook variabelen definiëren, wij gaan in dit geval syslocation en syscontact instellen.

 $ gedit snmpd.conf
   syslocation Server DL380G4 Rack 2, Companyname Ghent
   syscontact Admins <admins@companyname.be> 
 $ service snmpd restart
 

Lokaal testen

 $ snmpwalk -v 1 -c public localhost syslocation

Nagios[bewerken]

Installatie

 $ yum install nagios
 $ htpasswd -c /etc/nagios/passwd nagiosadmin
   nagios
 $ service httpd restart
 $ service nagios restart

Test

 Surf naar http://localhost/nagios
 Login met nagiosadmin//nagios

Bibliografie[bewerken]

DHCP

  • Bronvermelding inleiding + algemene uitleg: Leerboek Linux Deel 3 - Linux in een netwerk (Sander van Vugt)

SNMP

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.