Principy bezpečnosti v unixových systémech
Bezpečnostní modely unixových systémů vycházejí z minimalistického jádra, ostré separace rolí a z 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 liší napříč 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 čte (r), zapisuje (w) a provádí (x) se vyhodnocuje v pořadí U→G→O. Per-proces efektivní UID/GID určují, jaká pravidla se uplatní. DAC je jednoduché, srozumitelné a rychlé, ale neumí jemnozrnná pravidla nad více skupinami či kontextem.
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 na adresáři (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í práv
umask definuje výchozí odečtení práv pro nové objekty. V kombinaci s DAC pomáhá předcházet nadměrně otevřeným souborům. V některých systémech lze použít default ACL pro dědičnost práv v adresářových stromech.
Přístupové seznamy (ACL): POSIX a NFSv4
ACL rozšiřují DAC o jemnější řízení (více subjektů, konkrétní práva). POSIX ACL přidává masku a individuální záznamy pro uživatele/skupiny. NFSv4 ACL používá bohatší semantiku (deny/allow, dědičnost). ACL vyvažují jednoduchost DAC a potřebu granulárního řízení, ale zvyšují komplexitu správy a vyžadují disciplinu při auditování.
Mandatory Access Control (MAC): SELinux, AppArmor a TrustedBSD
MAC překrývá DAC a zavádí povinná pravidla prosazovaná jádrem bez ohledu na vlastníka. SELinux pracuje s type enforcement, rolemi a citlivostmi (MLS/MCS). AppArmor používá profilování cest a schopností. TrustedBSD MAC (základ macOS sandboxu a FreeBSD) implementuje modulární rámec 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 děleno na capabilities (např. CAP_NET_BIND_SERVICE, CAP_SYS_ADMIN). Proces může získat pouze minimální potřebný podmnožinový soubor schopností, což výrazně snižuje blast radius. V BSD se podobný cíl dosahuje kombinací privilege separation a jails; v Linuxu též přes ambient capabilities a file capabilities na binárkách.
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 kvótování zdrojů; doplněno seccomp-bpf pro filtraci syscalls.
- OpenBSD pledge/unveil: deklarativní omezení syscalls a přístupu k FS 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) chránící systémové soubory a runtime před rootem.
Autentizace a autorizační rámce: PAM, NSS a sudo/doas
PAM (Pluggable Authentication Modules) poskytuje modulární autentizaci (hesla, klíče, 2FA). NSS sjednocuje zdroje identit (lokální, LDAP, SSSD). sudo/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 nasazují ASLR, DEP/NX, stack canaries, FORTIFY_SOURCE, RELRO a kontrolu návratových adres (CET/BTI). Na úrovni syscalls omezuje seccomp (Linux), ktrace/pledge (OpenBSD) a hardened malloc. Tyto techniky výrazně ztěžují ROP/JOP útoky a eskalaci privilegií.
Souborové systémy: šifrování, atributy a mount politiky
Ochrana dat v klidu doplňuje model přístupu:
- Šifrování: LUKS/dm-crypt (Linux), GELI (FreeBSD), APFS FileVault (macOS) s integrací do TPM/Keychain.
- Extended attributes: xattrs pro značky (karanténa, původ souboru), integrace s Gatekeeperem v macOS.
- Mount options: 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ě obsahují 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 firmware 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 drop-rights
Bezpečné démony běží pod dedikovanými účty, po inicializaci snižují práva (setrlimit, prctl, pledge) a oddělují části obsluhy (parent s privilegii, child bez). Komunikace probíhá přes unix sockets s kontrolou peer cred. 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/journald centralizují logy, které je vhodné posílat do SIEM. Správně navržené audit rules 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 používá Kerberos (GSSAPI) pro SSO. macOS poskytuje Keychain a integrované řízení oprávnění k tajemstvím, Linux využívá pass/gnome-keyring či kernel keyring.
Modely vyšší úrovně: RBAC, ABAC a politiky na perimetru
Ačkoli klasický Unix nativně neposkytuje RBAC, lze jej emulovat kombinací skupin, ACL, sudo/doas politik 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, SELinux/AppArmor profily).
macOS specifika: Gatekeeper, Notarization 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 root. To dohromady tvoří vícevrstvé vynucení politik.
Hardening a provozní zásady
- Minimalizace: odinstalovat nepotřebné balíky, vypnout démony, omezit listening sockets.
- Aktualizace: pravidelné záplaty kernelu i userspace, automatizovaná obnova zlatého obrazu.
- Oddělení dat: samostatné mounty s noexec/nosuid/nodev, write-rare oblasti pouze pro požadované 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 default deny, seccomp filtry pro síťové služby.
- Monitoring: SIEM, integrity check (AIDE/Tripwire/IMA), alerting na odchylky konfigurace.
- Princip nejmenších oprávnění: capabilities místo full root, sudo pravidla s granularitou a auditní stopou.
Časté antivzory a rizika
- Spouštění služeb s root právy bez separace a drop-rights.
- Široká umask, sdílené účty a ležící klíče v domovských adresářích.
- Vypnuté nebo permisivní MAC profily („permissive forever“).
- Globální zápis do
/tmpbez sticky a bez izolacePrivateTmp. - Chybějící audit pravidla a necentralizované logy.
Designové kompromisy a výběr modelu
Volba kombinace DAC/ACL/MAC/capabilities závisí na profilu hrozeb, požadavcích regulace a provozní zralosti. Pro „bastiony“ a kritické zóny je vhodné MAC + capabilities + povinné šifrování a striktní sandboxy. Pro vývojové stroje lze preferovat ACL a minimalizaci s menším třením, ale 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 nejlépe uplatňují v kombinaci: jednoduchý DAC pro základ, ACL pro jemnost, MAC pro povinné vynucení, capabilities pro minimální práva, izolace procesů a kontejnerů pro robustnost, a kryptografie s integritou startu pro důvěryhodný běh. Úspěch stojí na disciplině, automatizaci konfigurace, průběžném auditu a ochotě snižovat privilegia všude, kde to jde.