Hlavní navigace

Hledání .git na webu, Silverblue a otevřené síťové prvky (OpenAlt)

Petr Krčmář

Silverblue jako pokus o neměnný linuxový desktop, globální sken webu na zapomenuté adresáře .git, bezdrátový informační systém z LED a moderní síťování na otevřených síťových prvcích. To byla sobota na OpenAltu.

Doba čtení: 11 minut

Jiří Eischmann: Silverblue: neměnný OS v linuxovém desktopu

Silverblue je pokus udělat neměnný linuxový desktopový systém. Neměnný znamená, že systémové části nejsou standardně zapisovatelné. Tradiční přístup nabízejí balíčkovací systémy, které umožňují poskládat systém tak, že jde vlastně o unikátní kolekci balíčků. Výchozí instalace je určitá podmnožina balíčků, ale distribuci definují balíčky v repozitářích.

Dvacet let se pracovalo na tom, aby integrita balíčkovacích systémů byla co nejlepší, ale stále to má své limity. Především co se týče předvídatelnosti, replikovatelnosti a stability. Například při testování aktualizace se zkouší jen výchozí instalace, kterou ale v praxi nikdo v produkci nepoužívá. Každý uživatel si vytvoří unikátní set balíčků v nekonečných kombinacích, který ale nikdo nedokáže otestovat. Pokud se vývojáři chtějí posunout na stoprocentní úspěšnost aktualizace systému, je potřeba se od tradiční metody odklonit.

Silverblue je vlastně varianta Fedora Workstation s neměnným systémem založeným na OSTree. Historie projektu se píše od roku 2016, kdy se Fedora Atomic Hosts stala oficiální edicí Fedory. Na jeho základě vznikl desktopový systém Fedora Atomic Workstation, ale pořád to bylo vše schované někde na wiki. V roce 2018 pak vznikl projekt Silverblue, který už má své logo, pracovní skupinu, plánování a podobně. Postupně se to dostalo na cestu, která by během několika vydání mohla vést k variantě, která bude navrhována uživatelům. Cesta k tomu je ale ještě dlouhá.

Základem Silverblue je OSTree, který se nově jmenuje libostree. Ve zkratce jde o git pro operační systém. Představte si, že celý systém máte v gitu a můžete si ho celý verzovat. Výhodou je, že můžete mít různé větve a provádět atomické aktualizace mezi vydáními. Můžeme pak dělat třeba i denní aktualizace. Pokud proběhne nějaká změna, rozbalí se do stromu nové balíčky a proběhne commit do repozitáře. Uživatel pak má jasný přehled o tom, jak se systém mění a může si snadno pořídit jinou verzi.

To umožňuje transakční aktualizace, takže je možné se velmi jednoduše vrátit k předchozímu stavu, pokud něco nefunguje. To není s balíčkovacími systémy jednoduše možné, pokud neverzujete na úrovni souborového systému. Z uživatelského hlediska příliš mnoho rozdílů není, prostě se stáhne aktualizace a po restartu je k dispozici novější verze. Přesouvání mezi různými větvemi je neskutečně jednoduché, s dobrým připojením je to otázka minut. Toho s balíčkovacím systémem jen tak nedosáhnete.


Autor: Dáša Sukopová

Jiří Eischmann, OpenAlt 2018

Součástí Fedory je také rpm-ostree , což je systém řešící doplnění základního systému o vlastní balíčky. Vy si vlastně ‚patchnete‘ základní systém a s dalším vydáním se systém snaží vaše změny opět doplnit. To funguje jen při malém množství balíčků, pokud je jich více, může se něco snadno rozbít. Pokud chcete doplnit do systému vlastní software, je lepší to udělat v odděleném prostředí například pomocí Flatpaku. V balíčkovacím systému není možné oddělit uživatelské a systémové balíčky. Navíc část uživatelů chce mít ‚dvourychlostní‘ systém: základ stabilní a aplikace vždy nejnovější.

