přejít na obsah přejít na navigaci

Linux E X P R E S, Správa linuxového serveru: Jak aktualizovat server(y)

Správa linuxového serveru: Jak aktualizovat server(y)

debain_notext.png

Každý operační systém a software na něm je třeba aktualizovat. U serveru to platí dvojnásob, jelikož je permanentně vystaven útokům z celého světa. Přitom aktualizace serveru nebývají úplně triviální. V tomto dílu se dozvíte více o této problematice a doporučených postupech.


Předmluva

Oproti aktualizacím desktopu je aktualizace serveru přeci jen v pár věcech odlišná. Na desktopu je obvykle ve výchozí instalaci přítomen nějaký nástroj, který vás na dostupnost nových aktualizací upozorní a provede vás příslušným procesem, a to obvykle v pohodlí grafického prostředí. Na serveru si upozorňování i provádění aktualizací musíte zařídit sami. Druhým podstatným rozdílem je dopad případného problému při aktualizaci - na serveru obvykle jakýkoliv problém postihuje řádově větší množství lidí.

Na základě vlastní zkušenosti si troufám odhadnout, že v případě stabilní větve Debianu je pravděpodobnost nějakého problému při aktualizaci velmi malá, správci se snaží o maximální stabilitu, takže aktualizace proběhnou v drtivé většině případů plně automaticky, bez nutnosti intervence správce. Samozřejmě tomu tak není úplně vždy, někdy je už z povahy aktualizace nutná intervence správce, a to i ve stabilní větvi distribuce, nehledě na různé testovací větve či rolling release distribuce, kde hrozí "rozbití" něčeho prakticky při každé aktualizaci. Proto není u serveru úplně vhodné provádět aktualizace automaticky třeba v rámci cronu, i když to samozřejmě technicky proveditelné je.

Doufám, že nemusím příliš zdůrazňovat, že opačný přístup, tedy neprovádění aktualizací vůbec, je téměř jistá sebevražda. Už jsem měl tu čest s jedním serverem, kde se na aktualizaci distribuce čekalo tak dlouho, až server úspěšně napadl útočník a převzal nad ním kontrolu.

Druhy aktualizace a aktualizace v Debianu

Aktualizace lze členit dle více kritérií. Předně je třeba rozlišovat aktualizace v rámci určitého vydání distribuce (tj. třeba v rámci Debianu stable), aktualizace distribuce na novější verzi (tj. třeba aktualizaci Debianu 4.0 na Debian 5.0), a aktualizaci rolling release distribuce.

Dále je třeba rozlišovat povahu aktualizace, tedy jedná-li se o bezpečnostní aktualizaci, nebo pouze o opravu nějakého problému, který nemá bezpečnostní dopad, nebo jedná-li se o aktualizaci na novou verzi dané komponenty.

Aktualizace stabilní větve distribuce by měla být relativně bezproblémová, nemělo by docházet k tomu, aby aktualizace nějakého balíčku rozbila nějakým způsobem nakonfigurovanou službu. Do stabilní větve distribuce (alespoň u Debianu to tak je) by se měly dostávat pouze nutné opravy a bezpečnostní aktualizace, ne nové verze balíčků, kde by třeba vlivem změny syntaxe konfiguračních souborů došlo k narušení nakonfigurovaných služeb.

Aktualizace na nové vydání distribuce je naopak poměrně komplikovaná záležitost. Jelikož se mění verze balíčků a mezi dvěma stabilními vydáními (nejen Debianu) je obvykle velká časová propast, je dost dobře možné, že se v rámci aktualizace nevyhnete problémům, kdy něco přestane fungovat (bude potřeba upravit konfigurační soubor, nebo samotnou databázi uchovávající data atd.). Abyste možnost výskytu takového problému omezili na minimum, doporučuji s aktualizací vyčkat rozumně dlouhou dobu po vydání nové verze distribuce, než se pokusíte provést upgrade. Během této doby se snad většina problémů buď vyřeší, nebo se na ně alespoň přijde a vy se na ně budete moci připravit.

Před samotným upgradem se určitě podívejte po nějaké dokumentaci, a to jak po dokumentaci vztahující se k samotnému optimálnímu postupu aktualizace, tak po poznámkách k vydání, které bývají obzvláště důležité, neb ukrývají seznam známých problémů, na které můžete při aktualizaci narazit.

V případě produkčních systémů bývá vhodné aktualizaci provést pro jistotu "nanečisto" na podobném systému nebo na kopii produkčního systému postavené třeba ze záloh, výsledek důkladně zkontrolovat a otestovat, a teprve pak aktualizovat ostrý server. Samotnou aktualizaci bývá velmi vhodné naplánovat v čase, kdy je server minimálně vytížen, resp. minimálně využíván. Zálohování (nejen) těsně před aktualizací je v tomto případě, jak pevně doufám, samozřejmost.

Rolling release distribuce mají dost specifický charakter - do repositářů se dostávají rovnou nové verze programů (obvykle po otestování), což znamená, že každá aktualizace v sobě skrývá nebezpečí, že něco přestane fungovat. Z tohoto důvodu nebývají tyto typy distribucí příliš doporučovány na produkční servery, i když svědomitý a schopný správce jistě dokáže s jistou dávkou úsilí většině problémů úspěšně předejít. Jen to asi dá trošku více námahy.

Aktualizace v Debianu

V případě Debianu se aktualizace provádí následovně:

aptitude update && aptitude full-upgrade

První část příkazu aktualizuje databázi balíčků (a stav balíčků v repositářích), druhá část provede vlastní aktualizaci. Tento příkaz by měl pokrýt i situace, kdy se mění závislostní vazby a kdy vyvstane nutnost nějaký balíček odstranit, aby bylo možné zaktualizovat úplně všechno. Bezpečnou alternativou, v rámci které se aktualizace omezí pouze na případnou instalaci nového balíčku, ale nikoliv už na odstranění některého nainstalovaného, je safe-upgrade:

