Bezpečnost Unixu

Bezpečnost Unixu

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 /tmp bez sticky a bez izolace PrivateTmp.
  • 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.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *