ITE1804 - tjenestedrift obligatorisk oppgave 7

DNS

En fungerende navnetjener er en av byggeklossene i infrastrukturen for et IT system. Du skal i denne laboppgaven installere din egen navnetjener på din VMware Linux. Denne navnetjeneren skal benyttes av deg videre i dette semesteret, det er defor ikke mulig å hoppe over denne oppgaven da senere laboppgaver vil være avhengig av en velfungerende DNS tjener. En navnetjener må ha en fast IP adresse, vi benytter derfor nettverket 192.168.200.0/24 konsekvent på UITs datalabber, se forøvrig oppgaven om forberedleser til DNS lab for hvordan sette opp fast IP adresse.
Første del av oppgaven går ut på å sette opp en navnetjener på eget system, deretter skal dere på gruppebasis sette opp en navnetjener for en egen sone under nnth.org. Dette gjøres på en tjener som gruppen tildeles på HiN.

Installasjon av bind

Den mest benyttede utgaven av navnetjeneren DNS heter bind denne kommer fra http://www.isc.org/. Programvaren heter bind, mens prosessen som opprettes på systemet heter named

Valg av installasjons type

Du kan selv velge om du vil foreta en binær eller kildekode basert installasjon. Etterhver bør du beherske begge typer. Vi installerer ved hjelp av apt.

Pakkebasert installasjon anbefales da en får mye ferdig her. Alle kommandoer kjøres som superbruker, benytt kommando sudo bash for å få et shell med root tilgang før du starter opp.

Kjør kommandoen apt-get update
Installer bind9 ved hjelp av apt-get install bind9.

Etter installasjonen vil DNS tjeneren være startet automatisk.
  1. Konfigurasjonsfiler ligger i mappen /etc/bind
  2. Det følger med en liste over root navnetjenerene på Internett i filen db.root, men du kan laste ned en ny versjon fra FTP.RS.INTERNIC.NET. De som har lyst kan gjøre dette, dette er frivillig. Last ned filen domains/named.root vhja. FTP, legges i mappen /etc/bind/db.root. Ta kopi av den gamle først i samme mappen og gi den navnet db.root.org. Sonen "." (root) er definert i named.conf.default-zones og skal peke til denne filen. Verifiser den nedlastede filen ved å laste ned .md5 filen med samme navn og benytt kommando

    md5sum --check named.root.md5


    for verifikasjon.
  3. Oppstart av named daemon. Som regel er denne startet etter en installasjon på Ubuntu, benytt kommando sudo rndc status i et terminalvindu for å sjekke om denne er oppe og kjører. Startes evt med kommando /etc/init.d/bind9 start
DNS skal nå være installert og forhåpentligvi operativ. Benytt dig  for å teste ut om din DNS tjener virker.

Test av DNS tjener med dig

> dig @127.0.0.1 www.hin.no

Dersom alt er satt opp riktig skal navnetjeneren være fullt operativ, prøv gjerne andre navn for å verifisere dette. 127.0.0.1 er IP adressen for ditt eget system (den interne adressen) så kommandoen angir at du skal benytte din egen navnetjener og ikke den som systemet ditt er satt opp med.

Kommandoen rndc status viser status for navnetjeneren.

Oppsett av forward og reverse lookup zones for egen sone

Du skal i det følgende konfigurere bind til å være ansvarlig for en primær navnesone som du selv bestemmer navnet på, men den skal tilhøre navnetreet dt.hin.no. Navnetjeneren skal også settes opp til å være sekundær for sonen dt.hin.no. Velg et ikke støtende navn for din sone, erstatt.xxx videre i oppgaven med dette navnet. I katalogen http://kark.hin.no/sysadm/lab1/bind/ ligger maler som kan benyttes ved oppsett av konfig filene.

  1. Redigering av filen /etc/bind/named.conf.local. Her skal du legge inn en definisjon for din egen sone xxx.dt.hin.no, angi at DNS tjeneren din er er master for denne og angi hvilken fil sonen er definert i.
  2. Etter enhver endring av konfigurasjonsfilene (.conf) må named lese disse på nytt benytt rndc reconfig
  3. Oppsett av egen sone under dt.hin.no. Du kan ta en kopi av filen xxx.dt.hin.no.txt, gi den navn db.xxx.dt.hin.no. Dermed har du et utgangspunkt som du kan jobbe videre med. Filen lagres i mappen /etc/bind/. i enhver sonefil må følgende legges inn:
    1. SOA post
    2. NS post
    3. A post for navnetjeneren definert i NS post
    4. A poster for andre systemer i sonen
    5. Evt CNAME poster (alias navn)
  4. Etter endringer i en sonefil må denne lastes inn på nytt. rndc kan benyttes til dette med kommando rndc reload.
  5. Soner for reversoppslag mot 127.0.0.1 og localhost, er ferdig oppsatt etter en pakkeinstallasjon. Disse med flere er definert i filen named.conf.default-zones

