Bezpečnostní modely unixových systémů: oprávnění a procesy

Principy bezpečnosti v unixových systémech

Bezpečnostní modely unixových systémů vycházejí z minimalistického jádra, striktní 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), rozšíření formou 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 uživatelů (others). Každé právo čtení (r), zápisu (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é, ale neumí jemnozrnná pravidla založená na více skupinách či kontextu.

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říklad /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 využí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ů, specifická práva). POSIX ACL přidává 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 granulárního řízení, nicméně zvyšují komplexitu 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á pravidla, která jsou vynucována jádrem nezávisle na vlastníkovi. SELinux pracuje s type enforcement, rolemi a citlivostmi (MLS/MCS). AppArmor používá profilování cest a schopností. TrustedBSD MAC (základ sandboxu macOS a FreeBSD) implementuje modulární rámec bezpečnostních politik. MAC umožňuje konfinovat služby (například httpd, sshd) a omezit dopady kompromitace, avšak vyžaduje správný návrh kontextů a používání profilů v režimu enforcing.

Schopnosti (capabilities) a rozklad root privilegií

Unixové privilegium root je v moderních systémech rozděleno na jednotlivé capabilities (například CAP_NET_BIND_SERVICE, CAP_SYS_ADMIN). Proces může získat pouze minimální potřebnou podmnožinu těchto schopností, což významně snižuje blast radius útoku. V BSD se podobného cíle dosahuje kombinací privilege separation a jails; v Linuxu též přes ambient capabilities a file capabilities připojené k binárkám.

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, uživatelské namespaces) a kvótová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 na macOS

chroot historicky poskytuje omezené vězení souborového systému, avšak není bezpečnostním hranolem (možný útěk s root právy). Moderní systémy využívají sandboxy: macOS Seatbelt (profilovaný sandbox), TCC (Transparency, Consent, Control) pro řízení přístupu k citlivým datům a SIP (System Integrity Protection), který chrání systémové soubory a runtime před zásahy i ze strany root uživatele.

Autentizace a autorizační rámce: PAM, NSS a sudo/doas

PAM (Pluggable Authentication Modules) nabízí modulární autentizaci (hesla, klíče, dvoufaktorové ověřování). NSS sjednocuje zdroje identity (lokální, 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ě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í 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.
  • Rozšířené atributy: xattrs pro značky (karanténa, původ souboru), integrace s Gatekeeperem v macOS.
  • Možnosti připojení (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 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 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 (rodič s privilegii, potomek bez). Komunikace probíhá přes unix sockety s kontrolou peer credentials. Tento model výrazně snižuje dopad chyb v parsech 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é odesílat do SIEM systémů. Správně navržená auditní 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 používá Kerberos (GSSAPI) pro jednotné přihlášení (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čkoliv 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).

Specifika macOS: 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 uživatele. 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 jádra i uživatelského prostoru, automatizovaná obnova zlatého obrazu.
  • Oddělení dat: samostatné mounty s noexec/nosuid/nodev, oblasti s omezeným zápisem pouze pro nezbytné 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 výchozí politikou deny, seccomp 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 root oprávněními bez separace a drop-rights.
  • Široce nastavený umask, sdílené účty a uložené klíče v domovských adresářích.
  • Vypnuté nebo příliš permisivní MAC profily („permissive forever“).
  • Globální zápis do /tmp bez sticky bitu a bez izolace PrivateTmp.
  • Chybějící auditní pravidla a necentralizované logování.

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é kombinovat 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 jemné řízení, 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 disciplíně, automatizaci konfigurace, průběžném auditu a ochotě snižovat privilegia všude, kde je to možné.