Ondřej Caletka: Triky s OpenSSH
Ondřej Caletka se ve své druhé přednášce letošního LinuxAltu věnoval SSH, respektive OpenSSH. Vycházel při tom také ze svého seriálu pokročilé vlastnosti OpenSSH. Nejprve vysvětlil, jak vlastně projekt OpenSSH vznikl a o co přesně se jedná. Jde o svobodnou implementaci SSH z OpenBSD a je používaná snad ve všech unixových systémech.
Přestože původní motivací pro vznik SSH bylo vytvoření „šifrovaného telnetu“, dnes toho umí mnohem více a má řadu různých vrstev.
Nejprve bylo předvedeno základní přihlášení ke vzdálenému terminálu, které používá prakticky každý správce. Server má k dispozici klíč pro každou šifru, kterou podporuje. V současné době to jsou tři, takže má tři klíče.
Jeden z nich je nabídnut uživateli, který musí ověřit otisk klíče. To nikdo nedělá a pokud se tam chcete dostat, musíte stejně zadat yes. Možná vás překvapí, že v opačném případě se přihlášení nepovede.
Otisk klíče by ale přesto měl být nezávisle ověřen, aby nikdo nemohl provést útok man-in-the-middle.
Aby si uživatelé nemuseli pamatovat otisk svého klíče v číselné podobě, umí SSH ukázat obrázek zvaný VisualHostKey, který se zapíná v konfiguraci stejnojmennou položkou. Ten je vygenerován právě z otisku a je pro každý klíč jedinečný. Obrázek se vám zobrazí pokaždé a pokud máte obrazovou paměť, můžete si jednoduše ověřit svůj klíč.
Obrázek je generován tak, aby i při sebemenší změně klíče měl úplně jinou podobu.
Dále bylo představeno a předvedeno i přihlašování pomocí uživatelských klíčů, o kterém stále ještě mnoho lidí neví. Stejně jako se přihlašujeme heslem, můžeme se přihlásit i pomocí klíčů.Výhodou je, že pak už se naše heslo nikam neposílá.
Je k tomu třeba vygenerovat pár klíčů, privátní a veřejný. Ten veřejný je zajímavý, protože ho musíme dát správci každého serveru, ke kterému se chceme přihlašovat.
Ondřej Caletka předvedl rychlé vygenerování klíčů a přenesení na server pomocí utilitky ssh-copy-id
.
Přednáška pak přešla k pokročilejším postupům a bylo předvedeno takzvané sdílené spojení. Poměrně málo se o něm ví, a přitom je to pro mnoho uživatelů velmi užitečné.
SSH je totiž třívrstvé a dokáže multiplexovat více nezávislých relací. Můžete pak mít otevřeno třeba více terminálů v jednom spojení. Pokud se k serveru připojujete poprvé, vše proběhne standardně a navíc se lokálně otevře socket. Při dalším pokusu o spojení se zjistí, že je socket už otevřený a neotevírá se další samostatné spojení.
Otázka zní, co se stane, když zkusíme mastera zavřít. Dojde k běžnému odpojení a master přejde na pozadí. Stále pak bude obsluhovat další spojení.
Po odpojení posledního klienta se navíc ještě 30 sekund čeká, než se skutečně spojení uzavře.
Důležitou součástí SSH je také SSH agent. Pokud už používáme přihlašování klíči, máme možnost se zbavit zadávání hesla pro jejich rozšifrování. SSH agent vytvoří klíčenku a drží rozšifrovaná hesla v paměti. Ta by neměl nikdy vydat a stará se jen o tvorbu podpisů.
Agent ovšem vydává neomezené množství podpisů na cokoliv. Je to ekvivalent získání klíčů, protože pokud nám někdo agenta napadne, získá stejně přístup k podepisovacímu stroji.
Je ovšem možné agenta pomocí parametru -c
nastavit tak, aby se při každém vydání podpisu uživatele zeptal.
Dále se přednáška věnovala tunelování pomocí SSH. Je možné otevřít statický i dynamický tunel. Statický otevírá pevný tunel z lokálního portu přes náš server až k cílovému stroji. Tunel k serveru je šifrovaný pomocí SSH, pozor na to, že dále pak data putují otevřeně.
Podobně je možné vytvořit dynamický SOCKS tunel, který pak ve svém prohlížeči můžeme použít jako univerzální proxy. Na tunelech je podle Caletky zásadní, že nejde o TCP uzavřené v TCP. Tomu se vždy u tunelování vyvarujte. Vypadá to, že to funguje, ale jakmile se nasaturuje linka, fungovat to přestane.
Při spojení technologií DNSSEC a SSH je možné vložit otisky serverových klíčů do DNS. Uživatel pak není vyzýván k ověření klíčů, ale klient automaticky klíče ověří v DNS. Výhodou také je, že je možné klíče jednou za čas kvůli bezpečnosti vyměnit. Jinak není prakticky možné SSH klíče měnit, protože by se všem uživatelům objevila chybová hláška. Takto můžete zveřejnit více klíčů a ty staré později zrušit.
Není totiž problém mít v DNS více různých otisků, chyba by nastala jen v případě, že tam není žádný.
Miro Hrončok: Praktická ukázka 3D tisku na tiskárně RepRap
O 3D tisku se hovoří čím dál více, v Česku je navíc velmi silná komunita vývojářů a uživatelů 3D tiskáren. Miro Hrončok hovořil o 3D tiskárně RepRap, jejíž název znamená rapid prototyper. Znamená to, že je to zařízení určené pro rychlý prototyping, tedy vytváření modelů, na kterých je možné průběžně pracovat,
vysvětlil Hrončok. Ačkoliv to od ní mnoho lidí očekává, 3D tiskárna není určena k velkovýrobě a její práce je relativně pomalá. Hlavní výhodou není rychlost, ale možnost si hrát, zkoušet a ladit model, a pokud pak chci přejít na velkovýrobu, objednám si kamion výrobků v Číně.
Pokud běžnému laikovi začnete říkat něco o 3D tisku, většinou si představí leccos, ale málokdy to správné. Většina lidí si myslí, že vyrábíme nějaké optické klamy, které pak vidíte pomocí 3D brýlí. Není to tak, vytváříme reálné objekty.
Pro projekt RepRap je zásadní, že je po všech stránkách otevřený. Tiskový software je open-source, software pro tvorbu modelů je open-source, firmware řídícího modulu je open-source, dokonce i hardware je open-source,
vyjmenoval Hrončok. Vše je možné najít na GitHubu a stáhnout si či začít přispívat.
Otevřený je i hardware a každý si může vytvořit vlastní odvozeninu tiskárny a libovolně ji vylepšovat. Všechno na té tiskárně je strašně primitivní a dohromady je to geniální,
shrnul Miro Hrončok. Tiskárna funguje vlastně jako robotická ruka, držící tavnou pistoli nanášející plast po vrstvách. Obvykle se využívá plast zvaný ABS, ze kterého se vyrábí třeba známé kostičky Lego. Na ně už vypršely patenty, takže je můžeme tisknout. Jen na ně nesmíme psát Lego, ale třeba RepRago.
Pokud už máme tiskárnu postavenou, musíme někde vzít model, který budeme tisknout. Nejjednodušší je najít si na webu hotový model a ten si vytisknout.
Modely jsou ve formátu stl, který je standardem pro podobné 3D objekty. My používáme jen stl, ale je možné použít i jiné formáty. Vždy je možné je mezi sebou nějak zkonvertovat.
Další možností je model vytvořit pomocí editoru, jakým je třeba Blender, nebo můžeme využít specializované nástroje. My používáme OpenSCAD, což je špičková věc, ve které programujete 3D objekty podobně jako v C.
Umí základní věci, které jsou známé z běžných jazyků, například if, for či while. Kdybych vytvářel třeba ozubené kolo ručně, zbláznil bych se. Takhle si vytvořím cyklus a ten mi zuby udělá sám.
Výsledkem generování je pak už přímo soubor sdl s modelem.
Jakmile pak máme hotový model, musíme nějak říct tiskárně, aby ho vytiskla. Je třeba převést model na výsledné povely. Tiskárna sama neumí použít přímo 3D model a vyrobit jej.
K převodu na jazyk tiskárny slouží aplikace zvaná slicer, která model rozřeže na vrstvy a připraví instrukce pro samotné nanášení plastu. Jde o textový soubor, ve kterém je zapsáno, o kolik se má hlava posunout a kolik materiálu má v danou chvíli vytlačit.
Jednou z takových aplikací je například předvedený open-source program Slic3r.
I na první pohled dokonalý 3D tisk má ovšem svá omezení. Není například možné tisknout do vzduchu, nanášený materiál musí něco podpírat. Existuje ale několik způsobů, jak to vyřešit,
řekl Hrončok. Je například možné stavět „mosty“, protože plast se táhne a jak tuhne, napíná se. Je tedy možné přejíždět vzduchem otvory určité velikosti. Pokud tohle nemůžu udělat a stejně potřebuji tisknout do vzduchu, můžu použít podpůrný materiál.
Vytisknou se při tom podpůrné části, které je možné později odlomit. Nakonec provedeme kalibraci pilníkem.
Věroš Kaplan: Nagios – jak se nezbláznit z vlastní sítě
Každá větší síť potřebuje monitoring, aby její správci věděli, kde došlo k problému, který mají řešit. Je dobré o problémech vědět dříve, než se o nich dozví uživatelé. Když vám někdo zavolá, zní líp, když mu řeknete „víme o tom, řešíme to“,
vysvětlil na začátku přednášky Věroš Kaplan. Existuje spousta řešení, softwarových, hardwarových i oursourcovaných. Věroš Kaplan hovořil o řešení Nagios, které sám používá. Výstupem Nagiosu je většinou webová stránka, na které vidíte stav celé sítě.
Nagios se skládá z několika částí. Hlavní částí je jádro, které se stará o spouštění pravidelných testů v podobě pluginů a o komunikaci s nimi. Třetí částí je pak výstup na web, který si pak můžete prohlédnout. Poslední částí jsou „háčky“ (hooks), které rozšiřují funkci Nagiosu a mohou reagovat na různé události.
Největší část tvoří testy neboli pluginy. Jde o malé aplikace, které dokáží provést jednoduchý test a vrátit svůj výstup. Je to jako v unixu, každý test provádí jen jednu malou věc a dělá ji pořádně.
Výstupem každého testu je nějaká sada dat a především informace o tom, zda je všechno v pořádku nebo nastal problém. Nagios pak nedělá nic jiného, než že periodicky spouští tyhle malé programy s nějakými parametry a zaznamenává výsledky.
Pokud pak máte k dispozici plugin, který umí monitorovat vaše zařízení, máte napůl vyhráno.
Monitorovat je tedy možné prakticky jakoukoliv věc, pokud pro ni máte test. Věroš Kaplan uvedl několik příkladů, jako teplota v kanceláři, síla signálu WiFi, počet registrovaných telefonů do ústředny, toner v tiskárně a další. Uživatelé vás budou mít rádi, protože jim přinesete toner dřív, než jim doopravdy dojde.
Testy je možné si vytvářet a podle Kaplana je dobré to dělat co nejčastěji. Když něco opravíte, napište si na to rovnou test. Nikdy se vám pak nestane, že se vám to rozbije znovu a nevšimnete si toho.
Pokud si netroufáte sami psát testy, nemusíte zoufat. Řada je jich už k dispozici na webu, takže není třeba si je tvořit na koleně. Pokud už je psát musíte, není podle Kaplana dobrý nápad je psát v interpretovaném jazyce. Osobně mám rád Python, ale testy pro Nagios v něm nepíšu, protože má velký overhead.
Nagios totiž spouští neustále různé testovací procesy a je třeba hlídat, aby je všechny zvládal obsluhovat. Stalo se nám, že jsme před lety nasadili Nagios a počítač nestíhal obsluhovat všechny testy. Pak jsme zapnuli podporu více jader a začalo to fungovat,
řekl Kaplan a dodal, že to bylo ještě v době, kdy více procesorových jader nebylo úplně běžnou záležitostí. Nagios naštěstí umožňuje podrobný monitoring svých funkcí, takže je možné odhalit, které testy se vlečou a v čem je problém.
I takto mocný nástroj, jakým Nagios je, má svá omezení. Neumí například kreslit obrázky či vynášet grafy z naměřených dat. Existují ale způsoby, jak to vyřešit. K dispozici jsou háčky, které dovolují po spuštění testu spustit libovolnou externí aplikaci.
Je tak možné data postupně sbírat a vykreslovat si je do grafu jinou aplikací. My si třeba vykreslujeme graf s teplotou v naší kanceláři.
Dalším omezením je například neschopnost pracovat s historickými daty. Potřebovali bychom například sledovat změny v zatížení datové linky. Nagios ale neumí sledovat údaje v čase,
uzavřel přednášku Věroš Kaplan.