Správa služeb v Linuxu: instalace, konfigurace a provoz

Filozofie instalace a správy služeb v Linuxu

Linuxové distribuce nabízejí rozsáhlý ekosystém nástrojů pro instalaci, konfiguraci a provoz síťových služeb. Klíčem k úspěchu je standardizace (FHS, systemd jednotky, správci balíčků), deklarativní konfigurace, automatizace a důsledné řízení přístupu. Tento článek poskytuje komplexní přehled postupů a doporučení od výběru distribuce přes instalaci balíčků až po zabezpečení, monitoring a vysokou dostupnost.

Volba distribuce a správce balíčků

Výběr distribuce ovlivňuje životní cyklus i nástroje správy. Debian/Ubuntu používají APT a balíčky DEB, Red Hat/AlmaLinux/Rocky Linux DNF (YUM) a RPM, SUSE pak Zypper. Rolling distribuce (Arch, openSUSE Tumbleweed) přinášejí rychlé aktualizace, enterprise verze stabilitu a delší podporu. Preferujte oficiální repozitáře, případně ověřené vendor repozitáře; minimalizujte kompilaci ze zdrojových kódů v produkčním prostředí kvůli aktualizacím a bezpečnosti.

Architektura systemd a životní cyklus služby

V moderních distribucích služby spravuje systemd. Jednotky (.service, .socket, .timer) definují spouštění, závislosti a prostředí. Konfigurace se ukládají do /etc/systemd/system (lokální) a /usr/lib/systemd/system (balíčkové). Pro úpravy používejte drop-in adresáře /etc/systemd/system/<nazev>.service.d/override.conf a vyhněte se přímým zásahům do souborů dodaných balíčkem. Využívejte wants/requires pro závislosti a EnvironmentFile pro oddělení tajemství a proměnných prostředí.

Standardní umístění konfigurace a dat

  • Konfigurace: /etc/<sluzba>/ – verifikujte v Git a chraňte přístupová práva.
  • Logy: /var/log/ a journal; nastavte rotaci a dobu uchovávání.
  • Data: /var/lib/<sluzba>/ – respektujte FHS a oddělte data od konfigurace.
  • Spouštěcí skripty: systemd jednotky a /usr/local/bin pro vlastní nástroje.

Instalace webového serveru (Nginx/Apache) a základní konfigurace

Instalace probíhá přes správce balíčků. Nginx preferujte pro reverzní proxy a statický obsah, Apache při potřebě modulárního ekosystému a htaccess. Konfiguraci virtuálních hostitelů udržujte odděleně (např. /etc/nginx/sites-available a sites-enabled). Zapněte gzip/brotli kompresi, HTTP/2 a striktně definujte hlavičky (HSTS, CSP) podle charakteru aplikace. Certifikáty spravujte prostřednictvím ACME klienta a nastavte automatickou obnovu.

Instalace databází (PostgreSQL, MariaDB) a zabezpečení

Při nasazení databází nastavte oddělené systémové uživatele, vyhrazené adresáře dat, audit přístupů a šifrování komunikace. Omezte bind adresu na privátní síť, implementujte princip nejmenších oprávnění (samostatné databázové účty s minimálními právy) a pravidelnou rotaci hesel nebo přechod na certifikáty/SSO. Sledujte metriky (počet připojení, latence dotazů, I/O) a nastavte zálohování s pravidelným testováním obnovy.

SSH a přístupová politika

Pro vzdálenou správu zakažte přihlášení uživatele root, povolte pouze autentizaci pomocí klíčů, aktivujte Port Knocking nebo Fail2ban pro mitigaci útoků hrubou silou. Omezte přístup pomocí AllowUsers/AllowGroups a Match bloků podle potřeb. Politiky sudo udržujte granulárně (bez NOPASSWD, pokud není nezbytné) a logujte eskalace oprávnění.

DNS, SMTP a další síťové služby

Pro DNS autoritativní a rekurzivní servery (BIND/PowerDNS/Unbound) striktně segmentujte role a aktivujte DNSSEC, rate-limity a přístupová ACL. U poštovních služeb (Postfix/Exim/Dovecot) zaveďte TLS, SPF/DKIM/DMARC, karanténu a antivirovou/antispamovou ochranu. U DHCP/NTP omezte přístupové rozsahy, logujte požadavky a zvažte režimy vysoké dostupnosti pro kritické prostředí.

Firewall, síťová segmentace a mikrosegmentace

Na hostiteli používejte nftables (případně firewalld) s principem restriktivního výchozího nastavení. Povolujte pouze explicitně potřebné porty a protokoly, oddělte management, aplikační a databázovou síť. V prostředích s kontejnery implementujte politiku i na úrovni CNI (NetworkPolicy) a udržujte konzistenci pravidel v centrálním CMDB.

SELinux/AppArmor a sandboxing služeb

Zvyšte bezpečnost povolením SELinuxu v režimu enforcing nebo AppArmor profilů. Pro systemd služby využijte direktivy sandboxingu jako ProtectSystem, ProtectHome, NoNewPrivileges, PrivateTmp, CapabilityBoundingSet a SystemCallFilter. Tím významně snížíte dopady případného kompromitování služby.

Šifrování, TLS a správa certifikátů

