InstallFest 2013, sobota: Gentoo Hardened, otevřený hardware a licence

14. 3. 2013
Doba čtení: 13 minut

Sdílet

Letos se už popáté konal obnovený InstallFest. Ve školícím středisku na strahovských kolejích se opět sešli linuxáci, síťaři, studenti, nadšenci a hardwaráři. Poprvé byla součástí také samostatná část věnovaná Gentoo. Jaké přednášky jste si mohli poslechnout a co zajímavého na konferenci zaznělo?

Konference InstallFest se opět konala v areálu strahovských kolejí. Většina programu se odehrávala ve školícím centru za blokem sedm. Nový Gentoo track se konal právě v bloku sedm a začali jsme právě na něm.

Tomáš „Scarabeus“ Chvátal: Gentoo Hardened

Scarabeus je jedním z předních vývojářů Gentoo a je dokonce členem nejvyššího orgánu celého projektu. Hovořil o takzvaném Hardened Gentoo, což je normální Gentoo, které obsahuje úpravy pro vyšší bezpečnost a brání mnoha útokům. Udržuje se odděleně, protože přináší mírné zhoršení výkonu systému a jeho správa je o něco složitější.

Samotná instalace Hardened je velmi snadná, stačí začít jinou stage 3. Pokud chcete běžné Gentoo migrovat na Hardened, taky na tom není nic těžkého. Očekával jsem, že migrace bude výrazně komplikovanější, ale je to snazší, než jsem čekal, zhodnotil Tomáš Chvátal. V zásadě je třeba zkompilovat GCC s novým profilem a pak s ním překompilovat celý systém.

Hardened zasahuje systém ve čtyřech oblastech: GCC pluginy z jádra, přísnější linkování knihoven, úpravy v jádře a kompilační ochrana. Obecně je díky těmto úpravám v systému sledována řada procesů, je znemožněno provádět některé akce a systém je více svázaný. GCC tak například automaticky chrání zásobník proti přepsání, znáhodňuje adresy v paměti, odhaluje bezpečnostní problémy při kompilaci a podobně.

Tomáš Chvátal se zmínil například také o ochraně proti brute force útoku Pokud je některý démon buzen příliš často nebo se chová podezřele, je mu znemožněno se v následujících třiceti sekundách forkovat. Brání to různým útokům hrubou silou, pro které je typické zahlcení některých služeb a snaha o co největší namnožení procesů v paměti.

Velmi šikovné je také například omezení samotného jádra, které po aplikaci Hardened nemůže číst informace z uživatelského prostoru. To například znemožňuje čtení šifrovacích klíčů pomocí podvrženého jaderného modulu. Stejně tak jádro maže všechny stránky, které procesy uvolňují. To by mohlo například ovlivnit generování náhodných dat pro klíče třeba v OpenSSL, proto se na to hned ptáme. Ano, to by mohl být problém, proto má OpenSSL v Hardened speciálně patche, které tento problém řeší a klíče zůstávají stále náhodné.

U některých konkrétních aplikací je potřeba některé funkce Hardened vypnout, jinak neběží. Například X neběží s plnou relokací paměti, protože některé ovladače grafických karet to nepodporují. Stejně tak například kontrola zásobníku pomocí SSP v některých programech nefunguje, protože jsou mizerně napsané. Je snaha to opravit, ale u některých aplikací to není možné kvůli návrhu a na některé nechceme ani sahat, protože jsou napsané skutečně ošklivě, vysvětlil Chvátal.

Hardened se tedy skládá z několika desítek užitečných úprav v různých částech systému. Nevýhodou Hardened je, že je náročnější na výkon, ale podle Chvátala to není nijak dramatické. Při kompilaci zaznamenáte jisté zpomalení, ale při běhu systému je pak změna jen nepatrná.

Tomáš Srna: Git workshop

Součástí InstallFestu byly vždy také workshopy, letošní ročník nebyl výjimkou. Nutno říct, že o tyto prakticky zaměřené semináře byl ohromný zájem. Tomáš Srna měl od začátku nacpanou učebnu. Ta byla dimenzována asi pro dvacet lidí a posluchačů tu bylo nejméně dvakrát tolik.

