Karol Szafrański

Twierdza Linux:

bezpieczeństwo dla dociekliwych

Naucz się, jak zamienić swój system w Twierdzę Linux

O książce

Jako nie-programista skupiam się głównie (choć nie tylko) na stronie operacyjno-konfiguracyjnej przedstawianych zagadnień, wyjaśniam, „jak to działa” i „co zrobić, żeby działało bezpiecznie”.

ze Wstępu

Temat bezpieczeństwa Linuksa nie został wyczerpany w 2. tomie Wprowadzenia do bezpieczeństwa IT, dlatego w Twierdzy Linux Autor omawia go szeroko i bez skrótów.

Pisze w taki sposób, że zarówno początkujący, jak i zaawansowani administratorzy, programiści, architekci systemowi i bezpiecznicy znajdą przydatne informacje.

Szczegółowo omawia takie zagadnienia jak: ograniczenie dostępu i uprawnień, utwardzanie konfiguracji jądra i usług, ochrona warstwy sieciowej, szyfrowanie dysków, SELinux, eBPF, logowanie zdarzeń czy wykrywanie aktywności intruzów.

Nie ucieka też od bardziej ogólnych kwestii: zaczyna od pokazania krajobrazu zagrożeń, na jakie narażony jest linuksowy serwer, laptop i urządzenie IoT, zachęca do systemowego podejścia do bezpieczeństwa w domu i firmie, podpowiada, jak reagować na incydenty i podkreśla znaczenie „aspektu ludzkiego” w zabezpieczaniu systemów.

Lektura książki wymaga elementarnej znajomości Linuksa (instalacja, poruszanie się po linii poleceń, edycja plików konfiguracyjnych itp.), ale poszczególne mechanizmy bezpieczeństwa systemu zostały omówione w przystępny sposób, co czyni ją przyjazną także dla mniej doświadczonych Czytelników. Specjalistyczna znajomość zagadnień bezpieczeństwa IT czy wiedza programistyczna nie są konieczne do zrozumienia omawianych kwestii.

Układ każdego z 14 rozdziałów pozwala na spokojne zapoznanie się z prezentowanym tematem. Zamieszczone w książce checklisty nie tylko podsumowują rozdziały, ale przede wszystkim pomagają w przeprowadzeniu szybkiej oceny stanu zabezpieczeń własnego systemu.

Planowana objętość to ~600 stron, druk w kolorze

Early access

Zapraszamy do współpracy przy redagowaniu książki nt. bezpieczeństwa systemu Linux. Każdy, kto włączy się w proces redakcyjny, zgłaszając uwagi merytoryczne (nie literówki i błędy stylistyczne), otrzyma:

Early Access

  • dostęp do wczesnej wersji rozdziałów książki (PDF); udostępnianych (po 2–3 rozdziały tygodniowo), począwszy od 7 października 2025
  • wysyłka wydrukowanej wersji książki tydzień przed startem wysyłki dla pozostałych osób
  • dostęp do wydrukowanej książki w wersji elektronicznej (PDF) dwa miesiące po jej wydaniu (czyli dwa miesiące przed oficjalną publikacją wersji elektronicznej książki)
  • dostęp do społeczności wspierającej książkę (serwer Discord) oraz wymieniającej się wiedzą nt. bezpieczeństwa Linux (dostęp do kanału na serwerze Discord wyślemy najpóźniej do 7.10.2025)
  • dostęp do cotygodniowych informacji o postępach prac redakcyjnych i wydawniczych (na kanale książki na serwerze Discord)
  • udział w wyborze okładki
  • dostęp do webinaru na żywo prezentującego pracę nad książką „od kuchni”
Early Access
Early Access Supporter Pack

to, co dostęp Early Access, oraz:
  • zamieszczenie nicka (lub imienia/nazwiska*) w wersji papierowej książki na specjalnej stronie z podziękowaniami**
  • egzemplarz książki (papierowej) z podpisem Autora
  • *) Zastrzegamy możliwość redakcji i niepublikowania tych danych w przypadku kontrowersyjnych, obraźliwych, politycznych, itp. nazw.
  • **) Nazwiska/nicki zostaną zamieszczone w książce w kolejności alfabetycznej.
  • Jeśli chciałbyś wesprzeć książkę jako firma (wydrukowanie nazwy firmy w podziękowaniach) – skontaktuj się z nami: wydawnictwo@securitum.pl
