Instalacja i konfiguracja serwera nazw

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
sigo
Junior Member
Posty: 501
Rejestracja: 21 marca 2009, 19:12

Instalacja i konfiguracja serwera nazw

Post autor: sigo »

Informacje techniczne
Jest to pierwsza wersja dokumentu, może zawierać błędy.
Użytkowników proszę o nietworzenie nowych postów (kontakt jedynie poprzez prywatną wiadomość).
Moderatorów prosiłbym o zamknięcie tematu.
  1. Wstęp
    Postanowiłem napisać przewodnik, który pozwoli utworzyć minimalną konfigurację serwera nazw (DNS). Całość będzie oparta o pakiet bind9. Moim założeniem, jak już wspomniałem, będzie stworzenie minimalnej konfiguracji z omówieniem wszystkich czynności.

    W sieci, jak również na tym forum, istnieją podobne artykuły, lecz nie wszystkie są dokończone, zawierają błędy lub zdezaktualizowały się.
    Chciałbym także podziękować użytkownikom wiking oraz TRanx, gdyż wzorowałem się na ich tekstach (w niektórych momentach pozwoliłem sobie nawet skopiować fragmenty) - mój artykuł jest swoistym połączeniem i udoskonaleniem obydwu.

    Znajdujemy się na forum dystrybucji Debian, więc na jego przykładzie będę pokazywał instalację pakietów (użytkownicy innych systemów, będą musieli poszukać pomocy w innym miejscu). Konfiguracja wszelkich aplikacji powinna wyglądać bardzo podobnie na wszystkich systemach Linux. Polecenia wykonywane w poradniku należy wykonywać jako root.
  2. Instalacja
    Będziemy potrzebować przede wszystkim serwera nazw (bind9) oraz aplikacji testującej (dnsutils - zawiera m.in. dig) - zainstalujmy je. Ja używam aptitude.

    Kod: Zaznacz cały

    aptitude install bind9 dnsutils
    Po instalacji, możemy wyłączyć binda (by nikt przypadkiem nie zdążył włamać się do naszego systemu, zanim go nie zabezpieczymy).

    Kod: Zaznacz cały

    /etc/init.d/bind9 stop
  3. Chroot
    1. Informacje
      Krok opcjonalny, jednak bardzo zalecany.
      Mimo iż bind9 jest bardzo popularnym serwerem nazw, nie należy do najbezpieczniejszych - zamknijmy go w klatce. Dzięki temu rozwiązaniu, nawet po włamaniu, agresor będzie miał bardzo utrudnione wyjście do głównego systemu plików.
    2. Edycja /etc/default/bind9
      Zacznijmy od edycji tego pliku - musimy poinformować system, iż zamykamy binda w klatce.
      Linię:

      Kod: Zaznacz cały

      OPTIONS="-u bind"
      zamieniamy na:

      Kod: Zaznacz cały

      OPTIONS="-u bind -t /var/lib/named"
      Oczywiście zmiany zapisujemy w pliku. Tym sposobem, informujemy system, iż serwer nazw będzie umieszczony w /var/lib/named.
    3. Tworzenie drzewa katalogów dla serwera nazw

      Kod: Zaznacz cały

      mkdir -p /var/lib/named/etc
      mkdir -p /var/lib/named/var/cache/bind
      mkdir /var/lib/named/var/run
      mkdir /var/lib/named/dev
    4. Przeniesienie konfiguracji
      Przenosimy konfigurację binda i plik z numerem procesu do klatki:

      Kod: Zaznacz cały

      mv /etc/bind /var/lib/named/etc
      mv /var/run/bind /var/lib/named/var/run
    5. Tworzenie dowiązań symbolicznych
      W miejscach, z których przenieśliśmy katalogi, tworzymy dowiązania symboliczne, które będą wskazywały na ich nowe położenie:

      Kod: Zaznacz cały

      ln -s /var/lib/named/etc/bind /etc/bind
      ln -s /var/lib/named/var/run/bind/ /var/run/bind
    6. Tworzenie wirtualnych urządzeń
      Tworzymy wirtualne urządzenia i zmniejszamy ich prawa do minimum:

      Kod: Zaznacz cały

      mknod /var/lib/named/dev/null c 1 3
      mknod /var/lib/named/dev/random c 1 8
      chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
      chown -R bind:nogroup /var/lib/named/var/*
      chown -R bind:nogroup /var/lib/named/etc/bind
      W tej chwili skończyliśmy umieszczanie serwera nazw w klatce.
  4. Konfiguracja
    1. Edycja /etc/bind/named.conf.options
      Przejdźmy do bezpośredniej konfiguracji binda. Plik konfiguracyjny powinien zawierać:

      Kod: Zaznacz cały

      options {
        directory "/var/cache/bind";
        listen-on { any; };
        listen-on-v6 { any; };
        auth-nxdomain no;
        query-source address * port 53;
        transfer-source * port 53;
        notify-source * port 53;
        version "Unknow";
      };
      Wyjaśnienie znaczenia parametrów:
      directory - pośredni katalog binda - bezpośrednim jest tak naprawdę /var/lib/named/var/cache/bind
      listen-on - adresy IP, na których bind będzie nasłuchiwał
      listen-on-v6 - j.w. (dla ipv6)
      auth-nxdomain - nie jestem pewien, w domyślnej konfiguracji parametr posiada wartość no
      query-source address, transfer-source, notify-source - port, na jakim pracować ma bind
      version - nazwa, jaką będzie przedstawiał się serwer (np. przy skanowaniu nmapem)
    2. Edycja /etc/bind/named.conf.local
      Następnie dodajmy informację o utrzymywanej domenie:

      Kod: Zaznacz cały

      zone "domena.pl" {
        type master;
        file "/etc/bind/domena.pl";
        notify yes;
      };
      Wyjaśnienie:
      domena.pl - nazwa utrzymywanej domeny
      type - typ strefy (master - podstawowy, slave - zapasowy)
      file - plik konfiguracji strefy
      notify - informowanie zapasowych serwerów nazw o zmianach, przyspiesza aktualizowanie informacji o strefach
    3. Tworzenie /etc/bind/domena.pl

      Kod: Zaznacz cały

      $TTL 604800
      @    IN    SOA    ns1.domena.pl. root.domena.pl. (
            2009060301  ; Serial
            604800      ; Refresh
            86400       ; Retry
            2419200     ; Expire
            604800    ) ; Negative Cache TTL
      
            IN    NS    ns1.domena.pl.
            IN    NS    ns2.domena.pl.
            IN    MX    10 domena.pl.
      
      @    IN    A    adres-ip
      
      ns1  IN    A    adres-ip
      ns2  IN    A    adres-ip
      Zmieniamy właściciela i grupę:

      Kod: Zaznacz cały

      chown bind:nogroup domena.pl
      TRanx pisze:Zauważ, że wszystkie nazwy domenowe są zakończone kropką. Gdyby tych kropek nie było, serwer potraktowałby tą nazwę jako cześć domeny utrzymywanej w tej strefie
      Wyjaśnienie:
      TRanx pisze:$TTL - czas, przez jaki poszczególne wpisy są buforowane na serwerach DNS
      ns1.domena.pl - adres Twojego serwera nazw
      root.domena.pl - Twój adres email, gdzie pierwsza kropka oznacza znak @
      Serial - numer seryjny]Refresh[/b] - częstość odświeżania; decyduje o tym, jak często serwery dodatkowe będą sprawdzać, czy ich dane na temat strefy są aktualne
      Retry - częstość powtórek; jeśli serwerowi dodatkowemu nie uda się skontaktować z serwerem podstawowym po czasie odświeżania, to próbuje co jakiś tu zdefiniowany czas
      Expire - czas wygaśnięcia; jeśli serwerowi dodatkowemu nie uda się skontaktować z serwerem podstawowym przez czas wygaśnięcia, to zaczyna usuwać stare dane (czas wygaśnięcia zawsze powinien być znacznie większy od częstości odświeżania i powtórek - na przykład 30 dni)
      adres-ip - adres IP naszego serwera
      TRanx pisze:We wpisach A podajemy adresy IP, na które ma wskazywać dany wpis
      we wpisach AAAA jak wyżej, tyle, że adresy IPv6
      we wpisach NS podajemy nazwy (nie adresy IP!) serwerów, które utrzymują daną strefę
      we wpisach MX podajemy nazwy serwerów obsługujących pocztę
      we wpisach CNAME podajemy aliasy na inne domeny
      Jeżeli chcemy, by nasza strona była dostępna zarówno pod adresem domena.pl jak i http://www.domena.pl - nie twórzmy wpisu w pliku strefy]home IN A adres-ip-naszego-komputera[/code]
      Od teraz adres home.domena.pl wskazuje na nasz komputer.
    4. Przeładowanie konfiguracji
      Ukończyliśmy konfigurację utrzymywanej domeny, musimy jeszcze przeładować jej konfigurację - często się o tym zapomina, a jest to krok konieczny.

      Kod: Zaznacz cały

      rndc reload
      Uruchamiamy także usługę:

      Kod: Zaznacz cały

      /etc/init.d/bind9 start
    5. Panel administracji domeny
      Ostatnią czynnością jest wskazanie w panelu administracji domeny (dostępny po zalogowaniu w serwisie, w którym ją wykupywaliśmy).
      Pokażę to na przykładzie panelu w home.pl.
  5. Zakończenie
    Mam nadzieję, iż powyższy tekst, przyda się komukolwiek oraz rozwiążą się aktualne problemy z serwerami nazw.
Zablokowany