Principy bezpečnosti v unixových systémech
Bezpečnostní modely unixových systémů vycházejí z minimalistického jádra, důrazné separace 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), jeho rozšíření v podobě ACL, moderní povinné řízení přístupu (MAC), schopnostní modely (capabilities), izolace procesů, kryptografie a audit. Implementace se liší mezi rodinami (Linux, BSD, macOS), ale cíle jsou 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ápisu (w) a provedení (x) se vyhodnocuje v pořadí U→G→O. Per-proces efektivní UID a GID určují, která pravidla se uplatní. DAC je jednoduché, srozumitelné a rychlé, ale nepodporuje jemnozrnná pravidla nad více skupinami či kontexty.
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 při právech zápisu do adresáře.
Umask, dědičnost a modelování oprávnění
umask definuje výchozí odečtení oprávnění pro nově vytvářené objekty. V kombinaci s DAC pomáhá předcházet otevřeným souborům s příliš širokými právy. V některých systémech lze použít default ACL pro dědičnost oprávnění v adresářových strukturách.
Přístupové seznamy (ACL): POSIX a NFSv4
ACL rozšiřují DAC o jemnější řízení přístupu (více subjektů, konkrétní práva). POSIX ACL přidává masku a individuální záznamy pro uživatele a skupiny. NFSv4 ACL využívají bohatší sémantiku (deny/allow, dědičnost). ACL vyvažují jednoduchost DAC a potřebu granulárního řízení, avšak zvyšují složitost správy a vyžadují důslednost při auditování.
Povinné řízení přístupu (MAC): SELinux, AppArmor a TrustedBSD
MAC překrývá DAC a zavádí povinně vynucovaná pravidla prosazovaná jádrem nezávisle na vlastníkovi objektu. SELinux pracuje se type enforcement, rolemi a citlivostmi (MLS/MCS). AppArmor využívá profilování cest a schopností. TrustedBSD MAC (základ macOS sandboxu a FreeBSD) implementuje modulární rámec bezpečnostních politik. MAC umožňuje konfinovat služby (např. httpd, sshd) a omezit dopady kompromitace, ale vyžaduje správný návrh kontextů a profily v režimu enforcing.
Schopnosti (capabilities) a rozklad root privilegií
Unixové privilegium root je v moderních systémech rozloženo na capabilities (např. CAP_NET_BIND_SERVICE, CAP_SYS_ADMIN). Proces může získat pouze minimální nutnou podmnožinu těchto schopností, což výrazně snižuje blast radius útoku. V BSD se podobného efektu dosahuje kombinací privilege separation a jailů; v Linuxu též pomocí ambient capabilities a file capabilities na spustitelných souborech.
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 procesního a zdrojového prostoru.
- Linux namespaces + cgroups: základ kontejnerů (PID/NET/MNT/UTS/user namespaces) a kvótování zdrojů; doplněno 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 na macOS
chroot historicky poskytuje omezené vězení souborového systému, avšak není bezpečnostním hranolem (možný breakout s root právy). Moderní systémy používají sandboxy: macOS Seatbelt (profilovaný sandbox), TCC (Transparency, Consent, Control) pro přístup k citlivým datům a SIP (System Integrity Protection), které chrání systémové soubory a runtime i proti root uživateli.
Autentizace a autorizační rámce: PAM, NSS a sudo/doas
PAM (Pluggable Authentication Modules) poskytuje modulární autentizační mechanismy (hesla, klíče, dvoufaktorová autentizace). NSS sjednocuje zdroje identity (lokální uživatelé, LDAP, SSSD). sudo a doas umožňují delegovat privilegované úkony přes deklarativní politiky s auditní stopou. Bezpečné politiky omezují příkazy, prostředí a dědičnost proměnných (secure_path, noexec).
Model ochrany paměti a mitigace exploitů
Moderní jádra a linkery implementují ASLR, DEP/NX, stack canaries, FORTIFY_SOURCE, RELRO a kontrolu návratových adres (CET/BTI). Na úrovni systémových volání omezují seccomp (Linux), ktrace/pledge (OpenBSD) a hardened malloc. Tyto techniky výrazně komplikují útoky ROP/JOP a eskalaci privilegií.
Souborové systémy: šifrování, atributy a mount politiky
Ochrana dat v klidu 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) s integrací s Gatekeeperem v macOS.
- Možnosti mount: noexec, nodev, nosuid, ro a oddělené mount pointy (
/var,/home,/tmp) zvyšují izolaci.
Síťová bezpečnost: filtry paketů a zásady
Unixové systémy tradičně zahrnují výkonné brány firewall: pf (OpenBSD, FreeBSD, macOS), ipfw (FreeBSD) a iptables/nftables (Linux). Podpora stateful inspekce, NAT, QoS a tabulek usnadňuje řízení perimetru i mikrosegmentaci. Přísná výchozí politika „deny all, allow by need“ snižuje útočnou plochu.
Integrita, boot a důvěryhodný běh
Mechanismy zabezpečeného startu (UEFI Secure Boot, shim) a Measured Boot (TPM) validují integritu řetězce od firmwaru po kernel. Linux nabízí IMA/EVM pro integritu souborů, macOS prosazuje sealed system volume a Gatekeeper/Notarization pro kontrolu binárek a jejich původu.
Procesní model: separace privilegií a snížení práv
Bezpečné démony běží pod dedikovanými účty, po inicializaci snižují práva (setrlimit, prctl, pledge) a oddělují části obsluhy (rodič s privilegii, potomek bez). Komunikace probíhá přes unix sockets s kontrolou identit peerů. Tento model výrazně snižuje dopad chyb v parserech protokolů či knihovnách.
Audit a logová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 a journald centralizují logy, které je vhodné zasílat do SIEM. Správně navržená audit pravidla a pravidelná korelace jsou základem odpovědnosti.
Modely identity a klíčů: SSH, Kerberos a Keychain
Pro vzdálený přístup dominují SSH klíče s agentem a certifikáty (CA podepisující klíče). V doménových prostředích se využívá Kerberos (GSSAPI) pro jednotné přihlášení (SSO). macOS disponuje Keychain a integrovaným řízením oprávnění pro přístup k tajemstvím, Linux používá pass, gnome-keyring či kernel keyring.
Modely vyšší úrovně: RBAC, ABAC a politiky na perimetru
Ačkoli klasický Unix nativně nepodporuje RBAC, lze jej emulovat kombinací skupin, ACL, sudo/doas politik a MAC. V kontejnerizovaných prostředích a orchestrátorech (např. Kubernetes) zajišťuje RBAC/ABAC vrstva řízení, zatímco uzly vynucují izolaci (namespaces, seccomp, SELinux/AppArmor profily).
Specifika macOS: Gatekeeper, Notarizace a TCC
macOS prosazuje důvěryhodné spouštění: aplikace musí být podepsané a často i notarizované. Gatekeeper blokuje neznámý kód, TCC vyžaduje souhlas uživatele pro přístup k mikrofonu, kameře, kontaktům a dokumentovým adresářům, SIP brání modifikaci systémových oblastí i pro uživatele s právy root. To dohromady tvoří vícevrstvý systém vynucování bezpečnostních politik.
Zesílení bezpečnosti a provozní zásady
- Minimalizace: odinstalovat nepotřebné balíky, vypnout nepotřebné démony, omezit listening sockets.
- Aktualizace: pravidelné záplaty kernelu i uživatelského prostoru, automatizovaná obnova zlatého obrazu systému.
- Oddělení dat: samostatné mounty s noexec, nosuid, nodev, write-rare oblasti pouze pro vybrané služby.
- Kryptografie: povinné šifrování dat v klidu, správa klíčů v TPM/HSM; SSH bez hesel.
- Politiky: SELinux/AppArmor profily v režimu enforcing, firewall s defaultní politikou deny, sekcomp filtry pro síťové služby.
- Monitoring: SIEM, kontrola integrity (AIDE/Tripwire/IMA), alerty na odchylky konfigurace.
- Princip nejmenších oprávnění: capabilities místo plného root, sudo pravidla s granularitou a auditní stopou.
Časté antivzory a rizika
- Spouštění služeb s právy root bez separace a s nízkým snížením oprávnění.
- Příliš široká umask, sdílené účty a uložení klíčů v domovských adresářích bez ochrany.
- Vypnuté nebo permisivní MAC profily („permissive forever“).
- Globální zápis do
/tmpbez sticky bitu a bez izolace typuPrivateTmp. - Postrádání auditních pravidel a necentralizované logování.
Designové kompromisy a výběr modelu
Volba kombinace DAC/ACL/MAC/capabilities závisí na profilu hrozeb, regulačních požadavcích a provozní zralosti. Pro „bastiony“ a kritické zóny je vhodné nasadit MAC + capabilities + povinné šifrování a přísné sandboxy. Pro vývojová prostředí lze preferovat ACL a minimalizaci s menším třením, avšak stále s auditovatelností a oddělením tajemství.
Závěr: vícevrstvý přístup a kryptografická integrita
Bezpečnostní modely unixových systémů se nejefektivněji uplatňují v kombinaci: jednoduchý DAC jako základ, ACL pro jemné řízení, MAC pro povinné vynucení, capabilities pro minimalizaci práv, izolace procesů a kontejnerů pro robustnost, a kryptografie s integritou startu pro důvěryhodný běh. Úspěch spočívá v disciplíně, automatizaci konfigurace, průběžném auditu a ochotě snižovat oprávnění všude tam, kde je to možné.



