Aktualizujte systémové kryptografické politiky (např. update-crypto-policies v rodině RHEL). Preferujte moderní protokoly a šifrovací sady, omezte fallbacky a deaktivujte zastaralé verze protokolů. Certifikáty spravujte centralizovaně (ACME/PKI), udržujte krátkou dobu platnosti a automatickou obnovu, přísně chraňte privátní klíče s omezenými přístupy.

Konfigurační management a automatizace

V produkci se vyhýbejte manuálním zásahům. Využijte nástroje jako Ansible, Puppet, Chef či Salt pro deklarativní správu balíčků, konfigurací a služeb. Udržujte inventář, šablony a proměnné v Git, nasazujte přes CI/CD s kontrolou změn a automatickými testy. Standardizace minimalizuje odchylky a urychluje obnovu po incidentu.

Kontejnerizace a integrace se systemd

Kontejnery (Podman/Docker) zjednodušují distribuci a izolaci služeb. Preferujte rootless provoz, skenování obrazů a read-only kořenové souborové systémy s minimálními oprávněními. Pro provoz vedle systemd používejte jednotky .service s politikami restartu a závislostmi na sítích a zvazcích. Pro víceinstanční služby zvažte orchestrátor (Kubernetes) a deklarativní nasazení (Helm/Kustomize).

Logování, audit a observabilita

Centralizujte logy (journald, syslog-ng/rsyslog) do SIEM. Aktivujte audit (auditd, osquery) pro klíčové konfigurace a systémová volání. Metriky sbírejte pomocí Promethea, collectd či Node Exporteru, vizualizujte v Grafaně a nastavte alerting. Sledujte dostupnost, latenci, využití zdrojů a chybovost na úrovni služeb i infrastruktury.

Zálohování, snapshoty a obnova

Definujte cíle RPO a RTO a podle nich zvolte nástroje (Borg, Restic, Veeam, Bacula). Pro data využívejte snapshoty souborových systémů (LVM, Btrfs, ZFS) či úložišť. Pravidelně provádějte test obnovy a kontrolu integrity (hashování). Tajemství a klíče ukládejte šifrovaně a odděleně od záloh.

Výkon a škálování

Analyzujte profil zátěže a kritická místa (CPU, paměť, I/O, síť). Optimalizujte parametry jádra a služeb s rozvahou – vyhněte se globálním změnám bez předchozího měření. Využívejte horizontální škálování (load balancery, návrhy bez stavové paměti), cache vrstvy a fronty. Dokumentujte baseline a při změnách provádějte srovnávací testy.

Vysoká dostupnost (HA) a zotavení po havárii (DR)

Pro vysokou dostupnost používejte redundantní instance a sdílené stavové úložiště (replikace). Nástroje jako Keepalived (VRRP), Pacemaker/Corosync nebo nativní clusterové funkce databází a message brokerů udržují služby dostupné i při výpadku. Disaster recovery zajistí asynchronní replikace do vzdálené lokality, pravidelné „fire drills“ a validované runbooky.

Bezpečnostní provoz: aktualizace a zranitelnosti

Automatizujte bezpečnostní aktualizace a mějte připravený plán pro urgentní záplaty. Integrujte skenery zranitelností a compliance (OpenSCAP, Lynis) a pravidelně provádějte konfigurace benchmarků (CIS). Oddělte prostředí (vývojové, testovací, produkční), provádějte peer review změn a uchovávejte auditní stopy.

Správa uživatelů, tajemství a identit

Pro rozsáhlejší prostředí využívejte centrální správu identity (LDAP/FreeIPA/SSSD) a role. Tajemství ukládejte do bezpečných trezorů (HashiCorp Vault, Ansible Vault) s krátkou životností tokenů a rotací klíčů. Na úrovni služeb používejte oddělené účty (system users) a omezené capability; vyhýbejte se sdíleným účtům.

Testování konfigurací a změn

Validujte konfigurace před nasazením (lint, syntax check), nasazujte pomocí kanárků a postupných rolloutů. Kde možno, udržujte staging prostředí s realistickými daty (maskovanými či syntetickými). Incidenty řešte podle playbooků a každou událost uzavírejte post-mortem analýzou a akčními kroky.

Dokumentace a provozní standardy

Každá služba by měla mít přehledný provozní runbook: jak ji nasadit, aktualizovat, zálohovat, obnovit, monitorovat a odstavit. Dokumentujte síťové porty, závislosti a požadované kapacity. Tím zkrátíte dobu řešení incidentů a omezíte závislost na jednotlivcích.

Typické anti-patterny a jak se jim vyhnout

  • „Sněhové vločky“: unikátní ruční konfigurace bez verzování – řešení: Git a infrastruktura jako kód (IaC).
  • Exponované služby bez TLS/ACL: vždy používejte šifrování a segmentaci sítí.
  • Ignorované logy a metriky: bez observability nelze efektivně řídit výkon ani bezpečnost.
  • Monolitické servery „na všechno“: oddělujte role, využívejte kontejnery nebo virtuální stroje.

Závěr: od instalace k udržitelnému provozu

Instalace služby v Linuxu je pouze prvním krokem. Udržitelný a bezpečný provoz vyžaduje standardizaci, automatizaci, nepřetržitou observabilitu, pravidelné aktualizace a disciplinované řízení přístupů. Důsledné dodržování ověřených postupů snižuje rizika, zvyšuje dostupnost a umožňuje rychlejší dodání hodnoty uživatelům i byznysu.