GET
i POST
są zdecydowanie najważniejszePołą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).
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:
Zalogować się na stronie https://cloud.wmi.amu.edu.pl używając danych z domeny LABS.
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ę.
Włącz maszynę a następnie zaloguj się (poprzez Console
) na konto root
korzystając z hasła tin2019
.
Zmieniamy hasło komendą passwd
.
Do wykonania następnego zadania konieczne jest włączenie logowania przez ssh
dla root
a. W tym celu należy zedytować plik /etc/ssh/sshd_config
. Zmieniamy permitRootLogin
na yes
.
Restartujemy usługę sshd
komendą
# systemctl restart sshd.service
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.
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
.
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).
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).
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.
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.
Skonfiguruj pukanie do portów na swojej maszynie wirtualnej.
GET
plik testowy zawierający 6 znaków: numer indeksu.Stwórz kilka plików tekstowych tworzących łańcuch blockchain w następujący sposób:
0.txt
, 1.txt
, 2.txt
. Każdy z nich powinien być identyczny i zawierać tylko jedną linijkę tekstu: Twoje imię i nazwisko oraz numer indeksu w nawiasach, np. Michał Goliński (123456). Użyj kodowania UTF-8, ostatnim znakiem powinien być pojedynczy znak nowej linii w stylu Unix (LF, a nie CRLF).0.txt
na początku łańcucha znajdź ciąg takich 32 cyfr szesnastkowych (używaj małych liter a-f), by po dodaniu do pliku 0.txt
jako druga linijka (znowu zakończona pojedynczym znakiem nowej linii), skrót MD5 tak utworzonego pliku zaczynał i kończył się dwoma zerami (tzn. w sumie wymagamy min. 4 zer w sumie MD5).1.txt
za 0.txt
w naszym łańcuchu blockchain postępujemy następująco. Najpierw dodaj obliczoną wyżej sumę MD5 (zaczynającą i kończącą się zerami, z małymi literami a-f) jako drugą linijkę pliku 1.txt
. Znajdź ciąg 32 cyfr szesnastkowych (z małymi literami a-f), tak by po umieszczeniu w 1.txt
jako trzecia linia (znowu z jednym znakiem nowej linii na końcu) skrót MD5 całego tak utworzonego pliku zaczynał i kończył się dwoma zerami.2.txt
do blockchainu: najpierw dodaj linijkę ze skrótem pliku 1.txt
i następnie znajdź ciąg 32 cyfr szesnatkowych w trzeciej linijce, która sprawi, że skrót całości zaczyna się i kończy dwoma zerami.