aptitude update && aptitude safe-upgrade

Samotný safe-upgrade má nepovinný parametr --no-new-installs, který zabrání i instalaci nových balíčků v rámci aktualizace.

Domnívám se, že největší nebezpečí spojené s full-upgrade spočívá spíše v situaci, kdy máte buď přidané některé neoficiální repositáře (kde se mohou tlouci balíčky s oficiálními repositáři), nebo když se pokoušíte aktualizovat na novější verzi distribuce. U aktualizací v rámci stabilní větve Debianu by ke konfliktům docházet nemělo.

Pokud dojde k nějakému konfliktu, a je potřeba nějaký balíček odstranit, nabídne vám Aptitude řešení. V každé takové situaci byste měli zbystřit a dávat pozor, s čím souhlasíte.

Strategie pro aktualizaci

První z možností je automatická aktualizace, tj. příslušný záznam v cronu, který pravidelně aktualizuje systém. Z důvodů popsaných výše důrazně nedoporučuji něco takového používat na produkčních serverech. O něčem podobném bych uvažoval u domácího serveru či u osobního VPS, kde tolik nevadí, pokud třeba něco přestane fungovat. Kromě ručního vytvoření skriptu, který vám toto zajistí, můžete využít balíček cron-apt.

Druhou z možností je ruční aktualizace. Ta samozřejmě předpokládá nutnost dozvědět se o dostupnosti nových aktualizací. Za tímto účelem můžete použít výše zmíněný cron-apt nebo také apticron. Tyto nástroje vás budou informovat mailem o nových aktualizacích.

Ve spolupráci s balíčkem apt-listchanges umí apticron posílat v mailech i podrobnosti o aktualizacích. Dozvíte se tak třeba, zdali se jedná o bezpečnostní aktualizaci, čeho se aktualizace týká a také, jak moc je doporučováno aktualizovat.

V rámci ruční aktualizace máte samozřejmě možnost vybírat, kdy a co aktualizovat. Jedna z možných strategií je aktualizovat vše, druhou možností je aktualizovat jen to, co je opravdu nutné. K tomuto rozhodování vám velice dobře poslouží výše zmíněné nástroje. Nemusí být také úplně od věci přihlásit se k odběru zpráv o bezpečnostních problémech a aktualizacích. V případě Debianu se podívejte na Debian.org.

Nahoru

Příspěvky

Správa linuxového serveru: Jak aktualizovat server(y)
L 19. 08. 2010, 02:00:52
Odpovědět  Odkaz 
Myslíte si, že u webového serveru jsou také tak kritické bezpečnostní aktualizace? Mám pro jeden web osobní server a bojím se ho aktualizovat právě z toho důvodu, že jestli se něco rozbije, tak se jen velmi těžko budu na něj dostávat.
Správa linuxového serveru: Jak aktualizovat server(y)
Martin Kocourek 19. 08. 2010, 03:54:15
Odpovědět  Odkaz 
Ano, zvláště webové servery jsou naprosto kritické, pokud jde o aktualizace.

"...těžko budu na něj dostávat..." - pak to není SERVER, protože ten se od běžného DESKTOPu liší kromě několika jiných věcí také tím, že poskytuje možnost vzdálené správy (restart, zapnutí) a vzdálené konzoly (textová/serial - např. IPMI nebo grafická - KVM)
Správa linuxového serveru: Jak aktualizovat server(y)
Mach 19. 08. 2010, 23:43:14
Odpovědět  Odkaz 
Již několik let se řídím tímto:

1. opravdu silné heslo (12 znaků, A-Z, a-z, 0-9 a další znaky !@#$%^&...)

2. nainstalovaný balíček denyhosts > http://denyhosts.sourceforge.net/

3. přihlašovat se přes SSH pomocí klíče nikoliv hesla > http://www.debianadmin.com/ssh-your-debian-servers-without-password.html

4. pravidelně (cca 1x týdně) apt-get update && apt-get upgrade

5. spuštěné jen opravdu používané služby
Lukáš Zapletal Re:Správa linuxového serveru: Jak aktualizovat server(y)
zapletal 22. 08. 2010, 21:16:50
Odpovědět  Odkaz 
1,5) Přesunout port 22 na jiný.
Správa linuxového serveru: Jak aktualizovat server(y)
René Seifert 20. 08. 2010, 08:20:56
Odpovědět  Odkaz 
Skvělá věc, včera jsem ji hned nainstaloval a dnes už mám první mejlík o aktualizaci jádra ke stažení. Existuje něco podobného i pro CentOS. Víte o něčem nebo dokonce něco podobného pod CentOS používáte ?
Re:Správa linuxového serveru: Jak aktualizovat server(y)
mam 20. 08. 2010, 11:35:11
Odpovědět  Odkaz 
Existuje: http://www.cyberciti.biz/faq/red-hat-centos-fedora-send-package-update-notification-via-email/
Re:Re:Správa linuxového serveru: Jak aktualizovat server(y)
René Seifert 20. 08. 2010, 20:52:17
Odpovědět  Odkaz 
Díky, to je přesně ono.
Správa linuxového serveru: Jak aktualizovat server(y)
petjo 30. 08. 2010, 16:42:42
Odpovědět  Odkaz 
Misto apticron mam v cronu jen apt-get update,
info o novych aktualizacich se preposila pres nagios-nrpe
centralnimu nagiosu, ktery mi to zobrazi v pekne tabulce
s upozornenim na "critical updates". Pochopitelne mi to posle i mailem,
ale na nektere maily zapominam, ta tabulka me bije do oci "furt":)

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz