Aktualizace: proč jsou důležité a jaká jsou rizika
Aktualizace jsou nezbytnou součástí každého bezpečného systému. Brání vzniku incidentů a zajišťují plynulý provoz IT systémů a služeb. Tento článek porovnává přínosy a rizika manuálních i automatických aktualizací, primárně v prostředí linuxových distribucí. Pro doplnění uvádí příklad automatických aktualizací pro aktuální LTS verzi Ubuntu 24.04 a 22.04.
Žádný software není bezchybný; některé chyby mají vliv na funkčnost, zatímco jiné představují bezpečnostní rizika, ty označujeme jako zranitelnosti. Včasná oprava zranitelností minimalizuje riziko jejich zneužití a následků jako je únik citlivých informací, nakažení malwarem či narušení dostupnosti služeb.
O to více v dnešní době, kdy ke zneužití zranitelností není zapotřebí pokročilých technických znalostí. Pro mnoho zranitelností existují skripty a nástroje, které může snadno použít kdokoli se základními IT dovednostmi. Příkladem jsou framework Metasploit nebo skener zranitelností Nuclei.
Účinnou ochranou před zneužitím zranitelností jsou pravidelné a včasné aktualizace softwaru. V prostředí univerzity je třeba zdůraznit, že neaktualizovaný software představuje významné riziko nejen pro samotné zařízení, na kterém je nainstalovaný, ale může také ohrozit i bezpečnost celé univerzitní sítě.
Rychlý pohled na bezpečnostní aktualizace pro linuxovou distribuci Debian odhalí desítky opravených zranitelností měsíčně.
Pravidelné aktualizace jsou nutné v prostředí univerzity dle směrnice MU č. 9/2017 - Správa informačních technologií.
Protože se zranitelnosti stále častěji objevují i v kritickém softwaru, čistě manuální řešení aktualizací už nestačí. K situaci je nutné přistupovat systematicky a automatizovaně. Na následujících řádcích se proto zaměříme na software, který lze nainstalovat pomocí správců balíčků linuxových distribucí, jako je například Advanced Packaging Tool (APT) nebo Dandified YUM (DNF).
Operační systémy a aplikační knihovny
Operační systémy a aplikační knihovny představují základní stavební kameny každého systému, proto je zajištění jejich pravidelných aktualizací zásadní. Často totiž obsahují kritické závislosti, které ovlivňují funkčnost a bezpečnost celého IT prostředí, což činí jejich údržbu klíčovou.
Manuální aktualizace
U systémů vyžadujících vysokou dostupnost služby je vhodné provádět manuální aktualizace. Pro hladký průběh manuálních aktualizací doporučujeme zvolit následující postup:
1. Nastavte si upozornění na pravidelnou kontrolu vydaných aktualizací.
2. Proveďte aktualizace v době, kdy je systém nejméně využívaný, abyste měli prostor pro opravy v případě neúspěchu.
3. U kritických systémů je žádoucí aktualizaci ověřit na testovací instanci a po kontrole ji aplikovat na produkční systém.
3. Restartujte aktualizované služby, aby aktualizace vstoupily v platnost.
4. Zkontrolujte stav systému po provedených aktualizací.
Upozornění: Pouhá aktualizace systémového balíčku nestačí. Běžící služby je nutné restartovat, aby mohla aktualizovaná verze nahradit tu stávající. Pokud se služby nerestartují, může se stát, že soubory na disku jsou aktualizované, ale v operační paměti stále běží staré verze softwaru. V případě aktualizací kernelu nebo některých knihoven může být nutné restartovat celý systém. Pokud chcete dostávat e-mailové notifikace o nových dostupných aktualizacích pro váš server, můžete si je nastavit například dle instrukcí v článku „Get Notified of Ubuntu Box Security Updates“.
Automatické aktualizace
Systémy, u kterých není dostupnost kritickým faktorem, mohou těžit z automatických aktualizací systémových balíčků a knihoven. Zapnutí automatických aktualizací však přináší i rizika. Nezdařená aktualizace může vést k nedostupnosti služby nebo k nutnosti navrácení systému do předchozího stavu. Nejenom z těchto důvodů je nutné dbát na monitoring, logování a zálohy. Před zapnutím automatických aktualizací je proto nutné zohlednit alespoň následující otázky:
1. Kdy je systém nejméně využívaný uživateli?
2. Kdy mám dostatek času na řešení případných problémů s aktualizací?
3. Sleduji systém pravidelně a budu informován o omezení dostupnosti způsobeném aktualizací?
4. Mám nastavené procesy (DRP) pro obnovu provozu při selhání (např. testované zálohy, verzování konfigurace systému, dostupný zaměstnanec pro opravy)?
Upozornění: Mnohé linuxové distribuce, jako jsou Debian, Ubuntu, Alma Linux a další, nabízejí možnost naplánovat automatické aktualizace na konkrétní den a čas! Navíc umožňují omezit aktualizace pouze na ty, které opravují bezpečnostní chyby. Dále lze definovat výjimky pro ty balíčky, které nemají být aktualizovány.
Automatické aktualizace na linuxové distribuci Ubuntu 22.04 a 24.04
Automatické aktualizace jsou poskytovány skrze balíček unattended-upgrades. Jeho konfigurace se nachází v souborech /etc/apt/apt.conf.d/50unattended-upgrades a /etc/apt/apt.conf.d/20auto-upgrades, logy v adresáři /var/log/unattended-upgrades/. Automatické aktualizace jsou spuštěny systemd timerem: apt-daily-upgrade.timer
V defaultním nastavení Ubuntu 22.04 i 24.04 jsou automatické aktualizace zapnuté, automatický restart služeb a reboot zařízený zapnutý není. V defaultním nastavení se aplikují i aktualizace bez bezpečnostního dopadu.
-
1. Instalace balíčku
Ověříme, že balíček unattended-upgrades je nainstalovaný pomocí: sudo apt install unattended-upgrades
-
2. Konfigurace systemd timeru
Zkopírujeme systemd timer, který aktualizaci spouští, abychom mohli upravit jeho hodnotu: sudo cp /usr/lib/systemd/system/apt-daily-upgrade.timer /etc/systemd/system/ -> timer můžeme upravit v textovém editoru. Hodnota OnCalendar nastavuje, kdy se timer spustí. Následující příklad spouští aktualizaci každé úterý v šest hodin ráno. Timer lze nastavit i na jiné hodnoty, které jsou uvedeny v manuálové stránce systemd.time(7).
[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer
[Timer]
OnCalendar=Tue 6:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target -
3. Konfigurace automatických aktualizací
Automatické aktualizace lze vypnout nebo zapnout editováním souboru /etc/apt/apt.conf.d/20auto-upgrades -> v defaultním nastavení jsou zapnuté:
- APT::Periodic::Update-Package-Lists “1”
- APT::Periodic::Unattended-Upgrade “1”
Samotné automatické aktualizace jsou konfigurované v souboru: /etc/apt/apt.conf.d/50unattended-upgrades -> podobně jako u nastavení timeru i tady zkopírujeme soubor a upravíme jeho hodnoty: cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/51unattended-upgrades
Následující konfigurační soubor zapíná bezpečnostní aktualizace. Mimo jiné také zapíná automatický reboot v osm hodin ráno po aktualizaci – reboot proběhne jen tehdy, je-li vyžadován systémem, například po aktualizaci kernelu. Pro všechny možné konfigurační možnosti konzultujte defaultní konfigurační soubor.
#clear Unattended-Upgrade::Allowed-Origins;
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security"; "${distro_id}ESM:${distro_codename}-infra-security";
};
// automaticky reboot pokud je nutny
Unattended-Upgrade::Automatic-Reboot "true";
// automaticky reboot i pokud jsou prihlaseni uzivatele
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";
Unattended-Upgrade::Automatic-Reboot-Time "08:00"; -
4. Restartování služeb po aktualizaci
Po aktualizaci je třeba restartovat služby, které běží ještě ze starých balíčků. O aktualizaci se stará balíček needrestart: sudo apt install needrestart -> dále vytvoříme soubor /etc/needrestart/conf.d/config.conf, ve kterém nastavíme automatický restart všech služeb, pokud byly aktualizovány, s výjimkou služeb qubes-gui-agent a qubes-core-agent-linux.
$nrconf{restart} = 'a';
$nrconf{override_rc}->{q(^qubes-core-agent-linux)} = 0;
$nrconf{override_rc}->{q(^qubes-gui-agent)} = 0; -
5. Načtení nové konfigurace
Nakonec načteme novou konfiguraci systemd daemona: sudo systemctl daemon-reload -> systém má nyní správně nastavené automatické aktualizace.
Závěrečná doporučení
Pravidelné aktualizace jsou klíčové, ale samy o sobě nestačí k zajištění bezpečnosti vašich serverů. Neméně důležitá je i správná segmentace sítě, která může výrazně snížit riziko zranitelností a omezit šíření případných útoků.
V článku "Doporučení pro zabezpečení zařízení v síti MUNI" se zabýváme kromě segmentace sítě i opatřeními, jako jsou firewally, monitorování síťového provozu a pravidelné kontroly systémů a služeb. Nejen ty jsou podstatné pro zabezpečení vámi spravovaných služeb.
Pokud si provozujete vlastní servery, bude nutné si aktualizace, zálohy i logování nastavit a spravovat samostatně.
V případě, že chcete využít aktuálně dostupné IT řešení, doporučujeme služby ÚVT.
Identifikovali jste nesrovnalosti v rámci nabízených služeb ÚVT, potřebujete poradit, nebo máte podnět na zpracování konkrétnějších témat, kontaktujte nás na csirt@muni.cz.