20T28 SSH No Matching Key Exchange
W tym odcinku pokazuję jak rozwiązać problem z połączeniem SSH do starszych urządzeń sieciowych:
👉 Brak algorytmu wymiany klucza
👉 Brak algorytmu szyfrowania
👉Szczegóły na temat prędkości łamania DH str.6:
https://weakdh.org/imperfect-forward-secrecy.pdf
👉 Rekomendacje użycia poszczególnych algorytmów opublikowane przez IETF
https://tools.ietf.org/html/draft-ietf-curdle-ssh-kex-sha2-10#page-4
👉Zalecenia NIST (Amerykański Instytut Standaryzacji) odnośnie stosowania algorytmów
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf
Wykorzystane komendy:
ssh sw3com.netadminpro.pl
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 sw3com.netadminpro.pl
ssh -c aes128-cbc -oKexAlgorithms=+diffie-hellman-group1-sha1 sw3com.netadminpro.pl
Chcesz więcej informacji?
Dołącz do naszej strony fanów na Facebook:
Więcej miejsc do posłuchania:
Transkrypcja filmu:
0:00:01.540,0:00:05.400
Cześć! Interesuje Cię jak rozwiązać problem
0:00:05.400,0:00:09.580
dotyczący połączenia SSH do starszych urządzeń sieciowych?
0:00:09.980,0:00:14.200
Jeżeli tak, to to jest właśnie odcinek o tym temacie.
SSH No Matching Key Exchange
0:00:14.200,0:00:18.280
Zacznę od tego, w jaki sposób ja się natknąłem na ten problem.
0:00:18.600,0:00:21.735
Mam przełącznik 3 coma,
0:00:21.740,0:00:23.860
ale stary – z 2008 roku.
0:00:23.860,0:00:26.300
No i chciałem się do niego zalogować.
0:00:26.560,0:00:30.600
Tutaj przykład, loguję się ze swojego komputera lokalnego
0:00:30.940,0:00:32.280
do tego przełącznika.
0:00:32.280,0:00:37.040
I dostaję informację, że niestety nie został znaleziony
0:00:37.080,0:00:40.960
wspólny mianownik, czyli sposób wymiany kluczy
0:00:41.020,0:00:44.240
między moim klientem ssh a przełącznikiem.
0:00:44.620,0:00:47.220
Ja mam oczywiście najnowszą wersję ssh
0:00:47.220,0:00:50.200
i klienta, tu na mojej stacji końcowej
0:00:50.200,0:00:53.880
i te sposoby wymiany klucza
0:00:53.880,0:00:56.220
jakie udostępnia przełącznik
0:00:56.220,0:00:58.995
to jest Diffie-Hellman grupa 1. SHA1
0:00:59.000,0:01:02.900
lub Diffie-Hellman group exchange SHA1.
0:01:02.900,0:01:05.295
Ciekawy jest ten drugi tryb,
0:01:05.295,0:01:08.645
czyli ten Diffie-Hellman group exchange SHA1.
0:01:09.000,0:01:12.480
To tak naprawdę nie jest konkretna metoda, to jest raczej
0:01:12.480,0:01:14.660
grupa metod, gdzie
0:01:14.800,0:01:18.260
pomiędzy klientem ssh a serwerem,
0:01:18.260,0:01:20.320
czyli w tym przypadku moim przełącznikiem
0:01:20.320,0:01:23.160
odbywa się negocjacja najlepszej metody
0:01:23.160,0:01:25.660
Diffie-Hellmana z dostępnych grup.
0:01:25.660,0:01:29.180
W moim kliencie nie ma tej metody dostępnej
0:01:29.180,0:01:31.660
w konfiguracji. W związku z tym nie mógł się
0:01:31.780,0:01:34.660
ten mój klient ssh podłączyć z przełącznikiem .
0:01:34.660,0:01:38.020
Teraz zmienię parametr tego łączenia się.
0:01:38.680,0:01:43.180
Dodam tą metodę Diffie-Hellmana grupy pierwszej SHA1
0:01:43.380,0:01:45.700
do switcha i spróbuję się połączyć.
0:01:47.220,0:01:50.060
No i tym razem znowu się nie udało,
0:01:50.060,0:01:51.640
ale komunikat jest inny.
0:01:51.640,0:01:54.520
Tym razem przełącznik zgłosił mi informację ,
0:01:54.640,0:01:57.220
że dostępne metody szyfrowania
0:01:57.220,0:02:02.760
dla tej sesji ssh to jest aes128-cbc lub des-cbc .
0:02:03.060,0:02:04.780
Oczywiście aes jest silniejszy.
0:02:04.780,0:02:08.540
W związku z tym chciałbym wybrać tego aesa,
0:02:08.895,0:02:11.595
ale ta metoda również nie jest domyślnie wspierana
0:02:11.600,0:02:12.900
w moim kliencie ssh.
0:02:12.900,0:02:14.680
I to jest typowa sytuacja.
0:02:14.960,0:02:17.940
Teraz, żeby dodać tę metodę szyfrowania,
0:02:18.100,0:02:21.500
kolejny parametr dodam, czyli ssh-c
0:02:22.105,0:02:25.095
i metodę aes128-cbc .
0:02:25.095,0:02:28.225
Czyli zmieniłem, czy dodałem do mojego klienta ssh
0:02:28.225,0:02:31.495
możliwość szyfrowania aesem 128
0:02:31.500,0:02:35.380
i klucz będzie możliwy wymiany pomiędzy ssh-
0:02:35.380,0:02:38.320
klientem a serwerem Diffie-Hellmanem grupą pierwszą.
0:02:38.960,0:02:42.100
I tym razem z takimi parametrami próbuję się łączyć.
0:02:42.300,0:02:45.920
I widać, że jest to połączenie
0:02:45.920,0:02:48.140
dostępne i nawiązane.
0:02:48.480,0:02:50.800
Mogę teraz wpisać hasło,
0:02:50.800,0:02:53.600
no i jestem zalogowany na przełącznik.
0:02:53.760,0:02:57.300
To jest niestety taka konsekwencja posiadania
0:02:57.420,0:03:00.195
starszych urządzeń, więc jeżeli masz
0:03:00.195,0:03:03.265
w produkcji u siebie gdzieś, gdzie przetwarzasz ważne dane
0:03:03.280,0:03:05.760
tego typu starsze urządzenia,
0:03:05.760,0:03:09.800
to miej na uwadze, że czas złamania takiego szyfrowania,
0:03:09.800,0:03:12.655
czyli odczytania na przykład hasła, które wysyłasz
0:03:12.655,0:03:15.795
administracyjnie do logowania się do urządzeń
0:03:15.880,0:03:20.640
to jest kwestia około kilku godzin,
0:03:20.640,0:03:23.780
w zależności od mocy obliczeniowej,
0:03:23.920,0:03:26.480
jaką dysponuje dany atakujący.
0:03:26.600,0:03:29.795
Jeżeli chodzi o szacowanie, dla takich agencji
0:03:29.800,0:03:31.920
rządowych jak NSA na przykład w Stanach Zjednoczonych
0:03:31.920,0:03:36.300
to oni takie szyfrowanie odczytują w zasadzie w czasie rzeczywistym.
0:03:36.300,0:03:38.140
Więc warto mieć to na uwadze,
0:03:38.140,0:03:40.160
w zależności od tego, jakie dane
0:03:40.160,0:03:45.480
w swojej sieci przetwarzasz i na ile szacujesz, że są one istotne.
0:03:45.480,0:03:47.655
To jest sposób rozwiązania
0:03:47.655,0:03:50.615
problemu po stronie klienta,
0:03:50.615,0:03:54.005
ja mam akurat maca lub na systemie linuxowym.
0:03:54.040,0:03:57.860
Ale zaciekawiło mnie też jak może wyglądać ten problem
0:03:57.860,0:04:00.180
po stronie częściej używanych klientów, czyli
0:04:00.340,0:04:03.060
typowo PuTTY i Windowsa.
0:04:03.060,0:04:05.220
Więc teraz się przełączę na WIndowsa.
0:04:05.800,0:04:09.080
Mam tu przygotowane już PuTTY w domyślnej konfiguracji.
0:04:09.080,0:04:11.655
Dodałem sobie oczywiście też
0:04:11.660,0:04:14.140
ten mój przełącznik starszy.
0:04:14.140,0:04:16.640
To może tak, zacznę od tego czy mogę się połączyć
0:04:16.640,0:04:18.400
nie zmieniając żadnej konfiguracji
0:04:18.540,0:04:24.420
do mojego przełącznika 3 comowego z 2008 roku.
0:04:25.620,0:04:28.940
Tutaj jest pytanie czy nadpisać logowanie.
0:04:29.100,0:04:30.420
I widać, że
0:04:30.860,0:04:33.160
PuTTY się łączy.
0:04:33.160,0:04:34.800
Wpiszę sobie swoje dane.
0:04:40.700,0:04:42.160
I jestem połączony.
0:04:42.160,0:04:46.520
Dlaczego tu w PuTTY działa to bez żadnego problemu
0:04:47.100,0:04:51.760
a w przypadku klienta ssh na macu czy na linuxie
0:04:51.760,0:04:55.180
czyli to jest klient OpenSSH, jest z tym problem.
0:04:55.180,0:04:59.040
Spójrz w konfigurację jaka jest domyślna w PuTTY.
0:04:59.040,0:05:01.820
Przejdziemy tutaj do części ssh
0:05:01.820,0:05:04.980
i mamy tutaj podkategorię kex,
0:05:04.980,0:05:07.560
czyli to jest miejsce, w którym możesz ustawić sobie
0:05:07.560,0:05:10.260
jaki typ algorytmu jest dopuszczony
0:05:10.260,0:05:13.760
do używania przez PuTTY i łączenia się w ssh.
0:05:13.760,0:05:17.780
I tutaj można zobaczyć, że preferowane oczywiście jest ecdh,
0:05:17.780,0:05:21.120
czyli to jest algorytm krzywych eliptycznych.
0:05:21.120,0:05:23.280
Obecnie silny, zalecany.
0:05:23.280,0:05:26.520
Jest grupa Diffie-Hellman group exchange,
0:05:26.520,0:05:28.780
czyli to tak naprawdę nie jest konkretna grupa, tylko
0:05:28.780,0:05:31.495
możliwość wyboru najsilniejszej grupy
0:05:31.500,0:05:33.820
dostępnej na kliencie
0:05:33.820,0:05:36.820
i na serwerze, czyli w tym przypadku przełączniku.
0:05:37.140,0:05:40.880
Jest Diffie-Hellman grupa 14. uważana dzisiaj za,
0:05:41.240,0:05:44.100
w większości przypadków wystarczająco silną
0:05:44.100,0:05:48.160
to jest 2048 bitów – długość klucza
0:05:48.560,0:05:50.940
dla tego algorytmu.
0:05:50.940,0:05:53.820
No i możemy łączyć się również rsa.
0:05:53.820,0:05:56.980
Jeżeli chodzi o tą linijkę poniżej,
0:05:57.280,0:06:00.800
to wszystko co tutaj jest poniżej tego ostrzeżenia,
0:06:00.800,0:06:03.320
czyli Diffie-Hellman grupa 1.
0:06:03.320,0:06:06.600
to jest uważane dzisiaj za słabe, tak jak wspomniałem
0:06:06.780,0:06:10.660
znane są sposoby łamania bez większ ego problemu,
0:06:10.660,0:06:14.240
bez nawet specjalistycznego sprzętu, tego typu algorytmu.
0:06:14.500,0:06:17.740
A zauważ, że jeżeli ktoś atakujący
0:06:17.740,0:06:20.580
będzie chciał złamać tego typu komunikację,
0:06:20.580,0:06:22.780
czyli tą Twoją sesję ssh,
0:06:22.860,0:06:25.835
to jest w stanie odszyfrować całą zapisaną transmisję,
0:06:25.840,0:06:29.200
dlatego że Diffie-Hellman w tym ssh odpowiada za
0:06:29.320,0:06:32.620
wymianę klucza symetrycznego, którym jest szyfrowany ruch,
0:06:32.620,0:06:36.540
więc to jest dość krytyczna sytuacja i miejsce, w którym możesz
0:06:36.540,0:06:40.800
spokojnie zastanowić się jaki poziom bezpieczeństwa akceptujesz.
0:06:41.420,0:06:45.680
I teraz pytanie jest takie – który z tych elementów
0:06:45.860,0:06:50.280
jest zgodny z moim przełącznikiem, że nie dostałem nawet ostrzeżenia.
0:06:50.460,0:06:53.375
Jeżeli pamiętasz co wcześniej było
0:06:53.380,0:06:55.400
wskazane przez przełącznik jako wspierane,
0:06:55.400,0:06:59.080
to był Diffie-Hellman grupa 1. i Diffie-Hellman group exchange.
0:06:59.500,0:07:02.720
Czyli z jednej strony ten Diffie-Hellman group exchange jest
0:07:02.860,0:07:05.495
takim ułatwieniem, żeby Ci cały czas nie wyskakiwał
0:07:05.500,0:07:08.240
komunikat, że to połączenie nie jest bezpieczne.
0:07:08.240,0:07:10.880
Ale z drugiej strony nie masz jasności,
0:07:10.920,0:07:14.820
świadomości w jakich parametrach łączysz się do swoich urządzeń.
0:07:14.820,0:07:17.215
Wystarczy teraz, że przeniosę
0:07:17.220,0:07:20.160
ten Diffie-Hellman group exchange poniżej
0:07:20.160,0:07:21.560
do ostrzeżeń,
0:07:22.280,0:07:25.040
tylko muszę to zrobić dla mojej sesji, czyli
0:07:25.040,0:07:28.240
najpierw ją sobie załaduję.
0:07:28.900,0:07:30.380
Teraz zmienię,
0:07:31.585,0:07:34.475
przeniosę ją poniżej i spróbuję się
0:07:34.475,0:07:37.875
teraz połączyć z moim przełącznikiem.
0:07:38.905,0:07:41.755
No i zgodnie z przewidywaniem dostałem
0:07:41.765,0:07:44.655
informację, że pierwszy algorytm,
0:07:44.660,0:07:46.580
wspierany, wymiany klucza
0:07:46.580,0:07:49.140
to jest Diffie-Hellman group exchange SHA1.
0:07:49.520,0:07:54.040
Czyli uważany dzisiaj za niebezpieczny.
0:07:54.040,0:07:55.660
W związku z tym,
0:07:55.660,0:07:58.680
jeżeli chcesz przestawić sobie tego typu ostrzeżenie w PuTTY,
0:07:58.920,0:08:02.420
to polecam, będziesz wiedział przynajmniej w jakim
0:08:02.685,0:08:05.795
algorytmie wymiany kluczy się łączysz.
0:08:05.800,0:08:09.140
Jeżeli masz dużo starych urządzeń, no to niestety
0:08:09.140,0:08:12.135
trzeba z tym jakoś żyć, ale jest to jeden z elementów,
0:08:12.135,0:08:15.415
które warto rozważyć jako argument
0:08:15.515,0:08:18.615
za wymianą tych urządzeń na nowsze.
0:08:18.960,0:08:21.640
Chciałem Ci jeszcze pokazać
0:08:21.640,0:08:24.840
taką statystykę, ile szacunkowy jest
0:08:24.840,0:08:30.760
czas łamania tego typu algorytmu Diffie-Hellmana grupy 1. exchange SHA1.
0:08:31.040,0:08:33.580
Tutaj mamy taki dokument, gdzie
0:08:33.580,0:08:36.400
ludzie chcieli sprawdzić
0:08:36.400,0:08:39.600
ile jest potrzebnych dni do łamania
0:08:39.880,0:08:43.580
danego algorytmu i tu widzisz Diffie-Hellman 1024,
0:08:43.980,0:08:46.660
czyli to jest grupa druga
0:08:47.400,0:08:50.980
i to jest 30 dni przy jednym procesorze.
0:08:50.980,0:08:54.900
I tutaj, jeżeli dobrze pamiętam był procesor Pentium 2 liczony.
0:08:55.220,0:08:59.240
W związku z tym, przy obecnych możliwościach obliczeniowych,
0:08:59.300,0:09:00.840
zwłaszcza w chmurze
0:09:01.180,0:09:05.000
i wynajęcie takiej instancji na krótki czas.
0:09:05.280,0:09:10.200
Jest możliwe w bardzo krótkim czasie złamanie tego typu szyfrowania,
0:09:10.200,0:09:13.060
czyli Twoje informacje przesyłane przez ssh
0:09:13.495,0:09:15.875
zabezpieczone Diffie-Hellmanem
0:09:16.220,0:09:19.920
grupy drugiej, noo są słabo bezpieczne.
0:09:19.920,0:09:21.560
Tak bym powiedział.
0:09:21.560,0:09:23.940
Tu jest Diffie-Hellman grupy pierwszej jeszcze.
0:09:23.940,0:09:27.000
Czyli DH-768 – 2 dni
0:09:27.120,0:09:28.920
przy jednym procesorze.
0:09:28.920,0:09:32.120
No i poniżej jest jeszcze gorzej.
0:09:32.120,0:09:35.560
To, co jest zalecane, jeżeli chodzi o ITF ,
0:09:36.040,0:09:38.580
czyli taką organizację, która
0:09:38.580,0:09:40.880
standaryzuje i pisze te RFC różne.
0:09:41.100,0:09:43.960
To tu Ci chciałem pokazać, co oni piszą
0:09:43.960,0:09:46.440
na temat wykorzystania Diffie-Hellmana
0:09:46.500,0:09:49.040
group exchange SHA1 .
0:09:49.040,0:09:52.080
Jest tutaj wymienione, że nie powinien być
0:09:52.360,0:09:53.920
ten algorytm używany.
0:09:54.575,0:09:57.655
Jedyny powód, dla którego oni wpisali,
0:09:57.660,0:10:00.260
że tu nie powienien być używany, to jest to, że po prostu
0:10:00.260,0:10:02.960
starsze urządzenia nie wspierają innego algorytmu.
0:10:02.960,0:10:05.940
W związku z tym nie ma za bardzo alternatywy.
0:10:05.940,0:10:08.420
Tutaj jest jeszcze jedna rzecz, na którą warto zwrócić uwagę.
0:10:08.525,0:10:11.365
Mamy Diffie-Hellman grupa pierwsza,
0:10:11.365,0:10:13.580
niebezpieczny jest i grupa pierwsza –
0:10:13.580,0:10:19.840
widzałeś, pokazywałem przed chwilą, grupa pierwsza to jest poniżej 1024.
0:10:20.060,0:10:23.760
Czyli łamany jest praktycznie on-line.
0:10:23.760,0:10:26.480
I niebezpieczny jest również SHA1.
0:10:26.480,0:10:29.240
To, co jest polecane, to co najmniej
0:10:29.240,0:10:33.260
Diffie-Hellman grupy 14. i SHA256.
0:10:33.260,0:10:38.760
Takie jest zalecenie, jeżeli chodzi o tą organizację.
0:10:38.760,0:10:41.060
Jeżeli jesteś ciekaw tych
0:10:41.245,0:10:44.275
ataków i podatności, tu dla każdego z algorytmów jest
0:10:44.275,0:10:47.255
opisany dokument, który wskazuje dlaczego
0:10:47.255,0:10:50.555
ten konkretnie algorytm nie powinien być używany
0:10:50.600,0:10:52.660
i jakie są jego słabości.
0:10:52.660,0:10:58.860
Więc podsumowując, co najmniej Diffie-Hellman grupa 14. i SHA256,
0:10:58.860,0:11:01.480
jeżeli chodzi o obecnie rekomendowane.
0:11:01.480,0:11:03.940
Jeżeli chodzi o dobre praktyki,
0:11:04.080,0:11:06.920
to jak masz możliwość to warto wybierać
0:11:06.920,0:11:10.320
parametry kryptografii eliptycznej.
0:11:10.580,0:11:12.760
I tutaj już różne mamy długości tych kluczy
0:11:12.760,0:11:15.260
takie, które są po prostu silniejsze
0:11:15.260,0:11:17.605
jeżeli chodzi o algorytm
0:11:17.605,0:11:19.920
zarówno wymiany klucza jak i szyforwania.
0:11:19.920,0:11:22.600
W związku z tym jest Twoja transmisja
0:11:23.000,0:11:24.360
bardziej zabezpieczona.
0:11:24.360,0:11:27.160
Dla ciekawostki tu Ci też jeszcze pokażę.
0:11:27.440,0:11:31.820
To jest dokument amerykański, instytutu normalizacji.
0:11:31.840,0:11:34.840
Oni mają taki dokument wskazujący
0:11:35.060,0:11:38.880
jaki poziom silności algorytmów powinien być używany
0:11:39.140,0:11:42.100
dla zastosowań federalnych
0:11:42.100,0:11:49.480
i oni tutaj napisali, że powyżej 112 bitów security.
0:11:49.480,0:11:51.865
To jest dla nich taka miara
0:11:51.865,0:11:53.780
jak dany algorytm
0:11:53.780,0:11:56.120
jest silny, jeżeli chodzi o szyfrowanie,
0:11:56.120,0:11:59.340
czyli ile czasu potrzeba na złamanie tego algorytmu,
0:11:59.580,0:12:04.140
normalizując go do algorytmu symetrycznego.
0:12:04.220,0:12:07.660
Czyli jeżeli mamy symetryczny algorytm o 112 bitach
0:12:07.660,0:12:10.140
to jego siła jest mniej więcej
0:12:10.140,0:12:12.035
czy jego czas złamania, jest mniej więcej
0:12:12.040,0:12:16.460
odpowiadający złamaniu algorytmu na przykład Diffie-Hellmana
0:12:16.460,0:12:18.820
w odpowiedniej grupie.
0:12:18.820,0:12:20.900
Więc jeżeli jesteś ciekaw,
0:12:21.100,0:12:25.360
bardziej chcesz pogłębić swoją wiedzę w tym zakresie, to można sobie poczytać.
0:12:25.360,0:12:28.160
Jeżeli będziesz chciał to te polecenia,
0:12:28.160,0:12:30.620
które tutaj użyłem zamieszczę
0:12:30.645,0:12:32.005
na moim blogu.
0:12:32.460,0:12:35.980
I te linki również na tym blogu umieszczę.
0:12:35.980,0:12:39.120
I to wszystko w tym odcinku, dziękuję Ci za uwagę.
0:12:39.120,0:12:41.600
Jeżeli masz jakieś uwagi, komentarze
0:12:41.600,0:12:45.040
to chętnie je przeczytam, zostaw pod filmem.
0:12:45.040,0:12:47.500
Jeżeli masz sugestie jakieś co do innych
0:12:47.500,0:12:51.420
tematów odcinków, to również chętnie je przeczytam.
0:12:51.420,0:12:52.920
Na dzisiaj to tyle.
0:12:52.920,0:12:54.840
Do usłyszenia w kolejnym odcinku.