Early Access
Early Access MAX Supporter Pack

to, co dostęp Early Access, oraz:
  • dostęp do nagrania szkolenia: Wprowadzenie do bezpieczeństwa Linux (kurs wideo, quiz i certyfikat) prowadzonego przez Autora książki, Karola Szafrańskiego (czas: 8 godzin). Dostęp do nagrania zostanie wysłany do kilku dni roboczych od dnia zakupu.
Early Access

Spis treści

Co to jest [GNU/]Linux?
Bezpieczeństwo systemu – co to właściwie znaczy i po co to robić
Atak: przed czym i przed kim się bronimy?
Reguły postępowania w zabezpieczaniu systemów, modelowanie zagrożeń
Bezpieczeństwo – ciągły proces, nie jednorazowe działanie
Model F/OSS a bezpieczeństwo
Po co te wszystkie aktualizacje?
Okres wsparcia dystrybucji
Wersja dystrybucji a wersja jądra
Samodzielna kompilacja jądra – czy warto?
Aktualizowanie jądra w locie – livepatching
Różne źródła programów i ich wpływ na bezpieczeństwo
Pakiety .rpm/.deb i mechanizm repozytoriów APT/RPM
DNF i APT – szczegóły bezpiecznej konfiguracji
Którym repozytoriom ufać
Jak przeanalizować zawartość pliku .deb lub .rpm
Aktualizacje automatyczne
Mechanizmy Snap i Flatpak
Dystrybucje typu niezmiennego (immutable)
Deklaratywne (functional) menedżery pakietów: Nix i Guix
Bezpieczeństwo oprogramowania z innych źródeł
AppImage, binarne instalatory, skrypty instalacyjne
Programy kompilowane ze źródeł
Menedżery specyficzne dla języków programowania (pip, npm...)
Docker i inne mechanizmy konteneryzacji
Serwery aplikacyjne Javy, Pythona i innych oraz pozostałe aplikacje serwerowe
Wtyczki, dodatki, rozszerzenia
Malware w oficjalnych repozytoriach i pakietach?
Czego należy się pozbyć z systemu
Ataki na łańcuch dostaw (supply chain attacks)
Checklista
Linuksowy model uprawnień – przypomnienie
Uprawnienia w praktyce: przykłady i problemy
ACL: listy kontroli dostępu
Użytkownicy i grupy
Zarządzanie kontami: kwestie praktyczne
Najczęstsze błędy i problemy
Grupy dające podwyższone uprawnienia
Konta usług/systemowe
Sudo i su
Pułapki bezpieczeństwa w konfiguracji sudo
Inne narzędzia służące do wykonywania poleceń z podniesionymi uprawnieniami
Atrybuty
Capabilities
Pluggable Authentication Modules (PAM)
Wzmacnianie systemowej polityki haseł
fapolicyd – mechanizm application whitelisting
Checklista
Czym jest SSH
Protokół transportowy i protokoły wewnętrzne
Implementacje serwera
Implementacje klienta
Konfiguracja i zabezpieczenie serwera
Port 22 czy inny?
Protokoły szyfrowania i klucze serwera
Zaufanie do klucza serwera i rekordy DNS SSHFP
Ograniczanie uprawnień kont i grup
Ochrona przed atakami DDoS i brute-force
Tunele (forwardowanie połączeń)
Inne istotne ustawienia serwera
SSH po stronie klienta
Konfiguracja klienta OpenSSH
Logowanie kluczami, dodatkowe możliwości i ograniczenia
Serwery pośrednie, agent SSH i jak uczynić taki model działania bezpiecznym
PuTTY i WinSCP a klucze i agent
MFA i klucze sprzętowe
Checklista
Bezpieczeństwo pracy w powłoce
Wygoda i ergonomia środowiska a bezpieczeństwo
Pisanie bezpiecznych skryptów powłoki
Najczęstsze błędy i problemy
Walidacja wejścia
Czy hardening skryptów powłoki jest możliwy
Jak testować/debugować skrypty
Co może pójść nie tak przy pracy w środowisku graficznym
Linux dla całej rodziny
Czy mój system mnie śledzi?
Co i dlaczego działa w systemie?
Systemd i jego jednostki (unity) konfiguracyjne w szczegółach
Bezpieczna konfiguracja usług – zasady ogólne
Checklista
Porady dla poszczególnych typów usług
NTP
SMTP
Cron / atd / timery systemd
Serwery WWW (Apache, nginx, PHP, load balancery i reverse proxy)
Java i jej serwery aplikacyjne
Bazy danych (MySQL/MariaDB, PostgreSQL, NoSQL)
Wirtualizacja
Konteneryzacja
Systemy kopii zapasowych i monitoringu
Usługi zarządzania zdalnego
FTP
rsyncd
Network File System (NFS) i usługi towarzyszące
Usługi druku – CUPS i LPD
inetd i xinetd, proces init (systemd) nasłuchujący na TCP
Środowisko graficzne
Hardening usług z poziomu systemd: cgroups, namespaces i innych
Jądro a przestrzeń użytkownika
Konfiguracja i zabezpieczenia ładowania i konfiguracji modułów
Ustawienia sysctl istotne dla bezpieczeństwa
Moduły zabezpieczeń LSM (Linux Security Modules)
Yama: ograniczenie debugowania (ptrace)
Landlock
Kernel lockdown mode
eBPF: extended Berkeley Packet Filter
Inspekcja działających programów eBPF
Prosty przykład zabezpieczania istniejących usług
Mechanizmy izolacji aplikacji (sandboxing)
Control groups (cgroups)
Przestrzenie nazw (namespaces)
Secure computing (seccomp i seccomp-bpf)
Historycznie: chroot
Jak tego użyć, czyli izolacja aplikacji w praktyce
Mechanizm ulimit
Słowo o tworzeniu i pakowaniu aplikacji
Ochrona przed zapełnieniem systemu plików
Ukrywanie procesów i ochrona systemu plików /proc
Utwardzanie jądra
LKRG: Linux Kernel Runtime Guard
Checklista
SELinux
Koncepcja
Tryby działania i podstawowe polityki
Etykiety (konteksty) zasobów
Źródło, cel, domena
Przełączniki (booleans)
W praktyce: konfiguracja i rozwiązywanie typowych problemów na przykładach
Dostosowanie systemowej polityki do potrzeb
Selektywne luzowanie restrykcji
Jak bezpiecznie wrócić do trybu enforcing, jeśli SELinux jest wyłączony
SELinux a wirtualizacja i konteneryzacja – MCS w praktyce
Polityka dla nowej aplikacji – od czego zacząć
AppArmor
Koncepcja
Profile
Tryby profili
W praktyce
Konstrukcja profili
Diagnostyka, przełączanie trybu profilu
Samodzielne tworzenie profili
Podprofile, czyli kapelusze (hats)
Ochrona mechanizmów wirtualizacji i konteneryzacji
Czy można to obejść?
Firewall na Linuksie, czyli co?
iptables (czyli netfilter)
nftables (czyli... netfilter wiele lat później)
eBPF
Nakładki ułatwiające zarządzanie zaporą
Co powinna robić zapora?
Przykładowy zestaw reguł firewalla
Stateful kontra stateless
Połączenia wychodzące: zezwalać czy blokować?
System otwarty na przestrzał – od czego zacząć?
Blokowanie dużej liczby adresów IP lub podsieci
Automatyczne blokowanie ataków brute-force
TCP wrappers
Porady i sugestie
Checklista
Proces uruchamiania systemu i jego słabe punkty
Weryfikacja integralności systemu
Secure Boot w środowisku linuksowym
Łańcuch zaufania na Linuksie
Krok dalej: atestacja, zdalna weryfikacja integralności
Alternatywne drogi: otwartoźródłowy lub własny firmware
Linux a oprogramowanie sprzętowe
Linux Vendor Firmware Service (LVFS) i fwupd
Aktualizacje mikrokodu CPU, odporność na ataki Spectre/Meltdown
Układ partycji, systemy plików, opcje montowania
Szyfrowanie dysków
Teoria: LUKS – jak to działa
Praktyka: Tworzenie i obsługa szyfrowanych woluminów
FDE – pełne szyfrowanie dysku podczas instalacji
Integracje dla nielubiących haseł:
TPM2, klucze sprzętowe (FIDO2), klucze dzielone (SSS), sieciowy serwer kluczy (NBDE)
Co może pójść nie tak
Podstawy obrony: bezpieczne hasła, klucze, nagłówki
Atak cold boot, kradzież kluczy z TPM, atak z użyciem DMA
Fizyczna napaść podczas pracy
Jeśli nie LUKS, to co?
Bezpieczne usuwanie danych
Dyski SSD a nadpisywanie danych
Ile razy zamazywać?
Blokowanie nieautoryzowanych urządzeń
Filtrowanie USB z użyciem usbguard
Jak zaplanować i wykonać bezpieczną instalację systemu
Weryfikacja nośników instalacyjnych
Profile bezpieczeństwa (CIS, STIG, FIPS)
Checklisty
Logi systemowe i aplikacji na Linuksie
syslog i journald
Wysyłka logów na zdalny serwer
Archiwizowanie (rotacja) logów
Narzędzia do procesowania logów
Mechanizm audytowy i usługa auditd
Konfiguracja reguł audytu
Przegląd i analiza zdarzeń audytowych
Monitoring bezpieczeństwa bez SIEM
Klasyczny monitoring IT w służbie bezpieczeństwa
AIDE – proste narzędzie klasy HIDS
Wykrywanie złośliwego oprogramowania
Zewnętrzne usługi wspomagające
Mam SIEM/EDR/XYZ. Co powinien wykrywać i jak to przetestować?
Rejestrowanie aktywności użytkowników
Audyt konfiguracji i utrzymanie standardów
Standaryzacja zabezpieczeń: CIS, STIG i OpenSCAP
Checklista
Incydenty i katastrofy – historie prawdziwe
Przegląd linuksowego malware
Incydent bezpieczeństwa – co robić?
Zabezpieczenie cyfrowych dowodów incydentu w systemie linuksowym
Użytkownicy też ludzie
Zespoły IT i security to też ludzie
Wolne i otwartoźródłowe oprogramowanie tworzą ludzie
Bądź dla siebie człowiekiem
Bieżące newsy
Dokumentacja i przewodniki
Inne wartościowe źródła informacji