Flatpak je distribučně nezávislý formát pro distribuci aplikací na Linuxu, aplikace běží v kontejnerech a mají k dispozici běhová prostředí nezávislá na distribuci. Připravuje se sestavování flatpaků z RPM balíčků, aby aplikace mohly běžet v Silverblue. Umožňuje to divoce měnit různé verze software v různých verzích systému a aplikace si toho prakticky nevšimnou. V základu Silverblue je v tuto chvíli jen velmi málo aplikací, zbytek je potřeba si nějakým způsobem doinstalovat bokem.

Novinkou je Fedora Toolbox, který by měl nabídnout vývojářům flexibilitu standardní linuxové distribuce v neměnném systému. Není to vlastně nic jiného než další kontejner, který zjednoduší vývojářům život. Jde o velmi jednoduchý nástroj postavený nad nástroji Podman a Buildah. Výhodou je, že si můžete velmi snadno vytvořit třeba deset úplně odlišných prostředí, která si můžete různě rozbít a neovlivní to zbytek systému. Nástroj byl uveden před dvěma týdny, takže zatím je jeho funkcionalita velmi jednoduchá – lze vytvořit nový „box“ a vstoupit do něj. Zatím to podporuje jen Fedoru, ale v budoucnu si tam budete moci přidat jakoukoliv distribuci.

Vladimír Smitka: Co ukázal globální sken přístupných .git adresářů

Když nasadíte nový web na svůj server, často se přehlíží to, že se na web server dostane také adresář .git. Většinou se to přehlédne, protože cesta do tohoto adresáře vrátí kód 403. To je ale jen proto, že chybí index.html. Pokud se ale zeptáte na konkrétní soubory, dostanete je. Tím se často velmi zjednodušuje život útočníkům, protože je možné se o vnitřnostech webu dozvědět mnoho podrobností.

V repozitáři by teoreticky neměla být citlivá data, ve skutečnosti je možné tam najít hesla k databázím, klíče k API nebo jiné věci, které tam vývojář a správce mít nechtěli. Kromě toho při svém skenu Vladimír Smitka narazil na zálohy, dočasné soubory, dumpy databází, inicializační databáze, zálohovací skripty, obslužné skripty a další zajímavé soubory. Když něco zkoušíte, často taky soubory přejmenováváte. Když třeba PHP procesor narazí na soubor config.php.old, nezpracuje ho, protože nemá příponu .php. Uživateli soubor pouze zobrazí, včetně přístupových údajů k databázím.

Zároveň se na serverech povalují různé správce souborů, rozesílače e-mailů, skrytá API, správce databází Adminer a podobně. Když máte přístup ke zdrojovému kódu knihoven, můžete v nich hledat klasické chyby. Problém s otevřenými repozitáři je poměrně starý, už nejméně v roce 2009 se hovořilo o stejném problému s SVN.

Vladimír Smitka se rozhodl oskenovat celý internet a zjistit, co je možné tímto způsobem objevit. Otázka je, kde vzít databázi zdrojů pro takový sken. Bylo by možné skenovat celý IPv4 prostor, ale tam poslouchá mnoho sdílených serverů, ke kterým se nedostanete. Použil jsem seznamy domén, což jsou mnohem lepší cíle.


Autor: Dáša Sukopová

Vladimír Smitka, OpenAlt 2018

Zónové soubory nejsou obvykle veřejně přístupné, ale je možné použít například seznamy Alexa Top 1M, OpenData od Rapid 7, databázi Certificate Transparency nebo Censys.io. To dalo dohromady přes jeden a půl miliardy záznamů, což bylo potřeba probrat: vyloučila se strojová jména, domény vyšších řádů, domény bez A či CNAME záznamu a podobně. Po redukci zbylo 230 milionů domén ke skenování.

Sken trval čtyři týdny, během kterých bylo využito 18 malých VPS a čtyři fyzické stroje. Stálo mě to 300 dolarů a přišlo mi 100 stížností o tom, že jim skenuju síť. Nejvíce hlášení přišlo z Jižní Koreje, zajímavé je, že v části hlášení byla informace o tom, že pocházejí z automatu. To je dobrá zpráva, protože to znamená, že provozovatelé o tomhle problému už ví a hlídají ho.

Výsledkem je 390 000 objevených webů s dostupným git repozitářem. Snažil jsem se z logu získat validní e-mail na vývojáře. Bohužel ve třetině z nich jsem nic podobného nenašel. Po agregaci vznikl seznam 100 000 unikátních e-mailových adres. Bohužel jen osm webů používalo soubor security.txt. Poměrně velká část e-mailových adres pak nebylo funkční, bylo jich až 30 %.

