Technologia Internetowe - Ćwiczenia 2


Poprzednie Następne
Temat: Prywatność i bezpieczeństwo w internecie.

Tematy na dziś

Materiały

Serwery proxy i powiązane technologie

Klucze SSH

Firewalle

HTTP

Szyfrowanie

Ciasteczka

Ataki typu cross-site i zapobieganie im

Blockchain

Przebieg zajęć

  1. Wprowadzenie do protokołów TCP i UDP; porty, handshake TCP
  2. Najważniejsze porty i usługi
  3. Jak działają firewalle typu stateful?
  4. Wprowadzenie do sieci Tor
  5. Ustawianie kluczy SSH na maszynach wirtualnych
  6. Tworzenie tuneli z SSH

Zadania do wykonania w trakcie zajęć

Tor

Połącz się z przeglądarki Opera do sieci Tor (poprzez odpowiednie proxy SOCKS5). W przeglądarce Opera wyświetl stronę o poniższym adresie (osiągalnym tylko poprzez Tor):

https://www.facebookcorewwwi.onion/

W drugiej zakładce otwórz stronę:

https://whatismyipaddress.com/

Zwróć uwagę, gdzie Twój ruch w sieci Tor kontaktuje się z normalnym internetem (tzn., gdzie znajduję się twój węzeł wyjściowy Tor).

Konfiguracja maszyny wirtualnej (kontenera)

Maszyny wirtualne dedykowane do tych zajęć dostęne są pod adresem tin-sXXXXXX.vm.wmi.amu.edu.pl. Przed ich pierwszym użyciem wymagana jest ich konfiguracja. Należy wykonać następujące kroki:

  1. Zalogować się na stronie https://cloud.wmi.amu.edu.pl używając danych z domeny LABS.

  2. W lewym panelu (pool view), należy odnaleźć swoją maszynę. W zakładce Network możemy poznać adres IP swojej maszyny. W zakładce Console mamy dostęp do logowania się bezpośrednio na maszynę.

  3. Włącz maszynę a następnie zaloguj się (poprzez Console) na konto root korzystając z hasła tin2019.

  4. Zmieniamy hasło komendą passwd.

  5. Do wykonania następnego zadania konieczne jest włączenie logowania przez ssh dla roota. W tym celu należy zedytować plik /etc/ssh/sshd_config. Zmieniamy permitRootLogin na yes.

  6. Restartujemy usługę sshd komendą

    # systemctl restart sshd.service
  7. Sprawdzamy czy zmiany zostały uwzględnione próbując połączyć się do naszej maszyny wirtualnej z lokalnego komputera.

    $ ssh root@tin-sXXXXXX.vm.wmi.amu.edu.pl

    Zostaniemy poproszeni o nasze hasło. Jeśli zostaniemy poprawnie zalogowani to konfiguracja została zakończona.

Klucze SSH

Na własnym komputerze wygeneruj parę kluczy kryptograficznych (publiczny/prywatny). Przykłady poniżej będą używać tzw. kluczy Ed25519, które uważa się za bezpieczne i odporne na ataki. To jest stosunkowo nowy standard i starsze oprogramowanie może go nie wspierać. Należy wtedy użyć innych algorytmów (RSA, ECDSA).

$ ssh-keygen -t ed25519

Para kluczy będzie zapisana w plikach .ssh/id_ed25519 i .ssh/id_ed25519.pub. Pierwszy jest prywatny, drugi można wysyłać w świat. Klucz prywatny można dodatkowo zabezpieczyć szyfrowaniem z użyciem hasła.

Aby logować się do serwera bez potrzeby wpisywania hasła za każdym razem, należy dodać klucz publiczny do pliku .ssh/authorized_keys na serwerze. W pliku tym można mieć wiele kluczy pozwalających się logować.

Na szczęście nie trzeba tego robić ręcznie, istnieje narzędzie do kopiowania kluczy. Wpisanie:

$ ssh-copy-id -i ~/.ssh/id_ed25519 root@tin-s123456.vm.wmi.amu.edu.pl

z adresem odpowiedniej maszyny wirtualnej skpiuje klucz i umożliwi logowanie bez hasła. Aby jeszcze bardziej uprościć sprawę, dodajemy poniższe linijki do pliku .ssh/config:

Host lts
    HostName lts.wmi.amu.edu.pl
    User sXXXXXX