V učebně byly připravené počítače s Ubuntu, na kterém měli posluchači možnost si vše vyzkoušet. Část z nich si přesto přinesla vlastní notebooky. Byl totiž slíben komplexní náhled na verzovací systém Git, který v posledních letech získal ohromnou popularitu. Začneme tím, proč Git vznikl, probereme si jeho základní použití a nakonec i pokročilé vlastnosti. Projdeme si prostě Git od úplných základů až po ten nejvyšší level, uvedl Tomáš Srna, také jeden z hlavních organizátorů InstallFestu.

Základní vlastností Gitu je, že je distribuovaný. Z dávných dob známé třeba CVS nebo SVN. U nich se vše dělá na serveru. Naopak v Gitu má každý svůj lokální repozitář, ve kterém vyvíjí. Poté může provést push na server. Je tedy úplně jedno, zda začnete pracovat na serveru nebo lokálně. Repozitáře jsou totiž rovnocenné.

Tomáš Srna následně předvedl vytvoření repozitáře, založení nového souboru, jeho přidání do stage a následný commit. Nezapomeňte si nastavit jméno, pod kterým budete commitovat. Je možné to nastavit pro jednotlivé repositáře či globálně, připomněl správně Srna. Tyto informace často slouží pro automatizovaný systém nad Gitem, jakým je třeba GitHub. Ten pak dokáže identifikovat jednotlivé commitery.

Dále Srna předváděl spolupráci se vzdálenými repozitáři po síti. Jako vzdálený repozitář je možné použít třeba známý GitHub, nebo méně známý git.sh.cvut.cz. Po založení projektu dostaneme SSH adresu. Uživatelské jméno je vždycky git, ale přihlašujeme se vždy klíčem a každý SSH klíč má v konfiguračním souboru trochu jiné nastavení.

Po založení projektu se na webu také objeví jednoduchý návod, jak se s repozitářem spojit, buď připojením existujícího lokálního repozitáře, nebo založením nového. Příkazem git remote nastavíme tzv. origin server, což je domovský server projektu. Takových vzdálených serverů může být díky decentralizované architektuře víc.

Samotné přidání vzdáleného serveru ještě žádnou akci nevyvolá, k tomu dojde až následným zavoláním git push (přenos směrem na server) nebo git pull (přenos ze serveru). Dále Srna podrobně rozebíral autentizaci: Jistě jste si všimli, že jsem nezadával žádné heslo. Je to proto, že mám na Git serveru zaregistrovaný svůj veřejný SSH klíč. Vysvětlil, kterak vygenerovat SSH klíč a správně jej nahrát na server git.sh.cvut.cz. Nejčastějším problémem je zalamování řádků, které způsobí, že klíč pak nefunguje.

Zásadní vlastností decentralizovaného vývoje je, že po provedení operace git push na GitHub se na něm objeví všechny commity od založení repozitáře. Tedy i z doby, kdy repozitář na GitHubu ještě neexistoval.

Nakonec byla předvedena možnost spolupráce více uživatelů na stejném repozitáři. Pokud během editace jednoho uživatele nahrál druhý uživatel na server jiný commit, je nahrání commitů prvního uživatele zablokováno. Jednodušší je, pokud jsou změny uživatelů disjukntní, tedy každý edituje svou část repozitáře. V takovém případě stačí, aby první použil příkaz git pull, při něm se automaticky aplikují změny druhého uživatele do lokálního repozitáře a pak teprve může první uživatel nahrát commit na server.

Miroslav Hrončok: Softwarové licence

Většina lidí podle Mira Hrončoka tuší, co je to svobodný software a open source. Málokdo ale už tuší, jaký je mezi nimi rozdíl. Donedávna navíc neměly svobodné licence oporu v českém zákoně, naštěstí už je to nějakou dobu v pořádku a nikdo vás nemůže zažalovat za to, že jste použili svobodný software, řekl na začátku Hrončok. Aby bylo možné licenci označit za svobodnou, musí splňovat čtyři podmínky: musíte mít právo software používat, studovat, redistribuovat a vylepšovat.

