Hlavní navigace

Prohlídka OpenBSD 3.8

21. 11. 2005
Doba čtení: 6 minut

Sdílet

V listopadu vyšlo nové OpenBSD, které jako obvykle přináší řadu novinek a vylepšení nejen v oblasti bezpečnosti. Pojďte si přečíst, jestli má co nabídnout právě vám.

Každého půl roku mi poštou přijde CD s novým, čerstvě „upečeným“ OpenBSD, které spolu s novým tričkem pokaždé vyvolává u některých mých známých vlnu údivu „Ty si to vážně kupuješ!?! Vždyť je to zadarmo…„.

Ani letošní listopad nebyl výjimkou a operační systém OpenBSD, který nedávno (18. 10. 2005) oslavil 10. narozeniny, se dočkal verze 3.8. Notoricky známou historku, proč Theo založil OpenBSD, najdete na zeus.theos.com/de­raadt/coremail­.html. Tento OS jsem si vybral asi před pěti lety, asi díky svému zaměření na bezpečnost, což je jedna z věcí, které mají v „Open“ prioritu. Od té doby mi více méně vyhovuje ve všem, co potřebuji, přístup a názory vývojářů jsou mi hodně blízké, a tak nějak nemám důvod měnit. Článek, který následuje, stručně shrnuje, co je v 3.8 nového.

Maskot OpenBSD 3.8

Každé vydání OpenBSD se nese v duchu nějakého tématu: boje proti patentům, nechuti výrobců hardware poskytnout vývojářům dokumentaci bez NDA, přístupu jiných vývojářů svobodného software atp. Kompletní historky, texty písní a grafiku k jednotlivým vydáním najdete na URL www.openbsd.or­g/lyrics.html. CDčka mají také specifickou grafickou úpravu týkající se daného vydání, obsahují instalaci pro několik podporovaných architektur, opět tématicky laděný song, balíčky aplikací…

3.8 nese podtitulek „Hackers of the Lost RAID“, takže graficky je Puffy, symbol OpenBSD, stylizován do Indiana Jonese, song (ftp.openbsd.or­g/pub/OpenBSD/son­gs/song38.ogg) je jakoby stará rozhlasová hra, v níž fandové najdou spoustu odkazů na film, který byl tomuto vydání předlohou.

Nová verze přináší celou řadu novinek (jak už tomu s novými vydáními operačních systémů bývá), jedno z nich jest i správa RAID řadičů. Cílem je vytvořit jeden nástroj (one tool to rule them all :o), který bez závislosti na typu hardwaru spravuje disková pole bez nutnosti používat software výrobců řadičů. Nástroj se jmenuje bioctl(8), zatím podporuje RAID řadič ami(4) a v současné době podporuje minimální funkcionalitu pro management RAID polí, tj. detekovat špatný disk v poli, odpojit ho, přidat jiný disk do pole, udělat z disku hot spare. Teď už je „jenom“ potřeba spolupráce výrobců HW, kteří poskytnou patřičnou dokumentaci (ale přimět je k tomu…), aby bylo možné přidat podporu i pro jejich výrobky.

Další změnou je podpora trunk(4) rozhraní, je tedy možné ze dvou či více fyzických síťových karet vytvořit jednu virtuální (člen trunk může být i jiné trunk rozhraní). Výhodou je samozřejmě jistý nárůst výkonu, ale taky failover na L2. Pokud se jeden z portů odpojí, spojení bude fungovat dál přes dalšího člena. V pravidlech firewallu OpenBSD, pf(4), se trunk filtruje jako jakékoliv jiné rozhraní, nicméně opět s možností přidávat/ubírat rozhraní z/do trunk(4), ale bez nutnosti měnit pravidla firewallu.

Appropos firewall – pf(4). Už zase se má nové možnosti a vlastnosti (kdo se to má pořád učit :o). Ten, kdo pf(4) používá, zná už z předchozích verzí (popř. z jiného BSD, která ho importovala) možnost omezit počet spojení na cílovou IP adresu z jedné zdrojové.

Známe tedy tyto možnosti:

pass in on $ext_if proto tcp from any to $web port 80 keep state (max 100)
pass in on $ext_if proto tcp from any to $web port 80 keep state (max 100, source-track rule, max-src-nodes 75, max-src-states 5) 

První nedovolí navázat na webový server více než 100 spojení, ve druhém případě je to celkově maximálně 100 spojení, ale z maximálně 75 hostů a každý z nich má povoleno pět spojení.

Teď můžeme pravila rozšířit:

pass in on $ext_if proto tcp from any to $web port 80 keep state (max-src-conn 100, max-src-conn-rate 100/10, overload <badhosts>) 

Opět max. 100 spojení, ale navíc rychlost navazování je 100 spojení za 10 sekund, po překročení jedné z těchto hodnot je pak pomocí overload IP adresa hosta vložena do tabulky badhosts. Podle jména tabulky je následně možné filtrovat a kompletně na nějakou dobu zakázat přístup, pomocí AltQ zpomalit provoz, přesměrovat…