Host tin
    HostName tin-s123456.vm.wmi.amu.edu.pl
    User root
    ProxyJump lts

Teraz możemy się zalogować wpisując tylko ssh tin. Ponieważ dodaliśmy też sekcję z lts i linijkę z ProxyJump, możemy zalogować się do tin z dowolnego miejsca, mimo że samo tin jest nieosiągalne spoza sieci wydziałowej. SSH najpierw zaloguje się na serwer lts i dopiero potem na tin.

Po wszystkim można zabronić logowania na serwer z użyciem hasła użytkownikowi root. Aby tak się stało należy upewnić się, że mamy linijkę

PermitRootLogin prohibit-password

w pliku /etc/ssh/sshd_config. Aby zadziałało, musimy zrestartować serwer SSH:

# systemctl restart sshd

Klucze SSH nie są wykorzystywane tylko do dostępu do linii poleceń. Kluczy SSH można również używać np. do dostępu bez konieczności wpisywania hasła do GitHub-a czy serwera git.wmi.amu.edu.pl.

Zadania domowe

Klucz SSH serwera

Skonfiguruj klucz SSH serwera (hosta) na swojej maszynie wirtualnej w taki sposób, by przedstawiał się publicznym kluczem Ed25519 (klucz ten powinien być różny od stworzonego automatycznie w czasie instalacji maszyny wirtualnej, wygeneruj po prostu nowy klucz).

Aby zadanie zostało sprawdzone należy wysłać maila pod adres bikol@wmi.amu.edu.pl z tematem „[DTIN] Z3.1 ######” (z wpisanym własnym numerem indeksu, będącym częścią nazwy maszyny wirtualnej).

Firewall

Skonfiguruj firewall na swojej maszynie wirtualnej w taki sposób, by wszystkie próby połączeń na porty 1-1000 (poza 22, 80 i 443) były ignorowane. Upewnij się, że maszyna wirtualna nadal odpowiada na ping.

Aby zadanie zostało sprawdzone należy wysłać maila pod adres bikol@wmi.amu.edu.pl z tematem „[DTIN] Z3.2 ######” (z wpisanym własnym numerem indeksu, będącym częścią nazwy maszyny wirtualnej).

Tunel SSH

Używając nazwy użytkownika i hasłą z domeny LABS zaloguj się do aplikacji pod adresem https://kino.vm.wmi.amu.edu.pl:1031/ w taki sposób, aby serwerowi wydawało się, że Twoim adresem IP jest adres serwera lts.wmi.amu.edu.pl.

Wskazówka: Konfiguracja sieci wydziałowej sprawia, że port 1031 nie jest osiągalny spoza wydziału. Użyj tunelu SSH albo użyj wbudowanego w ssh proxy SOCKS5.

Pukanie do portów (klient)

Używając nazwy użytkownika i hasła z domeny LABS zaloguj się do aplikacji pod adresem https://kino.vm.wmi.amu.edu.pl:1032/. Port 1032 jest normalnie blokowany, aby go otworzyć, musisz najpierw zapukać pod porty o numerach 37366 and 22908 (w tym porządku). Port 1032 otworzy się wtedy dla Ciebie na 10 sekund. W tym czasie musisz nawiązać połączenie. Dalszy ruch będzie dopuszczony przez śledzenie połączeń zapory sieciowej. Upewnij się, że tym razem Twój adres IP jest różny od adresu serwera lts.wmi.amu.edu.pl.

Wskazówka: Konfiguracja sieci wydziałowej sprawia, że port 1032 nie jest osiągalny spoza wydziału. Normalnie rozwiązaniem problemu byłby tunel SSH (jak w zadaniu powyżej), ale zadanie wymaga innego serwera niż lts. Można obejść ten problem rozwiązując zadanie z wewnątrz sieci wydziałowej, korzystając z tunelu do swojej maszyny wirtualnej lub korzystając z wydziałowego VPN-a. Szczegóły konfiguracji VPN-a można znaleźć tutaj.

Zadania dodatkowe

Pukanie do portów (serwer)

Skonfiguruj pukanie do portów na swojej maszynie wirtualnej.

Blockchain

Stwórz kilka plików tekstowych tworzących łańcuch blockchain w następujący sposób:

Rozwiązania zadań dodatkowych

Rozwiązania zadań dodatkowych można wysłać na adres prowadzącego: rmiw@amu.edu.pl