Filozofie instalace a správy služeb v Linuxu
Linuxové distribuce nabízejí bohatý 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 ucelený 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 vydání stabilitu a delší podporu. Preferujte oficiální repozitáře, případně ověřené vendor repozitáře; minimalizujte kompilaci ze zdroje v produkci 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 úpravám souborů dodaných balíčkem. Využívejte wants/requires pro závislosti a EnvironmentFile pro oddělení tajemství a proměnných.
Standardní umístění konfigurace a dat
- Konfigurace:
/etc/<sluzba>/– verujte v Git a chraňte přístupy. - Logy:
/var/log/a journal; nastavte rotaci a retenci. - Data:
/var/lib/<sluzba>/– respektujte FHS a oddělte data od konfigurace. - Spouštěcí skripty: systemd jednotky a
/usr/local/binpro vlastní nástroje.
Instalace webového serveru (Nginx/Apache) a základní ztvárnění
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 virtual hostů udržujte v separaci (např. /etc/nginx/sites-available a sites-enabled). Zapněte gzip/brotli, HTTP/2 a striktně definujte hlavičky (HSTS, CSP) podle aplikace. Certifikáty spravujte přes ACME klienta a automatickou obnovu.
Instalace databází (PostgreSQL, MariaDB) a hardening
Při nasazení databází nastavte oddělené systémové uživatele, vyhrazené adresáře dat, audit přístupů a šifrování přenosu. Omezte bind adresu na privátní síť, implementujte princip nejmenších práv (samostatné DB účty s minimálními oprávněními) 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 testem obnovy.
SSH a přístupová politika
Pro vzdálenou správu zakažte přihlášení uživatele root, povolte jen klíčové ověřování, aktivujte Port Knocking či Fail2ban pro mitigaci brute-force. Omezte AllowUsers/AllowGroups a Match bloky dle potřeb. Sudo politiky udržujte granulárně (bez NOPASSWD, pokud to není nezbytné) a logujte eskalace práv.
DNS, SMTP a další síťové služby
Pro DNS autoritativní/rekurzivní servery (BIND/PowerDNS/Unbound) striktně segmentujte role a aktivujte DNSSEC, rate-limity a ACL. U pošty (Postfix/Exim/Dovecot) zaveďte TLS, SPF/DKIM/DMARC, karanténu a antivirovou/antispamovou vrstvu. U DHCP/NTP omezte přístupové rozsahy, logujte požadavky a zvažte HA režimy pro kritické prostředí.
Firewall, síťová segmentace a mikrosegmentace
Na hostu používejte nftables (příp. firewalld) s principem restriktivního defaultu. Povolujte pouze explicitně potřebné porty a protokoly, oddělte management, aplikační a databázovou síť. V prostředích s kontejnery orchestrujte politiku i na úrovni CNI (NetworkPolicy) a udržujte konzistenci pravidel v CMDB.
SELinux/AppArmor a sandboxing služeb
Posilte bezpečnost povoleným SELinuxem v režimu enforcing nebo AppArmor profily. Pro systemd služby použijte sandboxing direktivy jako ProtectSystem, ProtectHome, NoNewPrivileges, PrivateTmp, CapabilityBoundingSet a SystemCallFilter. Tím výrazně snížíte dopady případného kompromisu.
Šifrování, TLS a správa certifikátů
Aktualizujte systémové kryptografické politiky (např. update-crypto-policies v RHEL rodině). Preferujte moderní protokoly a sady šifer, omezte fallbacky, vypněte zastaralé verze. Certifikáty spravujte centralizovaně (ACME/PKI), udržujte krátkou platnost a automatickou obnovu, striktně ukládejte privátní klíče s omezenými přístupy.
Konfigurační management a automatizace
V produkci se vyhněte manuálním zásahům. Využijte nástroje jako Ansible, Puppet, Chef či Salt k deklarativní správě balíčků, konfigurací a služeb. Udržujte inventory, šablony a proměnné v Git, nasazujte přes CI/CD s kontrolou změn a automatickými testy. Standardizace minimalizuje odchylky a urychlí obnovu po incidentu.
Kontajnerizace a systemd integrace
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 minimem schopností. Pro provoz vedle systemd používejte .service jednotky s restart politikami a závislostmi na sítích/objemech. 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/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 RPO/RTO a podle toho 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 (hashy). 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 úzká hrdla (CPU, paměť, I/O, síť). Optimalizujte parametry jádra a služeb uměřeně – vyhněte se globálním změnám bez měření. Využívejte horizontální škálování (load balancery, stateless návrhy), 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 HA používejte redundantní instance a sdílené stavové úložiště (replikace). Nástroje jako Keepalived (VRRP), Pacemaker/Corosync nebo nativní clusterovací schopnosti databází a message brokerů udržují služby dostupné i při výpadku. DR 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 plán pro urgentní záplaty. Integrujte skenery zranitelností a compliance (OpenSCAP, Lynis) a provádějte pravidelné konfigurace benchmarků (CIS). Oddělte prostředí (dev/test/prod), provádějte peer review změn a uchovávejte auditní stopy.
Správa uživatelů, tajemství a identit
Pro větší prostředí využívejte centrální identitu (LDAP/FreeIPA/SSSD) a role. Tajemství ukládejte do 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 přes kanárky a postupné rollouty. Kde je to možné, 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 body.
Dokumentace a provozní standardy
Každá služba má 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 IaC.
- Exponované služby bez TLS/ACL: vždy používejte šifrování a segmentaci.
- Ignorované logy a metriky: bez observability nelze řídit výkon ani bezpečnost.
- Monolitické servery „na všechno“: oddělujte role, kontejnery nebo VM.
Závěr: od instalace k udržitelnému provozu
Instalace služby v Linuxu je pouze první krok. 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í osvědčených postupů snižuje rizika, zvyšuje dostupnost a umožňuje rychlejší doručení hodnoty pro uživatele i byznys.