Kontrola końcowa: sprawdzenie Państwa serwera
Moduł 10: Bezpieczeństwo na co dzień · Czas czytania: 10 min
Cel lekcji: Po tej lekcji ocenią Państwo własny serwer za pomocą listy kontrolnej i automatycznej kontroli z zewnątrz, będą Państwo wiedzieć, które punkty mają pierwszeństwo, oraz będą Państwo mieć stały harmonogram konserwacji i krótką dokumentację serwera.
Kluczowe pojęcia: lista kontrolna, priorytet, kontrola z zewnątrz, dokumentacja serwera, harmonogram konserwacji (co tydzień, co miesiąc, co kwartał, co rok), data końca wsparcia wydania, test przywracania
Od pojedynczych lekcji do całości
W tym kursie skonfigurowali Państwo serwer krok po kroku: bezpieczne logowanie, uprawnienia, aktualizacje, zaporę, usługi, stronę internetową z https, kopie zapasowe, monitorowanie i kontenery. W tej ostatniej lekcji zbierają Państwo wszystko na jednej liście. Sprawdzą Państwo serwer, pozwolą programowi kursu spojrzeć na niego z zewnątrz i ustalą, jak będą Państwo utrzymywać serwer przez najbliższe lata.
Serwer nigdy nie jest "gotowy". Oprogramowanie się starzeje, certyfikaty wygasają, dyski się zapełniają, wydania tracą wsparcie (end of life). Dlatego stały rytm jest równie ważny jak pierwsza konfiguracja.
Lista kontrolna według ważności
Nie wszystko jest równie pilne. Prosimy przechodzić listę od góry do dołu: pierwsze bloki zapobiegają największej liczbie problemów.
Blok 1: nikt nie wchodzi bez zaproszenia (moduł 2, 3, 5)
- Logowanie wyłącznie kluczami;
PasswordAuthentication noiKbdInteractiveAuthentication no, sprawdzone poleceniemsudo sshd -T. - Root nie loguje się hasłem; pracują Państwo jako zwykły użytkownik z sudo.
- Bazy danych, cache i klastry wyszukiwania nasłuchują na
127.0.0.1; porty 3306, 5432, 6379, 9200 i 27017 są zamknięte z zewnątrz, zarówno dla IPv4, jak i IPv6. - Zapora, która domyślnie blokuje cały ruch przychodzący; otwarte są tylko potrzebne porty.
- fail2ban działa dla SSH (
fail2ban-client status sshd).
Blok 2: luki są łatane (moduł 4)
- Automatyczne aktualizacje bezpieczeństwa są włączone i sprawdzone (log,
apt list --upgradable). - Plan ponownych uruchomień;
/var/run/reboot-requirednie pozostaje tam tygodniami. - Wydanie jest nadal wspierane; data końca wsparcia jest wpisana w Państwa kalendarz.
Blok 3: mogą Państwo wrócić do poprzedniego stanu (moduł 8)
- Zaszyfrowane kopie zapasowe poza serwerem, automatyczne, z monitorowaniem.
- Wykonany test przywracania; wiedzą Państwo, ile trwa przywracanie.
- Wiedzą Państwo, jak wykonać snapshot i otworzyć konsolę.
Blok 4: strona zewnętrzna się zgadza (moduł 7)
- Rekordy A i AAAA wskazują na Państwa serwer; odwrotny DNS (PTR) wskazuje z powrotem na tę samą nazwę.
- https z ważnym certyfikatem, który odnawia się automatycznie; http przekierowuje na https.
- HSTS i kilka nagłówków bezpieczeństwa; plik
security.txtz działającym adresem kontaktowym i datą wygaśnięcia.
Blok 5: widzą Państwo, co się dzieje (moduł 6, 8)
- Journal jest trwały; mogą Państwo odczytać logi sprzed ponownego uruchomienia.
- Monitorowanie z zewnątrz (dostępność, certyfikat) i od wewnątrz (dysk, usługi), z powiadomieniami, które rzeczywiście docierają.
systemctl --failedjest puste.
Blok 6: kontenery pod kontrolą (moduł 9, jeśli używają Państwo Dockera)
- Porty kontenerów na
127.0.0.1lub za reverse proxy; brakdocker.sockw kontenerach, które naprawdę tego nie potrzebują. - Wolumeny są objęte kopią zapasową; obrazy są regularnie aktualizowane.
- Sekrety znajdują się w plikach
.envz restrykcyjnymi uprawnieniami, a nie w Git.
Kontrola z zewnątrz
Część tej listy program kursu może sprawdzić z zewnątrz, dokładnie tak, jak Państwa serwer widzi każdy w internecie. Zadanie końcowe (Z10.4) łączy kontrole z wcześniejszych zadań:
| Element | Co robi program | Z lekcji |
|---|---|---|
| SSH | Odczytuje baner wersji i pyta, jakie metody logowania serwer oferuje dla Państwa nazwy użytkownika; nie loguje się | 2.2 |
| Porty baz danych | Próbuje jedynie nawiązać połączenie z portami 3306, 5432, 6379, 9200 i 27017; niczego nie wysyła | 5.1 |
| https | Sprawdza certyfikat (ważny, zaufany, właściwa nazwa) | 7.3 |
| Nagłówki | Odczytuje HSTS i pozostałe nagłówki bezpieczeństwa | 7.4 |
| security.txt | Pobiera /.well-known/security.txt i sprawdza Contact oraz Expires | 7.4 |
| Kontener | Szuka nagłówka z Państwa kodem, ustawionego przez Państwa reverse proxy | 9.4 |
Program niczego nie wykonuje na Państwa serwerze, nie próbuje haseł i nie skanuje innych portów. Każdy adres można sprawdzić tylko kilka razy na godzinę. Zielony wynik oznacza: z zewnątrz nie widać najbardziej znanych błędów. Nie mówi on nic o tym, co dzieje się wewnątrz serwera; to pozostała część listy kontrolnej, którą sprawdzają Państwo samodzielnie.
Dokumentacja serwera
Dla każdego serwera prosimy sporządzić krótki dokument, przechowywany poza serwerem (na przykład w menedżerze haseł lub we współdzielonym folderze):
- nazwa, adresy IP, dostawca, wydanie i data końca wsparcia;
- co działa na serwerze (usługi, kontenery, strony internetowe) i dlaczego;
- które porty są otwarte i w jakim celu;
- gdzie są kopie zapasowe, jak je przywrócić, kiedy był ostatni test;
- jakie sekrety znajdują się na serwerze (nie same sekrety, lecz które i gdzie się je wymienia);
- co świadomie zrobili Państwo inaczej niż standardowo (na przykład sugestia Lynis, którą Państwo pominęli, lekcja 10.1);
- kto ma dostęp (które klucze są w
authorized_keys).
Taka dokumentacja jest bezcenna przy incydencie (lekcja 10.3), przy aktualizacji wydania (lekcja 4.3) oraz gdy administrację przejmuje ktoś inny.
Harmonogram konserwacji
Bez stałego rytmu dbałość słabnie. Poniżej przykład dla małego serwera; prosimy dostosować go do własnej sytuacji.
| Kiedy | Co |
|---|---|
| Co tydzień | Przegląd monitorowania i powiadomień; systemctl --failed; ponowne uruchomienie, jeśli istnieje /var/run/reboot-required (lub sprawdzenie, czy automatyczny restart zadziałał) |
| Co miesiąc | apt list --upgradable (czy coś nie utknęło?); docker compose pull i up -d dla kontenerów, wraz z informacjami o wydaniu; miejsce na dysku; fail2ban-client status; przegląd logów pod kątem nietypowych błędów (journalctl -p err --since "1 month ago") |
| Co kwartał | Test przywracania kopii zapasowej; przegląd authorized_keys i użytkowników (usunięcie osób, które nie powinny już mieć dostępu); ponowne uruchomienie Lynis; ponowna kontrola końcowa z zewnątrz (zadanie Z10.4) |
| Co rok | Aktualizacja security.txt (Expires); sprawdzenie daty końca wsparcia wydania i zaplanowanie aktualizacji; aktualizacja dokumentacji serwera i planu awaryjnego |
Prosimy wpisać te terminy do kalendarza. Dużą część można też zautomatyzować za pomocą monitorowania z lekcji 8.3, ale samodzielne sprawdzanie nadal jest konieczne.
W praktyce
Niezależnie od tego, czy Państwa serwer działa w WebOké, czy u innego dostawcy: dostawca odpowiada za sprzęt, sieć i możliwość tworzenia snapshotów oraz kopii zapasowych, a Państwo za wszystko wewnątrz serwera. Ten kurs to samopomoc: nikt nie zagląda na Państwa serwer. Dzięki tej liście kontrolnej, dokumentacji i harmonogramowi mają Państwo jednak wszystko, czego potrzeba, aby samodzielnie i dobrze prowadzić administrację.
Podsumowanie
- Prosimy sprawdzać serwer blokami: nikt nie wchodzi bez zaproszenia, luki są łatane, można wrócić do poprzedniego stanu, strona zewnętrzna się zgadza, widać, co się dzieje, kontenery są pod kontrolą.
- Kontrola z zewnątrz sprawdza metody logowania SSH, porty baz danych, https, nagłówki, security.txt i nagłówek kontenera; resztę sprawdzają Państwo samodzielnie.
- Prosimy prowadzić dokumentację serwera, przechowywaną poza serwerem.
- Prosimy pracować według stałego rytmu: co tydzień, co miesiąc, co kwartał i co rok.
Quiz
Zadanie
Zadanie Z10.4: Zadanie końcowe: Państwa serwer z zewnątrz. Prosimy pozwolić programowi kursu jednorazowo sprawdzić Państwa serwer z zewnątrz: metody logowania SSH dla Państwa nazwy użytkownika, pięć portów baz danych, https i nagłówki Państwa strony, plik security.txt oraz nagłówek X-Weboke-Cursus z Państwa kodem pod nazwą, pod którą działa Państwa kontener. Ponadto prosimy wypełnić listę kontrolną bloków od 1 do 6 w zakresie tego, czego program nie widzi.
Zadanie O10.4: Harmonogram konserwacji. Prosimy przygotować własną dokumentację serwera i harmonogram konserwacji: co robią Państwo co tydzień, co miesiąc, co kwartał i co rok, oraz wpisać te terminy do kalendarza.
Zadanie O10.4: Harmonogram konserwacji
To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.
Co tydzień: przegląd aktualizacji i powiadomień; co miesiąc: małe przywracanie testowe i przegląd dostępu (authorized_keys, użytkownicy); co kwartał: pełna kontrola końcowa; co rok: pełna odbudowa z kopii zapasowej i przedłużenie security.txt.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Przeczytaj więcej
- Zabezpieczanie VPS: pierwsze pięć minut
- Nagłówki HSTS i nagłówki bezpieczeństwa dla Państwa strony internetowej
- Strategia kopii zapasowych: zasada 3-2-1 dla Państwa firmy
- securitytxt.org (wyjaśnienie i generator pliku security.txt): https://securitytxt.org/
- Holenderskie NCSC, opracowanie strategii kopii zapasowych (źródło w języku niderlandzkim): https://www.ncsc.nl/back-up/een-back-up-strategie-opstellen