Dále byly zmíněny konkrétní licence GPL, LGPL a AGPL. Problém u knihoven je, že je těžké u nich definovat, zda je aplikace, která je používá, odvozená či ne. Proto vznikla LGPL, která vás při dynamickém linkování nenutí vaši aplikaci otevřít. AGPL, neboli Affero GPL, zase platí pro aplikace používané na dálku po síti. V případě použití GPL byste třeba u webové aplikace nemuseli dávat uživatelům zdrojové kódy, protože aplikaci nedistribuujete. Affero tento problém řeší a i v takové situaci musíte na vyžádání nechat uživatele zdrojové kódy aplikace stáhnout.

Další úrovní licencí jsou public domain. Pokud chcete být úplně cool, můžete svůj kód uvolnit pro všeobecné použití jakéhokoliv druhu. V českém zákoně to ovšem oporu nemá, protože se nemůžete zříct autorství. Existují ale velmi volné licence, jako třeba CC0, ve kterých autoři dávají veřejnosti veškerá práva, ale nezříkají se autorství.

Tím nebyly svobodné licence zdaleka vyčerpány. Pak existuje ještě velká škála licencí, které si autoři naškrábali sami. Jde například o licenci typu „používejte jak chcete, ale nečiňte zlo“ nebo „kupte mi pivo, až mě potkáte“. Potíž ale u takových licencí je, že je těžké je například zařadit do distribuce. S Debianem nebo Fedorou totiž můžete klidně páchat zlo, jejich licence vám to nezakazuje. Takže podobnou aplikaci vůbec není možné do takové distribuce zařadit.

Velkou skupinu tvoří také licence Creative Commons. Ty nejsou určeny pro zdrojové kódy, ale používají se pro grafiku, ikony, dokumentaci, prezentace a podobně. Creative Commons má různé varianty omezující například změnu licence, komerční použití a další. Nerozlišuje například distribuci zdrojových kódů a binární podoby aplikace, protože by se vůbec neměla používat pro software.

Problémy se svobodnými licencemi mají například správci kolektivních práv. Třeba OSA se těmto licencím velmi brání. Pokud já si tady třeba pustím hudbu uvolněnou pod Creative Commons, stejně přijde OSA a bude po mě chtít peníze. Bylo však připomenuto, že je možné předem koncert oznámit a vyjmenovat skladby a autory, kteří nejsou OSA zastupováni. V takovém případě není třeba poplatky platit.

Jan Kadlec: Knot DNS

Knot DNS je autoritativní DNS server, který v CZ.NIC vyvíjejí už dva a půl roku. Pracují na něm především tři lidé s různými úvazky, prozradil na začátku Kadlec. Jedním z hlavních cílů projektu je vytvořit velmi rychlou implementaci DNS serveru. Když jsme s tím začali, chytili se toho i další tvůrci a svůj software taky zrychlili. Knot je podle Kadlece už tak výkonný, že často už při použití narazíme na omezení výkonu hardware.

Další velkou výhodou Knotu je, že server odpovídá stále, i když měníme jeho nastavení. Na to jsme obzvlášť hrdí. Knot do poslední chvíle odpovídá se starým nastavením a pak najednou začne odpovídat s tím novým. V každém případě stále komunikuje bez přerušení. Je tak možné jej jednou zapnout a poté konfigurovat za běhu.

Server Knot DNS dále umí AXFR a IXFR transféry zón, podporuje odpovědi s DNSSEC, umí dynamické updaty a má ovládací klient knotc. Nejnovější verze vydaná den před InstallFestem umí rate-limiting, který dokáže omezit dotazy, které vypadají jako DNS amplification attack. Zatím jde o ranou implementaci, která není dokonalá. Budeme to muset ještě ladit.

