# Przypadki do zadania Z10.2 (kurs VPS i administrowanie serwerem Linux) Prosimy wybrać dla każdego przypadku, jaki to błąd i jaki jest najlepszy pierwszy krok. Wszystkie nazwy i adresy są przykładowe. **Błędy (z lekcji 10.2):** A. Logowanie jako root za pomocą hasła B. Baza danych, cache lub klaster wyszukiwania otwarty na internet C. Otwarte API Dockera lub `docker.sock` w kontenerze D. `chmod 777`, aby pozbyć się komunikatu o błędzie E. `curl ... | bash` i oprogramowanie z dowolnego źródła F. Brak aktualizacji lub aktualizacje „później” G. Brak kopii zapasowej lub kopia zapasowa, która nigdy nie była testowana H. Panel administracyjny otwarty dla wszystkich, bez weryfikacji dwuetapowej I. Sekrety w Git lub w pliku compose J. „Na chwilę” wyłączona zapora, wszystko jako root, brak notatek --- **Przypadek 1.** Na `web1.example.com` w `compose.yaml` przy usłudze `redis` znajduje się: `ports: - "6379:6379"`. `ufw status` pokazuje tylko 22, 80 i 443. Skan z zewnątrz wykrywa otwarty port 6379. Pierwszy krok: (a) ponownie uruchomić ufw (b) usunąć regułę portu lub zmienić ją na `"127.0.0.1:6379:6379"` i ponownie wykonać `docker compose up -d` (c) nadać Redis inny numer portu (d) zrestartować serwer **Przypadek 2.** Programista aplikacji internetowej na `app.example.net` zgłasza, że przesyłanie plików nie działało. „Naprawił” to i teraz wszystkie pliki w `/var/www/app` mają `-rwxrwxrwx`. Pierwszy krok: (a) zostawić tak, teraz działa (b) nadać użytkownikowi serwera WWW prawa zapisu tylko do katalogu przesyłanych plików, resztę przywrócić do 644/755 z innym właścicielem (c) uruchamiać serwer WWW jako root (d) wyłączyć AppArmor **Przypadek 3.** Publiczne repozytorium od wczoraj zawiera plik `.env` z `MAIL_API_KEY=...` serwera `web2.example.org`. Pierwszy krok: (a) usunąć plik z repozytorium (b) unieważnić klucz w usłudze pocztowej i utworzyć nowy, a także dodać `.env` do `.gitignore` (c) zmienić nazwę repozytorium (d) nic nie robić **Przypadek 4.** `sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"` zwraca `permitrootlogin yes` i `passwordauthentication yes`. W dzienniku (journal) co minutę pojawiają się próby logowania na konto root. Pierwszy krok: (a) zainstalować fail2ban i nic więcej (b) umieścić klucz dla zwykłego administratora z sudo, przetestować, a następnie wyłączyć logowanie hasłem i logowanie jako root z hasłem (c) przenieść SSH na port 2222 (d) zapisać hasło roota w pliku tekstowym **Przypadek 5.** `cat /etc/os-release` pokazuje wydanie Ubuntu, którego standardowe wsparcie zakończyło się trzy lata temu, bez ESM. `apt list --upgradable` jest puste. Pierwszy krok: (a) cieszyć się, nie ma aktualizacji (b) zaplanować aktualizację lub nowy serwer z obsługiwaną wersją LTS, ze snapshotem i kopią zapasową (c) ponownie zainstalować unattended-upgrades (d) zrestartować serwer **Przypadek 6.** Kontener `portainer` ma wolumin `/var/run/docker.sock:/var/run/docker.sock` i jest dostępny pod `https://beheer.example.com` z hasłem `admin123`, bez weryfikacji dwuetapowej. Prosimy wybrać błąd, który umożliwia największe szkody, jeśli hasło zostanie odgadnięte. Pierwszy krok: (a) umieścić panel za tunelem SSH lub stałym adresem oraz ustawić silne hasło z weryfikacją dwuetapową (b) zrestartować kontener (c) wybrać inną subdomenę (d) ponownie zainstalować Dockera **Przypadek 7.** Po nieudanej aktualizacji bazy danych okazuje się, że jedyną kopią zapasową jest snapshot sprzed dwóch miesięcy, na tym samym magazynie danych co serwer. Nikt nigdy nie próbował przywracania. Pierwszy krok na przyszłość: (a) tworzyć więcej snapshotów (b) skonfigurować szyfrowane kopie zapasowe poza serwerem (na przykład restic), z monitorowaniem i testem przywracania (c) nigdy więcej nie aktualizować bazy danych (d) drugi dysk w tym samym serwerze **Przypadek 8.** Na serwerze znajduje się `/usr/local/bin/tool` oraz nieznane źródło pakietów `extra.list` z opcją `[trusted=yes]`. Nikt nie wie, skąd się wzięły; poprzedni administrator instalował „wszystko jednym poleceniem ze strony internetowej”. Pierwszy krok: (a) zostawić, działa (b) ustalić, czym są źródło i program, wyłączyć źródło za pomocą `trusted=yes` i instalować już tylko z dystrybucji lub z oficjalnego źródła twórcy za pomocą `Signed-By` (c) zrestartować serwer (d) usunąć wszystkie pakiety Prosimy wpisać dla każdego przypadku: błąd (A-J) i pierwszy krok (a-d).