Bezpieczna usługa DNS na przykładzie serwera bind
Transkrypt
Bezpieczna usługa DNS na przykładzie serwera bind
Bezpieczna usługa DNS ( bind ). Bezpieczeństwo systemów komputerowych. Temat seminarium: Bezpieczna usługa DNS ( bind ). Autor: Bartosz Brodecki Bezpieczna usługa DNS na przykładzie serwera bind Seminarium 2004 – PP, SKiSR 1 Bezpieczna usługa DNS ( bind ). Plan ● Wprowadzenie do usługi DNS ● Środowisko chroot ● Cyfrowy podpis informacji, funkcja HMAC-MD5 ● Bezpieczna usługa DNS: ➢ Instalacja serwera bind w środowisku chroot ➢ Konfiguracja usługi ➢ Pliki stref Seminarium 2004 – PP, SKiSR 2 Bezpieczna usługa DNS ( bind ). Wprowadzenie do usługi DNS DNS – System Nazw Domenowych (eng. Domain Name System) powstał, aby umożliwić nadawanie komputerom nazw. Początki usługi DNS – płaska przestrzeń nazw, centralny ośrodek zarządzania – NIC (eng. Network Information Center) DNS zapewnia: ● hierarchiczną strukturę nazw, ● rozproszony system serwerów, ● rozproszone bazy nazw, ● dużą niezawodność, dzięki istnieniu conajmniej dwóch serwerów nazw, na każdą domenę Seminarium 2004 – PP, SKiSR 3 Bezpieczna usługa DNS ( bind ). Dlaczego musi być bezpieczny DNS zapewnia tłumaczenie nazw domenowych na adresy IP. Nikt nie pamięta adresów IP, może kilka. Jednak w przypadku używania serwerów wirtualnych adresy domenowe są niezbędne, przykłady serwery WWW i FTP. Możliwe problemy: ● podszycie się pod główny serwer DNS i przesłanie nowego zmienionego pliku strefy do serwera wtórnego ● podszycie się pod najbliższy użytkownikowi serwer DNS i podawanie fałszych odpowiedzi Seminarium 2004 – PP, SKiSR 4 Bezpieczna usługa DNS ( bind ). Środowisko chroot ● ● ● ● ● tworzy ograniczone środowisko (tzw. „więzienie”) dla aplikacji, uniemożliwia przeglądanie plików poza określonym katalogiem (“więzieniem”), katalog, który ma tworzyć “więzienie” musi zawierać wszystkie niezbędne pliki do działania aplikacji (z bibliotekami i plikami urządzeń włączenie), zapewnia większe bezpieczeństwo systemu, uruchamiana aplikacja nie może pracować z uprawnieniami administratora, gdyż takie uprawnienia pozwalają na opuszczenie ograniczonego środowiska. Seminarium 2004 – PP, SKiSR 5 Bezpieczna usługa DNS ( bind ). Cyfrowy podpis informacji umożliwia potwierdzenia autentyczności przesyłanych danych, ● DNS wykorzystuje do tego celu funkcję jednokierunkową z kluczem - HMAC-MD5, ● aby sprawdzić poprawność wiadomo ści obie strony muszą posiadać klucz, który wykorzystywany jest przy podpisywaniu, ● kluczem jest ciąg n-bitowy, który nie powinien być nigdzie ujawniany (n - może przybierać wartość od 1 do 512, zalecana wartość conajmniej 128) ● Seminarium 2004 – PP, SKiSR 6 Bezpieczna usługa DNS ( bind ). Bezpieczna usługa DNS ● Instalacja serwera bind w środowisku chroot ● Konfiguracja usługi DNS ● Pliki stref Seminarium 2004 – PP, SKiSR 7 Bezpieczna usługa DNS ( bind ). Instalacja serwera bind w środowisku chroot Istnieją dwa podejścia: ● wykorzystanie wbudowanej w bind'a opcji “-t”, ● wykorzystanie polecenia systemowego “chroot” Seminarium 2004 – PP, SKiSR 8 Bezpieczna usługa DNS ( bind ). wykorzystanie wbudowanej opcji “-t” zalety: ● w środowisku chroot nie są potrzebne: ➢ biblioteki systemowe ➢ sytemowe pliki konfiguracyjne potrzebne aplikacji ● przed przejściem do ograniczonego środowiska aplikacja wykonuje wszystkie uprzywilejowane operacje (otwarcie gniazda nasłuchującego, odczyt konfiguracji i bibliotek), ● po przejściu do ograniczonego środowiska zmienia uprawniania na nieuprzywilejowanego użytkownika, wady: ● w początkowej fazie ma pełen dostęp do systemu Seminarium 2004 – PP, SKiSR 9 Bezpieczna usługa DNS ( bind ). wykorzystanie wbudowanej opcji “-t” niezbędna struktura katalogów: /chroot /chroot/bind /chroot/bind/dev /chroot/bind/etc /chroot/bind/var /chroot/bind/var/named /chroot/bind/var/log /chroot/bind/var/run niezbędna lista plików: /chroot/bind/dev/null /chroot/bind/dev/log /chroot/bind/dev/random /chroot/bind/etc/localtime /chroot/bind/etc/named.conf /chroot/bind/etc/rndc.conf Seminarium 2004 – PP, SKiSR 10 Bezpieczna usługa DNS ( bind ). wykorzystanie polecenia systemowego “chroot” zalety: ● najpierw następuje przejście do ograniczonego środowiska, a następnie uruchamiany jest proces DNS, wady: ● na początku również działa z prawami administratora ● potrzebuje bibliotek i plików konfiguracyjnych w ograniczonym środowisku Seminarium 2004 – PP, SKiSR 11 Bezpieczna usługa DNS ( bind ). wykorzystanie polecenia systemowego “chroot” niezbędna struktura katalogów: /chroot /chroot/bind /chroot/bind/dev /chroot/bind/etc /chroot/bind/sbin /chroot/bind/usr /chroot/bind/usr/lib /chroot/bind/usr/libexec /chroot/bind/var /chroot/bind/var/named /chroot/bind/var/log /chroot/bind/var/run niezbędna lista plików: /chroot/bind/dev/null /chroot/bind/dev/log /chroot/bind/dev/random /chroot/bind/sbin/named (serwer DNS) /chroot/bind/etc/group /chroot/bind/etc/nsswitch.conf /chroot/bind/etc/passwd /chroot/bind/etc/localtime /chroot/bind/etc/named.conf /chroot/bind/etc/rndc.conf /chroot/bind/etc/ld.so.cache oraz następujące biblioteki: libc.so.6; liblwres.so; libdns.so; libcrypto.so libisccfg.so; libisccc.so; libisc.so libnsl.so; libdl.so; libnss_compat.so Seminarium 2004 – PP, SKiSR 12 Bezpieczna usługa DNS ( bind ). wykorzystanie polecenia systemowego “chroot” jeżeli DNS nie chce się uruchomić należy sprawdzić jakich plików/bibliotek brakuje, na przykład poleceniem: ● strace ● ldd ● strings Seminarium 2004 – PP, SKiSR 13 Bezpieczna usługa DNS ( bind ). Ograniczone środowisko Podsumowanie Określenie, które podejście jest lepsze, jest praktycznie nie możliwe. Rozwiązanie pierwsze umożliwia na początku pełen dostęp do systemu, niestety rozwiązanie drugie również. Wybór podejścia zależy uruchamiać usługę. od osoby, która będzie Seminarium 2004 – PP, SKiSR 14 Bezpieczna usługa DNS ( bind ). Konfiguracja usługi DNS Istnieją dwa pliki konfiguracyjne: ● named.conf – ustawienia usługi ● rndc.conf - ustawienie zdalnego zarządzania Seminarium 2004 – PP, SKiSR 15 Bezpieczna usługa DNS ( bind ). named.conf podzielony jest na następujące części: ● acl - listy adresów IP do kontroli dostępu ● include – zawieranie pliku ● key – zawiera klucz do autoryzacji i podpisywania przez TSIG ● controls – kanały kontrolne dla narzędzia rndc ● logging – specyfikacja logowania (tylko jedno) ● options – globalne ustawiania serwera (tylko jedno) ● server – ustawienie pewnych opcji dla serwerów ● trusted-keys – definicja zauwanych kluczy DNSSEC ● view – definicja widoków ● zone – definicja stref Seminarium 2004 – PP, SKiSR 16 Bezpieczna usługa DNS ( bind ). named.conf - acl Listy kontroli dostępu (eng. Access Control Lists) mogą zawierać: ● pojedyńcze adresy IP – 192.168.1.1; ● podsieci IP – 10.0.0.0/8; 150.254.17.96/27; ● predefiniowane stałe: ➢ none - żaden adres, ➢ any – wszystkie adresy, ➢ localhost – wszystkie adresy IP lokalnego komputera, ➢ localnets – wszystkie podsieci komputera. ● istnieje możliwość negacji „!” Przykład: acl local { 192.168.1.0/24; 192.168.2.0/24; !192.168.0.0/16}; acl sec_dns {192.168.1.254; }; Seminarium 2004 – PP, SKiSR 17 Bezpieczna usługa DNS ( bind ). named.conf - include Załączenie zewnętrznego pliku. Przykład: include <zewnetrzny_plik>; Seminarium 2004 – PP, SKiSR 18 Bezpieczna usługa DNS ( bind ). named.conf - key Klucz używany przyz TSIG, a także przy umożliwianiu zdalnego zarządzania poprzez rndc Przykład: key rndc-key { algorithm hmac-md5; secret ”vfRwc08Rk3lderEky0Qlo7KmswPV6YUtLuMAC31Au2w=” }; tworzenie klucza: dnssec-keygen -a alg -b bits -n type [options] name np. dnssec-keygen -a HMAC-MD5 -b 128 -n HOST -r /dev/random rndc-key Seminarium 2004 – PP, SKiSR 19 Bezpieczna usługa DNS ( bind ). named.conf - server Ustala klucz zdalnego serwera, używany przez TSIG server <adres IP zdalnego serwera> { keys { <nazwa klucza>; }; }; Łączymy odpowiedni klucz z serwerem od którego pochodzi. Przykład: server 192.168.10.254 { keys { ”rndc-key”; }; }; Seminarium 2004 – PP, SKiSR 20 Bezpieczna usługa DNS ( bind ). named.conf - controls Umożliwia zdalne zarządzanie dzięki rndc controls { inet <adres IP | *> [port <nr portu>] allow { <adres | acl> } keys { <lista kluczy> }; }; Przykład: controls { inet * port 953 allow { 127.0.0.1; } keys { ”rndc-key”; }; }; Seminarium 2004 – PP, SKiSR 21 Bezpieczna usługa DNS ( bind ). named.conf - logging Ustawienia logowania logging { [ channel <nazwa_kanalu> { (file <nazwa> [versions <liczba wersji> | unlimited] size <wielkosc> | syslog <nazwa_logu> | stderr | null ); [severity (critical | error | warning | notice | info | debug [level] | dynamic );] [ print-category yes | no ;] [ print-severity yes | no ;] [ print-time yes | no ;] }; ] [ category <nazwa_kategorii> { <nazwa_kanalu>; [<nazwa1>; ...] }; ] }; Seminarium 2004 – PP, SKiSR 22 Bezpieczna usługa DNS ( bind ). named.conf - logging przykład: logging { channel default { file “/var/log/named.log” versions 3 size 10m; severity info; print-category yes; print-severity yes; print-time yes; }; category default { default; }; }; Seminarium 2004 – PP, SKiSR 23 Bezpieczna usługa DNS ( bind ). named.conf - logging lista kategorii: default – informacje, które nie zostały sklasyfikowane do żadnej z wyszczególnionych kategorii w konfiguracji ● general – informacje o niesklasyfikowanych zdarzeniach ● database – informacje o bazie danych stref i danych buforowanych ● security – informacje o zaakceptowanych i odrzuconych zapytaniach ● config – informacje o parsowaniu i wykonywaniu konfiguracji ● resolver – informacje o odwzorywanie nazwy w imieniu klientów ● xfer-in – informacje o transferze stref do serwera ● xfer-out – informacje transferze stref z serwera ● notify – informacje o protokole NOTIFY (powiadomień) ● client – informacje o obsłudze zapytań klienta ● unmatched – informacje o niezidentyfikowanych zdarzeniach ● network – informacje o operacjach sieciowych ● update – informacje o dynamicznych aktualizacjach ● queries – informacje o zapytaniach do serwera ● dispatch – informacje o przesłaniu pakietów do odpowiednich modułów ● dnssec – informacje o transakcjach DNSSEC i TSIG ● lame-servers – informacje o bł ędnie skonfigurowanych serwerach DNS ● Seminarium 2004 – PP, SKiSR 24 Bezpieczna usługa DNS ( bind ). named.conf - options Tylko wybrane opcje: options { versions <jak się przedstawia>; directory <katalog z plikami stref>; pid-file <plik PID>; notify yes | no; # czy ma wysyłać powiadomienia recursion yes | no; forward only | first; forwarders { <lista adresow> | <lista acl> }; allow-query { <lista adresow> | <lista acl> }; allow-transfer { <lista adresow> | <lista acl> }; allow-recursion { <lista adresow> | <lista acl> }; blackhole { <lista adresow> | <lista acl> }; listen-on [port <port>] { <lista> }; }; Seminarium 2004 – PP, SKiSR 25 Bezpieczna usługa DNS ( bind ). named.conf - options Przykład: options { directory ”/var/named”; version ”DNS”; recursion no; notify yes; allow-query {any; }; allow-transfer { none; }; blackhole { blackhole_list; }; listen-on { any; }; }; Seminarium 2004 – PP, SKiSR 26 Bezpieczna usługa DNS ( bind ). named.conf - trusted-key Dyrektywa ta pozwala uznać klucz publiczny za poprawny bez podpisu nadrzędnego DNS'a. Klucz ten służy do podpisania domeny. Opis działania: ● wykorzystuje szyfrowanie asymetryczne (mamy klucz prywatny i publiczny) ● klucz prywatny wykorzystywany jest tylko do podpisania pliku strefy ● klucz publiczny jest zawarty w pliku strefy ● dzięki temu każdy komputer mo że zweryfikować poprawność wpisów Zapewnia to bardzo duże bezpieczeństwo poprawność nazw domenowych. Seminarium 2004 – PP, SKiSR 27 Bezpieczna usługa DNS ( bind ). named.conf - trusted-key Kroki do wykorzystania tej możliwości: # dnssec-keygen -a RSA -b 512 -n ZONE poznan.pl Kpoznan.pl.+001+26577 # dnssec-makekeyset -t 172800 Kpoznan.pl.+001+26577 <wysyłamy plik keyset-poznan.pl do podpisu, lub używamy dyrektywy trusted-key> # dnssec-signzone -o poznan.pl. db.poznan.pl Kpoznan.pl.+001+26577.private <nast ępnie dołączamy do podpisanego pliku strefy podpisany klucz publiczny lub tylko klucz publiczny podpisany przez nas (z wpisem w konfigurację)> Seminarium 2004 – PP, SKiSR 28 Bezpieczna usługa DNS ( bind ). named.conf - view Dyrektywa ta jest wykorzystywana do podzielenia DNS'a tak, aby jego zachowanie zależało od adresów IP, od których wpływają zapytania. Zachowanie – posiadanie konkretnych stref, odpowiednich ograniczeń i ustawień. Bezpieczeństwo – to opcja raczej może stanowić zagrożenie bezpieczeństwa. W celu poprawienia bezpieczeństwa zaleca się postawienie dwóch DNS'ów. Seminarium 2004 – PP, SKiSR 29 Bezpieczna usługa DNS ( bind ). named.conf - zone Dyrektywa zone (strefa) wykorzystywana jest do opisania domen, które ma obsługiwać DNS. Wiele opcji dyrektywy options może występować również w tej dyrektywie. Najważniejsze opcje to: zone <nazwa_strefy> [klasa] { type master | slave | hint | forward ; allow-transfer { <adres IP> | key <nazwa klucza> }; file <plik strefy>; allow-update { <adres IP> }; }; Seminarium 2004 – PP, SKiSR 30 Bezpieczna usługa DNS ( bind ). named.conf - zone przykład – master: key rndc-key { algorithm hmac-md5; secret ”vfRwc08Rk3lderEky0Qlo7KmswPV6YUtLuMAC31Au2w=” }; zone ”test.pl” { type master; file ”test.pl.db”; allow-transfer { key rndc-key; }; notify yes; }; Seminarium 2004 – PP, SKiSR 31 Bezpieczna usługa DNS ( bind ). named.conf - zone przykład – slave: key rndc-key { algorithm hmac-md5; secret ”vfRwc08Rk3lderEky0Qlo7KmswPV6YUtLuMAC31Au2w=” }; server 192.168.254.254 { keys { rndc-key; }; }; zone ”test.pl” { type slave; file ”test.pl.db”; master { 192.168.254.254; }; notify no; }; Seminarium 2004 – PP, SKiSR 32 Bezpieczna usługa DNS ( bind ). rndc.conf przykład: key “rndc-key” { algorithm hmac-md5; secret ”vfRwc08Rk3lderEky0Qlo7KmswPV6YUtLuMAC31Au2w=”; }; options { default-key „rndc-key”; default-server 127.0.0.1; default-port 953; }; Seminarium 2004 – PP, SKiSR 33 Bezpieczna usługa DNS ( bind ). Pliki stref każdy rekord tego pliku składa się z: <nazwy> <klasy> <TTL> <typu> <dane> Rodzaje typów: ● A – adres urządzenia ● A6 lub AAAA – adres IPv6 urz ądzenia ● CNAME – alias nazwy urządzenia ● HINFO – opisuje procesor i system operacyjny ● MX – serwer pocztowy ● NS – serwer nazwy (DNS) ● PTR – wskaźnik na adres domenowy ● SOA – identyfikuje początek domeny ● TXT – pole tekstowe ● KEY i SIG – wykorzystywane przez DNSSEC Seminarium 2004 – PP, SKiSR 34 Bezpieczna usługa DNS ( bind ). Pliki stref przykład: $TTL 345600 @ IN SOA Ns1.test.Pl. root.Ns1.test.Pl. ( 2004031501 ; Serial 86400 ; Refresh 1d 10800 ; Retry 3h 2592000 ; Expire 30d 345600 ) ; MinimumTTL 4d IN NS Ns1.test.Pl. IN NS ns3.pomoc.pl. IN A 192.168.2.1 IN MX 10 smtp $ORIGIN test.pl. ns1 IN A 192.168.2.1 smtp IN A 192.168.10.1 ftp IN CNAME ns1 IN HINFO pentium4 Linux Seminarium 2004 – PP, SKiSR 35 Bezpieczna usługa DNS ( bind ). Podsumowanie: Bezpieczeństwo DNS należy podzielić na dwie części: bezpieczeństwo serwera – środowisko chroot ● bezpieczeństwo przesyłanych danych – TSIG i DNSSEC ● Niestety aktualnie bezpieczeństwo przesyłania danych przez serwery DNS nie jest powszechne. Aby w pełni wprowadzić DNSSEC tzw. root DNS powinny wprowadzić obowiązek podpisywania poddomen i powinno to być darmowe – lub w ramach opłaty, którą uiszcza się za utrzymywanie delegacji domeny. Seminarium 2004 – PP, SKiSR 36 Bezpieczna usługa DNS ( bind ). Literatura ● magazyn “Hakin9” nr 3/2004 ● http://www.isc.org/index.pl?/sw/bind/ ● dokumentacja serwera bind9 Seminarium 2004 – PP, SKiSR 37