Wykorzystanie rekordów DNS do weryfikacji kluczy

Transkrypt

Wykorzystanie rekordów DNS do weryfikacji kluczy
Wykorzystanie rekordów DNS
do weryfikacji kluczy publicznych SSH
Radosław Kujawa – [email protected]
OSEC
15 czerwca 2015
Spis treści I
1 Zagrożenia bezpieczeństwa związane z weryfikacją kluczy
publicznych hostów
2 Jak wykorzystać rekordy SSHFP do zautomatyzowanej
weryfikacji kluczy
3 Konfiguracja klienta SSH
4 Automatyzacja procesu aktualizacji stref
5 Zabezpieczanie DNS przed spoofingiem
Część 1
Zagrożenia bezpieczeństwa związane z
weryfikacją kluczy publicznych hostów
SSH - weryfikacja kluczy a bezpieczeństwo
I
Każdy z nas używa SSH...
I
Protokół SSH jest „bezpieczny”.
I
Ale często zapominamy o zagrożeniach.
Akceptacja klucza publicznego zdalnego hosta
$ ssh example.com
The authenticity of host ’example.com (1.2.3.4)’ can’t be established.
RSA key fingerprint is 12:75:dd:41:22:3f:6f:88:f7:bc:4e:ad:2e:b5:da:2d.
Are you sure you want to continue connecting (yes/no)?
I
Manualna weryfikacja odcisku klucza najczęściej się nie
odbywa.
•
•
•
A co to jest? Myślałem, że trzeba tu wpisać „yes”.
Nie mam czasu / zarobiony jestem.
A kto będzie atakował ten mało ważny serwer?
Problem z weryfikacją kluczy publicznych
I
Protokół SSH jest faktycznie bezpieczny, ale...
I
Całe bezpieczeństwo opiera się na weryfikacji klucza
publicznego zdalnego hosta!
I
Skutecznie wykonany atak Man-in-the-Middle podczas
pierwszego połączenia całkowicie burzy to bezpieczeństwo.
I
SSH nie wymusza stosowania infrastruktury klucza
publicznego (PKI).
Gdy klucz zostanie zaakceptowany
I
Jest zapisywany w $HOME/.ssh/known hosts.
I
Używany do weryfikacji każdego kolejnego połączenia do tego
samego hosta.
I
Przy połączeniu do nowego hosta problem powraca...
Część 2
Jak wykorzystać rekordy SSHFP do
zautomatyzowanej weryfikacji kluczy
Mechanizm SSHFP
I
RFC4255, RFC6594, RFC7479.
I
Klient inicjuje połączenie z serwerem SSH.
I
Serwer SSH legitymuje się swoim kluczem publicznym.
I
Klient pobiera wartość rekordów SSHFP dla danego FQDN.
Klient weryfikuje odcisk klucza dla danego algorytmu, skoro
odcik się zgadza...
I
•
•
I
Może automatycznie zaakceptować klucz.
Może zapytać użytkownika czy klucz zaakceptować, podając
informację o zgodności z rekordem SSHFP.
Dalej połączenie SSH przebiega jak zazwyczaj.
Generowanie rekordów SSHFP
I
Nie trzeba niczego instalować dodatkowo
I
Znane narzędzie ssh-keygen posiada tą funkcjonalność.
I
ssh-keygen -r ‘hostname‘.
Struktura rekordu SSHFP
www
www
www
www
www
I
IN
IN
IN
IN
IN
A 192.168.0.100
SSHFP 1 1 0b34980da528297a8c9f3be3e8b6c05d58d14602
SSHFP 1 2 1f45321c7f1b730840a7fef14e30725a9d5ef5c5c7a9174(...)
SSHFP 2 1 c9a822aba840658002a4911f0a430f00f6e76d4e
SSHFP 2 2 15d544b67d0074bcd74219be55b96cdb36378f513159582(...)
Algorytm którym wygenerowano klucz:
•
•
•
•
I
-
RSA.
DSA.
ECDSA.
Ed25519.
Funkcja skrótu którą wygenerowano odcisk:
•
•
I
1
2
3
4
1 - SHA1.
2 - SHA256.
Weryfikacja: dig -t SSHFP www.example.com.
Część 3
Konfiguracja klienta SSH
Konfiguracja klienta – OpenSSH
I
I
Nie trzeba niczego instalować dodatkowo
Parametry konfiguracyjne klienta:
•
•
•
I
.
/etc/ssh/ssh config.
$HOME/.ssh/config.
Parametr -o polecenia ssh.
Opcje:
•
VerifyHostKeyDNS na wartość yes lub ask.
Część 4
Automatyzacja procesu aktualizacji stref
Automatyzacja aktualizacji stref
.
I
Brak standardu
I
Red Hat IPA/FreeIPA.
I
Dynamic DNS – nsupdate.
I
Generowanie kluczy w Kickstarcie i własny skrypt do
aktualizacji DNS.
I
Puppet/Chef/Ansible...
Część 5
Zabezpieczanie DNS przed spoofingiem
DNS a spoofing
I
Brak podpisu elektronicznego DNS w standardzie
•
I
I
Podatność DNS na ataki MITM.
DNSSEC rozwiązuje ten problem.
•
I
.
Tylko trzeba go wdrożyć...
W obrębie własnej infrastruktury alternatywą może być IPsec.
Nawet jeśli „spoofowalność” DNS jest problemem...
•
Samo wdrożenie SSHFP jest lepsze w porównaniu z brakiem
jakiejkolwiek weryfikacji kluczy publicznych hostów.
Alternatywy dla SSHFP?
I
OpenSSH CA (min. wersja 5.3, faktycznie potrzebna 5.6).
I
sss ssh knownhostsproxy.
I
ssh keyscan.
I
Manualna weryfikacja
.
Koniec. . .
Dziękuje!
Czy są pytania?