Na základě všech těchto zjištění byla na e-mailové adresy poslána automatická zpráva. Zpětná vazba pak ukázala řadu věcí: příjemci ocenili odkazy na skutečnou osobu odesílatele či omluvu za případné falešné pozitivity. Naopak část příjemců zareagovala negativně a odvolávala se například na policii. Běžnou odpovědí bylo, že jde o statický web, na kterém nic není. Často je tam ale třeba jeden PHP soubor pro odesílání e-mailu. Výsledkem je ale jen několik jednotek negativních komentářů a více než 3000 děkovných e-mailů od lidí, kteří upozornění na problém ocenili.

Problém dostupných repozitářů je, že na serveru pak není přístupné jen to, co je tam teď, ale i všechno, co tam někdo poslal v minulosti. Dáte ruku do ohně na to, že tam nikdo z vašeho týmu nikdy neposlal nic citlivého? Já tedy ne. Výsledkem celé akce je, že 150 000 webů po upozornění chybu během dvou měsíců napravilo.

Během skenu měl Smitka možnost se podívat, na jakých technologiích jednotlivé weby běží. Vede Apache, za ním je Nginx a na třetím místě jeho čínský fork Tengine. Není překvapením, že 96 % webů bylo vytvořeno v PHP. Z mnoha webů bylo ale možné získat zdrojové kódy s příponou .py nebo .rb. Za to může špatně nakonfigurovaný webserver, který se snaží statické soubory servírovat přímo. Pokud daný soubor na disku skutečně existuje a vy se na něj zeptáte, tak dostanete jeho obsah.

Desítky tisíc webů má server nakonfigurovaný pro vracení všech existujících souborů. Můžete se tak dostat ke všemu, co tam je. Co s tím uděláme? Já nevím. Potíž je, že řada dokumentů u mnoha projektů doporučuje konkrétní konfiguraci web serveru, která je často chybná a zranitelná.

Petr Stehlík: Wi-Fi informační LEDový systém

Cílem informačního panelu postaveného na ESP8266 bylo zobrazovat nejrůznější stavové informace. K malému počítači je připojen pásek diod a mojí vizí bylo zobrazovat informace stylem ‚mrknu a vidím‘. Může to být aktuální kurz kryptoměny, počet nepřečtených zpráv, teploty či předpovědi počasí. Většina služeb má API a ESP8266 má Wi-Fi, takže lze monitorovat prakticky cokoliv.

Číselnou hodnotu je možné zobrazit na LED pásku, textovou informaci na LED matici. Dnes je běžné ovládat a konfigurovat zařízení přes webový server. Hardware je velmi jednoduchý, obsahuje jen pár součástek, konektor přesně pasuje na použitý displej. Úmyslně chybí převodník z UART na USB, protože je potřeba jen pro vývoj, ale k samotnému provozu není potřeba. Celé zařízení je open source a zdrojové kódy jsou na GitHubu. Celková cena je nižší než oběd v restauraci.

Základem zařízení je Wi-Fi modul ESP-12F s čipem ESP8266 se 4MB pamětí, který je možné pořídit za několik desetikorun. LED pásek je WS2812B, který existuje v různých provedeních a u každé diody má vlastní adresovatelný řadič. Matice má řadič MAX7219 a je možné je prakticky donekonečna řetězit. Pak už tam mám jen tlačítko a regulační modul.

V čem vyvíjet software pro takové zařízení? To je moje největší otázka, sám nevím, v čem to správně vyvíjet. Možností je hodně: SDK NonOS, FreeRTOS, Arduino, NodeMCU Lua, MicroPython, Javascript, Basic a další. Arduino je velmi jednoduché, stačí stáhnout knihovnu, upravit příklady a vše funguje. Zajímavý je i jazyk Lua, ve kterém jsou také hotové moduly. Všichni ale dělají v Pythonu, pro ESP je MicroPython. Skriptovací jazyky ale tlačí hardware takto malého počítače na úplnou hranici.