V přibližně za měsíc vyjde verze 1.3, která bude mít rychlejší parser zónového souboru, sníží nároky na paměť a zjednoduší kód. Také bychom chtěli nahradit utility z balíčku Bind vlastními implementacemi. Připravíme tedy například kdig, khost, knsupdate a další.

Knot DNS by měl za čas umět také lépe pracovat s DNSSEC. Už dnes umí posílat podepsané odpovědi, ale neumí podepisovat zóny ani další přidružené operace. Přibližně do roka bychom chtěli umět automatické podepisování, key-rollover mechanismus a podobně.

Knot DNS se v současné době používá především v .CZ zóně na jednom ze slave serverů, takže dostává „jen“ asi 1500 dotazů za sekundu. Velmi často se na něm ale přepodepisují zóny a prakticky neustále na něm běží transfery. To je pro sever mnohem větší zátěž než klasické odpovídání na dotazy. Už několik měsíců nám to ale běží bez výpadku.

Největší současný problém Knot DNS je velká spotřeba paměti. Soustředili jsme se na výkon a už méně na spotřebu paměti a rychlý start. Ve 32bitové verzi potřebuje Knot pro 600MB zónu asi gigabajt paměti, v 64bitové verzi jsou to dva gigabajty. Při transferu zóny musí dojít ke kopii paměti, do které se zapisují změny. Navíc někam musíte příchozí změny uložit, takže se dostáváme na pět až šest gigabajtů paměti. To už je opravdu hodně.

Řešením je zjednodušení datových struktur. Hash tabulku a AVL strom v Knotu spojili do jedné struktury – HAT-trie. Ta má dobré vlastnosti obou a je výrazně menší. Ve spojení s efektivnějším uložením DNS záznamů se na 32 bitech se podařilo ušetřit 100 MB, na 64 bitech až 400 MB. Je to příjemné zlepšení, ale ještě budeme pokračovat v dalším šetření paměti.

Dalším problémem je Knotu je pomalý start. Říkali jsme si, že je to jedno, protože server jednou spustíte a už ho nepotřebujete zastavovat. Ale naše konkurence to proti nám používá jako výhodu, proto jsme se rozhodli start urychlit. Aktuální verze 600MB zónu kompiluje asi 70 s a následně 14 s startuje. Připravovaná verze to zvládne za čtvrtinu doby, tedy asi 20 s.

Martin Holec: Open Source je nejen software, ale i hardware!

Martin Holec pracuje ve společnosti Red Hat a ve své přednášce hovořil o elektronice, která je k dispozici pod otevřenou licencí. Většina z nás používá svobodný software, aplikace, knihovny, jádro a ovladače. Ale pak je tu hardware, o kterém toho moc nevíme. O něm si budeme povídat. Jde o celou oblast od hardware, přes desku plošného spoje až po funkci jednotlivých čipů.

Důvodem, proč vlastně open-source hardware vzniká, je možnost užití ve vzdělávání, možnost vylepšování, jednoduché rozšiřování a reimplementace. Není také třeba pořád dokola vynalézat kolo, ale můžeme využít už existující zařízení, vysvětlil Holec. Výhody otevřenosti jsou tedy vlastně stejné jako u software.

Martin Holec zmínil také několik zařízení, která open-source hardware používají. Jde například o známou 3D tiskárnu RepRap, která používá desku Sanguino. Dále byl zmíněn telefon Openmoko, který kombinuje open-source software i hardware. Jsou tam jistá omezení, například firmware je binární, ale alespoň máme přístup k dokumentaci k základní desce.

Dalším příkladem byl Raspberry Pi, který zažívá po světě velký boom. Hodně lidí se domnívá, že jde o otevřený hardware, ale on zase tak otevřený není. Hlavní potíž je, že na Raspberry najdeme procesor Broadcom, ke kterému je dodáván uzavřený firmware. Slyšel jsem už ale o projektu, který se snaží napsat k němu otevřený firmware.

Zajímavým konkurentem je Cubieboard, který Martin Holec na konferenci předváděl. Snaží se být především otevřenější a navíc má proti Raspberry Pi přímo nádherné parametry. Má 1GHz procesor, 1 GB RAM, 4 GB NAND, mikroSD slot, HDMI, USB, Ethernet a SATA port. Můžete si z něj postavit například šikovný domácí server.

