1. [wstęp]

    Programem ssh-keygen wygeneruj klucz publiczny i prywatny z hasłem chroniącym klucz prywatny. Dla celów tego ćwiczenia niezbędne jest hasło. Jeśli zależy Ci na zachowaniu wcześniejszych kluczy ssh, to zapisz gdzieś kopie oryginalnych plików z kluczami z katalogu $HOME/.ssh i odtwórz je po zakończeniu ćwiczenia.

    Obejrzyj pliki z kluczem prywatnym i publicznym $HOME/.ssh/identity i $HOME/.ssh/identity.pub i przećwicz operacje na nim programem ssh-keygen: wyświetlenie odcisku palca (fingerprint), zmianę komentarza, zmianę hasła.

  2. [włączanie się z kluczem - 2p]

    Sprawdź możliwość logowania się do zdalnego komputera przez ssh z hasłem. Następnie utwórz dostęp do tego komputera z identyfikacją przez klucz RSA przez zainstalowanie klucza publicznego w pliku $HOME/.ssh/authorized_keys (np. przez skopiowanie zawartości $HOME/.ssh/identity.pub). Następnie sprawdź logowanie się na inne komputery ze wspólnym systemem plików, z każdorazowym podawaniem hasła do klucza prywatnego.

    Jeśli masz dostęp do innego systemu komputerowego (z innym kontem i hasłem) to możesz powtórzyć ćwiczenie z wygenerowaniem kompletu kluczy na innym komputerze i zainstalować dostęp do komputera lokalnego przez dodatkowy klucz publiczny.

  3. [ssh-agent - 2p]

    Sprawdź działanie programu ssh-agent. Jeśli nie jest on już automatycznie uruchamiany przez Twoją sesję, spróbuj uruchamiać go w taki sposób, żeby obejmował on „swoim zasięgiem” maksymalną część Twojej sesji.

    Na przykład, można tego dokonać startując z jego pomocą shella w emulatorze terminala:

      ssh-agent xterm
    

    albo uruchamiając interpreter poleceń:

      ssh-agent $SHELL
    lub:
      exec ssh-agent $SHELL
    

  4. [tunele ssh]

    Pozyskaj konto shellowe na dostępnym w Internecie serwerze Linux/Unix. W razie problemów poproś o pomoc prowadzącego ćwiczenia lub wykładowcę.

    [a - 2p] Skonfiguruj tunel typu (1), opisany w PDF-ie z wykładu. Sprawdź dostęp do serwera HTTP, który nie obsługuje połączeń HTTPS. Podaj szczegóły w raporcie (wszystkie polecenia i otrzymany wynik).

    [b - 2p] Skonfiguruj tunel typu (3) pozwalający na włączanie się przez ssh ze zdalnego serwera do Twojego lokalnego komputera przez ten tunel. Sprawdź możliwość włączania się z Internetu do komputera lokalnego, oraz kopiowania plików (w obie strony) zainicjowanego z serwera internetowego. Podaj szczegóły w raporcie (wszystkie polecenia i otrzymany wynik).

    [c - 2p] Skonfiguruj parę tuneli typu (5) pozwalających łączenie się między dwoma komputerami w sieciach lokalnych (może to być ta sama sieć lokalna) za pośrednictwem serwera internetowego. Sprawdź możliwość łączenia się w obie strony, i kopiowania plików inicjowanego z każdej ze stron. Podaj szczegóły w raporcie (wszystkie polecenia i otrzymany wynik).

  5. [programy pgp/gpg - 2p]

    Zapoznaj się z programem pgp lub gpg w zależności od tego, który jest dostępny w Twoim systemie. Sprawdź dokumentację i konfigurację programu.

    Następnie wypróbuj symetryczne szyfrowanie plików. Sprawdź jakie algorytmy szyfrowania są dostępne w posiadanej wersji programu. Zaszyfruj plik. Następnie go odszyfruj. Odnotuj w raporcie.

  6. [szyfrowanie poczty elektronicznej - 4p]

    Wygeneruj sobie komplet kluczy programu pgp/gpg. Utwórz plik tekstowy zawierający Twój klucz publiczny. Współpracując z kolegą/koleżanką, wymień z nim/nią Wasze klucze publiczne. Napisz jakiegoś maila jako plik tekstowy, zaszyfruj go kluczem partnera, i wyślij. Rozkoduj otrzymaną wiadomość zaszyfrowaną Twoim kluczem. Następnie kolejno przetestuj wysyłanie wiadomości otwartym tekstem ale z podpisem cyfrowym, oraz wiadomości zaszyfrowanej kluczem partnera, z Twoim podpisem cyfrowym.

    W sprawozdaniu, podaj polecenia użyte do wykonania poszczególnych punktów tego zadania.

    Sprawdź które ze znanych Ci programów pocztowych wspierają szyfrowanie poczty systemem GnuPG. Sprawdź jak to działa, odnotuj w raporcie.

  7. [podsumowanie]

    Podaj materiały źródłowe z jakich korzystałeś/aś w wykonaniu tego zadania. Wystarczy podać 1-2 pozycje. Jednak jeśli znalazłeś/aś jakiś ciekawy opis na powyższe tematy, podaj linka/linki.

Przydatne linki:

http://support.suso.com/supki/SSH_Tutorial_for_Linux https://www.siteground.com/tutorials/ssh/ http://mah.everybody.org/docs/ssh https://www.gnupg.org/gph/en/manual/book1.html https://futureboy.us/pgp.html