Podstawy bezpieczeństwa BIND 9 cz. II
Napisał: Patryk Krawaczyński
08/04/2017 w Bezpieczeństwo, Pen Test 1 komentarz. (artykuł nr 602, ilość słów: 410)
W
pierwszej części poznaliśmy podstawowe opcje konfiguracyjne uniemożliwiające wykorzystanie naszego serwera jako open resolver oraz pozyskania plików stref. W tej części zajmiemy się blokowaniem informacji, które mogą dostarczyć atakującemu niezbędnej wiedzy podczas rekonesansu. Serwery BIND (oraz wiele innych) potrafią zwracać “ukryte” informacje, gdy zostanie wysłane do nich specjalne zapytanie DNS. Zazwyczaj nie jest to pożądana ekspozycja dlatego należy ją zablokować.
5. Zapytania typu CHAOS:
Za pomocą następujących zapytań jesteśmy w stanie wyciągnąć wersję serwera BIND:
agresor@darkstar~:$ dig @dns.ofiary.pl version.bind txt chaos ; ||| DiG 9.8.3-P1 ||| @dns.ofiary.pl version.bind txt chaos ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 9363 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;version.bind. CH TXT ;; ANSWER SECTION: version.bind. 0 CH TXT "9.9.5-P3" ;; AUTHORITY SECTION: version.bind. 0 CH NS version.bind. ;; Query time: 30 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Fri Apr 7 13:30:44 2017 ;; MSG SIZE rcvd: 65
oraz jego hostname (który może okazać się nazwą w wewnętrznej sieci):
agresor@darkstar~:$ dig @dns.ofiary.pl hostname.bind txt chaos ; ||| DiG 9.8.3-P1 ||| @dns.ofiary.pl hostname.bind txt chaos ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 28365 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;hostname.bind. CH TXT ;; ANSWER SECTION: hostname.bind. 0 CH TXT "dnssrv1.lan" ;; AUTHORITY SECTION: hostname.bind. 0 CH NS hostname.bind. ;; Query time: 29 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Fri Apr 7 13:31:35 2017 ;; MSG SIZE rcvd: 76
W celu ukrycia tych informacji wystarczy, że do opcji naszego serwera BIND dodamy następujące wpisy:
options { version "[Secured]"; hostname "[Secured]"; server-id "[Secured]"; };
i zrestartujemy serwer.
Więcej informacji: Requirements for a Mechanism Identifying a Name Server Instance, Hide DNS Software Version
Innym rozwiązaniem jest także manualne dodanie obsługi strefy bind.. Wystarczy, że w pliku named.conf dodamy:
I stworzymy plik strefy bind.dns o zawartości:
Możemy także logować żądania o strefę bind. w ten sposób śledząc wszystkich klientów, którzy chcieli uzyskać wrażliwe informacje o naszej maszynie.