Dále byla zmíněna celá skupina dalších ARM desek z projektu BeagleBoard jako PandaBoard a BeagleBone, který umožňuje, podobně jako Arduino, přidávat další moduly. Ty se v tomto případě jmenují Capes a umožňují například přidat digitální výstup na monitor, Ethernet a další. Bohužel ne všechny Capes jsou elektricky kompatibilní a není tedy možné zkombinovat libovolné desky.

V budoucnosti bude možné stáhnout si z internetu modely open-source automobilu a vytisknout si jej na 3D tiskárně. V současné době existují minimálně dva projekty zaměřené na tvorbu automobilu: Wikispeed a OScar. Otázka je, jestli vás s ním někdo pustí na silnici, protože byste mohli nehomologovaným automobilem ohrožovat ostatní řidiče. Kvůli patentům vznikají nové problémy, protože by uživatel takového automobilu by mohl být obžalován z „pirátství 2.0“, protože vyrobil a užívá patentovaný automobil.

Bronislav Robenek: Informační systém klubu Silicon Hill

Klub Silicon Hill spravuje studentskou počítačovou síť na Strahově, která se buduje od roku 1993. Celkem má 4256 členů a 4902 portů na access switchích. Centrální uzel tvoří switch CISCO 6509E a v současné době probíhá změna topologie koncových uživatelů ze 100 megabitů na gigabit.

Celou síť tvoří 62 VLAN, v každé je průměrně 70 uživatelů. Je to rozdrobeno proto, aby když někdo něco pokazí, zasáhl jen malou část sítě. Bezpečnost je řešena co nejblíže k uživatelům, až na access switchích na jednotlivých patrech. Logování probíhá na centrálním syslog serverů, monitoring se provádí klasicky přes Nagios.

Personálně vše zajišťuje poměrně malá skupina lidi. O centrální prvky se starají jen dva lidé, servery řídí asi deset lidí a stejný počet lidí spravuje síť na jednotlivých blocích. Největší skupinu tvoří registrátoři, kteří se na blocích starají o uživatele, těch je asi 80.

Nad tím celým bdí informační systém. Ten řeší evidenci uživatelů, konfiguraci síťových prvků, přidělování adresního prostoru, identifikaci připojených zařízení a několik dalších věcí. Musíme například řešit incidenty a také dohlížet na pravidla sítě CESNET, přes kterou jsme připojeni. Proto potřebujeme podrobné statistiky.

Bronislav Robenek poté hovořil o vývoji nového informačního systému klubu Silicon Hill. Původní systém měl mnoho problémů, takže jsme se rozhodli naprogramovat ve dvou lidech náhradu. Od prvního návrhu nám to trvalo tři měsíce. Nový systém byl spuštěn na začátku října loňského roku. Původní javová aplikace měla 70 tisíc řádků, ta aktuální je napsaná v Ruby a má 23 tisíc řádků.

bitcoin_skoleni

Pro vývoj byl důležitý uzavřený a kompaktní vývojový tým. Byli jsme jen dva, což je zásadní. Když se na Strahově snaží do něčeho kecat víc lidí, nic z toho nakonec není. Dále Robenek zmínil výhody vývoje v prostředí Ruby on Rails. Najednou už tu není několik programovacích jazyků, ale máte celý ekosystém, který vám nabízí všechny důležité technologie. Především ale bylo zásadní, že software vyvíjeli přímo jeho uživatelé. Byli jsme vlastně sami zákazníky, takže přesně víme, co potřebujeme.

Poté byl software předveden. Dokáže spravovat uživatele, konfigurovat přístupové switche na jednotlivých patrech, sledovat platby uživatelů, informovat uživatele o vytížení sítě či hledat informace o správcích jednotlivých bloků. Je to velký pokrok proti starému systému. Navíc nám to celé trvalo napsat jen patnáct víkendů.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.