Principy zabezpečení v unixových systémech
Bezpečnostní modely unixových systémů vycházejí z minimalistického jádra, důsledného oddělení rolí a filozofie „dělej jednu věc a dělej ji dobře“. Základními stavebními kameny jsou diskreční řízení přístupu (DAC), rozšíření v podobě ACL, moderní povinné řízení přístupu (MAC), schopnostní modely (capabilities), izolace procesů, kryptografie a audit. Implementace se v jednotlivých rodinách (Linux, BSD, macOS) liší, cíle jsou však společné: důvěrnost, integrita, dostupnost a odpovědnost (auditovatelnost).
Diskreční řízení přístupu (DAC): UGO a bity rwx
Nejstarší model DAC v Unixu řídí přístup na úrovni vlastníka souboru (user), skupiny (group) a ostatních (others). Každé právo – čtení (r), zápis (w) a spouštění (x) – se vyhodnocuje v pořadí U→G→O. Efektivní UID/GID procesu určují, která pravidla se uplatní. DAC je jednoduché, srozumitelné a rychlé, neumí však nastavovat jemně odstupňovaná pravidla pro více skupin ani zohledňovat kontext.
Speciální bity: setuid, setgid a sticky
setuid a setgid umožňují procesům spouštěným běžným uživatelem dočasně získat efektivní identitu vlastníka souboru (typicky root nebo privilegovaná skupina). Správná implementace vyžaduje obranné programování (kontroly cest, umask, secure exec, close-on-exec). sticky bit u adresáře (např. /tmp) brání uživatelům mazat cizí soubory, i když mají právo zapisovat do adresáře.
Umask, dědičnost a modelování práv
umask určuje výchozí práva, která se odečtou při vytváření nových objektů. V kombinaci s DAC pomáhá předcházet příliš otevřeným oprávněním k souborům. V některých systémech lze pro dědění práv v adresářových stromech použít default ACL.
Přístupové seznamy (ACL): POSIX a NFSv4
ACL rozšiřují DAC o jemnější řízení (více subjektů, konkrétní oprávnění). POSIX ACL přidávají masku a individuální záznamy pro uživatele a skupiny. NFSv4 ACL používají bohatší sémantiku (deny/allow, dědičnost). ACL vyvažují jednoduchost DAC a potřebu podrobného řízení, zvyšují však složitost správy a vyžadují důsledný audit.
Mandatory Access Control (MAC): SELinux, AppArmor a TrustedBSD
MAC doplňuje DAC a zavádí povinná pravidla vynucovaná jádrem bez ohledu na vlastníka. SELinux pracuje s type enforcement, rolemi a úrovněmi citlivosti (MLS/MCS). AppArmor používá profilování cest a schopností. TrustedBSD MAC (základ sandboxu macOS a FreeBSD) implementuje modulární rámec politik. MAC umožňuje omezit služby (např. httpd, sshd) a zmírnit dopady kompromitace, vyžaduje však správný návrh kontextů a profily v režimu enforcing.
Schopnosti (capabilities) a rozklad privilegií root
Oprávnění Unixu root se v moderních systémech dělí na jednotlivé capabilities (např. CAP_NET_BIND_SERVICE, CAP_SYS_ADMIN). Proces může získat pouze minimální potřebnou podmnožinu schopností, což výrazně snižuje rozsah případných škod. V BSD se podobného cíle dosahuje kombinací privilege separation a jails; v Linuxu také prostřednictvím ambient capabilities a file capabilities u binárních souborů.
Izolace procesů: jails, zóny, namespaces a cgroups
Izolace minimalizuje sdílený stav mezi běžícími službami:
- FreeBSD jails: lehké oddělení uživatelského prostoru a síťových zásobníků.
- Solaris Zones: komplexní virtualizace prostoru procesů a zdrojů.
- Linux namespaces + cgroups: základ kontejnerů (PID/NET/MNT/UTS user namespaces) a řízení přidělování zdrojů; doplněno o seccomp-bpf pro filtrování systémových volání.
- OpenBSD pledge/unveil: deklarativní omezení systémových volání a přístupu k souborovému systému na úrovni procesu.
Chroot, sandboxy a TCC/SIP v macOS
chroot historicky poskytuje omezené vězení souborového systému, nejde však o bezpečnostní hranici (s právy root je možný únik z něj). Moderní systémy používají sandboxy: macOS Seatbelt (sandbox s profily), TCC (Transparency, Consent, Control) pro přístup k citlivým datům a SIP (System Integrity Protection), který chrání systémové soubory a běhové prostředí před uživatelem root.
Rámce autentizace a autorizace: PAM, NSS a sudo/doas
PAM (Pluggable Authentication Modules) poskytuje modulární autentizaci (hesla, klíče, 2FA). NSS sjednocuje zdroje identit (místní, LDAP, SSSD). sudo/doas umožňují delegovat privilegované úkony prostřednictvím deklarativních politik s auditní stopou. Bezpečné politiky omezují příkazy, prostředí a dědění proměnných (secure_path, noexec).
Model ochrany paměti a mitigace zneužití zranitelností
Moderní jádra a linkery nasazují ASLR, DEP/NX, stack canaries, FORTIFY_SOURCE, RELRO a kontrolu návratových adres (CET/BTI). Na úrovni systémových volání omezují možnosti útoků seccomp (Linux), ktrace/pledge (OpenBSD) a zabezpečený alokátor paměti. Tyto techniky výrazně ztěžují útoky ROP/JOP a eskalaci privilegií.
Souborové systémy: šifrování, atributy a zásady připojování
Ochranu dat v klidovém stavu doplňuje model řízení přístupu:
- Šifrování: LUKS/dm-crypt (Linux), GELI (FreeBSD), APFS FileVault (macOS) s integrací do TPM/Keychain.
- Rozšířené atributy: xattrs pro značky (karanténa, původ souboru), integrace s Gatekeeperem v macOS.
- Možnosti připojení: noexec, nodev, nosuid, ro a oddělené přípojné body (
/var,/home,/tmp) posilují izolaci.
Síťová bezpečnost: filtry paketů a zásady
Unixové systémy tradičně obsahují výkonné brány firewall: pf (OpenBSD, FreeBSD, macOS), ipfw (FreeBSD) a iptables/nftables (Linux). Podpora stavové inspekce, NAT, QoS a tabulek usnadňuje řízení perimetru i mikrosegmentaci. Přísná výchozí politika „vše zakázat, povolit jen nezbytné“ snižuje útočnou plochu.
Integrita, spouštění systému a důvěryhodný běh
Mechanismy zabezpečeného spouštění (UEFI Secure Boot, shim) a Measured Boot (TPM) ověřují integritu řetězce od firmwaru až po jádro. Linux nabízí IMA/EVM pro integritu souborů, macOS vynucuje sealed system volume a Gatekeeper/Notarization pro kontrolu binárních souborů a jejich původu.
Procesní model: oddělení privilegií a odebrání práv
Zabezpečené démony běží pod vyhrazenými účty, po inicializaci omezují svá práva (setrlimit, prctl, pledge) a oddělují jednotlivé části obsluhy (rodičovský proces s privilegii, podřízený proces bez nich). Komunikace probíhá přes unix sockets s ověřováním přihlašovacích údajů protistrany. Tento model výrazně snižuje dopady chyb v analyzátorech protokolů či knihovnách.
Audit a protokolování: syslog, auditd a BSM/OpenBSM
Auditní subsystémy (Linux auditd, FreeBSD/macOS OpenBSM) zaznamenávají bezpečnostně relevantní události (autentizace, změny politik, přístup k citlivým objektům). syslog/journald centralizují protokoly, které je vhodné odesílat do SIEM. Správně navržená audit rules a pravidelné korelace jsou základem odpovědnosti.
Modely identit a klíčů: SSH, Kerberos a Keychain
Pro vzdálený přístup se nejčastěji používají klíče SSH s agentem a certifikáty (klíče podepsané certifikační autoritou). V doménových prostředích se pro jednotné přihlášení (SSO) používá Kerberos (GSSAPI). macOS poskytuje Keychain a integrovanou správu oprávnění k tajným údajům, Linux využívá pass/gnome-keyring či kernel keyring.
Modely vyšší úrovně: RBAC, ABAC a zásady na perimetru
Ačkoli klasický Unix nativně neposkytuje RBAC, lze jej emulovat kombinací skupin, ACL, politik sudo/doas a MAC. V kontejnerizovaných prostředích a orchestrátorech (Kubernetes) přebírá roli RBAC/ABAC řídicí rovina, zatímco uzly vynucují izolaci (namespaces, seccomp, profily SELinux/AppArmor).
Specifika macOS: Gatekeeper, Notarization a TCC
macOS vynucuje důvěryhodné spouštění: aplikace musí být podepsané a často také notarizované. Gatekeeper blokuje neznámý kód, TCC vyžaduje souhlas uživatele pro přístup k mikrofonu, kameře, kontaktům a adresářům s dokumenty, SIP brání změnám systémových oblastí i uživateli root. Dohromady tak vytvářejí vícevrstvé vynucování politik.
Zabezpečení systému a provozní zásady
- Minimalizace: odinstalovat nepotřebné balíčky, vypnout démony, omezit naslouchající sockety.
- Aktualizace: pravidelně instalovat záplaty jádra i uživatelského prostoru, automatizovat obnovu zlatého obrazu.
- Oddělení dat: samostatná připojení s noexec/nosuid/nodev, oblasti s omezeným zápisem pouze pro požadované služby.
- Kryptografie: povinné šifrování dat v klidovém stavu, správa klíčů v TPM/HSM; SSH bez hesel.
- Politiky: profily SELinux/AppArmor v režimu enforcing, firewall s výchozím zákazem, filtry seccomp pro síťové služby.
- Monitoring: SIEM, kontrola integrity (AIDE/Tripwire/IMA), upozorňování na odchylky v konfiguraci.
- Princip nejmenších oprávnění: capabilities místo plných práv root, pravidla sudo s podrobným vymezením a auditní stopou.
Časté antivzory a rizika
- Spouštění služeb s právy root bez oddělení a odebrání práv.
- Příliš široká umask, sdílené účty a nevyužívané klíče v domovských adresářích.
- Vypnuté nebo příliš benevolentní profily MAC („permissive forever“).
- Globální zápis do
/tmpbez sticky a bez izolacePrivateTmp. - Chybějící auditní pravidla a decentralizované protokoly.
Designové kompromisy a výběr modelu
Volba kombinace DAC/ACL/MAC/capabilities závisí na profilu hrozeb, požadavcích regulace a provozní vyspělosti. Pro „bastiony“ a kritické zóny je vhodná kombinace MAC, capabilities, povinného šifrování a přísných sandboxů. U vývojových strojů lze upřednostnit ACL a minimalizaci s menšími provozními omezeními, stále však zachovat auditovatelnost a oddělení tajných údajů.
Závěr: vícevrstvý přístup a kryptografická integrita
Bezpečnostní modely unixových systémů se nejlépe uplatní v kombinaci: jednoduchý DAC jako základ, ACL pro podrobnější řízení, MAC pro povinné vynucování, capabilities pro minimální oprávnění, izolace procesů a kontejnerů pro vyšší odolnost a kryptografie s integritou spouštění pro důvěryhodný běh. Úspěch závisí na důslednosti, automatizaci konfigurace, průběžném auditu a ochotě omezovat oprávnění všude, kde je to možné.