Test av DNS tjener med dig

> dig @127.0.0.1 xxx.dt.hin.no ns

Dersom alt er satt opp riktig skal navnetjeneren returnere informasjon om sonen xxx.dt.hin.no og vise bl.a. hvilket system som er navnetjener for sonen.

Feilsøking

Dersom navnetjeneren ikke returnerer det du forventer, ikke svarer eller liknende er det trolig feil i en eller flere av sonefilene. Systemloggen er der navnetjeneren logger meldinger, denne ligger i filen /var/log/syslog på Ubuntu. Kjør kommandoen tail /var/log/syslog da får du se de siste postene i denne. Feil ved lasting av en sonefil vil stå her, dersom alt går bra står det også i denne filen. Alle sonefilene må være 100% syntaktisk riktige, hvis ikke vil ikke navnetjeneren kunne lese disse korrekt. Dersom du plages finnes det to skript som kan være til hjelp:

Revers oppslag mot DNS

En DNS tjener må også kunne ta imot og håndtere revers oppslag, det vil si forespørsler der det angis et IP nummer og DNS tjeneren skal returnere det korresponderende DNS navnet tilbake. For at en DNS tjener skal kunne gjøre dette må den ha konfigurert en Reverse Lookup Zone, og IP adressene må være registrert her. Dette er såkalte PTR poster i DNS.

  1. Sett opp revers mapping sone for det IP nettverket som systemet ditt tilhører. Systemet ditt tilhører 192.168.200.0/24 nettverket, du må da sette opp sonen 200.168.192.in-addr.arpa.
  2. Definer navnetjener for sonen og legg inn ditt eget system med adresse som en PTR post.
  3. Etter endringer i en sonefil må denne lastes inn på nytt. rndc kan benyttes til dette med kommando rndc reload.

Foreta et reversoppslag mot din DNS tjener etter navnet for ditt system og systemet du registrerte manuelt tidligere ved å angi IP adressen. DNS tjeneren skal returnere deg DNS navnet. Opsjonen -x til dig gjør at den forventer en IP adresse og ikke et navn som parameter.

Benytt kommando:
> dig @127.0.0.1 -x "IP-nummer"

Registrering av ny host og alias

Dette gjøres ved å editere den korrespondernde sonefilen, legg til et navn til IP mapping ( en A-post) og et alias (en CNAME post) , oppdater serienummeret i sonefilen. Du kan for eksempel registrere et annet system du har tilgjengelig med navn og IP adresse, på skolen kan du jo legge inn naboens system i din sone. Foreta også en registrering i reversoppslagsfilen for sonen systemet ditt tilhører og registrer en PTR post, dette er en IP-nummer til navn mapping. Husk oppdatering av serienummeret og rndc reload for å lese inn sonefilene på nytt. Test av nytt aliasnavn: Foreta en spørring etter det aliasnavnet du opprettet over ved hjelp av dig. Husk å benytte ditt eget system som navnetjener,

Beskyttelse av navnetjeneren

Det er viktig at navnetjeneren ikke kan benyttes av andre enn klientene på de nettverkene som er definert. Begrensning av aksess gjøres ved å sette opp en ACL (Access Control List) med de IP nettverkene som skal ha aksess, deretter spesifiseres direktivene allow-query, allow-transfer, allow-recursion der en angir hvilke systemer skal tillates. Dersom du ikke gjør denne er navnetjeneren åpen for alle, dette tillates ikke av sikkerhetshensyn. Legg inn allow-recursion{ IP-list }, der IP-list er de IP nettverkene som skal ha aksess og kunne benytte navnetjeneren. Dette legges inn i filen named.conf.options.

Endring av standard DNS tjener