Dla kogo...

Dla zainteresowanych Linuksem, którzy, choćby od niedawna, administrują systemami i sieciami, używają Linuksa jako systemu na swojej stacji roboczej i chcą to robić bezpieczniej.

Dla zawodowo zajmujących się bezpieczeństwem systemów: pracujących w linii obrony przed atakiem (np. w ramach zespołu SOC czy CSIRT), wykonujących testy penetracyjne, zarządzających podatnościami, decydujących o kształcie polityk bezpieczeństwa.

Dla tworzących, testujących lub wydających aplikacje działające w środowisku Linux (serwerowe, desktopowe, webowe, IoT...).

Dla projektantów urządzeń i systemów wbudowanych bazujących na Linuksie.

Dla czytających wszystkie książki na temat Linuksa i jego bezpieczeństwa, bo nigdy nie dość wiedzy o bezpieczeństwie.

Poznaj autora

Karol Szafrański

Inżynier cyberbezpieczeństwa o sercu admina. Ma kilkunastoletnie doświadczenie w zabezpieczaniu i codziennym utrzymaniu systemów: od małych sieci i firm po globalne banki, duże klastry i chmury.

Entuzjasta wolnego i otwartego oprogramowania – gdyby tylko mógł, zainstalowałby Linuksa na wszystkim, co ma procesor.

Doświadczony trener – najchętniej uczy tego, co zna i lubi: administracji i bezpieczeństwa systemów spod znaku pingwina. Prelegent na MSHP i Security BSides Warsaw.

Lubi filmy dokumentalne, ciekawi go psychologia, historia najnowsza i inwestowanie pasywne.

Top