Spis treści
Kurs łączy materiał przedmiotów „Systemy operacyjne” oraz „Użytkowanie, konfiguracja i utwardzanie systemu Windows i Linux”. Każde zagadnienie jest pokazane w obu systemach: najpierw zasada, potem polecenia w PowerShell i w powłoce Linux, a na końcu pułapki i dobre praktyki. Na egzaminie ważne jest rozpoznanie polecenia lub ustawienia po opisie oraz ocena, czy konfiguracja jest bezpieczna.
Kurs jest podzielony na siedem części. Każda lekcja kończy się krótkimi pytaniami „Sprawdź się” ze schowaną odpowiedzią, a każda część zadaniem praktycznym. Wszystkie ćwiczenia wykonuj na własnych maszynach wirtualnych lub w laboratorium, nigdy na systemach, do których nie masz uprawnień.
Część A
Architektura systemów i mechanizmy bezpieczeństwa
Rozruch, systemy plików, tryb jądra i użytkownika, ochrona pamięci, Secure Boot oraz modele uprawnień w Windows i Linux.
Lekcja 1 · Część A
Rozruch systemu: BIOS/UEFI i bootloader
Rozruch to ciąg etapów, od włączenia komputera do uruchomienia systemu. Każdy etap przekazuje sterowanie następnemu, a atakujący, który przejmie wcześniejszy etap, może ukryć się przed zabezpieczeniami działającymi później.
| Etap | Windows | Linux |
|---|---|---|
| 1. Oprogramowanie sprzętowe | BIOS lub UEFI, test POST | BIOS lub UEFI, test POST |
| 2. Bootloader | Windows Boot Manager (bootmgfw.efi) | GRUB 2 (lub systemd-boot) |
| 3. Jądro | ntoskrnl.exe i sterowniki rozruchowe | vmlinuz i initramfs |
| 4. Pierwszy proces | Session Manager (smss.exe) | systemd (PID 1) |
| 5. Usługi i logowanie | usługi, ekran logowania | usługi, getty lub menedżer logowania |
| Cecha | BIOS + MBR | UEFI + GPT |
|---|---|---|
| Rozmiar dysku | do 2 TB | praktycznie bez ograniczeń |
| Partycje | do 4 podstawowych | do 128 w Windows |
| Bezpieczny rozruch | brak | Secure Boot, Trusted Boot z TPM |
| Rozruch | kod w pierwszym sektorze dysku | plik .efi na partycji ESP |
# Linux: istnieje katalog tylko w UEFI
[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS (Legacy)"
# Windows (PowerShell, administrator)
bcdedit /enum
msinfo32 # pole „Tryb BIOS”
Bootkity i rootkity modyfikują bootloader lub jądro, aby uruchomić się przed zabezpieczeniami. Ochrona: Secure Boot, hasło do ustawień UEFI, szyfrowanie dysku z TPM i aktualizacje oprogramowania sprzętowego.
Który element uruchamia jądro systemu Linux?
Pokaż przykładową odpowiedź
Bootloader (najczęściej GRUB 2), który ładuje jądro i obraz initramfs do pamięci.
Dlaczego zabezpieczenie rozruchu jest ważne?
Pokaż przykładową odpowiedź
Kod uruchamiany przed systemem ma pełną kontrolę nad komputerem i może wyłączyć późniejsze zabezpieczenia. Przejęcie bootloadera lub jądra pozwala atakującemu pozostać niewykrytym.
Lekcja 2 · Część A
Systemy plików i struktura katalogów
| System plików | System | Cechy |
|---|---|---|
| NTFS | Windows | uprawnienia i ACL, szyfrowanie EFS, dziennik, kompresja, duże pliki |
| ReFS | Windows Server | odporność na uszkodzenia, sumy kontrolne danych |
| FAT32 | wiele systemów | brak uprawnień, pliki do 4 GB, nośniki wymienne |
| exFAT | wiele systemów | brak uprawnień, brak limitu 4 GB, karty pamięci i pendrive’y |
| ext4 | Linux | uprawnienia POSIX, dziennik (journaling), domyślny w wielu dystrybucjach |
| XFS, Btrfs | Linux | duże wolumeny; Btrfs ma migawki i sumy kontrolne |
System plików bez uprawnień (FAT32, exFAT) nie pozwala chronić plików przed innymi użytkownikami na tym samym komputerze, dlatego do danych systemowych i użytkowników stosuje się NTFS lub ext4.
| Ścieżka Linux (FHS) | Zawartość | Windows |
|---|---|---|
/ | korzeń drzewa | C:\ |
/etc | pliki konfiguracyjne | rejestr, C:\Windows\System32\config |
/home | katalogi użytkowników | C:\Users |
/var | dane zmienne: logi, kolejki | C:\ProgramData, C:\Windows\Logs |
/tmp | pliki tymczasowe (dostępne dla wszystkich) | %TEMP% |
/bin, /usr/bin | programy systemowe | C:\Windows\System32, C:\Program Files |
/dev, /proc | urządzenia, informacje o procesach (pliki wirtualne) | Menedżer urządzeń, Menedżer zadań |
Dlaczego nie warto używać FAT32 do przechowywania poufnych danych na komputerze współdzielonym?
Pokaż przykładową odpowiedź
FAT32 nie ma uprawnień do plików ani ACL, więc każdy użytkownik komputera może odczytać i zmienić dane. Do ochrony potrzebny jest system plików z uprawnieniami, np. NTFS lub ext4.
W którym katalogu Linux znajdziesz zwykle pliki konfiguracyjne systemu i usług?
Pokaż przykładową odpowiedź
W katalogu /etc.
Lekcja 3 · Część A
Tryb użytkownika, tryb jądra i powierzchnia ataku
Procesory rozróżniają poziomy uprawnień (pierścienie ochrony). Tryb jądra (ring 0) ma pełny dostęp do sprzętu i pamięci. W trybie użytkownika (ring 3) działają programy, które nie mogą bezpośrednio sięgać do sprzętu, tylko proszą jądro o usługi przez wywołania systemowe. Dzięki temu błąd w aplikacji nie zawiesza całego systemu.
- jądro zarządza procesami, pamięcią, urządzeniami, systemem plików i uprawnieniami,
- sterowniki działają w trybie jądra, więc podatny lub złośliwy sterownik daje atakującemu pełną kontrolę,
- przejście z trybu użytkownika do jądra to granica zaufania: błąd w jej obsłudze umożliwia eskalację uprawnień.
Powierzchnia ataku
Powierzchnia ataku to wszystkie miejsca, przez które atakujący może próbować wejść lub zaszkodzić: otwarte porty i usługi sieciowe, zainstalowane programy i pakiety, sterowniki, konta i hasła, udziały sieciowe, interfejsy zdalnego zarządzania. Im mniej składników, tym mniejsza powierzchnia.
| Zagrożenie architektury | Przykład | Ochrona |
|---|---|---|
| Lokalna eskalacja uprawnień | podatność w jądrze, sterowniku lub programie z bitem SUID | aktualizacje, najmniejsze uprawnienia, minimalizacja SUID |
| Złośliwy lub podatny sterownik | załadowanie niepodpisanego sterownika | wymuszanie podpisów sterowników, Secure Boot |
| Rootkit i bootkit | ukrycie procesu i plików, modyfikacja bootloadera | Secure Boot, Trusted Boot, sprawdzanie integralności |
| Wykorzystanie błędów pamięci | przepełnienie bufora | ASLR, DEP/NX, aktualizacje |
| Zbędne usługi | włączony Telnet, SMBv1, domyślne konta | wyłączanie niepotrzebnych komponentów |
Dlaczego sterowniki urządzeń są szczególnie wrażliwym elementem systemu?
Pokaż przykładową odpowiedź
Działają w trybie jądra, więc błąd lub złośliwy kod w sterowniku daje pełną kontrolę nad systemem i może wyłączyć zabezpieczenia.
Co to jest powierzchnia ataku i jak ją zmniejszyć?
Pokaż przykładową odpowiedź
To zbiór miejsc, przez które można zaatakować system (usługi, porty, programy, konta). Zmniejsza się ją przez usuwanie zbędnych komponentów, wyłączanie nieużywanych usług, aktualizacje i ograniczanie uprawnień.
Lekcja 4 · Część A
Ochrona pamięci: ASLR, DEP i inne mechanizmy
Wiele ataków wykorzystuje błędy zarządzania pamięcią (np. przepełnienie bufora), aby wykonać własny kod. Systemy wprowadzają mechanizmy, które utrudniają takie ataki.
| Mechanizm | Jak działa | Utrudnia |
|---|---|---|
| DEP / NX | strony pamięci z danymi (stos, sterta) są oznaczone jako niewykonywalne | uruchomienie wstrzykniętego kodu |
| ASLR | losowy układ adresów (stos, sterta, biblioteki) przy każdym uruchomieniu | odgadnięcie adresów potrzebnych w exploicie |
| Stack canary | wartość kontrolna przed adresem powrotu; zmiana oznacza przepełnienie i przerwanie programu | klasyczne przepełnienie stosu |
| PIE | program kompilowany tak, by działał pod losowym adresem | ominięcie ASLR |
| CFG (Windows) | kontroluje, czy skoki pośrednie trafiają w dozwolone cele | przejęcie przepływu sterowania |
# Linux: 0 = wyłączone, 1 = częściowe, 2 = pełne ASLR
cat /proc/sys/kernel/randomize_va_space
# Windows PowerShell: mitygacje procesu i systemu
Get-ProcessMitigation -System
Żaden z tych mechanizmów nie usuwa podatności, tylko utrudnia jej wykorzystanie (mitygacja). Dlatego równie ważne są aktualizacje.
Co robi ASLR?
Pokaż przykładową odpowiedź
Losuje rozmieszczenie obszarów pamięci procesu przy każdym uruchomieniu, więc atakujący nie zna stałych adresów potrzebnych do skutecznego exploita.
Jak działa DEP/NX?
Pokaż przykładową odpowiedź
Oznacza obszary pamięci przeznaczone na dane jako niewykonywalne. Próba uruchomienia kodu ze stosu lub sterty kończy się przerwaniem programu.
Lekcja 5 · Część A
Łańcuch rozruchu: Secure Boot, Trusted Boot i integralność jądra
Secure Boot (funkcja UEFI) uruchamia tylko komponenty podpisane zaufanym kluczem: oprogramowanie sprzętowe weryfikuje podpis bootloadera, bootloader weryfikuje jądro. Zmodyfikowany lub niepodpisany bootloader nie zostanie uruchomiony.
| Mechanizm | Zadanie |
|---|---|
| Secure Boot | sprawdza podpisy cyfrowe kolejnych komponentów rozruchu (klucze PK, KEK, db, lista unieważnionych dbx) |
| Trusted Boot (Windows) | po bootloaderze weryfikuje jądro, sterowniki rozruchowe i uruchamia ochronę ELAM (wczesny antymalware) |
| Measured Boot i TPM | moduł TPM zapisuje „pomiary” (skróty) komponentów w rejestrach PCR; zmiana wykrywana, a klucze (np. BitLocker) nie zostaną odblokowane |
| Wymuszanie podpisów sterowników | Windows wymaga podpisanych sterowników w trybie jądra; Linux może wymagać podpisanych modułów |
# Windows (PowerShell jako administrator)
Confirm-SecureBootUEFI
Get-Tpm
# Linux
mokutil --sb-state
dmesg | grep -i "secure boot"
Autentyczność sterowników i obrazów
- sterowniki Windows podpisuje producent i Microsoft (program WHQL); stan podpisu sprawdzisz
Get-AuthenticodeSignature plik.syslub narzędziemsigcheck, - obrazy instalacyjne i pakiety weryfikuj sumą kontrolną i podpisem (np.
gpg --verify), - nigdy nie wyłączaj wymuszania podpisów sterowników dla wygody.
Co sprawdza Secure Boot?
Pokaż przykładową odpowiedź
Podpisy cyfrowe komponentów rozruchu (bootloadera i jądra). Niepodpisany lub zmodyfikowany komponent nie zostanie uruchomiony.
Do czego w procesie rozruchu służy moduł TPM?
Pokaż przykładową odpowiedź
Przechowuje klucze i „pomiary” komponentów rozruchu (Measured Boot). Jeśli komponenty zostaną zmienione, TPM nie odblokuje kluczy, np. szyfrowania dysku.
Lekcja 6 · Część A
Modele uprawnień: SID, UID i GID
| Cecha | Windows | Linux |
|---|---|---|
| Identyfikator użytkownika | SID, np. S-1-5-21-…-1001 | UID, np. 1000 (root ma 0) |
| Grupy | SID grup (Administratorzy, Użytkownicy) | GID, plik /etc/group |
| Baza kont lokalnych | SAM (lokalnie), Active Directory (domena) | /etc/passwd, skróty haseł w /etc/shadow |
| Kontrola dostępu do plików | ACL (DACL) z wpisami ACE | prawa rwx i opcjonalnie ACL |
| Podniesienie uprawnień | UAC, runas | sudo, su |
| Podstawowe polecenia | whoami /user, whoami /groups | id, groups |
Po zalogowaniu system tworzy dla procesu token (Windows) lub zestaw UID/GID (Linux). Każda próba dostępu do zasobu porównuje tożsamość procesu z uprawnieniami zasobu.
- konto root (UID 0) i Administrator (oraz SYSTEM) mają bardzo szerokie uprawnienia: pracuj na nich tylko w razie potrzeby,
- konta usług powinny mieć własne tożsamości bez możliwości logowania interaktywnego,
- bit SUID w Linux uruchamia program z uprawnieniami jego właściciela, więc podatny program SUID umożliwia eskalację uprawnień.
Jakim identyfikatorem w Linux oznaczany jest użytkownik root?
Pokaż przykładową odpowiedź
UID równym 0.
Czym jest SID w systemie Windows?
Pokaż przykładową odpowiedź
Unikalnym identyfikatorem zabezpieczeń użytkownika, grupy lub komputera, według którego system przydziela i sprawdza uprawnienia.
Zadanie praktyczne
Audyt zabezpieczeń architektury systemu
Zadanie
Na maszynach wirtualnych Windows i Linux zbierz informacje o stanie zabezpieczeń architektury i oceń ryzyko.
Założenia
- Ustal tryb rozruchu (UEFI lub BIOS) i stan Secure Boot na obu systemach.
- Sprawdź na Linux wartość
randomize_va_space, a na Windows mitygacje procesów (Get-ProcessMitigation -System). - Zapisz tożsamość konta, na którym pracujesz (
whoami /useriid) oraz jego grupy. - Wypisz nasłuchujące porty (
netstat -anoiss -tulpn) i wskaż te, które nie są potrzebne. - Wypełnij tabelę: element, stan, ocena (dobrze, do poprawy), rekomendacja. Napisz 4–5 zdań o największym ryzyku.
Ocenie podlegać będzie
- poprawne wykonanie poleceń i zapis wyników,
- trafna ocena stanu zabezpieczeń,
- rozpoznanie zbędnej powierzchni ataku,
- konkretne rekomendacje,
- czytelność tabeli.
Wskazówki
- Polecenia znajdziesz w lekcjach 1, 4 i 5.
- Brak Secure Boot w maszynie wirtualnej wynika z jej konfiguracji (np. rozruch w trybie BIOS): opisz to w uwagach.
- Do oceny skorzystaj z tabeli zagrożeń w lekcji 3.
Część B
Instalacja utwardzona i tożsamość
Weryfikacja nośników, instalacja w standardzie utwardzonym, zero trust, grupy i sudo, MFA, ochrona poświadczeń oraz MAC.
Lekcja 7 · Część B
Nośnik instalacyjny i weryfikacja obrazu
Instalację zaczynamy od zaufanego obrazu systemu. Pobranie obrazu z nieoficjalnego źródła lub bez weryfikacji pozwala atakującemu zainstalować system z wbudowanym złośliwym oprogramowaniem.
- pobieraj obrazy tylko ze stron producenta (Microsoft, dystrybucja Linux),
- sprawdź sumę kontrolną (np. SHA-256) obrazu,
- dla pewności autentyczności sprawdź podpis cyfrowy pliku z sumami (GPG) lub podpis instalatora,
- nośnik przygotuj narzędziem producenta (Media Creation Tool, Rufus,
dd, Etcher).
# Linux: suma kontrolna z pliku SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing
# podpis pliku z sumami (po zaimportowaniu klucza producenta)
gpg --verify SHA256SUMS.gpg SHA256SUMS
# Windows PowerShell
Get-FileHash .\obraz.iso -Algorithm SHA256
Get-AuthenticodeSignature .\instalator.exe
lsblk # sprawdź nazwę pendrive'a, np. /dev/sdb
sudo dd if=obraz.iso of=/dev/sdb bs=4M status=progress conv=fsync
Jeśli skrót i plik pochodzą z tego samego, przejętego serwera, atakujący podmieni oba. Autentyczność gwarantuje podpis cyfrowy lub skrót pobrany z zaufanego, niezależnego źródła.
Jak sprawdzisz, że pobrany obraz systemu nie został zmieniony?
Pokaż przykładową odpowiedź
Obliczam jego skrót (np. SHA-256) i porównuję z wartością publikowaną przez producenta. Dla pewności autentyczności weryfikuję podpis cyfrowy pliku z sumami.
Dlaczego samo porównanie skrótu może nie wystarczyć?
Pokaż przykładową odpowiedź
Jeśli atakujący przejął serwer, mógł podmienić zarówno obraz, jak i opublikowany skrót. Podpis cyfrowy zweryfikowany kluczem producenta pozwala potwierdzić autentyczność.
Lekcja 8 · Część B
Instalacja w standardzie utwardzonym
Instalacja utwardzona od początku ogranicza powierzchnię ataku i izoluje składniki systemu. Wiele ustawień łatwo zrobić podczas instalacji, a trudno lub kosztownie później.
Partycjonowanie i opcje montowania
- osobne partycje dla
/,/boot,/home,/vari/tmp: wypełnienie jednego obszaru (np. logami) nie zatrzyma systemu, - dla obszarów zapisywalnych przez użytkowników wyłączaj wykonywanie kodu opcjami:
noexec(zakaz uruchamiania programów),nosuid(ignorowanie SUID),nodev(brak plików urządzeń), - szyfrowanie całego dysku (LUKS w Linux, BitLocker w Windows) już przy instalacji.
# urządzenie punkt system opcje dump fsck
UUID=... /home ext4 defaults,nodev,nosuid 0 2
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0
Po instalacji
- ustaw język, strefę czasową i synchronizację czasu (ważne dla logów i certyfikatów),
- skonfiguruj parametry sieciowe zgodnie z planem adresacji,
- wyłącz zbędne usługi i usuń niepotrzebne pakiety,
- zainstaluj aktualizacje od razu (
apt update && apt upgrade,dnf upgrade, Windows Update), - wyłącz lub zmień nazwę wbudowanego konta Administrator, nie zostawiaj haseł domyślnych.
Po co montuje się /tmp z opcją noexec?
Pokaż przykładową odpowiedź
Aby uniemożliwić uruchamianie programów zapisanych w tym katalogu. Wiele ataków zapisuje złośliwy plik do /tmp i próbuje go uruchomić.
Dlaczego osobna partycja dla /var jest dobrym pomysłem?
Pokaż przykładową odpowiedź
Logi i dane zmienne mogą szybko rosnąć. Na osobnej partycji ich nadmiar nie zapełni dysku systemowego i nie zatrzyma działania systemu.
Lekcja 9 · Część B
Model zerowego zaufania i konta techniczne
Zero Trust (zerowe zaufanie) zakłada, że żadne urządzenie, użytkownik ani połączenie nie jest zaufane tylko dlatego, że znajduje się „wewnątrz” sieci. Zasady: nigdy nie ufaj, zawsze weryfikuj, dawaj najmniejsze potrzebne uprawnienia i zakładaj, że naruszenie już nastąpiło.
| Zasada | Zastosowanie w systemach |
|---|---|
| Weryfikuj jawnie | silne uwierzytelnianie (MFA), kontrola stanu urządzenia przed udzieleniem dostępu |
| Najmniejsze uprawnienia | konta bez praw administratora, dostęp tylko do potrzebnych zasobów, uprawnienia czasowe |
| Zakładaj naruszenie | segmentacja, szyfrowanie, rejestrowanie zdarzeń, szybkie wykrywanie anomalii |
Konta techniczne i serwisowe
Konta, na których działają usługi i zadania, nie powinny pozwalać na logowanie interaktywne (przez konsolę ani zdalny pulpit) i nie powinny mieć praw administratora.
sudo useradd --system --no-create-home --shell /usr/sbin/nologin appsvc
sudo passwd -l appsvc # zablokowane hasło
grep appsvc /etc/passwd
W Windows analogiczne ustawienia to odmowa prawa Logowanie lokalne i Logowanie przez usługi pulpitu zdalnego dla konta usługi (secpol.msc) oraz używanie kont zarządzanych (gMSA) w domenie.
Dlaczego konto usługi nie powinno mieć powłoki logowania?
Pokaż przykładową odpowiedź
Aby atakujący, który przejmie konto usługi, nie mógł się nim zalogować interaktywnie i swobodnie wykonywać poleceń. Konto ma służyć wyłącznie do uruchamiania usługi.
Na czym polega zasada „zakładaj naruszenie” w modelu zerowego zaufania?
Pokaż przykładową odpowiedź
Projektuje się systemy tak, aby skutki naruszenia były ograniczone i szybko wykrywane: segmentacja, szyfrowanie, rejestrowanie zdarzeń, najmniejsze uprawnienia i stałe monitorowanie.
Lekcja 10 · Część B
Grupy, RBAC, sudo i UAC
Uprawnienia nadaje się grupom odpowiadającym rolom (RBAC), a użytkowników dodaje do grup. Dzięki temu zmiana stanowiska to zmiana członkostwa w grupie, a nie przepisywanie uprawnień do wielu zasobów.
sudo groupadd helpdesk
sudo useradd -m -G helpdesk anna
sudo usermod -aG helpdesk bartek # dodanie do grupy (-a koniecznie!)
id anna
sudo chage -M 90 -W 14 anna # hasło ważne 90 dni, ostrzeżenie 14 dni
New-LocalGroup -Name "Helpdesk" -Description "Pomoc techniczna"
New-LocalUser -Name "anna" -Password (Read-Host -AsSecureString "Hasło") -FullName "Anna K."
Add-LocalGroupMember -Group "Helpdesk" -Member "anna"
Get-LocalGroupMember -Group "Helpdesk"
Podnoszenie uprawnień
| Mechanizm | System | Opis |
|---|---|---|
sudo | Linux | wykonanie polecenia z uprawnieniami innego użytkownika (zwykle roota), konfigurowane w /etc/sudoers |
| UAC | Windows | żądanie zatwierdzenia przy operacjach administracyjnych (tryb zatwierdzania przez administratora) |
runas | Windows | uruchomienie programu jako inny użytkownik |
# /etc/sudoers.d/helpdesk
%helpdesk ALL=(root) /usr/bin/systemctl restart nginx
Zamiast dawać pełny dostęp do konta roota, w sudoers wymieniaj konkretne polecenia. Plik edytuj poleceniem visudo, które sprawdza składnię.
Co zrobi polecenie usermod -G helpdesk bartek bez opcji -a?
Pokaż przykładową odpowiedź
Zastąpi wszystkie dotychczasowe grupy dodatkowe użytkownika grupą helpdesk, co może odebrać mu dostęp. Aby dodać grupę, trzeba użyć usermod -aG.
Czym jest UAC?
Pokaż przykładową odpowiedź
Mechanizmem Windows, który wymaga zatwierdzenia przy operacjach wymagających praw administratora, dzięki czemu program nie uzyskuje ich po cichu.
Lekcja 11 · Część B
MFA, ochrona poświadczeń i magazyny kluczy
Hasła użytkowników są przechowywane w postaci skrótów, ale w pamięci systemu mogą istnieć też dane pozwalające przejąć sesję (skróty NTLM, bilety Kerberos). Atakujący z uprawnieniami administratora próbuje je wydobyć z procesu odpowiedzialnego za logowanie (LSASS w Windows).
| Zabezpieczenie | Opis |
|---|---|
| MFA | drugi składnik (aplikacja TOTP, klucz FIDO2, Windows Hello for Business); w Linux np. moduł PAM z TOTP dla logowania SSH |
| Credential Guard (Windows) | izoluje sekrety logowania w wirtualizowanym, odizolowanym obszarze, niedostępnym nawet dla administratora |
| Ochrona LSA | pozwala ładować do LSASS tylko podpisane moduły |
| Magazyny kluczy | Windows: Menedżer poświadczeń i DPAPI; Linux: GNOME Keyring, KWallet, pass |
Monitorowanie prób dostępu do poświadczeń i logowań
| Zdarzenie | Windows (dziennik Zabezpieczeń) | Linux |
|---|---|---|
| Udane logowanie | 4624 | /var/log/auth.log lub /var/log/secure, last |
| Nieudane logowanie | 4625 | „Failed password”, lastb |
| Przydzielenie uprawnień specjalnych | 4672 | wpisy sudo |
| Utworzenie konta / zmiana grupy | 4720, 4732 | wpisy useradd, usermod |
# Windows PowerShell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
Select-Object TimeCreated, @{n='Konto';e={$_.Properties[5].Value}}
# Linux
sudo journalctl _COMM=sshd | grep "Failed password" | tail -20
sudo lastb | head
Do czego służy Credential Guard?
Pokaż przykładową odpowiedź
Chroni sekrety logowania (skróty NTLM, bilety Kerberos) w izolowanym środowisku opartym na wirtualizacji, tak że nie można ich odczytać z pamięci nawet z uprawnieniami administratora.
Które zdarzenie Windows rejestruje nieudane logowanie?
Pokaż przykładową odpowiedź
Zdarzenie o identyfikatorze 4625 w dzienniku Zabezpieczeń.
Lekcja 12 · Część B
Obowiązkowa kontrola dostępu: AppArmor, SELinux i integralność
Klasyczne uprawnienia (DAC) pozwalają właścicielowi decydować o dostępie. MAC (obowiązkowa kontrola dostępu) dodaje politykę systemową, której nie może zmienić zwykły użytkownik ani proces, nawet jeśli działa jako root. Ogranicza skutki przejęcia usługi.
| Mechanizm | Systemy | Zasada |
|---|---|---|
| AppArmor | Ubuntu, Debian, SUSE | profile przypisane do programów, oparte na ścieżkach plików; tryby: enforce i complain |
| SELinux | RHEL, Fedora, CentOS | etykiety kontekstu na procesach i plikach; polityka określa, który typ procesu może dotknąć którego typu pliku; tryby: enforcing, permissive, disabled |
| Mandatory Integrity Control | Windows | poziomy integralności (niski, średni, wysoki, systemowy): proces o niższym poziomie nie zapisuje do obiektów wyższego |
# AppArmor
sudo aa-status
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx # tylko loguje naruszenia
# SELinux
getenforce
sestatus
ls -Z /var/www/html
sudo restorecon -Rv /var/www/html
sudo ausearch -m avc -ts recent | sudo audit2why
Gdy usługa przestaje działać po włączeniu SELinux lub AppArmor, nie wyłączaj ochrony. Użyj tryb permissive/complain, odczytaj w logach, co zostało zablokowane, i popraw politykę lub etykiety.
Czym różni się SELinux od klasycznych uprawnień plików?
Pokaż przykładową odpowiedź
Uprawnienia klasyczne (DAC) ustawia właściciel pliku. SELinux stosuje politykę systemową z etykietami, której nie zmienia użytkownik, i ogranicza nawet procesy działające jako root.
Co zrobisz, gdy po włączeniu SELinux usługa WWW nie może odczytać plików?
Pokaż przykładową odpowiedź
Sprawdzam odmowy w logach (ausearch -m avc, audit2why) i poprawiam etykiety plików (restorecon) lub politykę, zamiast wyłączać SELinux.
Zadanie praktyczne
Utwardzona konfiguracja kont i dostępu
Zadanie
Na maszynie wirtualnej Linux (i opcjonalnie Windows) przygotuj konta i dostęp dla firmy zgodnie z zasadą najmniejszych uprawnień.
Założenia
- Sprawdź sumę kontrolną obrazu, z którego powstała maszyna (lub opisz, jak to zrobisz).
- Utwórz grupy
helpdeskiksiegowoscoraz po dwóch użytkowników w każdej. - Utwórz konto usługi
appsvcbez możliwości logowania i bez powłoki. - Skonfiguruj
sudotak, aby helpdesk mógł tylko restartować wybraną usługę. - Ustaw opcje montowania
noexec,nosuid,nodevdla/tmp(lub opisz wpis do/etc/fstab) i sprawdź stan AppArmor lub SELinux. - Napisz notatkę (4–5 zdań), w której wyjaśnisz, dlaczego takie ustawienia zmniejszają skutki przejęcia konta.
Ocenie podlegać będzie
- poprawność kont, grup i uprawnień sudo,
- konto usługi bez logowania,
- poprawne opcje montowania,
- zrozumienie MAC i najmniejszych uprawnień,
- zwięzła dokumentacja.
Wskazówki
- Skorzystaj z poleceń w lekcjach 8–12.
- Plik sudoers edytuj wyłącznie przez
visudo. - Przed zmianami w
/etc/fstabzrób kopię pliku.
Część C
Systemy plików i kontrola dostępu do danych
Uprawnienia NTFS i Linux, udziały sieciowe, szyfrowanie danych, zajętość dysku, montowanie i integralność systemu plików.
Lekcja 13 · Część C
Uprawnienia NTFS i ACL w Windows
W NTFS każdy plik i folder ma listę kontroli dostępu (ACL) złożoną z wpisów (ACE): komu (użytkownik lub grupa) co wolno albo czego zabroniono. Uprawnienia są dziedziczone z folderu nadrzędnego, chyba że dziedziczenie wyłączono.
| Uprawnienie podstawowe | Co pozwala |
|---|---|
| Odczyt | wyświetlanie zawartości, odczyt atrybutów |
| Zapis | tworzenie plików i folderów, zapis danych |
| Odczyt i wykonanie | odczyt oraz uruchamianie programów |
| Modyfikacja | odczyt, zapis, wykonanie i usuwanie |
| Pełna kontrola | wszystko oraz zmiana uprawnień i przejęcie na własność |
- uprawnienia sumują się z wszystkich grup użytkownika, ale jawny zakaz (Deny) zwykle wygrywa z zezwoleniem,
- uprawnienia nadawaj grupom, nie pojedynczym użytkownikom,
- przy kopiowaniu obiekt dziedziczy uprawnienia z nowego miejsca, a przy przenoszeniu w obrębie tego samego woluminu zachowuje swoje.
icacls C:\Dane\Ksiegowosc
icacls C:\Dane\Ksiegowosc /inheritance:r
icacls C:\Dane\Ksiegowosc /grant "Ksiegowosc:(OI)(CI)M"
icacls C:\Dane\Ksiegowosc /grant "Administratorzy:(OI)(CI)F"
icacls C:\Dane\Ksiegowosc /remove "Uzytkownicy"
(OI) = dziedziczenie przez pliki, (CI) = dziedziczenie przez foldery, M = modyfikacja, F = pełna kontrola, /inheritance:r = usuń odziedziczone uprawnienia.
Użytkownik należy do grup A (Odczyt) i B (Zapis). Jakie ma efektywne uprawnienia do pliku, jeśli żadna grupa nie ma zakazu?
Pokaż przykładową odpowiedź
Odczyt i zapis, bo uprawnienia z różnych grup się sumują.
Dlaczego uprawnienia nadaje się grupom, a nie pojedynczym użytkownikom?
Pokaż przykładową odpowiedź
Ułatwia to zarządzanie i audyt: zmiana roli użytkownika to zmiana członkostwa w grupie, bez przepisywania uprawnień na wielu folderach, a ryzyko pomyłek jest mniejsze.
Lekcja 14 · Część C
Uprawnienia plików w Linux: rwx, SUID i ACL
Każdy plik w Linux ma właściciela, grupę i trzy zestawy uprawnień (właściciel, grupa, pozostali): r (odczyt, 4), w (zapis, 2), x (wykonanie lub wejście do katalogu, 1). Zapis ósemkowy sumuje wartości: rwxr-x--- to 750.
ls -l plik
chmod 640 plik.txt # rw- r-- ---
chmod u+x skrypt.sh # dodaj wykonanie właścicielowi
chown anna:ksiegowosc plik.txt
umask # np. 0022: nowe pliki 644, katalogi 755
umask 027 # nowe pliki 640, katalogi 750
| Bit specjalny | Zapis | Znaczenie |
|---|---|---|
| SUID | chmod 4755 lub u+s | plik wykonywany z uprawnieniami właściciela (np. passwd) |
| SGID | chmod 2755 lub g+s | wykonanie z uprawnieniami grupy; w katalogu: nowe pliki dziedziczą grupę |
| Sticky bit | chmod +t | w katalogu (np. /tmp): usuwać plik może tylko jego właściciel |
setfacl -m u:anna:rw plik.txt # prawo dla jednego użytkownika
setfacl -m g:audyt:r-- plik.txt
getfacl plik.txt
# audyt: programy z bitem SUID
find / -perm -4000 -type f 2>/dev/null
Prawa 777 dają zapis wszystkim użytkownikom i są częstym błędem (także w skryptach generowanych automatycznie). Dobierz najmniejsze prawa, które wystarczają.
Jakie uprawnienia oznacza zapis 640?
Pokaż przykładową odpowiedź
Właściciel: odczyt i zapis (6), grupa: odczyt (4), pozostali: brak dostępu (0), czyli rw-r-----.
Po co stosuje się sticky bit na katalogu /tmp?
Pokaż przykładową odpowiedź
Aby każdy użytkownik mógł tworzyć pliki w /tmp, ale usuwać lub zmieniać nazwy mógł tylko właściciel pliku (lub root).
Lekcja 15 · Część C
Udziały sieciowe i ochrona dostępu do danych
Udział sieciowy udostępnia folder innym komputerom. W Windows służy do tego SMB, w Linux często Samba (zgodna z SMB) lub NFS. Dostęp do pliku przez udział zależy od dwóch zestawów uprawnień: uprawnień udziału i uprawnień NTFS, a obowiązuje bardziej restrykcyjne.
New-SmbShare -Name "Dane" -Path "C:\Dane" -FullAccess "Administratorzy" -ChangeAccess "Ksiegowosc"
Get-SmbShare
Get-SmbShareAccess -Name "Dane"
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol # wyłącz stary, niebezpieczny SMBv1
# /etc/exports - tylko dla sieci 192.168.10.0/24, root_squash
/srv/dane 192.168.10.0/24(rw,sync,root_squash,no_subtree_check)
# /etc/samba/smb.conf
[dane]
path = /srv/dane
valid users = @ksiegowosc
read only = no
guest ok = no
Zasady ochrony
- wyłącz SMBv1 i dostęp anonimowy (gość),
- włącz podpisywanie SMB, a w razie potrzeby szyfrowanie,
- ogranicz dostęp zaporą do zaufanych sieci,
- w NFS stosuj
root_squash(zdalny root traktowany jak zwykły użytkownik), - dostęp przydzielaj grupom i przeglądaj go regularnie.
Udział ma uprawnienie Pełna kontrola dla Wszyscy, a NTFS tylko Odczyt dla grupy Uczniowie. Co może zrobić uczeń?
Pokaż przykładową odpowiedź
Tylko odczytywać pliki, bo przy dostępie przez sieć obowiązuje bardziej restrykcyjne z dwóch uprawnień.
Dlaczego wyłącza się SMBv1?
Pokaż przykładową odpowiedź
To stary protokół z poważnymi lukami, wykorzystywany m.in. przez robaki sieciowe (np. w atakach ransomware). Nowoczesne systemy go nie potrzebują.
Lekcja 16 · Część C
Szyfrowanie plików i wolumenów
Szyfrowanie danych w spoczynku chroni informacje, gdy ktoś zdobędzie nośnik (zgubiony laptop, wyjęty dysk). Można szyfrować cały wolumen lub pojedyncze pliki.
| Narzędzie | System | Zakres |
|---|---|---|
| BitLocker | Windows | cały wolumen; zwykle z TPM i opcjonalnie PIN-em |
| EFS | Windows (NTFS) | pojedyncze pliki i foldery, powiązane z kontem użytkownika |
| LUKS (dm-crypt) | Linux | cała partycja lub dysk |
| VeraCrypt | wiele systemów | kontenery i całe wolumeny |
| gocryptfs, GnuPG | Linux | szyfrowane katalogi, pliki |
# Windows: stan szyfrowania wolumenów
manage-bde -status
# Linux: szyfrowanie nowej partycji LUKS (uwaga: kasuje dane!)
sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup open /dev/sdb1 dane
sudo mkfs.ext4 /dev/mapper/dane
sudo mount /dev/mapper/dane /mnt/dane
# zamknięcie
sudo umount /mnt/dane && sudo cryptsetup close dane
Zapisz klucz odzyskiwania w osobnym, bezpiecznym miejscu (nie na zaszyfrowanym dysku). Bez niego po awarii TPM lub utracie hasła dane są nie do odzyskania.
Przed czym chroni szyfrowanie całego dysku?
Pokaż przykładową odpowiedź
Przed dostępem do danych po fizycznym zdobyciu dysku lub laptopa (kradzież, zgubienie). Nie chroni przed użytkownikiem, który jest zalogowany i ma dostęp do odszyfrowanych danych.
Dlaczego klucz odzyskiwania BitLocker nie może leżeć na tym samym szyfrowanym dysku?
Pokaż przykładową odpowiedź
Gdyby dysk stał się niedostępny, nie dałoby się odczytać klucza, a więc i danych. Klucz należy przechowywać osobno, w zabezpieczonym miejscu.
Lekcja 17 · Część C
Przestrzeń dyskowa, montowanie i integralność systemu plików
Monitorowanie zajętości
# Linux
df -h
du -sh /var/* | sort -h | tail
sudo ncdu /var
# Windows PowerShell
Get-PSDrive -PSProvider FileSystem
fsutil volume diskfree C:
Kwoty dyskowe (quota) ograniczają miejsce, które może zająć użytkownik (w Windows: NTFS Quotas, w Linux: quota). Nagłe zapełnienie dysku (np. rosnące logi) może zatrzymać usługi, więc to też kwestia dostępności.
Montowanie w Linux
lsblk -f
blkid # UUID partycji
sudo mount /dev/sdb1 /mnt/dane
sudo mount -o ro,noexec /dev/sdb1 /mnt/dane
findmnt # aktualne montowania
# trwałe montowanie: wpis w /etc/fstab (najlepiej przez UUID)
sudo findmnt --verify # sprawdzenie składni fstab
Integralność systemu plików po awarii
# Windows: skanowanie bez naprawy, a potem naprawa
chkdsk C: /scan
chkdsk D: /f
# Linux: tylko na odmontowanym systemie plików!
sudo umount /dev/sdb1
sudo fsck -f /dev/sdb1
Dziennik (journaling, np. w NTFS i ext4) zapisuje zamiar wykonania operacji, więc po nagłej awarii zasilania system plików szybko wraca do spójności.
Dlaczego fsck uruchamia się na odmontowanym systemie plików?
Pokaż przykładową odpowiedź
Naprawa podczas użycia przez system może uszkodzić dane, bo struktury zmieniają się w trakcie sprawdzania. Odmontowanie gwarantuje, że nic innego nie zapisuje na nośniku.
Jakie ryzyko dla bezpieczeństwa niesie zapełnienie dysku?
Pokaż przykładową odpowiedź
Może zatrzymać usługi i uniemożliwić zapis logów (utrata dostępności i śladów audytu), a atakujący może to wykorzystać do ukrycia swoich działań.
Zadanie praktyczne
Struktura uprawnień do katalogu działowego
Zadanie
Przygotuj w Windows i Linux katalog dla działu księgowości zgodnie z zasadą najmniejszych uprawnień.
Założenia
- Utwórz katalog
Ksiegowosci dwie grupy:ksiegowosc(modyfikacja) orazaudyt(tylko odczyt). - W Windows użyj
icacls(wyłącz dziedziczenie i usuń grupę Użytkownicy), w Linuxchmod,chownisetfacl. - Udostępnij katalog przez sieć (SMB lub NFS) z ograniczeniem do zaufanej sieci.
- Zaszyfruj wolumen lub kontener z danymi (BitLocker lub LUKS) i opisz, gdzie zapisano klucz odzyskiwania.
- Przetestuj: konto bez uprawnień nie może wejść do katalogu, konto z grupy audyt nie zapisuje. Dołącz wyniki poleceń (
icacls,getfacl).
Ocenie podlegać będzie
- poprawne uprawnienia i dziedziczenie,
- zgodność z zasadą najmniejszych uprawnień,
- bezpieczne udostępnienie przez sieć,
- poprawne szyfrowanie i ochrona klucza,
- testy potwierdzające działanie.
Wskazówki
- Polecenia znajdziesz w lekcjach 13–16.
- Pamiętaj o prawie wejścia (
x) do katalogu w Linux. - Przed szyfrowaniem partycji upewnij się, że nie zawiera potrzebnych danych.
Część D
Usługi, harmonogram, skrypty i AI
Zarządzanie usługami i ich zależnościami, harmonogram zadań, skrypty PowerShell i Bash oraz bezpieczne wykorzystanie narzędzi AI.
Lekcja 18 · Część D
Zarządzanie usługami systemowymi
Usługa (w Linux: demon) to program działający w tle, bez udziału użytkownika, np. serwer WWW, SSH, drukowanie. Usługi mają stan (uruchomiona, zatrzymana) i tryb uruchamiania.
| Tryb uruchamiania | Windows | Linux (systemd) |
|---|---|---|
| Automatyczny | Automatycznie | systemctl enable |
| Ręczny (na żądanie) | Ręcznie | usługa włączona przez inną usługę lub gniazdo |
| Wyłączony | Wyłączona | systemctl disable; mask blokuje całkowicie |
Get-Service | Where-Object Status -eq Running
Get-Service -Name Spooler
Stop-Service -Name Spooler
Set-Service -Name Spooler -StartupType Disabled
Start-Service -Name Spooler
systemctl status ssh
sudo systemctl restart nginx
sudo systemctl enable --now nginx # uruchom teraz i przy starcie
sudo systemctl disable --now telnet.socket
systemctl list-units --type=service --state=running
systemctl list-dependencies nginx
Wyłącz usługi, których nie potrzebujesz (Telnet, FTP, SMBv1, Print Spooler na serwerach bez drukowania). Każda zbędna usługa to dodatkowa powierzchnia ataku.
Jak sprawdzisz w Linux, które usługi są uruchomione i czy włączą się przy starcie?
Pokaż przykładową odpowiedź
systemctl list-units --type=service --state=running pokazuje działające usługi, a systemctl list-unit-files --type=service ich tryb uruchamiania (enabled, disabled).
Czym różni się systemctl disable od mask?
Pokaż przykładową odpowiedź
Disable usuwa uruchamianie przy starcie, ale usługę nadal można uruchomić ręcznie lub przez zależność. Mask całkowicie blokuje uruchomienie usługi.
Lekcja 19 · Część D
Harmonogram zadań: Task Scheduler, cron i timery
Zadania cykliczne (kopie zapasowe, czyszczenie logów, aktualizacje) uruchamia się automatycznie według harmonogramu. W Windows służy do tego Harmonogram zadań, a w Linux cron lub timery systemd.
schtasks /create /tn "KopiaDziennik" /tr "C:\Skrypty\kopia.cmd" /sc daily /st 02:00 /ru SYSTEM
schtasks /query /tn "KopiaDziennik" /fo list
schtasks /delete /tn "KopiaDziennik" /f
crontab -e # edycja własnych zadań
# minuta godzina dzień-miesiąca miesiąc dzień-tygodnia polecenie
30 2 * * * /usr/local/bin/kopia.sh # codziennie 2:30
0 3 * * 0 /usr/local/bin/czyszczenie.sh # w niedzielę o 3:00
crontab -l
systemctl list-timers
Zadania uruchamiane jako SYSTEM lub root to częsty sposób na utrwalenie się atakującego i eskalację uprawnień. Chroń pliki skryptów (nie mogą być zapisywalne dla zwykłych użytkowników) i regularnie przeglądaj listę zadań (schtasks /query, crontab -l, /etc/cron.d).
Co oznacza wpis cron: 0 3 * * 0 /usr/local/bin/skrypt.sh?
Pokaż przykładową odpowiedź
Uruchomienie skryptu w każdą niedzielę o godzinie 3:00 (minuta 0, godzina 3, dowolny dzień miesiąca i miesiąc, dzień tygodnia 0 = niedziela).
Dlaczego skrypt uruchamiany z uprawnieniami roota nie powinien być zapisywalny dla wszystkich?
Pokaż przykładową odpowiedź
Użytkownik mógłby go zmienić i uzyskać wykonanie własnych poleceń z uprawnieniami roota, co oznaczałoby eskalację uprawnień.
Lekcja 20 · Część D
Skrypty PowerShell i Bash w administracji
Skrypty automatyzują powtarzalne czynności: tworzenie kont, zbieranie informacji, audyt, kopie zapasowe. Dobry skrypt jest czytelny, bezpieczny i wykonuje tylko to, co ma.
Get-LocalUser |
Where-Object { $_.Enabled } |
Select-Object Name, LastLogon, PasswordRequired |
Sort-Object LastLogon -Descending |
Format-Table -AutoSize
#!/usr/bin/env bash
set -euo pipefail
echo "Konta z pustym hasłem:"
sudo awk -F: '($2 == "") { print $1 }' /etc/shadow
echo "Katalogi domowe dostępne dla wszystkich:"
find /home -maxdepth 1 -type d -perm -o+r
Zasady bezpiecznych skryptów
- nie zapisuj haseł i kluczy w skrypcie (używaj magazynów sekretów, zmiennych środowiskowych lub monitów),
- waliduj dane wejściowe i cytuj zmienne w Bash (
"$plik"), - używaj
set -euo pipefailw Bash i$ErrorActionPreference = 'Stop'w PowerShell, - testuj bezpiecznie: PowerShell
-WhatIf, opcje dry-run, maszyna testowa, - ogranicz uprawnienia pliku skryptu i konto, na którym działa,
- w Windows pamiętaj o polityce wykonywania skryptów (
Get-ExecutionPolicy) i podpisywaniu skryptów.
Co robi w skrypcie Bash opcja set -euo pipefail?
Pokaż przykładową odpowiedź
Przerywa skrypt przy błędzie (-e), przy użyciu niezdefiniowanej zmiennej (-u) i gdy zawiedzie dowolne polecenie w potoku (pipefail), co zmniejsza ryzyko niezamierzonych skutków.
Dlaczego nie wolno zapisywać haseł w treści skryptu?
Pokaż przykładową odpowiedź
Skrypt często jest czytelny dla wielu osób, trafia do repozytoriów i kopii zapasowych. Hasło w kodzie można łatwo wykraść, więc sekrety trzyma się w magazynach sekretów lub podaje w czasie działania.
Lekcja 21 · Część D
Narzędzia AI w administracji systemami
Narzędzia generatywnej AI potrafią napisać szkic skryptu PowerShell lub Bash, wyjaśnić komunikat błędu, zoptymalizować kod i przygotować dokumentację. Odpowiedzialność za wykonane polecenia zawsze ponosi administrator, a nie narzędzie.
| Zastosowanie | Korzyść | Ryzyko |
|---|---|---|
| Generowanie skryptu | szybki szkic, składnia | kod może być błędny lub niebezpieczny |
| Interpretacja błędów | wyjaśnienie komunikatu, propozycja przyczyn | podpowiedź może być nietrafiona |
| Optymalizacja i refaktoryzacja | czytelniejszy i krótszy kod | zmiana działania skryptu |
| Dokumentacja skryptów | komentarze, opis parametrów | opis niezgodny z kodem |
| Wyszukiwanie podatności w skryptach | dodatkowa kontrola | fałszywe alarmy i pominięcia |
Zasady bezpiecznej pracy z AI
- nie wklejaj haseł, kluczy, danych osobowych ani konfiguracji z sekretami do narzędzi zewnętrznych,
- przeczytaj i zrozum każde polecenie, zanim je uruchomisz,
- najpierw uruchamiaj w maszynie testowej, z opcją
-WhatIflub dry-run, - sprawdź w dokumentacji producenta, czy opcje istnieją i robią to, co opisano,
- uważaj na polecenia niszczące lub osłabiające bezpieczeństwo:
rm -rf,chmod -R 777, wyłączanie zapory lub Defendera,curl ... | sudo bash.
# „Napraw uprawnienia, żeby aplikacja działała”
sudo chmod -R 777 /var/www
sudo setenforce 0
sudo systemctl stop firewalld
Taki szkic „naprawia” problem, ale otwiera zapis dla wszystkich, wyłącza SELinux i zaporę. Poprawna odpowiedź to: nadać właściciela i grupę usługi (chown), prawa 750/640 i poprawić etykiety (restorecon).
Wygenerowany przez AI skrypt zawiera polecenie chmod -R 777. Jak postąpisz?
Pokaż przykładową odpowiedź
Nie uruchomię go w tej postaci. Zrozumiem, po co wprowadzono tę zmianę, i zastąpię ją najmniejszymi potrzebnymi uprawnieniami (właściciel, grupa, np. 750 lub 640), a zmianę przetestuję na maszynie testowej.
Jakich danych nie należy wklejać do zewnętrznych narzędzi AI podczas diagnozowania problemu?
Pokaż przykładową odpowiedź
Haseł, kluczy API, certyfikatów prywatnych, danych osobowych, pełnych konfiguracji z sekretami i innych poufnych informacji organizacji.
Lekcja 22 · Część D
Zależności usług i diagnozowanie błędów startu
Usługi często zależą od siebie: aplikacja potrzebuje bazy danych, ta z kolei sieci. Gdy zawiedzie ogniwo niżej, powstaje błąd kaskadowy: kolejne usługi nie startują, choć same są poprawne. Diagnozę zaczyna się od przyczyny najgłębiej w łańcuchu zależności.
systemctl status nginx
journalctl -u nginx -b --no-pager | tail -30
journalctl -xe
systemctl list-dependencies nginx
systemd-analyze blame | head
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'; Level=2} -MaxEvents 15 |
Select-Object TimeCreated, Id, Message
Get-Service -Name W3SVC | Select-Object Name, Status, DependentServices, ServicesDependedOn
| Kroki diagnozy | Opis |
|---|---|
| 1. Stan usługi | uruchomiona, zatrzymana, błąd |
| 2. Dziennik | komunikat błędu z czasem startu (journalctl, Podgląd zdarzeń) |
| 3. Zależności | czy usługi, od których zależy, działają |
| 4. Konfiguracja | ostatnia zmiana pliku, uprawnień, portu zajętego przez inny proces |
| 5. Zasoby | wolne miejsce na dysku, pamięć, uprawnienia konta usługi |
Usługa aplikacji nie startuje, bo wymaga bazy danych, która też nie działa. Od czego zaczniesz?
Pokaż przykładową odpowiedź
Od usługi bazy danych (przyczyny w łańcuchu zależności): sprawdzam jej stan i dziennik. Po jej naprawie usługa aplikacji powinna wystartować.
Które polecenie pokazuje komunikaty dziennika konkretnej usługi w Linux od ostatniego startu systemu?
Pokaż przykładową odpowiedź
journalctl -u nazwa_usługi -b.
Zadanie praktyczne
Skrypt audytowy z wykorzystaniem AI
Zadanie
Przygotuj skrypt, który zbiera informacje o bezpieczeństwie systemu, a następnie krytycznie zweryfikuj kod wygenerowany przez AI.
Założenia
- Poproś narzędzie AI (zgodnie z regulaminem szkoły, bez wklejania danych poufnych) o skrypt Bash lub PowerShell, który wypisuje: konta z uprawnieniami administratora, nasłuchujące porty, uruchomione usługi i zadania zaplanowane.
- Przeczytaj skrypt i zapisz listę znalezionych problemów (błędy, ryzykowne polecenia, brak walidacji, sekrety).
- Popraw skrypt: dodaj obsługę błędów, cytowanie zmiennych, ograniczenie uprawnień, tryb bezpieczny.
- Uruchom skrypt na maszynie testowej, zapisz wynik do pliku z datą i dołącz fragment.
- Zaplanuj uruchamianie skryptu co tydzień (cron lub Harmonogram zadań) z kontem o najmniejszych uprawnieniach. Opisz, jak zabezpieczysz plik skryptu.
Ocenie podlegać będzie
- poprawność i działanie skryptu,
- trafna krytyczna ocena kodu AI,
- bezpieczne praktyki (brak sekretów, walidacja, najmniejsze uprawnienia),
- poprawnie skonfigurowany harmonogram,
- kompletna dokumentacja.
Wskazówki
- Skorzystaj z listy zasad w lekcjach 20 i 21.
- Sprawdzaj opcje poleceń w dokumentacji (
man,Get-Help). - Skrypt testuj wyłącznie na własnej maszynie wirtualnej.
Część E
Utwardzanie systemów Windows i Linux
Zasady lokalne i AppLocker, ochrona rozruchu i rejestru, SSH, sysctl, redukcja powierzchni ataku oraz audyt zgodny z benchmarkami.
Lekcja 23 · Część E
Utwardzanie Windows: zasady, AppLocker i prywatność
Utwardzanie (ang. hardening) to takie skonfigurowanie systemu, aby ograniczyć jego powierzchnię ataku i skutki naruszenia. W Windows większość ustawień zapisuje się w zasadach: lokalnych (secpol.msc, gpedit.msc) lub grupowych (GPO) w domenie Active Directory.
| Obszar | Przykładowe ustawienia |
|---|---|
| Zasady konta | minimalna długość hasła, historia haseł, blokada konta po kilku nieudanych logowaniach |
| Zasady lokalne | wyłączenie konta Gość, zmiana nazwy konta Administrator, prawa użytkowników (kto może logować się lokalnie, zdalnie, wyłączać system) |
| Opcje zabezpieczeń | wymuszanie podpisywania SMB, ograniczenie NTLM, UAC w trybie zatwierdzania |
| Ograniczenie uruchamiania aplikacji | AppLocker lub Windows Defender Application Control (WDAC) |
| Prywatność i telemetria | poziom danych diagnostycznych, aplikacje działające w tle, uprawnienia aplikacji do kamery i mikrofonu |
AppLocker
AppLocker pozwala uruchamiać tylko dozwolone aplikacje. Reguły mogą opierać się na wydawcy (podpis), ścieżce lub skrócie pliku. Typowy sposób wdrożenia: utwórz reguły domyślne, włącz tryb Tylko inspekcja (audit), sprawdź w dzienniku, co zostałoby zablokowane, a następnie przełącz na Wymuszaj.
secedit /export /cfg C:\Raporty\sec.cfg
Get-AppLockerPolicy -Effective | Select-Object -ExpandProperty RuleCollections
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" -MaxEvents 20
Najpierw audyt (tylko rejestrowanie), potem wymuszanie. Gwałtowne włączenie ograniczeń bez testów może zablokować potrzebne programy.
Do czego służy AppLocker?
Pokaż przykładową odpowiedź
Do ograniczania, które aplikacje, skrypty i instalatory mogą być uruchamiane, według reguł (wydawca, ścieżka, skrót), co zmniejsza ryzyko uruchomienia złośliwego oprogramowania.
Dlaczego nowe reguły AppLocker wdraża się najpierw w trybie inspekcji?
Pokaż przykładową odpowiedź
Aby sprawdzić w dzienniku, jakie legalne programy zostałyby zablokowane, i poprawić reguły, zanim zaczną faktycznie blokować pracę użytkowników.
Lekcja 24 · Część E
Utwardzanie Windows: bootloader, rejestr i ochrona przed exploitami
Ochrona rozruchu
- włącz Secure Boot i ustaw hasło do ustawień UEFI,
- zaszyfruj dysk systemowy BitLockerem z TPM (a dla większego bezpieczeństwa z dodatkowym PIN-em przed rozruchem),
- ograniczaj dostęp do wiersza poleceń środowiska odzyskiwania i sprawdzaj konfigurację rozruchu:
bcdedit /enum.
Kopia i przywracanie rejestru
Rejestr to baza ustawień systemu i programów. Błędna zmiana może uniemożliwić uruchomienie systemu, dlatego przed każdą modyfikacją wykonaj kopię odpowiedniej gałęzi.
reg export "HKLM\SOFTWARE\Policies" C:\Kopie\policies.reg
reg import C:\Kopie\policies.reg
# gałęzie autostartu warte przeglądu
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
Ochrona przed exploitami i wbudowane zabezpieczenia
- Microsoft Defender: ochrona w czasie rzeczywistym, SmartScreen, ochrona przed exploitami (Exploit protection),
- reguły Attack Surface Reduction (ASR): blokują typowe techniki, np. uruchamianie plików wykonywalnych z załączników e-mail,
- Controlled Folder Access: chroni foldery przed zmianami przez nieznane programy (pomaga przeciw ransomware),
- wyłączenie przestarzałych komponentów, np. SMBv1:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol.
Co zrobisz przed ręczną modyfikacją gałęzi rejestru?
Pokaż przykładową odpowiedź
Wykonam jej kopię (reg export lub eksport w Edytorze rejestru), aby w razie błędu przywrócić poprzedni stan (reg import).
Jak BitLocker z TPM chroni bootloader i dane?
Pokaż przykładową odpowiedź
Klucz szyfrowania zostaje odblokowany tylko wtedy, gdy pomiary rozruchu zgadzają się z oczekiwanymi. Zmodyfikowany bootloader lub przeniesienie dysku do innego komputera uniemożliwia odszyfrowanie danych.
Lekcja 25 · Część E
Utwardzanie Linux: SSH, root, pliki konfiguracyjne i jądro
Bezpieczny dostęp zdalny i konto root
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers anna bartek
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
sudo sshd -t # test składni, bez restartu
sudo systemctl reload ssh
sudo passwd -l root # zablokowanie hasła roota (logowanie przez sudo)
Ochrona plików konfiguracyjnych
sudo chmod 600 /etc/ssh/sshd_config
sudo chown root:root /etc/ssh/sshd_config
sudo chattr +i /etc/resolv.conf # atrybut niezmienności: nawet root nie zmieni bez chattr -i
lsattr /etc/resolv.conf
umask 027
Utwardzanie jądra (sysctl)
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
kernel.randomize_va_space = 2
sudo sysctl --system
sysctl net.ipv4.tcp_syncookies
Dlaczego w SSH wyłącza się PermitRootLogin?
Pokaż przykładową odpowiedź
Konto root jest oczywistym celem ataków. Wyłączenie logowania wymusza użycie zwykłego konta i podniesienie uprawnień przez sudo, co zostawia ślady i zmniejsza ryzyko.
Do czego służy atrybut niezmienności ustawiany poleceniem chattr +i?
Pokaż przykładową odpowiedź
Uniemożliwia zmianę, usunięcie lub zmianę nazwy pliku, nawet dla roota, dopóki atrybut nie zostanie zdjęty (chattr -i). Chroni krytyczne pliki przed przypadkową lub złośliwą zmianą.
Lekcja 26 · Część E
Redukcja powierzchni ataku: pakiety, usługi i autostart
Każdy zainstalowany program, działająca usługa i otwarty port to potencjalna podatność. Zasada: im mniej, tym bezpieczniej. Utwardzanie obejmuje inwentaryzację i usuwanie zbędnych składników.
| Co usuwać | Linux | Windows |
|---|---|---|
| Zbędne pakiety i programy | apt purge pakiet, apt autoremove, dnf remove | Aplikacje i funkcje, Get-WindowsOptionalFeature -Online |
| Usługi sieciowe | ss -tulpn → systemctl disable --now | Get-NetTCPConnection -State Listen → Set-Service ... -StartupType Disabled |
| Wpisy autostartu | ~/.config/autostart, cron, jednostki systemd, ~/.bashrc | klucze Run, folder Autostart, zadania zaplanowane, usługi |
# Linux
systemctl list-unit-files --state=enabled
ss -tulpn
ls /etc/cron.d /var/spool/cron/crontabs 2>/dev/null
# Windows PowerShell
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location
Get-NetTCPConnection -State Listen | Sort-Object LocalPort
W Windows program Autoruns z pakietu Sysinternals pokazuje wszystkie miejsca autostartu i pozwala sprawdzić podpis wydawcy.
Dlaczego usuwanie nieużywanych pakietów poprawia bezpieczeństwo?
Pokaż przykładową odpowiedź
Mniej oprogramowania oznacza mniej podatności i usług, które można zaatakować, oraz mniej rzeczy do aktualizowania i monitorowania.
Gdzie atakujący może ukryć mechanizm uruchamiania swojego programu po restarcie?
Pokaż przykładową odpowiedź
W autostarcie: kluczach Run w rejestrze, folderze Autostart, zadaniach zaplanowanych, usługach (Windows) oraz w cron, jednostkach systemd, plikach powłoki i rc.local (Linux).
Lekcja 27 · Część E
Audyt konfiguracji i benchmarki bezpieczeństwa
Benchmark bezpieczeństwa to opracowana przez ekspertów lista zalecanych ustawień systemu. Porównując z nią konfigurację, można ocenić stan zabezpieczeń i znaleźć odstępstwa.
| Źródło wzorca | Opis |
|---|---|
| CIS Benchmarks | szczegółowe zalecenia dla wielu systemów i usług; profile poziom 1 (podstawowy) i poziom 2 (wyższe wymagania) |
| Microsoft Security Baselines / Security Compliance Toolkit | zalecane ustawienia GPO dla Windows oraz narzędzia do porównania (Policy Analyzer, LGPO) |
| DISA STIG | wytyczne stosowane m.in. w środowiskach wojskowych |
| Narzędzie | System | Zastosowanie |
|---|---|---|
| Lynis | Linux | audyt konfiguracji i podatności, wynik ogólny „hardening index” |
| OpenSCAP | Linux | sprawdzanie zgodności z profilami (np. CIS) i raport |
| Microsoft Security Compliance Toolkit | Windows | porównanie z bazami bezpieczeństwa Microsoft |
sudo lynis audit system
sudo oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis \
--report raport.html /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
Proces utwardzania
- zmierz stan wyjściowy (audyt), zastosuj zmiany w sposób kontrolowany, zmierz ponownie,
- każdą zmianę testuj (wpływ na stabilność i działanie usług) i dokumentuj,
- przed zmianami zrób kopię konfiguracji,
- nie stosuj ślepo wszystkich zaleceń: oceń je w kontekście zadań systemu.
Do czego służy Lynis?
Pokaż przykładową odpowiedź
Do audytu konfiguracji i bezpieczeństwa systemów Linux: wskazuje ustawienia do poprawy i podaje ogólny wskaźnik utwardzenia.
Dlaczego po zastosowaniu zaleceń benchmarku wykonuje się ponowny audyt?
Pokaż przykładową odpowiedź
Aby potwierdzić, że zmiany zostały wprowadzone poprawnie, i ocenić poprawę wyniku oraz upewnić się, że nie spowodowały nowych problemów.
Zadanie praktyczne
Hardening challenge: system Linux i Windows
Zadanie
Przygotuj dwa świeżo zainstalowane systemy (Linux i Windows) i doprowadź je do określonego poziomu zabezpieczeń.
Założenia
- Wykonaj audyt wyjściowy: Lynis (Linux) i przegląd ustawień zasad lokalnych oraz Defendera (Windows). Zapisz wyniki.
- Linux: skonfiguruj SSH (bez roota, bez hasła), ustaw
sysctl, ogranicz uprawnienia kluczowych plików, usuń zbędne pakiety i usługi. - Windows: skonfiguruj zasady haseł i blokady konta, wyłącz konto Gość, włącz AppLocker w trybie inspekcji, wyłącz SMBv1 i ogranicz telemetrię.
- Przed zmianą ustawień rejestru wykonaj kopię odpowiednich gałęzi.
- Wykonaj audyt końcowy i porównaj wyniki. Napisz raport (1–2 strony): co zmieniono, jaki jest efekt, jakie ryzyka pozostały.
Ocenie podlegać będzie
- zakres i poprawność wprowadzonych zmian,
- kopie i kontrola zmian,
- porównanie wyników audytów,
- trafna ocena ryzyk szczątkowych,
- kompletność dokumentacji.
Wskazówki
- Zmiany wprowadzaj stopniowo i sprawdzaj działanie systemu po każdej.
- Przed zmianami w SSH utrzymaj otwarte drugie połączenie, aby się nie zablokować.
- Skorzystaj z lekcji 23–27.
Część F
Bezpieczeństwo hosta, audyt i ochrona przed malware
Zapory hosta, monitorowanie procesów i połączeń, dzienniki i audyt, ochrona przed złośliwym oprogramowaniem, reverse shell i ataki DoS.
Lekcja 28 · Część F
Zapora Windows Defender Firewall
Zapora hosta filtruje ruch na poziomie pojedynczego komputera. W Windows działa w trzech profilach: domenowym, prywatnym i publicznym (stosowanym w sieciach niezaufanych). Reguły dotyczą ruchu przychodzącego i wychodzącego; domyślnie ruch przychodzący jest blokowany, a wychodzący dozwolony.
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True -DefaultInboundAction Block
Set-NetFirewallProfile -Profile Public -LogBlocked True -LogFileName "%systemroot%\system32\LogFiles\Firewall\pfirewall.log"
New-NetFirewallRule -DisplayName "Zablokuj Telnet" -Direction Inbound -Protocol TCP -LocalPort 23 -Action Block
New-NetFirewallRule -DisplayName "RDP z sieci admin" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.10.0/24 -Action Allow
Get-NetFirewallRule -Enabled True -Direction Inbound | Select-Object DisplayName, Action | Sort-Object DisplayName
Test-NetConnection -ComputerName 192.168.10.20 -Port 3389
- ruch wychodzący też można ograniczać (np. blokować połączenia programów, które nie powinny łączyć się z internetem),
- reguły ogranicz do potrzebnych adresów i portów,
- włącz logowanie zablokowanych połączeń,
- regularnie przeglądaj reguły i usuwaj nieużywane.
Jak w PowerShell zablokujesz przychodzące połączenia na port 23?
Pokaż przykładową odpowiedź
New-NetFirewallRule -DisplayName "Zablokuj Telnet" -Direction Inbound -Protocol TCP -LocalPort 23 -Action Block.
Po co istnieją trzy profile zapory?
Pokaż przykładową odpowiedź
Aby stosować różne zasady zależnie od zaufania do sieci: surowsze w sieci publicznej (kawiarnia, hotel), łagodniejsze w sieci domenowej firmy.
Lekcja 29 · Część F
Zapora w Linux: ufw, nftables i ochrona przed nadużyciami
W Linux jądro filtruje pakiety (netfilter), a administrator zarządza regułami przez narzędzia: iptables, nowszy nftables lub proste nakładki ufw (Ubuntu) i firewalld (RHEL, z strefami zaufania).
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 192.168.10.0/24 to any port 22 proto tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
ip saddr 192.168.10.0/24 tcp dport 22 accept
tcp dport 443 accept
}
}
sudo nft -f /etc/nftables.conf
sudo nft list ruleset
# test z innej maszyny w laboratorium
nc -zv 192.168.10.20 22
nc -zv 192.168.10.20 3306
Ochrona przed nadużyciami
- fail2ban blokuje adresy po wielu nieudanych logowaniach (na podstawie logów),
- ograniczanie liczby nowych połączeń na zaporze (rate limiting),
- blokowanie wszystkich nieużywanych portów i usług nasłuchujących na wszystkich interfejsach.
Zmieniając zaporę na zdalnym serwerze, najpierw dodaj regułę dla swojego połączenia SSH, a dopiero potem włączaj odmowę domyślną. Utrzymaj drugą sesję otwartą do czasu sprawdzenia.
Co oznacza policy drop w łańcuchu input w nftables?
Pokaż przykładową odpowiedź
Że pakiety przychodzące, które nie pasują do żadnej reguły zezwalającej, są odrzucane (domyślna odmowa).
Jak sprawdzisz skuteczność reguł zapory z innego komputera?
Pokaż przykładową odpowiedź
Próbą połączenia z zablokowanym i dozwolonym portem (np. nc -zv host port lub Test-NetConnection) i porównaniem wyniku z założeniami polityki.
Lekcja 30 · Część F
Monitorowanie połączeń i procesów, wykrywanie anomalii
# Linux
ss -tunap | head -30
sudo lsof -i -P -n | grep ESTABLISHED
ps aux --sort=-%cpu | head
top -b -n1 | head -15
# Windows PowerShell
Get-NetTCPConnection -State Established | Select-Object LocalPort, RemoteAddress, RemotePort, OwningProcess
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU, Path
Get-AuthenticodeSignature (Get-Process -Id 4242).Path
| Podejrzana obserwacja | Co może oznaczać | Co sprawdzić |
|---|---|---|
proces o nazwie podobnej do systemowej (np. svch0st.exe) | złośliwy program udający systemowy | ścieżka pliku, podpis wydawcy, rodzic procesu |
| proces uruchomiony z katalogu tymczasowego lub Pobrane | dropper, malware | ścieżka, skrót w serwisie reputacji, czas uruchomienia |
| wysokie, ciągłe użycie CPU przez nieznany proces | koparka kryptowalut | nazwa procesu, połączenia sieciowe |
| nasłuch na nietypowym porcie | backdoor lub usługa zdalnego dostępu | ss -tulpn, który proces i konto |
| połączenia wychodzące do nieznanych adresów lub w nocy | komunikacja z serwerem atakującego (C2), wyciek danych | adres w serwisach reputacji, powiązany proces |
| proces potomny nietypowego rodzica (np. edytor tekstu uruchamia powłokę) | wykorzystanie makr lub exploita | drzewo procesów, dziennik zdarzeń |
Dokładniejszą telemetrię procesów i połączeń zapewnia Sysmon (Sysinternals): zdarzenie 1 rejestruje utworzenie procesu, a zdarzenie 3 połączenie sieciowe.
W Menedżerze zadań widzisz proces svchost.exe uruchomiony z folderu Pobrane. Co z tego wynika?
Pokaż przykładową odpowiedź
Prawdziwy svchost.exe działa z katalogu System32. Plik w folderze Pobrane to bardzo prawdopodobnie złośliwe oprogramowanie udające proces systemowy. Sprawdzam podpis i skrót pliku i izoluję system.
Jak w Linux sprawdzisz, który proces utrzymuje połączenia z internetem?
Pokaż przykładową odpowiedź
ss -tunap lub lsof -i -P -n pokazuje połączenia wraz z nazwą i PID procesu.
Lekcja 31 · Część F
Logi i audyt zdarzeń
Dzienniki zdarzeń rejestrują działania w systemie: logowania, zmiany kont, uruchomienia usług, błędy. Umożliwiają wykrywanie incydentów, ustalanie przyczyn (rozliczalność) i dowodzenie.
| Zdarzenie Windows (dziennik Zabezpieczeń) | ID |
|---|---|
| Udane logowanie | 4624 |
| Nieudane logowanie | 4625 |
| Użycie jawnych poświadczeń do logowania | 4648 |
| Przydzielono uprawnienia specjalne | 4672 |
| Utworzono proces (przy włączonym audycie) | 4688 |
| Utworzono konto użytkownika | 4720 |
| Dodano użytkownika do grupy lokalnej | 4732 |
| Wyczyszczono dziennik zdarzeń | 1102 |
auditpol /get /category:*
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625,4720,4732} -MaxEvents 30
sudo journalctl -u ssh --since "1 hour ago"
sudo tail -f /var/log/auth.log
# auditd: obserwuj zmiany w /etc/passwd i /etc/sudoers
sudo auditctl -w /etc/passwd -p wa -k zmiany_kont
sudo auditctl -w /etc/sudoers -p wa -k zmiany_sudo
sudo ausearch -k zmiany_kont
# trwale: pliki w /etc/audit/rules.d/
Rotacja i centralizacja logów
- rotacja (
logrotatew Linux) zapobiega zapełnieniu dysku i archiwizuje stare logi, - centralizacja (np. przekazywanie do serwera przez
rsysloglub agent SIEM, w Windows przekazywanie zdarzeń) chroni logi przed usunięciem przez włamywacza i ułatwia korelację, - synchronizuj czas na wszystkich systemach, aby logi dało się porównywać.
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head
Co oznacza wiele zdarzeń 4625 z jednego adresu w krótkim czasie, po których następuje 4624?
Pokaż przykładową odpowiedź
Prawdopodobny atak siłowy lub słownikowy na konto, zakończony powodzeniem (udane logowanie po wielu próbach). Wymaga natychmiastowej reakcji: blokady, zmiany hasła, analizy działań konta.
Po co przekazuje się logi na osobny serwer?
Pokaż przykładową odpowiedź
Aby atakujący, który przejmie system, nie mógł usunąć lub zmienić śladów, oraz aby ułatwić korelację zdarzeń z wielu systemów.
Lekcja 32 · Część F
Ochrona przed szkodliwym oprogramowaniem i analiza incydentu
| Zabezpieczenie | Opis |
|---|---|
| Antywirus / EDR | Microsoft Defender (Windows), ClamAV (Linux), rozwiązania EDR analizujące zachowanie programów |
| Aktualizacje sygnatur i systemu | Update-MpSignature, freshclam, aktualizacje poprawek |
| Białe listy aplikacji | AppLocker i WDAC (Windows), AppArmor/SELinux, montowanie z noexec (Linux) |
| Najmniejsze uprawnienia | ograniczają skutki uruchomienia malware |
| Kopie zapasowe | odtworzenie po ransomware |
# Windows
Get-MpComputerStatus
Update-MpSignature
Start-MpScan -ScanType QuickScan
# Linux (ClamAV)
sudo freshclam
sudo clamscan -r --infected /home
Jak działa typowe złośliwe oprogramowanie
- dostarczenie: załącznik, pobrany plik, exploit,
- uruchomienie i utrwalenie: wpisy autostartu, zadania zaplanowane, usługi,
- komunikacja z serwerem atakującego (C2) i pobieranie kolejnych modułów,
- działanie końcowe: kradzież, szyfrowanie, rozprzestrzenianie.
Reverse shell: pojęcie i wykrywanie
W ataku typu reverse shell to zainfekowany komputer sam nawiązuje połączenie wychodzące do atakującego i oddaje mu powłokę poleceń. Zapory często zezwalają na ruch wychodzący, dlatego taki sposób omija ochronę. Ćwiczenie symulujące ten atak wykonuje się wyłącznie w izolowanym laboratorium, zgodnie ze scenariuszem nauczyciela.
| Wskaźnik | Gdzie szukać |
|---|---|
proces powłoki (bash, sh, powershell, cmd) z aktywnym połączeniem do obcego adresu | ss -tnp, Get-NetTCPConnection + OwningProcess |
| nietypowy proces potomny usługi lub aplikacji | drzewo procesów, Sysmon (zdarzenie 1) |
| długotrwałe połączenie wychodzące na nietypowy port | monitor połączeń, logi zapory |
| zmiany w autostarcie i zadaniach | Autoruns, crontab -l, schtasks /query |
Reakcja: odizoluj system od sieci, zachowaj dowody (zrzut pamięci, logi), zidentyfikuj proces i sposób wejścia, usuń mechanizmy utrwalenia, zmień narażone hasła i klucze, odtwórz ze znanej dobrej kopii, udokumentuj i zgłoś incydent.
Dlaczego reverse shell trudno zatrzymać zaporą, która blokuje tylko ruch przychodzący?
Pokaż przykładową odpowiedź
Połączenie inicjuje zainfekowany komputer (ruch wychodzący), a taki ruch zwykle jest dozwolony. Skuteczna jest kontrola ruchu wychodzącego i monitorowanie nietypowych połączeń procesów powłoki.
Jaki jest pierwszy krok po stwierdzeniu aktywnego reverse shella na serwerze?
Pokaż przykładową odpowiedź
Odizolowanie systemu od sieci (z zachowaniem dowodów), aby przerwać komunikację atakującego i ograniczyć szkody, a następnie analiza i usunięcie przyczyny.
Lekcja 33 · Część F
Ochrona hosta przed atakami typu Denial of Service
Atak DoS na host ma na celu wyczerpanie jego zasobów: łączy sieciowych, pamięci, procesora, miejsca na dysku lub liczby procesów. Skutkiem jest utrata dostępności usług.
| Zagrożenie | Działanie | Ochrona |
|---|---|---|
| SYN flood | zalew segmentami SYN, tablica półotwartych połączeń się zapełnia | SYN cookies, limity połączeń, zapora |
| Wyczerpanie procesów (fork bomb) | program tworzy procesy bez końca | limity procesów (ulimit, LimitNPROC) |
| Zapełnienie dysku | rosnące logi lub pliki | kwoty, rotacja logów, osobne partycje |
| Wyczerpanie pamięci | proces zajmuje całą pamięć | limity zasobów (cgroups), monitoring |
| Brute-force na usługi | liczne próby logowania | fail2ban, blokada konta, MFA |
# SYN cookies
sudo sysctl -w net.ipv4.tcp_syncookies=1
# limit procesów i plików dla użytkownika (/etc/security/limits.conf)
anna hard nproc 200
anna hard nofile 4096
# w jednostce systemd
[Service]
LimitNPROC=200
MemoryMax=512M
# ograniczenie liczby nowych połączeń SSH na zaporze
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 10/min --limit-burst 20 -j ACCEPT
W Windows ochronę zapewniają zapora, ograniczenia zasobów dla usług, aktualizacje oraz monitorowanie liczników wydajności (procesor, pamięć, dysk, połączenia). Dla ataków wolumetrycznych potrzebne są też zabezpieczenia na poziomie sieci i operatora.
Czym jest SYN flood i jak się przed nim bronić?
Pokaż przykładową odpowiedź
Atakujący wysyła ogromną liczbę segmentów SYN bez kończenia uzgodnienia, przez co tablica półotwartych połączeń serwera się zapełnia. Pomaga włączenie SYN cookies, limity połączeń i filtrowanie zaporą.
Dlaczego limitowanie liczby procesów chroni przed fork bombą?
Pokaż przykładową odpowiedź
Fork bomba tworzy procesy w nieskończoność i wyczerpuje zasoby. Limit liczby procesów dla użytkownika lub usługi zatrzymuje wzrost, zanim system przestanie odpowiadać.
Zadanie praktyczne
Zabezpieczenie hosta i analiza incydentu na podstawie logów
Zadanie
Zabezpiecz serwer Linux zaporą i przeanalizuj dziennik zdarzeń z podejrzaną aktywnością.
Fragment dziennika /var/log/auth.log do analizy:
Oct 5 03:12:44 srv sshd[2210]: Failed password for root from 203.0.113.50 port 51822 ssh2
Oct 5 03:12:46 srv sshd[2212]: Failed password for root from 203.0.113.50 port 51830 ssh2
Oct 5 03:12:48 srv sshd[2214]: Failed password for invalid user admin from 203.0.113.50 port 51836 ssh2
Oct 5 03:12:51 srv sshd[2216]: Failed password for invalid user test from 203.0.113.50 port 51842 ssh2
Oct 5 03:13:02 srv sshd[2220]: Failed password for anna from 203.0.113.50 port 51850 ssh2
Oct 5 03:13:05 srv sshd[2222]: Accepted password for anna from 203.0.113.50 port 51858 ssh2
Oct 5 03:13:40 srv sudo: anna : TTY=pts/0 ; PWD=/home/anna ; USER=root ; COMMAND=/usr/bin/useradd -m support
Oct 5 03:14:10 srv crontab[2301]: (anna) REPLACE (anna)
Założenia
- Skonfiguruj zaporę (ufw lub nftables) z domyślną odmową, dostępem SSH tylko z sieci administracyjnej i HTTPS dla wszystkich; sprawdź skuteczność reguł z drugiej maszyny.
- Przeanalizuj dostarczony fragment dziennika
auth.log: ustal, co się wydarzyło, kiedy, z jakiego adresu i jakie konto zostało skompromitowane. - Wypisz wskaźniki naruszenia (IOC) i działania atakującego po zalogowaniu (nowe konto, zmiana zadań cron).
- Zaplanuj reakcję: izolacja, zbieranie dowodów, usunięcie utrwalenia, zmiana haseł i kluczy, odtworzenie, zgłoszenie.
- Zaproponuj trzy zmiany konfiguracji, które zapobiegłyby takiemu incydentowi (np. wyłączenie logowania hasłem, fail2ban, MFA) i opisz, jak sprawdzisz ich skuteczność.
Ocenie podlegać będzie
- poprawna konfiguracja zapory i jej testy,
- trafna interpretacja logów,
- komplet wskaźników naruszenia,
- poprawny plan reakcji,
- sensowne środki zapobiegawcze.
Wskazówki
- Zwróć uwagę na kolejność zdarzeń: wiele nieudanych prób, następnie udane logowanie.
- Skorzystaj z tabeli wskaźników w lekcji 32 i poleceń z lekcji 31.
- Ćwiczenia wykonuj wyłącznie w środowisku laboratoryjnym.
Część G
Kopie zapasowe, wirtualizacja, kontenery i chmura
Planowanie kopii i odtwarzania, maszyny wirtualne i ich sieci, bezpieczeństwo kontenerów oraz bezpieczne wdrażanie Linux i kontenerów w chmurze.
Lekcja 34 · Część G
Kopie zapasowe i odtwarzanie systemów
Kopia zapasowa to zapasowy egzemplarz danych lub systemu, z którego można odtworzyć stan po awarii, błędzie lub ataku (zwłaszcza ransomware). Kopia, której odtwarzania nigdy nie sprawdzono, nie jest gwarancją.
| Rodzaj kopii | Co zapisuje | Zalety | Wady |
|---|---|---|---|
| Pełna | wszystkie wybrane dane | najprostsze odtwarzanie | najdłużej trwa, zajmuje najwięcej miejsca |
| Różnicowa | zmiany od ostatniej kopii pełnej | odtwarzanie z dwóch kopii (pełna + ostatnia różnicowa) | z czasem rośnie |
| Przyrostowa | zmiany od ostatniej dowolnej kopii | najszybsza i najmniejsza | odtwarzanie wymaga całego łańcucha kopii |
Zasada 3-2-1
- 3 kopie danych (oryginał i dwie kopie),
- na 2 różnych rodzajach nośników,
- z 1 kopią przechowywaną w innym miejscu (poza lokalizacją lub w chmurze).
- Rozszerzenie: kopia niezmienialna lub odłączona od sieci (ochrona przed ransomware) i test odtwarzania bez błędów (3-2-1-1-0).
Dwa parametry planowania: RPO (ile danych możemy stracić, czyli jak często robić kopie) i RTO (jak szybko system ma być odtworzony).
# Windows: kopia systemu na dysk E:
wbadmin start backup -backupTarget:E: -include:C: -allCritical -quiet
# kopiowanie folderu (UWAGA: /MIR usuwa w celu pliki, których nie ma w źródle)
robocopy C:\Dane E:\Kopia\Dane /MIR /Z /R:2 /W:5 /LOG:E:\Kopia\robocopy.log
# Linux: rsync z zachowaniem uprawnień, tar z kompresją
sudo rsync -aAXv --delete /home/ /mnt/kopia/home/
sudo tar -czpf /mnt/kopia/etc-$(date +%F).tar.gz /etc
sha256sum /home/anna/dokument.odt /mnt/kopia/home/anna/dokument.odt
diff -r /home/anna /mnt/kopia/home/anna && echo "Zgodne"
Wyjaśnij zasadę 3-2-1.
Pokaż przykładową odpowiedź
Trzy kopie danych, na dwóch różnych typach nośników, z jedną kopią przechowywaną poza miejscem głównym (inna lokalizacja lub chmura). Zmniejsza to ryzyko utraty wszystkich kopii jednocześnie.
Dlaczego kopia przyrostowa wymaga całego łańcucha kopii do odtworzenia?
Pokaż przykładową odpowiedź
Każda kopia przyrostowa zawiera tylko zmiany od poprzedniej, więc odtworzenie wymaga kopii pełnej i wszystkich kolejnych przyrostowych w prawidłowej kolejności.
Lekcja 35 · Część G
Wirtualizacja: maszyny wirtualne, migawki i sieci
Wirtualizacja pozwala uruchomić wiele odizolowanych systemów na jednym sprzęcie. Hiperwizor dzieli zasoby (procesor, pamięć, dysk, sieć) między maszyny wirtualne.
| Typ hiperwizora | Działanie | Przykłady |
|---|---|---|
| Typ 1 (bare-metal) | działa bezpośrednio na sprzęcie, wydajny, stosowany w serwerowniach | Hyper-V, VMware ESXi, KVM, Xen |
| Typ 2 (hostowany) | działa jako program w systemie gospodarza, wygodny do nauki i testów | VirtualBox, VMware Workstation |
Migawki a kopie zapasowe
Migawka (snapshot) zapisuje stan maszyny w danym momencie i pozwala szybko do niego wrócić (ułatwia testy i aktualizacje). To nie jest kopia zapasowa: zależy od tego samego dysku, więc jej utrata lub uszkodzenie oznacza utratę danych. Długi łańcuch migawek obniża wydajność.
| Tryb sieci | Dostęp do internetu | Komunikacja z gospodarzem | Zastosowanie |
|---|---|---|---|
| NAT | tak | ograniczona | podstawowy dostęp maszyny do internetu |
| Bridged (most) | tak | tak, jak zwykły host w sieci | usługi dostępne w sieci lokalnej |
| Host-only | nie | tak | izolowane laboratorium z dostępem z gospodarza |
| Internal (wewnętrzna) | nie | nie | całkowicie odizolowane laboratorium, np. do testów malware |
- do ćwiczeń ofensywnych i analizy malware używaj sieci Host-only lub Internal, nigdy sieci Bridged,
- optymalizuj zasoby: przydziel tylko potrzebną pamięć i liczbę procesorów, dyski thin provisioning,
- migracja między platformami: eksport do formatu OVA/OVF lub konwersja dysków (
qemu-img convert -O qcow2 dysk.vmdk dysk.qcow2), a po migracji sprawdź działanie usług, - aktualizuj hiperwizor i dodatki gościa, ogranicz funkcje współdzielenia schowka i folderów, szyfruj maszyny z danymi wrażliwymi.
Czym różni się migawka maszyny wirtualnej od kopii zapasowej?
Pokaż przykładową odpowiedź
Migawka jest zapisana na tym samym nośniku i szybko przywraca stan maszyny, ale nie chroni przed awarią dysku ani utratą danych. Kopia zapasowa jest niezależną kopią przechowywaną osobno.
Którego trybu sieci użyjesz do bezpiecznej analizy podejrzanego programu?
Pokaż przykładową odpowiedź
Sieci wewnętrznej (Internal) lub Host-only, bez dostępu do internetu i sieci lokalnej, aby malware nie mogło się rozprzestrzenić.
Lekcja 36 · Część G
Docker i bezpieczeństwo kontenerów
Kontener to odizolowany proces z własnym widokiem systemu plików, sieci i procesów, współdzielący jądro systemu gospodarza. Jest lżejszy niż maszyna wirtualna, ale izolacja jest słabsza: błąd w jądrze lub nadmierne uprawnienia kontenera mogą zagrozić hostowi. Obraz to niezmienny szablon, z którego uruchamia się kontenery.
docker pull nginx:1.27
docker run -d --name www -p 127.0.0.1:8080:80 nginx:1.27
docker ps
docker logs www
docker stop www && docker rm www
docker images
docker rmi nginx:1.27
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN useradd --system --no-create-home appuser
USER appuser
EXPOSE 8000
CMD ["python", "app.py"]
Zasady bezpieczeństwa kontenerów
- uruchamiaj proces jako użytkownik nie-root (
USER), - używaj minimalnych obrazów bazowych (slim, alpine) i przypinaj wersje (nie
latest), - nie używaj
--privilegedi nie montuj/var/run/docker.sockdo kontenera, - ogranicz możliwości:
--cap-drop ALL,--read-only, limity--memoryi--cpus, - otwieraj tylko wymagane porty i wiąż je z konkretnym interfejsem (
127.0.0.1:8080:80), - nie zapisuj sekretów w obrazie ani w zmiennych w Dockerfile; skanuj obrazy narzędziem (np. Trivy) i aktualizuj.
Czym różni się kontener od maszyny wirtualnej?
Pokaż przykładową odpowiedź
Kontener współdzieli jądro systemu gospodarza i izoluje tylko procesy, więc jest lżejszy i szybszy, ale ma słabszą izolację. Maszyna wirtualna ma własny system operacyjny i jest silniej odizolowana.
Dlaczego nie należy uruchamiać kontenera z opcją --privileged ani montować gniazda Dockera?
Pokaż przykładową odpowiedź
Dają kontenerowi niemal pełną kontrolę nad hostem. Atakujący, który przejmie taki kontener, może przejąć cały system gospodarza.
Lekcja 37 · Część G
Chmura obliczeniowa i model współdzielonej odpowiedzialności
Chmura obliczeniowa to model udostępniania zasobów informatycznych przez sieć na żądanie: samoobsługa, szeroki dostęp sieciowy, współdzielenie zasobów, szybka elastyczność i pomiar zużycia (płatność za użycie).
| Model usługi | Dostawca zarządza | Klient zarządza | Przykład |
|---|---|---|---|
| IaaS | sprzęt, sieć, wirtualizacja | system operacyjny, aplikacje, dane, konfiguracja | maszyna wirtualna w chmurze |
| PaaS | także system, środowisko uruchomieniowe | aplikacja i dane | platforma do uruchamiania aplikacji |
| SaaS | prawie wszystko, w tym aplikacja | dane, konta, konfiguracja dostępu | poczta i pakiet biurowy online |
| Model wdrożenia | Opis |
|---|---|
| Publiczna | zasoby dostawcy współdzielone przez wielu klientów |
| Prywatna | infrastruktura wyłącznie dla jednej organizacji (własna lub dzierżawiona) |
| Hybrydowa | połączenie chmury prywatnej i publicznej |
Dostawca odpowiada za bezpieczeństwo chmury (infrastruktura, sprzęt), a klient za bezpieczeństwo w chmurze: dane, konta i uprawnienia, konfigurację, aplikacje. Im bliżej IaaS, tym więcej odpowiedzialności po stronie klienta. Dane i tożsamości zawsze należą do klienta.
Typowe zagrożenia w chmurze
- błędna konfiguracja (publicznie dostępne magazyny danych, otwarte porty),
- nadmierne uprawnienia kont i ról, brak MFA,
- wyciekłe klucze dostępu w kodzie lub repozytoriach,
- brak monitorowania i dzienników audytu.
Kto odpowiada za łatanie systemu operacyjnego maszyny wirtualnej w modelu IaaS?
Pokaż przykładową odpowiedź
Klient. Dostawca zarządza infrastrukturą i wirtualizacją, a system gościa, aplikacje i konfiguracja należą do klienta.
Podaj jedną typową przyczynę wycieków danych z chmury.
Pokaż przykładową odpowiedź
Błędna konfiguracja, np. magazyn danych ustawiony jako publicznie dostępny, albo zbyt szerokie uprawnienia i wyciek kluczy dostępu.
Lekcja 38 · Część G
Bezpieczne wdrażanie systemu Linux i kontenerów w chmurze
Wdrażając instancję Linux lub kontener w chmurze, stosuje się te same zasady co lokalnie, uzupełnione o mechanizmy dostawcy. Poniższa lista jest niezależna od konkretnej platformy.
| Obszar | Dobra praktyka |
|---|---|
| Obraz | utwardzony, aktualny obraz (wzorzec CIS lub własny, zweryfikowany); ograniczony zestaw pakietów |
| Dostęp administracyjny | klucze SSH, wyłączone logowanie hasłem i dostęp roota; najlepiej bastion lub usługa sesji zamiast otwartego SSH do całego internetu |
| Zapora chmurowa | grupy zabezpieczeń i listy ACL sieci z zasadą domyślnej odmowy; otwarte tylko potrzebne porty i adresy |
| Tożsamość usług | role tożsamości przypisane instancji lub kontenerowi zamiast statycznych kluczy dostępu zapisanych na dysku lub w kodzie |
| Sekrety | usługa zarządzania sekretami zamiast haseł w plikach i zmiennych |
| Dane | szyfrowanie dysków i magazynów w spoczynku, szyfrowanie w ruchu (TLS) |
| Kontenery | izolacja sieciowa, prywatny rejestr obrazów i skanowanie obrazów pod kątem podatności, brak uprawnień roota |
| Monitorowanie | dziennik audytu działań na koncie chmurowym, logi systemowe wysyłane poza instancję, alerty |
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sshd -t && sudo systemctl reload ssh
Wyciek klucza dostępu zapisanego w repozytorium to jedna z najczęstszych przyczyn przejęcia kont w chmurze. Używaj ról i krótkotrwałych poświadczeń, włącz skanowanie repozytoriów pod kątem sekretów i MFA dla kont administratorów.
Dlaczego instancja w chmurze powinna używać roli tożsamości zamiast statycznego klucza dostępu?
Pokaż przykładową odpowiedź
Rola dostarcza krótkotrwałe, automatycznie odnawiane poświadczenia, więc nie ma klucza do wykradzenia z dysku czy repozytorium, a uprawnienia można ograniczyć do minimum.
Co oznacza zasada Default Deny w chmurowej zaporze?
Pokaż przykładową odpowiedź
Blokowany jest cały ruch, który nie został jawnie dozwolony regułą. Dzięki temu otwarte są tylko potrzebne porty i adresy.
Zadanie praktyczne
Bezpieczne środowisko: kopia, maszyna wirtualna, kontener i chmura
Zadanie
Przygotuj plan i prototyp bezpiecznego środowiska dla małej aplikacji WWW.
Założenia
- Przygotuj maszynę wirtualną Linux w sieci Host-only, wykonaj migawkę i zapisz różnicę między migawką a kopią zapasową.
- Zaplanuj kopie zapasowe według zasady 3-2-1: wskaż rodzaje kopii, częstotliwość (RPO) i szacowany czas odtworzenia (RTO). Wykonaj kopię katalogu i sprawdź odtworzenie (
diff -rlub skróty). - Przygotuj
Dockerfileprostej aplikacji z użytkownikiem nie-root i minimalnym obrazem; uruchom kontener z ograniczonymi możliwościami i jednym portem. - Opisz wdrożenie tej aplikacji w chmurze: modele usługi i odpowiedzialności, zasady zapory, tożsamość usługi, sekrety i szyfrowanie.
- Wskaż trzy największe ryzyka całego rozwiązania i środki ograniczające.
Ocenie podlegać będzie
- poprawny plan kopii zapasowych i test odtwarzania,
- poprawna konfiguracja sieci wirtualnej,
- bezpieczny Dockerfile i uruchomienie kontenera,
- trafny opis zabezpieczeń w chmurze,
- ocena ryzyka.
Wskazówki
- Skorzystaj z zasad w lekcjach 34–38.
- Dockerfile i polecenia uruchamiaj wyłącznie w środowisku laboratoryjnym.
- Do kopii i odtworzenia użyj niewielkiego katalogu testowego.