Vi benytter fast statisk IP adresse, DHCP skal dermed ikke benyttes, det er denne som normalt setter opp hvem som skal være navnetjener. I Linux er navnetjener registrert i filen /etc/resolv.conf, denne kan ha opptil 3 navnetjenere definert i prioritert rekkefølge. Legg inn din egen navnetjener på toppen i listen i filen med adresse 127.0.0.1, alternativt gjør dette i filen /etc/network/interfaces

DNS tjener oppstart

Dersom du har installert med apt vil bind9 starte automatsik ved boot av systemet. Dette kan verifiseres ved å kjøre kommandoen sysv-rc-conf, den vil vise at bind9 er aktivert på kjørenivå Virker ikke sysv-rc-conf, installer den med apt.

Registrering av navnetjenere for andre soner

For at din navnetjener skal kunne finne andre systemer definert i andre soner må disse sonene og den tilhørende navnetjeneren defineres i DNS. Alle soner under dt.hin.no må defineres på navnetjeneren for dt.hin.no. Dette gjøres med såkalte "Glue records". Lærermaskinen kjører navnetjener for dt.hin.no, glue records for alle barnesonene må settes opp på denne, dette gjør vi i labtimene så snart din DNS tjener er klar. Definer din egen sone xxx.dt.hin.no med navn på navnetjener (NS post) og IP adresse for navnetjener. Prøv deretter å spørre navnetjeneren for dt.hin.no om et system i din egen sone, benytt dig for å demonstrere dette for faglærer.

Beskriv i besvarelsen hva som skal til for å definere sonene.

Etter registreringen på navnetjener for dt.hin.no bør du sette opp din egen navnetjener til å være slavenavnetjener for denne sonen, dermed vil din navnetjener få tilgang til alle postene i dt.hin.no.

Oppsett av navntjener på Internett, barnesoner under nnth.org

Den øvelsen du nå har gått igjennom har lært deg hva som skal til for å sette opp en ny DNS tjener med egen sone og slavesone. Dette er imidlertid gjort på et privat IP nettverk (for de fleste). Det er nå tid for å sette opp en egen navnetjener for en barnesone under nnth.org. Hver barnesone under nnth.org får sin egen navnetjener, dette er en Linux tjener som er på nett 24/7 på HiN. Det er imidlertid begrenset antall av disse tjenerne så hver tjener må betjenes av en gruppe studenter, 2 på hver gruppe. På tjeneren som tildeles vil hver gruppe ha ansvar for oppset av DNS tjeneren som barnesone under nnth.org, samt sikring av tjeneren i og med at den vil være tilgjengelig utenfra. Denne tjeneren vil gruppen disponere hele semesteret og tjeneren vil senere benyttes for Epost, web etc. Se eget notat (som kommer) om tildeling av tjener på ITSL.
På denne tjeneren er det svært viktig at aksessen utenfra for rekursive forespørsler begrenses.

  1. Legg inn allow-query { 158.39.0.0/16; 129.242.0.0/16; } og allow-recursion { 158.39.0.0/16; 129.242.0.0/16; }. Dette legges inn i filen named.conf.options. IP nettverket 158.39.0.0/16 og 129.242.0.0/16 er Uninett Nord sine nettverk, sikkerheten i disse nettverkene kan vi stole på.
  2. Legg inn allow-query { any; } i zone direktivet i sonefilen for barnesonen under nnth.org , ala dette:
    zone "xxx.nnth.orgs" {
          allow-query { any; };
          ......
    };
  3. Oppdater loggen for tjeneren som dokumenterer hva som er gjort og av hvem. Les mer om loggen på ITS Learning.
  4. Definer DNS navnet www for din-sone.nnth.org for webtjeneren dere har gående på tjeneren (Det skal være mulig å gå til adressen www.din-sone.nnth.org, standardsiden for webtjeneren til gruppen skal vises, ved å gå til /logg på samme tjener skal loggen som viser hva som er gjort med tjeneren vises..

Besvarelse

En labrapport i PDF format om skal inneholde en kort beskrivelse av DNS prinsipp og deretter en beskrivelse av installasjonen med eventuelle problemer/utfordringer. For tjener under nnth.org må det vektlegges spesielt hvilke tiltak som er iverksatt for å beskytte tjeneren mot angrep utenfra. Labrapporten skal inneholde et utdrag av de filene du har opprette/endret med de mest relevante endringene og tilleggene.