Seznámení s projektem OpenBSD s přihlédnutím k jeho využití na routeru.
17.9.2007 13:00 | Radim Kolář | přečteno 11885×
Většina z Vás již něco slyšela o OpenBSD. V současné době se jedná se po FreeBSD o druhý nejrozšířenější systém z rodiny BSD, pokud nepočítáme Mac OS X. Kromě vlastního operačního systému je OpenBSD projekt znám zejména díky programu OpenSSH, který dnes není třeba představovat. Ostatní programy napsané OpenBSD teamem (dhclient, openntpd, opencvs, atd) již nejsou tak známé. Jedinou vyjímku tvoří OpenBGPD, který je příležitostně nasazován i u větších ISP.
Primárním cílem OpenBSD projektu je sice bezpečnost, ale velký důraz se klade i na kvalitu kódu a přijatelnost licence. OpenBSD je portované na většinu dnes běžných platforem. Jako u všech BSD, tak i u tohoto projektu je kladen velký důraz na kvalitní a aktuální dokumentaci.
Doménou vhodnou pro nasazení OpenBSD jsou zařízení, kde se vyžaduje vysoká míra bezpečnosti a spolehlivosti, malá spotřeba paměti a kde je aktualizace software během životnosti zařízení spíše vyjímkou nežli pravidlem (tzv. install and forget).
OpenBSD je tradičně nasazováno na routery, firewally, wifi access pointy a embedded zařízení. Wifi podpora včetně driverů je tradičně na velmi dobré úrovni. Pokud není požadována vysoká bezpečnost, tak je na velké servery díky nižšímu výkonu a slabé podpoře SMP nasazováno poměrně zřídka, Na desktopech či notebooku se s OpenBSD setkáte jen u jeho skalních příznivců.
OpenBSD je nejpomalejším OS z celé BSD rodiny. Nižší výkon je sice nepříjemný, ale existuje řada úloh při kterých není server moc zatěžován a zde menší výkon nevadí. Výkon OpenBSD můžeme rozdělit na dvě části: kernel a userland.
Výkon v userlandu je snížen sadou GCC patchů známou pod jménem Pro Police (Vyvinuto IBM), zajišťující obranu proti klasickému útoku typu stack overflow. Podle testů Pro Police brzdí systém maximálně o 5 procent, obvykle jsou to jen 2-3 procenta. Další ochranou je sada patchů známá pod označením Purify, která obsahuje W^X stack, .rodata segment, Guard pages, Randomized malloc(). Tyto patche snižují výkon zhruba stejně. Nejsou tady ničím závratně zpomalujícím. Tímto jsem chtěl poukázat na nepravdivost pověstí tvrdících, že OpenBSD je díky své bezpečnosti pomalé.
Největší brzdou výkonu v OpenBSD je kernel. Ačkoliv se aplikační rozhraní Unix kernelu za posledních 20 let prakticky nezměnilo a naprosté většině softwaru stačí ke spokojenosti BSD4.3 API, staré verze Unixu byly naprogramovány s využitím jednoduchých ale neefektivních a nepříliš škálovatelných algoritmů. Kernel OpenBSD je co se efektivity týče z pravěku a jeho odpůrci se často vyjadřují slovy jako ,,je dobrý jen na to, aby tam šlo spustit vi /etc/pf.conf''.
Efektivitu OpenBSD kernelu zde dopodrobna rozebírat nechci, poukáži jen na test propustnosti routerů, ve kterém OpenBSD dosahuje přibližně poloviční propustnosti (packety/sec) oproti ostatním systémům. Tento test odpovídá reálnému nasazení, protože OpenBSD je velmi často používáno jako router. V poslední době se tato nepříjemná situace zlepšila, protože během přidávání podpory 10 Gbit Ethernetu došlo i na optimalizaci síťového subsystému.
O OpenBSD se humorně říká, že je to nejlepší Linuxová distribuce na router. Sám jsem s OpenBSD na routerech velmi spokojen a zbytek článku bude tomu nasazení věnován.
Pravděpodobně nejpoužívanějším hardwarem pro routery jsou embedded PC. OpenBSD je velmi nenáročný systém. K provozu mu stačí 32MB RAM (bez swapu), 128MB CF, sériový port pro consoli, 1 nebo 2 onboard síťové karty a případně USB pro připojení Wifi karty. Pokud jde o procesor, nejpomalejší CPU co dnes seženete jsou taktovány na cca 400Mhz, což je nejen více než dostatečné pro 100Mbit routing, ale zvládá i IPSEC a WPA šifrování používané při stavbě Wifi Access Pointů.
O instalaci OpenBSD bylo napsáno mnoho dobrého i zlého. Některým se jednoduchá instalace libí a ostatní již z principu zatracují všechny negrafické instalační programy. OpenBSD se nikdy nezaměřovalo na koncového uživatele a instalační program tomu odpovídá. Je nejjednoduší z celé BSD rodiny. To je jeho hlavní klad, nikoliv nedostatek. Neklade mnoho otázek a tím šetří čas administátora a snižuje se riziko selhání instalace způsobené lidským faktorem. Nejnáročnější částí instalace je vytváření diskových partitions tradičním BSD způsobem t.j. dvouúrovňově partition/disklabel.
Nejjednoduší způsob instalace OpenBSD je bootovací disketa + zbytek stáhnout ze sítě. OpenBSD je jediným BSDčkem kterému k instalaci stačí jedna jediná disketa. NetBSD používá dvě a FreeBSD čtyři. Instalační program pak dotáhne z Vámi vybraného mirroru zbytek. Při instalaci na více počítačů se doporučuje použití proxy cache. Projekt OpenBSD poměrně netypicky pro Open Source nedává volně k dispozici instalační ISO image. Instalační lisovaná CD lze zakoupit na stánkách projektu a projekt tímto finančně podpořit nebo si je svépomocí vyrobit.
Běžná instalace na router se skládá z 6MB jádra, 40MB základního systému, 1MB konfigurace, 7MB man stránek a 2MB ostatní dokumentace. V některých případech můžeme přidat i 75MB GCC. Posledním balíčkem který můžeme volitelně nainstalovat jsou 63MB X Windows.
Po instalaci a dekomprimaci instalačních balíků zabere OpenBSD 4.1 bez kompilátoru a X Windows 180 MB. S vynaložením jistého úsilí (např. deinstalace manpages) lze systém ručně ořezat tak, aby se pohodlně vešel na 128MB flash drive. Vyplatí se to pouze pokud máme v plánu instalovat desítky podobných systémů (ušetříme zhruba 5 USD/kus). Pokud někdo víte o již ořezaném OpenBSD distru pro 128MB, dejte prosím v diskuzi vědět. Ořezávat systém na 64MB se dnes již vzhledem k minimálnímu cenovému rozdílu (v době psaní článku průměrně 1,5 USD) flash pamětí nevyplatí.
Dobrým zvykem je před uvedením do produkce systém opatchovat. To je u OpenBSD trošku problém. Patche k dispozici jen ve formě diff souborů a na routeru se nám těžko bude chtít překládat kernel, pokud tam vůbec je překladač GCC instalován. Toto lze řešit dvěma způsoby:
OpenBSD vydává dvě hlavní verze ročně. Bezpečnostní a errata patche jsou podporovány pouze pro dvě poslední verze. Pokud chcete mít aktuální systém je nutné provádět aktualizaci každých šest měsíců, protože přeskakování jednotlivých verzí není při aktualizacích oficiálně podporováno. Aktualizační politiku proto nepovažuji vzhledem k nutnosti častých upgradů za příliš šťastnou.
OpenBSD obsahuje v základním systému vynikající kolekci software. Osobně považuji základní systém OpenBSD za nejucelenější ze všech BSDček. Nenastávají tu problémy jako například u FreeBSD, kdy kernel sice umí IPSEC, ale daemon pro dynamickou výměnu klíčů již v systému není. Dobře vybraný software v základním systému OpenBSD je jedním z velkých plusů OpenBSD, neboť výrazně zkracuje čas nutný k uvedení nově nainstalovaného systému do provozu.
Routovací daemoni: routed, route6d, ospfd, bgpd multicast - ripd, mrouted, dvmrpd
Správa IP address: rarpd, dhcpd, dhclient, dhcrelay, rtsold, rtadvd
Síťový čas: timed, rdate, ntpd
Bootování: tftpd, rbootd, bootparamd, mopd
IPSEC: isakmpd, sasyncd
Wifi: hostapd
Load balancing: hostated
Standardní unix služby: ftpd, identd, rwhod, portmap, inetd, kerberos, nis
Sdílení souborů: nfsd, lockd, amd, afs
Klasika: BIND 9.3.4, Sendmail 8.14.0 + spamlogd, Apache 1.3.29, OpenSSH 4.6, OpenSSL 0.9.7j
Další sofware je se doinstalovává z tzv. portů - připravených binárních balíčků, v případě krize manuální kompilací. Pro provoz routeru si můžeme přihodit pár drobností jako vim, screen, případně PHP. Na access pointech je populární mít nainstalován tzv. captive portal a většina těchto portálů je napsána právě v PHP.
OpenBSD se velmi hezky provozuje v QEMU. Jednak se s ním pomocí QEMU můžete bezrizika seznámit a jednak je to snadný způsob výroby binárek pro patchování ostatních systémů bez nutnosti obětovat OpenBSD celý počítač či partition. Pro instalaci do qemu stačí stáhnout obraz instalační diskety floppy41.fs a spustit ji:
qemu-img create -f qcow2 openbsd.qemu 2GB qemu -m 40 -hda openbsd.qemu -fda floppy41.fs -boot a -net nic -net tap
OpenBSD uživatelů není sice mnoho, ale rádi o sobě dávají vědět. Projekt prodává cédéčka, trička, plakáty a drobné reklamní předměty. Nové verze jsou vydávané nejen pravidelně, ale také s patřičnou parádou -- na počest každé nové verze je složena píseň. OpenBSD je také nejvíce ze všech BSD zmiňované v BSD sekci slashdotu.
Nejznámějším informačním serverem OpenBSD komunity je bezesporu Undeadly, kde se dozvíte aktuální novinky ze světa OpenBSD. Nelze opomenout vůdce projektu Theo de Raadta, který je znám občasnými flamewary zaměřenými na Linux a GPL licenci. Kromě flamewarů poskytuje také občasná interview různé kvality z nich nejznámější je Linux is for losers.