SSH od podszewki, Konfiruacja sshd public-key + knock

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:

  1. TCP Handshake Klient <–> Serwer
  2. Klient <– Serwer: wysyła informacje do klienta o wspieranych algorytmach i kompresji.
  3. Serwer <– Klient : odpowiada co wybiera i wysyła akceptuje
  4. Wchodzi do gry algorytm Diffiego-Hellmana w którym:
    1. Obie strony uzgadniają największą liczbę pierwsza i jaki generator szyfru będzie używany (najczęściej jest to AES).
    2. Dodatkowo serwer i klient ustawiają swoja prywatna liczbę pierwsza i otrzymując ja w sekrecie tylko dla siebie.
    3. Z własnej sekretnej liczby pierwszej obie strony generują  klucz prywatny.
    4. Kazda z stron,  za pomocą własnego klucz prywatnego, dzielonej publicznej liczby pierwszej i generatora, tworzy klucz publiczny.
    5. Obie strony wymieniają sie kluczami publicznymi.
    6. Serwer wysyła zaszyfrowana wiadomość do klienta (challenge-response)
    7. Klient odszyfrowuje wiadomość i wysyla ja  szyfrywujac ja swoim kluczem.
    8. Serwer po odszyfrowaniu wiadomości sprawdza ja z wyslana i jesli jest taka sama ustanawia sesje.
    9. 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 😛

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.