DNS czyli system nazw domenowych (ang. Domain Name System) ma za zadania przekształcać nazwy domenowe przyjazne człowiekowi czyli znane nam adresy stron www na IP serwerów na których znajdują się dane strony i odwrotnie czyli zamiana adresów IP na nazwy domenowe. DNS jest jedną z największych i najważniejszych rozproszonych baz danych świata obsługującą miliardy zapytań dziennie. Większość publicznych serwerów DNS utrzymywanych jest przez największych dostawców usług internetowych i firm komercyjnych. Prywatne serwery DNS mogą być przydatne nawet w lokalnej sieci domowej. Usługą DNS powiązaną z RHEL jest BIND ( ang. Berkeley Internet Name Domain). Ponieważ żaden indywidualny serwer nie jest tak duży by przechowywać informacje dla całego internetu domyślnie skonfigurowany jest on w taki sposób by mieć możliwość odpytywania się innych serwerów DNS.
Informacje podstawowe
DNS w RHEL6 bazuje na demonie "named" wbudowanym w pakiet BIND. RHEL6 zawiera BIND w wersji 9.7. Do zarządzania usługą DNS stosuje się polecenie "rndc" które w swoim działaniu zbliżone jest do sposobu korzystania z polecenia "apachectl" w przypadku zarządzania serwerem webowym Apache.
Opcje pakietu DNS
By skonfigurować serwer DNS należy zainteresować się pakietem powiązanym z grupą pakietów o nazwie Network Infrastructure Server package group. Wszystkie pakiety z tej grupy posiadają potrzebne opcje by dopasować je według indywidualnych potrzeb. Mając to na uwadze powinniśmy dowiedzieć się czegoś na temat RPM powiązanego z DNS.
- bind - zawiera podstawowe oprogramowanie serwera nazw z dokumentacją
- bind-chroot - Dodaje wyizolowaną lokalizacje BIND ograniczającą dostęp do DNS
- bind-devel - Zawiera biblioteki programistyczne dla BIND
- bind-dyndb-ldap - Wsparcie dynamicznych aktualizacji z LDAP
- bind-libs - Pliki bibliotek używanych w bind i bind-utils RPM's
- bind-sdb - Wsparcie dla alternatywnych baz danych takich jak LDAP
- bind-utils - Zawiera narzędzia takie jak dig i host udostępniające informacje o specyfice sieci i hostach w bazie DNS.
Teraz znając już znaczenie poszczególnych pakietów możemy przejść do upewnienia się , że wszystkie znajdują się w systemie lub przystąpić do ich instalacji.
Różne typy serwera DNS.
Kiedy dodatkowe opcje zostały poprawnie zainstalowane i są już dostępne, mamy cztery podstawowe typy serwera DNS.
- Master DNS server , główny autorytatywny dla jednej lub więcej domen, zwiera rekordy dotyczące hostów danej domeny
- Slave DNS server, oparty na wzorcu master DNS server dla danych, może być zamiennie z serwerem głównym
- Caching-only DNS server - przechowuje ostatnie zapytania tak jak serwer proxy. Jeżeli zostanie skonfigurowany jako odwołanie do innego serwera DNS zapytania nie są przechowywane we jego własnym cache.
- Forwarding-only DNS server - przekazuje odwołania do innego serwera DNS
Wszystkie wymienione typy serwerów DNS mogą zostać skonfigurowane z ograniczonym dostępem jedynie w obrębie lokalnej sieci. Alternatywą może być konfiguracja jako publiczny serwer DNS, dostępny z sieci internet jednak wiąże się to z większym ryzykiem i zagrożeniem dla bezpieczeństwa poprzez ataki .
Minimalna konfiguracja serwera DNS
Konfiguracje serwera DNS przeprowadzamy w plikach konfiguracyjnych. W tej sekcji przyjrzymy się plikom konfiguracyjnym jakie zostały zainstalowane wraz z BIND. Pokazane zostanie jak skonfigurować serwer typu caching-only nameserver wraz z przekierowaniem zapytań do innego DNS serwera.
Pliki konfiguracyjne BIND
Pliki konfiguracyjne DNS pomogą skonfigurować środowisko Linux jako bazę danych hostów i adresów IP. Ta baza danych będzie zbirem informacji i lokalną bazą danych dla zapytań przesyłanych z innych hostów. Poniżej znajduje się list plików konfiguracyjnych wraz z ich opisem. Lista zawiera odwołania do standardowej lokalizacji plików /var/named to pliki te nie są konieczne w przypadku konfiguracji caching-only oraz forwarding DNS server.
/etc/sysconfig/named - Ustawienia nie standardowej konfiguracji oraz lokalizacji plików danych
/etc/named.conf - Główny plik konfiguracyjny serwera DNS
/etc/named.iscdlv.key - określa standardowy klucz szyfrowania DNS
/etc/named.rfc1912.zones - nadaje właściwą strefę dla nazwy i adresu lokalnego hosta
/etc/rndc.key - lista kluczy autentykujących umożliwiających wsparcie zapytań do serwera DNS
/var/named/named.empty - Zawiera szablon pliku strefy
/var/named/named.localhost - Lista plików strefowych dla lokalnego komputera
/var/named/named.loopback - Lista plików strefy dla adresu loopback
Teraz pakiet bind-chroot został zainstalowany , a usługa named jest już uruchomiona oraz dostęp do tych plików mamy również z lokalizacji /var/named/chroot. Lokalizację głównego katalogu konfigurujemy w pliku /etc/sysconfig/named. W następnej sekcji poeksperymentujemy trochę z /etc/named.conf pamiętając by zawsze wykonywać kopię zapasową plików w jakich coś majstrujemy. Należy również zdawać sobie sprawę z działania SELinuxa i związanym z tym kontekstem pliku. Jak widać poniżej :
# ls -Z /etc/named.conf
-rw-r-----. root named system_u:object_r:named_conf_t:s0 /etc/named.conf
Jeżeli kopie plików zostaną przypadkowo odtworzone nawet przez użytkownika root kontekst SELinux może zostać utracony. Więc jeżeli wystąpią jakieś błędy podczas startu lub restartu usługi named sprawdźmy właściciela pliku oraz kontekst SELinux dla pliku /etc/named.conf. W razie potrzeby należy zastosować poniższe polecenia:
# chgrp named /etc/named.conf
# chcon -u system_u -t named_conf_t /etc/named.conf
Dodatkowo po testowaniu konfiguracji DNS niektóre informacje mogą pozostać w pamięci podręcznej. Co jest naturalne w przypadku pamięci podręcznej serwera DNS. Jeżeli zawartość pamięci podręcznej pozostaje po zmianie konfiguracji w plikach serwera DNS może to wpływać na jego działanie. Tak więc po zmianach i przeprowadzonych testach warto wyczyścić pamięć podręczną serwera DNS przy pomocy polecenia :
# rndc flush
DNS serwer typu Caching-only
Kiedy wysyłasz zapytanie o stronę internetową www.onet.pl zapytanie to trafia do serwera DNS. Odpowiedzią jest adres IP pod którym znajduje się wybrana strona. By skonfigurować serwer DNS oparty tylko o pamieć podręczną (caching-only) zobaczmy co znajduje się w pliku /etc/named.conf . Dyrektywy w podstawowym niemodyfikowanym pliku są zorganizowane tak by konfigurować serwer DNS właśnie w postaci wykorzystującej tylko pamięć podręczną ( caching-only).
Plik ten zawiera kilka podstawowych opcji konfiguracyjnych :
- listen-on port oraz listen-on-v6 port - port nasłuchiwania. By rozszerzyć nasłuchiwanie również o sieć lokalną musimy dodać adres IP lokalnej karty sieciowej np.:
listen-on port 53 { 127.0.0.1; 192.168.0.50};
Dla sieci IpV6 wykonujemy wszystko w podobny sposób.
- Lokalizacja plików serwera DNS w których program przechowuje swoje dane.
/var/named/chrootat
- Opcja dump-file wskazuje na plik bazy danych w jakim przechowywane są ostatnie zapytania do serwera DNS
- Opcja statistics-file przechowuje tymczasowo dane aktualnego rekordu DNS oraz jest wynikiem dla polecenia rndc stats
- Opcja memstatistics-file - określa lokalizacje statystyk zużycia pamięci
- Opcja allow-query - lista adresów IP posiadających zezwolenie na uzyskanie informacji z tego serwera DNS. Domyślnie lista jest ograniczona do systemu lokalnego. Można to rozszerzyć o inne sieci dodając adres tej sieci :
allow-query { localhost; 192.168.0.0/24; };
- Odwołania do programu zapewniającego bezpieczeństwo serwera DNS dnssec.*
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
Dla podstawowej konfiguracji serwera DNS instalujemy pakiety :
Dla podstawowej konfiguracji serwera DNS instalujemy pakiety :
- bind
- bind-utils
- bind-libs
Instalacja :
# yum install -y bind bind-utils bind-libs
Sprawdzenie instalacji :
# rpm -qa | grep ^bind
bind-libs-9.7.3-8.P3.el6.i686
bind-9.7.3-8.P3.el6.i686
bind-utils-9.7.3-8.P3.el6.i686
Włączamy uruchomienie usługi ze startem systemu
# chkconfig named on
Sprawdzamy poprawność uruchamiania usługi ze startem systemu
# chkconfig --list named
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Wprowadzamy odpowiednie reguły zapory iptables:
# iptables -I INPUT 5 -p udp -m udp --dport 53 -j ACCEPT
# iptables -I INPUT 5 -p tcp -m tcp --dport 53 -j ACCEPT
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[OK]
Restart usługi iptables dla wprowadzenie zmian:
# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
W celu uruchomienia usługi named wydajemy polecenie :
/etc/init.d/named start
DNS serwer typu Forwarding-only
Następnie przy pomocy polecenia # rndc status. Narzędzie rndc pozwala zdalnie zarządzać działaniem serwera nazw.
Plik konfiguracyjny jaki poddamy modyfikacji znajduję się w lokalizacji :
options {
listen-on port 53 { 127.0.0.1; 192.168.0.50; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
PODSTAWOWA KONFIGURACJA SERWERA DNS
Plik konfiguracyjny jaki poddamy modyfikacji znajduję się w lokalizacji :
/etc/named/named.conf
Zawartość pliku wraz z modyfikacjami:
listen-on port 53 { 127.0.0.1; 192.168.0.50; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
Tak jak omówiono już wcześniej podstawowa konfiguracja ogranicza się do ustawienia portu nasłuchu w raz z podaniem interfejsu, co w tym przykładzie przedstawia się następująco :
listen-on port 53 { 127.0.0.1; 192.168.0.50; };
oraz wskazaniu z jakiej puli adresów hosty mogą odpytywać ten serwer DNS :
allow-query { localhost; 192.168.0.0/24; };
Powyższy przykład przedstawia ustawienie serwera DNS typu Caching-only.
Jeżeli interesuje nas serwer typu Forward-only dodajemy wpis:
options {
listen-on port 53 { 127.0.0.1; 192.168.0.50; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; };
recursion yes;
forward only;
forwarders { 192.168.0.1; };
dnssec-enable yes;
dnssec-validation no;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
Ze wskazaniem na inny serwer DNS do jakiego przekierowywane będą zapytania.
listen-on port 53 { 127.0.0.1; 192.168.0.50; };
oraz wskazaniu z jakiej puli adresów hosty mogą odpytywać ten serwer DNS :
allow-query { localhost; 192.168.0.0/24; };
Powyższy przykład przedstawia ustawienie serwera DNS typu Caching-only.
Jeżeli interesuje nas serwer typu Forward-only dodajemy wpis:
options {
listen-on port 53 { 127.0.0.1; 192.168.0.50; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; };
recursion yes;
forward only;
forwarders { 192.168.0.1; };
dnssec-enable yes;
dnssec-validation no;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
Ze wskazaniem na inny serwer DNS do jakiego przekierowywane będą zapytania.
Komentarze
Prześlij komentarz