Jestli se někdo teď chystá namítnout, že začne snadno falšovat IP adresy, a způsobí tím tak DoS, je nutné si uvědomit, že max-src-conn počítá plně navázaná spojení (Syn, Syn/Ack, Ack musí proběhnout), takže by bylo nutné podvrhnout celý handshake (a to skrz Internet a OpenBSD firewall přeji hodně štěstí).

To, že už OpenBSD umí stateful-failover nejen pro pf(4), takže je možné ze dvou (nebo ze čtyř, proč ne) firewallů udělat jeden virtuální (mohou rozkládat výkon, zastupovat se při pádu atp.), je dnes již stará věc. Verze 3.8 přináší stejnou možnost i pro IPSec VPN spojení, takže při případném pádu jedné IPSec brány se spojení nepřeruší, sa jsou synchronizovány i s druhou bránou a VPNka tak běží vesele dál. Podobnou funkcionalitu zajišťuje sasyncd(8). Management IPSec dostal nový nástroj, a to ipsecctl(8). Konfigurace pomoci isakmpd.conf je nadále možná, nicméně s novým nástrojem je mnohem jednodušší a rychlejší.

Pro kotrolu stavu síťové cesty, a to nejen toho, jestli je rozhraní UP/DOWN, je k dispozici ifstated(8) démon. Lze kontrolovat dostupnost třeba pomocí ping a následně na základě výsledku spouštět/zastavovat démony, měnit filtrovací pravidla atp. Dalším novým démonem je ospfd(8). To by člověk podle jména neřekl, že zajišťuje změnu směrovacích tabulek pomocí OSPF (Open Shortest Path First). Bgpd(8), který už známe s předchozích verzí, se taky trochu vylepšil, jednotlivým cestam je teď možné mj. „přilepit“ pomocí pravidel tzv. label a dále na základě téhle nálepky je pak možné filtrovat v pf(4). Takže lze třeba seškrtit provoz z určitého zdroje, ale taky například distribuovat black-listy ve větším prostředí třeba právě pomocí  bgpd(8).

OpenBSD je známé svým přístupem „secure by default“ (a netýká se to jenom standardně spouštěných síťových služeb po instalaci). Jednou z velkých změn je práce s alokací a uvolňováním paměti malloc(3), free(3), nmap(2). Nejsem programátor a popisu změn bohužel rozumím jen tak „napůl“, ale podle toho, co jsem četl, je to velká změna a opět, jak je zvykem, je všechno „by default“ (takže žádné záplatování, speciální vylepšení kernelu nebo gcc, abychom dosáhli vylepšení), všechno je k dispozici hned a pro všechny aplikace včetně base OS samotného. Změny by měly posílit systém (a aplikace) proti útokům heap overflow, ale také by měly pomoci najít potenciálně zneužitelné chyby v aplikacích, protože pokus o přístup k již uvolněné paměti=SIGSEGV, pokus o čtení před nebo za alokovanou částí paměti=SIGSEGV. Takže některé aplikace budou krátkodobě třeba víc padat, ale ve finále z toho budou mít užitek všichni, nejen OpenBSD uživatelé.

Tyto změny se připojily k již dříve implementovaným W^X, ProPolicy, priviledge separation/re­vocation, náhodným adresám v nmap/malloc atd. atd., to všechno zase zapnuté „by default“. Proti ICMP útokům proti TCP popisovaným v práci Fernanda Gotha (a které ovlivňují kdeco a kdekoho, viz www.securityfo­cus.com/bid/131­24) OpenBSD jako jedno z prvních (a mám dojem, že snad i zatím posledních projektů či produktů) změnilo síťovou vrstvu zajišťující TCP komunikaci a aplikovalo doporučená opatření.

UX DAy - tip 2

Hostapd(8) je Host Access Point démon pro WiFi. Kromě toho, že zvládne dělat WiFi AP, umí v rozsáhlejším prostředí monitorovat provoz WiFi sítě. Takže se jednotlivé AP mezi sebou mohou pomocí protokolu IAPP (Inter Access Point Protocol) dorozumívat, vědí o sobě a jestli se objeví jiný, neautorizovaný AP, tak mu začnou posílat rámce, které budou odpojovat ty stanice, jež se k němu připojí. Zajímavé… Dále 3.8 obsahuje třeba OpenSSH 4.2 (což ovšem málokoho překvapí, když to v podstatě dělá ten samý tým), lepší podporu HW a celou řadu dalších vylepšení (kompletní popis najdete na www.openbsd.or­g/38.html, hodně kompletní popis zase na www.openbsd.or­g/plus38.html).

Ačkoliv OpenBSD podle mého není až zas tak rozšířené jako bratříčci či sestřičky FreeBSD či NetBSD (nebo Theo chraň Linux), určitě má podle mého co nabídnout. Takže neváhejte, lokální zrcadlo OpenBSD ftp.openbsd.cz/pub/O­penBSD/3.8 na vás už čeká.

Byl pro vás článek přínosný?