niedziela, 25 lipca 2010

Bind ciąg dalszy

W ostatnim artykule dotyczącym bind'a opisałem podstawową instalację oraz konfigurację, teraz przyszła pora na umożliwienie odpytania naszego serwera DNS przez inne hosty.

Pierwszą i podstawową czynnością (sprawdzone empirycznie) jest umożliwienie połączeń z określonych numerów IP na numer portu 53, czyli ten, na którym działa DNS (zakładam, że serwer DNS ma być udostępniony tylko dla sieci lokalnej).

Więc przechodzimy do /etc/sysconfig i robimy kopię bezpieczeństwa iptables
cp iptables iptables.backup , następnie edytujemy zawartość pliku iptables.
Ja dodałem tylko dwie reguły umożliwiające dwóm hostom odpytywanie serwera DNS:
-A RH-Firewall-1-INPUT -p udp -s 192.168.1.3 --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -s 192.168.1.2 --dport 53 -j ACCEPT

obie reguły muszą być dodane przed wierszem:
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited


Zapisujemy zmiany i restartujemy iptables (/etc/init.d/iptables restart) jak wyrzuci errory jakieś to trzeba znaleźć błędy w pliku i je poprawić.

Wcześniej tych reguł nie dodałem i niestety nie byłem w stanie odpytać serwera dns, wireshark i iptraf pokazywał komunikat:
icmp-host-prohibited
więc jeżeli zobaczycie taki komunikat, to pierwszą rzeczą, którą należy sprawdzić jest iptables.

Wcześniej próbowałem dodać przez wpisanie iptables -A INPUT -s i tak dalej, ale niestety nie przynosiło to żadnego efektu, pewnie w tych Red Hatowych iptables inaczej dodaje się reguły, ja wolałem po prostu edytować plik.


Teraz należy przystąpić do edycji pliku /etc/named.conf jego fragment wygląda następująco:

// Red Hat BIND Configuration Tool
//
// Default initial "Caching Only" name server configuration
//
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
allow-query { 192.168.1.3; 192.168.1.2 ;};
listen-on port 53 { 127.0.0.1; 192.168.1.4;};
//forwarders { 192.168.7.1; 192.168.2.1; };
};

zone "." IN {
type hint;
file "named.root";
};

zone "localdomain." IN {
type master;
file "localdomain.zone";
allow-update { none; };
allow-query {0.0.0.0/0;};
};

zone "localhost." IN {
type master;
file "localhost.zone";
allow-update { none; };
};




Przez wiersz allow-query { 192.168.1.3; 192.168.1.2 ;}; definiujemy kto może odpytywać nasz serwer DNS, ja zdefiniowałem dwa adresy ale można wszystkim umożliwić odpytywanie serwera DNS przez wprowadzenie wpisu allow-query { "any";};.

Kolejnym ważnym wierszem jest listen-on port 53 { 127.0.0.1; 192.168.1.4;};
, w którym definiujemy na którym porcie ma nasłuchiwać serwer (53) oraz na których numerach IP (to też jest jakaś metoda ochrony, ponieważ jeżeli damy tylko lokalny adres IP, a nie zewnętrzny nikt nie z zewnątrz nie będzie w stanie odpytać naszego serwera DNS).


Dla każdej domeny obsługiwanej przez serwer można jeszcze zdefiniować następujące opcje:
allow-update { none; }; // czyli kto może aktualizować informacje o wybranej strefie,
allow-query {0.0.0.0/0;}; // kto może odpytywać nasz serwer DNS,
allow-transfer // przydatne gdy nasz serwer chce wysyłać informacje o wybranej strefie do serwera master (popularne rozwiązanie w firmach hostingowych, mamy własny serwer VPS i trzeba wysłać informacje o podpiętych domenach do serwera nadrzędnego),
//forwarders { 192.168.7.1; 192.168.2.1; }; ta opcja się czasami przydaje, gdy chcemy zdefiniować do jakich serwerów mają być przekierowywane pytania o domeny, jeżeli nasz serwer DNS ich nie obsługuje. W moim przypadku pozostawiłem je zakomentowane i serwer i tak działał poprawie.

W większości przypadków allow-update powinno być ustawione na none, lub powinny tam zostać wypisane numery IP serwerów, które mogą aktualizować informacje o strefie.
Allow-query albo wszyscy albo tylko komputery z sieci lokalnej.
Allow-transfer gdy mamy jakiś serwer nadrzędny.
Jeżeli się popełni błąd w plikach wymienionych powyżej, to można np. komuś z zewnątrz umożliwić modyfikacje strefy obsługiwanej przez nasz serwer DNS, a tego byśmy raczej nie chcieli.

No tak, jeszcze na komputerze, który ma korzystać z naszego serwera DNS należy zmodyfikować zawartość /etc/resolv.conf i wprowadzić np.:
nameserver 192.168.1.4

Brak komentarzy:

Prześlij komentarz