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

Podobne dokumenty