1.Co to jest SSH?
Secure Shell (RFC 4251) najprosciej ujmując, jest to protokół sieciowy, który pozwoli ci bezpiecznie przesyłać dane pomiędzy dwa komputery Standardowo nasłuchuje na porcie TCP 22, wspiera wykonywanie zdalnych komend na maszynie, przesył plików (SFTP,SCP) i tunelowanie
Istnieją dwie wersje tego protokołu,jedynka odeszła do lamusa. Od roku 1999 jest rozwijany jako otwarta implementacja, najbardziej popularny OpenSSH. Został certyfikowany przez FIPS 140-1 i -2 jako rządowy szyfrowy standard, wiec protokół przy dobrej konfiguracji zapewnia:
- odporny na podsłuch,
- odporność na podkradanie sesji,
- odporność na podszywanie sie pod IP/DNS,
- spokojny sen
Mozna podzielić sie na trzy warstwy:
- Transport (RFC 4253) – kompresja, autoryzacja serwera, szyfrowanie połączenia(SSL/TLS).
- Autoryzacja użytkownika
- publickey (DSA, RSA*,OpenPGP)
- hostbased
- password
- keyboard-interactive
- Połączenia – multiplesaksja kilka sesji w jedna
2. Jak dziala?
Przykładowe ustanowienie połączenia:
- TCP Handshake Klient <–> Serwer
- Klient <– Serwer: wysyła informacje do klienta o wspieranych algorytmach i kompresji.
- Serwer <– Klient : odpowiada co wybiera i wysyła akceptuje
- Wchodzi do gry algorytm Diffiego-Hellmana w którym:
- Obie strony uzgadniają największą liczbę pierwsza i jaki generator szyfru będzie używany (najczęściej jest to AES).
- Dodatkowo serwer i klient ustawiają swoja prywatna liczbę pierwsza i otrzymując ja w sekrecie tylko dla siebie.
- Z własnej sekretnej liczby pierwszej obie strony generują klucz prywatny.
- Kazda z stron, za pomocą własnego klucz prywatnego, dzielonej publicznej liczby pierwszej i generatora, tworzy klucz publiczny.
- Obie strony wymieniają sie kluczami publicznymi.
- Serwer wysyła zaszyfrowana wiadomość do klienta (challenge-response)
- Klient odszyfrowuje wiadomość i wysyla ja szyfrywujac ja swoim kluczem.
- Serwer po odszyfrowaniu wiadomości sprawdza ja z wyslana i jesli jest taka sama ustanawia sesje.
- W uproszczeniu cale obliczenie przedstawia sie nastepujaco:
Publiczna Liczba pierwsza: 97
Wybrany generator: 3^ (prywatna)mod(publiczna)
Wybrana liczba Klienta: 89
Wybrana Liczba Serwer: 43
Klient: 3^89mod97=11 wysyla wunik serwerowy
Serwer: 3^43mod97=2 wysyla wynik do Klienta
Klient: 2^89mod97=72
Serwer: 11^43mod87=72
TO BE CONTINUED
3. Konfiguracja serwera
Konfiguracja Serwera i Klienta z autoryzacja użytkownika przez Public-key i challenge-response auth:
Serwer do działania potrzebuje klucza prywatnego i publicznego dla wybranej . Do wygenerowania używamy ssh-keygen:
/usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N
TO BE CONTINUED
4. Przykładowe użycia ssh
TO BE CONTINUED