Petr Stehlík používá NodeMCU, pro který je možné snadno vygenerovat firmware s různými moduly, poté se firmware nahraje do ESP a pak už stačí jen opakovaně nahrávat do čipu svůj program v jazyce Lua.

Martin Žídek: Open networking

Postupně se smazává rozdíl mezi routingem a switchingem, většina prvků je dnes vlastně L3 switch. Každé zařízení má dnes dvě hlavní komponenty: ASIC provádí samotnou práci s pakety, CPU modul pak provádí jeho programování. Kromě toho jsou uvnitř také další podpůrné obvody jako zdroje nebo větráky. Hlavní práce je ale na ASIC, vedle je malý řídicí počítač.

Tradiční síťování se provádí pomocí velkých proprietárních hardwarových řešení využívajících nestandardní procesor, na kterém běží nestandardní operační systém. Veškerá podpora, servis, aktualizace musí jít za konkrétní firmou, které samozřejmě musíte pořádně zaplatit. Taková zařízení mají sice velmi dlouhou životnost, ale jejich uživatel je svázaný s konkrétním dodavatelem. Stav klasických síťových prvků je vlastně podobný jako stav počítačů před příchodem PC. Konkurence v podobě otevřené platformy pak akcelerovala trh.

Když se objevily velké společnosti jako Google a Facebook, vznikla potřeba otevřených řešení, která si mohou tyto velké společnosti spravovat samy. Vznikl tak prostor pro výrobce čipů, kteří mohli začít vyrábět nová otevřená zařízení pro datacentra. Samotné čipy nemají otevřený návrh, ale je možné je koupit samostatně a je k nim otevřená dokumentace a SDK. Je tak možné udělat ovladač do Linuxu a vytvořit novou platformu.


Autor: Dáša Sukopová

Martin Žídek, OpenAlt 2018

O výrobu hotových prvků se pak postarali jak tradiční výrobci jako Cisco nebo HP, ale zároveň vznikl nový koncept zvaný open networking. Hodně se v tom angažuje Facebook, který v rámci aktivity Open Compute Project dodává také boot loader ONIE. Ten umožňuje zavést plnohodnotný linuxový operační systém pro řízení celého switche.

Je tak možné si pořídit hotový switch využívající například ASIC BCM56854 a doplněný o řídicí desku s procesorem x86, ARM nebo PowerPC. Princip je pak stejný jako u PC – hardware a operační systém jsou oddělené. Hlavní výhodou je, že je mnohem větší výběr výrobců a konfigurací. Zařízení se postupně z datacenter začínají dostávat k poskytovatelům služeb a do enterprise sítí. Mezi přední výrobce patří Dell, Edge-core, Melanox, Delta, QCT nebo HP.

Volit je možné ASIC od společností Broadcom, Mellanox, Cavium nebo Barefoot Networks. Broadcom má například pokrytý celý segment od 1GE přes 10GE až po 25GE, ze kterého je možné sestavit 100GE. Vždy záleží na požadavcích konkrétního nasazení jako je rychlost, propustnost či požadovaný počet portů. Podle toho si pak můžete vybrat vhodné zařízení.

Další výhodou open networkingu je možnost volby software. Záleží na tom, jaké řešení hledáte a jaké funkce chcete. Zřejmě největším řešením je proprietární Cumulus Linux, dále existuje OpenSwitch, systém využívající NetBSD a mnoho dalších řešení. Nasadit je ale možné v zásadě libovolnou linuxovou distribuci, přímo na konferenci byl předváděn Debian. Zařízení přijde z výroby s předinstalovaným systémem ONIE, pomocí kterého je možné nainstalovat a spravovat plnohodnotný systém. Uvnitř počítače je standardní procesor Intel, doplněný například o 2 GB RAM a s klasickým SSD. Je to vlastně malý server uvnitř switche.

Pokud se do switche nasadí běžný linuxový systém, nabídne správci jednotné prostředí na různém hardware, ve kterém lze použít odzkoušené nástroje a bez problému nasadit třeba automatizaci a dohled. Když máte ve firmě správce serverů, budou rozumět i správě vašich switchů. Správa sítě pak může být stejná jako u serveru, například aktualizace probíhá zcela jednotně.

Našli jste v článku chybu?