Podstawowe zabezpieczenie serwera dns - BIND
Skanując wiele serwerów dns w sieci można znaleźć wiele nieprawidłowo skonfigurowanych, pełniących rolę tzw. "openDNS",czyli odpowiadających na zapytanie o dowolną domenę. Na domiar złego wiele z nich umożliwia transfer odsługiwanych przez siebie domen.
Prawidłowym rozwiązaniem powinna byc sytuacja:
- Każdemu odpowiedzieć na pytanie TYLKO o obsługiwane przez siebie domeny.
- Odpowiadać na każde zapytanie TYLKO obsługiwanym przez siebie siecią.
- Pozwalać transferować swoje domeny TYLKO swoim serwerom podrzędnym.
Konfigurację przeprowadzimy w następujących krokach:
- Definiujemy przed sekcją globalną options kto może pytać nas o dowolną domenę:
acl "nasza_siec" { 127.0.0.1/8; 192.168.1.0/24; }; options { allow-query {"nasza_siec";}; };
W tym momencie jeżeli nie mamy dyrektywy allow-guery z konfiguracji strefy "schowaliśmy" ją przed światem zewnętrznym.
zone "ulos.pl" { type master; file "/etc/bind/ulos.pl"; notify yes; allow-update { none; }; allow-transfer {secondary_dns;}; allow-query {0.0.0.0/0;}; };Również powinniśmy zwrócić uwagę na dyrektywę allow-transfer, dzięki której można poznać wszytskie wpisy w naszej domenie.
Jeżeli nie posiadamy zapasowych serwerów to blokujemy transfer:
allow-transfer {none;};
W celu sprawdzenia skuteczności naszej konfiguracji mamy do dyspozycji różne narzędzia m.in. dig.
- Najpierw sprawdzamy blokadę odpytywania naszego serwera o inne adresy, robiąc to z innej sieci,jeżeli nie mamy innego konta shell, możemy skorzystać z narzędzi online:
dig @ip_naszego_serwera jakieś_inne_ip
Wynikiem powinno być:
; <<>> DiG 9.3.2 <<>> @ulos.pl wp.pl A ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 65151 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;wp.pl. IN A ;; Query time: 38 msec ;; SERVER: 217.113.238.23#53(217.113.238.23) ;; WHEN: Mon Jul 5 15:58:03 2010 ;; MSG SIZE rcvd: 23
dig ulos.pl AXFR
; <<>> DiG 9.3.2 <<>> ulos.pl AXFR ;; global options: printcmd ; Transfer failed.Powrót »