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.
- 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. - Instalacja
Będziemy potrzebować przede wszystkim serwera nazw (bind9) oraz aplikacji testującej (dnsutils - zawiera m.in. dig) - zainstalujmy je. Ja używam aptitude.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
aptitude install bind9 dnsutils
Kod: Zaznacz cały
/etc/init.d/bind9 stop
- Chroot
- 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. - Edycja /etc/default/bind9
Zacznijmy od edycji tego pliku - musimy poinformować system, iż zamykamy binda w klatce.
Linię:zamieniamy na:Kod: Zaznacz cały
OPTIONS="-u bind"
Oczywiście zmiany zapisujemy w pliku. Tym sposobem, informujemy system, iż serwer nazw będzie umieszczony w /var/lib/named.Kod: Zaznacz cały
OPTIONS="-u bind -t /var/lib/named"
- 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
- 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
- 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
- Tworzenie wirtualnych urządzeń
Tworzymy wirtualne urządzenia i zmniejszamy ich prawa do minimum:W tej chwili skończyliśmy umieszczanie serwera nazw w klatce.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
- Informacje
- Konfiguracja
- Edycja /etc/bind/named.conf.options
Przejdźmy do bezpośredniej konfiguracji binda. Plik konfiguracyjny powinien zawierać:Wyjaśnienie znaczenia parametrów: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"; };
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) - Edycja /etc/bind/named.conf.local
Następnie dodajmy informację o utrzymywanej domenie:Wyjaśnienie:Kod: Zaznacz cały
zone "domena.pl" { type master; file "/etc/bind/domena.pl"; notify yes; };
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 - Tworzenie /etc/bind/domena.pl
Zmieniamy właściciela i grupę:
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
Kod: Zaznacz cały
chown bind:nogroup domena.pl
Wyjaśnienie: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 strefieTRanx 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
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]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
Od teraz adres home.domena.pl wskazuje na nasz komputer. - 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.Uruchamiamy także usługę:Kod: Zaznacz cały
rndc reload
Kod: Zaznacz cały
/etc/init.d/bind9 start
- 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.
- Edycja /etc/bind/named.conf.options
- Zakończenie
Mam nadzieję, iż powyższy tekst, przyda się komukolwiek oraz rozwiążą się aktualne problemy z serwerami nazw.