Podstawowe zabezpieczenie serwera dns - BIND

  • Data: 2011

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.
  • Następnym krokiem będzie określenie kto może pytać o naszą domenę, w tym przypadku chcemy żeby wszyscy mogli:
  • 
    			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
    		
  • Następnie sprawdzamy możliwość transferu domeny przez zewnętrzny serwer:
  • dig ulos.pl AXFR
    
    				; <<>> DiG 9.3.2 <<>> ulos.pl AXFR
    					 ;; global options:  printcmd
     					; Transfer failed.
    			

Powrót »