Hlavní navigace

Bezpečnější IT, pokročilá práce s SSH a dokumentace (InstallFest)

Petr Krčmář

O víkendu proběhl jedenáctý ročník tradiční konference InstallFest. Mluvilo se o generátorech kódu, bezpečnějším IT, lepším využití SSH, historii AVC SH, generátoru statických stránek Jekyll či o dokumentování software.

Doba čtení: 12 minut

Josef Kubín: Source Code Generator

Proč generovat zdrojový kód automaticky? Na začátku máme konfigurační soubory a výsledkem je zdrojový kód v různých formátech a jazycích. Kdybychom měli udržovat konzistenci různých výstupů ručně, dělali bychom otrockou neodbornou práci, která je zbytečná. Zároveň to zjednodušuje práci s velmi složitým zdrojovým kódem. Platíte drahé specialisty, kteří se můžou zbytečně zaseknout na udržování konzistence kódu. S generátory je možné snadno připravit kostru a tu pak přehodit na brigádníka, který je schopen sám kód generovat a udržovat.

Často se setkáváme také s projekty, na kterých pracuje jen jeden člověk. Jakmile se projekt rozroste nad určitou velikost, už jej není schopen nikdo jiný udržovat. Automat ale umožňuje spravovat i velký projekt a ve výstupu nejsou chyby. Znalost pak není uložena v samotném kódu, ale v konfiguračním souboru.

Nevýhodou je naopak to, že to není tak snadné, jak to vypadá. Je to neobvyklé paradigma, ve kterém se musíte naučit myslet. Hodně záleží na zkušenosti programátora. Vývoj je výrazně pomalejší a v extrémním případě za něj můžete platit dvakrát.

Existuje několik různých nástrojů, které dovolují transformovat vstup na různé výstupy. Začínal jsem na XSLT, ale ten mě moc neohromil svými možnostmi. Nakonec jsem skončil na M4, což je geniální a velmi silná věc. Podle Kubína je potřeba si na něj zvyknout, protože není příliš přímočarý. Je to samá závorka, ale když si uděláte základní kostru ve Vim, už jen doplňujete obsah a neděláte zbytečné chyby.

Konkrétní příklady pro přednášku byly zveřejněny na GitHubu. Josef Kubín slíbil, že o této tématice napíše podrobný seriál pro Root.cz.

Martin Hubáček: Jak na bezpečnější IT

Pokud servery běží a nedojde k žádné ztrátě dat, většina firem IT vůbec neřeší. Přibývá ale případů vydírání firem pomocí ransomware a úniků dat, včetně citlivých údajů známých politiků. Nejvíce se potýkáme s phishingovými útoky, spamem, malwarem, DoS útoky a neustále jich přibývá. Kybernetické bezpečnosti se tedy dnes ve firmách nevyhneme. Pokud začnete teď, je pět minut po dvanácté.

Čím dál větším problémem jsou DoS útoky, které se velmi často zneužívají ke konkurenčnímu boji. Často se útoky zabývají také nezletilí, kteří hřeší na svou beztrestnost. Setkal jsem se s případem, kdy někdo složil mailový server a pak se přišlo na to, že útočník byl nezletilý. S takovým člověkem se nedá nic dělat, dostal jen výstrahu.

Velkým mýtem je, že je možné bezpečnost zajistit snadno v jednou provždy. Udělej to tak, abys už sem nemusel chodit a měli jsme to bezpečné. Takhle to nefunguje. Ve firmách je potřeba se zabývat bezpečností velmi intenzivně a neustále.

Podceňovanou oblastí jsou přenosná média – firmy často používají desítky flash disků či optických médií a nemají přehled o tom, co se kam přenáší. Zaměstnanci často zachází s firemním flash diskem jako se svým osobním. Flashky se ztrácejí, dostávají se na různá neznámá místa a je možné je snadno infikovat. Osobně bych ve firmách flash disky zakázal, u mě už žádný nenajdete.

Podobně jsou na tom mobilní zařízení, pro která často firmy nemají žádnou politiku. Zaměstnancům se často rozdávají mobilní telefony, ale chybí jejich registrace, zabezpečení či podrobné sledování. Mobily se přenášejí, uživatelé se s nimi připojují do různých sítí, instalují vlastní aplikace. Pevně stanovená politika umožňuje mít přehled o zařízení, omezovat používané aplikace a hlídat uživatele. V telefonech jsou dnes velmi citlivá firemní data a uživatelé často neví, co všechno jejich přístroj dokáže a jak se může v síti chovat.

Všichni pracujeme s informacemi a jsou pro nás tím nejdůležitějším. Přesto v řadě firem věci fungují na základě důvěry a neexistuje politika toku informací a dokumentů. Jakmile si ale odnášíte dokumenty domů, ztrácí nad nimi firma kontrolu. Technologie pro ochranu dokumentů jsou ale snadno dostupné a můžeme je použít k zabezpečení svých dat. Chraňte své dokumenty, jako by šlo o život. Dokumenty jsou to, co z vaší kybernetické identity dělá identitu fyzickou.

V sítích a správě serverů existuje několik různých druhů správců: jedni běhají po uživatelích, jiní se starají o servery, další o sítě a pak jsou tu všeumělové. Když se člověk nezabývá tím, čím by měl, vznikají rizika. Průměrný český admin je děvečka pro všechno. Jen ve velkých firmách lidé dělají to, co mají. Firmy by měly mít plány pro případ problémů: napadení, selhání hardware a podobně. Příčinou je často poddimenzované a podfinancované IT oddělení. Nejsou peníze, ale vy si přece nějak poradíte.

Klasickým a neustálým problémem jsou hesla. Za poslední roky se toho moc nezměnilo, jen se ve slově password objevilo velké P a místo 1234 se používá 123456. Lidé jsou totiž od přírody líní. Nejrozumnějším řešením je používání generátorů hesel, zajistíme tím velmi silné a unikátní heslo pro každou službu. Nepoužívejte na hesla svou hlavu.

Správci se často zabývají aktualizací základních prvků jako operačních systémů a nejběžnějšího software. Zapomíná se ale na různé síťové prvky, kávovary a IoT zařízení. Přitom přibývá případů napadení sítě právě přes podobná zařízení. Obecně se ve firmách často na IT šetří, nakupují se nejlevnější síťové prvky a neaktualizuje se. Viděl jsem firmu o 70 zaměstnancích, která jako hlavní síťový prvek používala starý TP-Link. Bylo to v pořádku, šéf to tak chtěl.

Firmám také chybí IDS systém a často nikdo vůbec neví, co se na síti děje. Pokud s tím chcete začít, použijte Snort. Je to velmi dobrý nástroj, ve kterém se dozvíte hodně zajímavých věcí. Sledovat toky v síti je naprosto zásadní. Správci často také dostanou do ruky nástroje a nejsou v jejich použití vzdělaní.

Pro správce je zásadní pochopit celou komplexní problematiku bezpečnosti. Každá její část vám pomůže rozpoznat rizika. Neznalost otevírá prostor například pro sociální inženýrství. Vzdělávejte se, učte se nové věci. Co se naučíte dnes, už nebude za dva roky platit.

Pavel Dostál: ~/.ssh/config

Většina správců používá SSH jen tím nejjednodušším způsobem: za příkaz ssh napíší název serveru. Umí to ale spoustu věcí, které vám mohou usnadnit život. Klient se konfiguruje v souboru ~/.ssh/config .

Základem je konfigurační volba Host, která umožňuje označit konkrétní počítač podle doménového jména nebo IP adresy. K tomu je možné nastavit nejběžnější volby jako KeepAlive nebo Compression. Je možné nastavit posílání občerstvovacích paketů, aby spojení nevytuhlo a v případě pádu se samo obnovilo.

Užitečný je takzvaný master socket, který umožňuje recyklovat už navázané spojení pomocí více různých klientů. Pokud zavřete i posledního klienta, socket ještě nějakou dobu existuje a i nově spuštěný klient jej pak může využít.

Užitečná je volba ProxyJump, která umožňuje připojit se k cíli nepřímo přes další server. To je možné vyvolat z řádky, ale tam může být skok jen jeden. V konfiguračním souboru jich může být více. Všechno je navíc automatizované a do spojení není vidět, takže dochází k určité anonymizaci.

Pro zjednodušení ověřování veřejného klíče serveru je možné využít SSHFP záznamy v DNS. Pokud používáte DNSSEC, můžete mít bezpečně zveřejněné klíče už v DNS. K automatickému ověření slouží volba  VerifyHostKeyDNS.

V konfiguračním souboru je možné automatizovat i tunelování portů. V příkazové řádce je to poměrně složité. Můžete si to ale zapsat do konfiguračního souboru a tím si to zautomatizovat. Slouží k tomu volby LocalForward, RemoteForward či  DynamicForward.

Vedle samotného ssh existuje celá řada dalších utilit. Příkladem je ssh-copy-id, které umožňuje automatizovat přesun klíčů na server. Dlouhá léta jsem to dělal ručně, ale už nemám důvod.

Po přihlášení je užitečný také multiplexer tmux, který umožňuje otevírat více terminálů, dělit obrazovku na okna nebo se odpojit a připojit k běžícímu terminálu kdykoliv později. Užitečný je také nástroj tmate, který slouží ke sdílení stejné konzole s dalším uživatelem.

Jan Bednář, Petr Hodač: 10 let AVC Silicon Hill

AVC Silicon Hill je projekt klubu Silicon Hill, který vzdělává členy v oblasti AV techniky. Sídlí na bloku 8 na kolejích Strahov, případně ve školicím centru. Děláme video konference, koncerty, přenášeli jsme už dvakrát na vesmírnou stanici. Projekt AVC letos slaví 10. narozeniny. Původní Audiovizuální centrum Silicon Hill sice vzniklo už v roce 2003, ale později zaniklo.

V roce 2009 byl obnoven InstallFest a při té příležitosti vznikla také současná podoba AVC SH. Jediné skutečné datum, které se mi podařilo najít, je ze čtvrté schůzky – 21. dubna 2009. Konkrétní datum je nejisté, ale letos slavíme 10. narozeniny.

Na zmíněném InstallFestu byly k vidění kamery a vzadu malé improvizované studio. Na InstallFestu 2011 už byl lepší zvukový pult, ale kamery pořád stejné. Ještě několik dalších let se používal analogový přenos videa pomocí PAL. V roce 2014 nastaly velké změny, pořídily se nové HD kamery a nová 4K střižna. Slajdy v PAL totiž nebyly dobře vidět, přišel tedy návrh na výměnu techniky. Zároveň postupně přibývalo požadavků na více tracků, protože na konferenci LinuxDays probíhaly přednášky v mnoha sálech.

InstallFest 2015 byl poprvé zaznamenáván ve 4K, což znamenalo nové kamery, nový video procesor a záznamové zařízení. První ročník se ale ve 4K jen nahrával, streamovalo se v HD. V letošním roce byl požadavek na dva 4K streamy a záznamy z obou tracků. Dnes máme režii začátků přednášek, kdy automatizovaně spouštíme začátek a konec přednášky. Pokud se nám to povede, můžeme video rovnou vzít a nahrát na YouTube. Od loňského roku se přenáší také samostatný stream slidů, který se hodí zejména zrakově postiženým, ale i běžný účastník někdy ocení přenos obrazu z prezentačnímu notebooku k sobě.

Zuzana Jeschkeová: Proč je Jekyll lepší než WordPress

WordPress je velmi známý a rozšíření redakční systém napsaný v PHP. Jekyll je proti tomu napsaný v Ruby, generuje statické stránky pomocí šablonovacího systému Liquid a jedinou dynamičnost je do něj možné dostat pomocí JavaScriptu. Není příliš vhodný pro rozsáhlé weby a neumí například formuláře, pro ty musíte používat externí služby.

Zatímco WordPress vytváří stránky dynamicky přímo na požádání, Jekyll je generuje a web server pak servíruje jen statické stránky a není potřeba na něm spouštět žádný kód. Na WordPressu se používají pluginy, čím víc jich máte, tím víc budete mít problémů. Je potřeba všechno aktualizovat, protože WordPress je velmi rozšířený a je cílem mnoha útoků. Pluginy navíc tvoří mnoho různých lidí a mají různou kvalitu.

Jekyll je méně komplexní a přináší méně problémů. V Jekyllu se také přirozeně verzuje pomocí Gitu. Všechny chyby se také odchytí už při generování webu, při jeho nasazení už žádné vzniknout nemůžou. Provoz Jekyllu je také výrazně jednodušší, potřebujete jen web server. Nemá ale webovou administraci a pro upravování webu je tudíž nutná alespoň minimální znalost kódu.

Zuzana Lena Ansorgová: Dokumentování software podle jeho životního cyklu

Každý softwarový projekt je unikátní a vyžaduje specifický přístup k dokumentaci. Důležitý je životní cyklus vývoje, ale vývojáři a markeťáci se na něj dívají různě. V každém projektu si musíte definovat cílové skupiny, pro které dokumentaci vytváříte. Ty základní jsou: vývojový tým a uživatelé. Vývojáře zajímá procesní dokumentace, která se používá při tvorbě projektu, ale zároveň tvoří podklady pro produktovou dokumentaci. Ta zajímá uživatele, což ale zahrnuje také administrátory, podporu, marketing i samotného koncového uživatele.

Během plánování projektu se provádí byznys analýza, ze které plyne takzvaná koncepce operací. Z ní pak vyplyne základní terminologie v projektu používaná. Poté vznikají přirozeně další dokumenty: návrh architektury, specifikace rozhraní a komponent, chování databázových modelů a podobně. Pokud vyvíjíte open source, musíte svým přispěvatelům jasně definovat, jak má jejich kód vypadat a jakou kvalitu musí splňovat.

Dokumentace pro používání software slouží také ke získání uživatelů, protože část uživatelů se může rozhodovat právě na základě dokumentace. To se bude líbit v marketingu. Samozřejmě zajímá také administrátory, kteří chtějí vědět co to žere a kde to spí – instalace, konfigurace, síťování, migrace a podobně. Koncového uživatele pak zajímají konkrétní postupy, reference příkazů a informace o bezpečnostních výstrahách, chybových hláškách a podobně. Zapojte dokumentaristu do vývoje už na začátku. Usnadníte mu tím práci, protože bude znát terminologii používanou ve vašem software.

Novému uživateli dokumentace vysvětluje pojmy, koncepty a pojetí provozu (workflow). Pro nového uživatele je dobré také připravit tutoriály a podpořit ho v prvních krocích a provést ho softwarem. Příležitostný uživatel ocení základní jednoduché procedury, protože si potřebuje připomenout konkrétní kroky. Častý uživatel už má jednoduché postupy zvládnuté a potřebuje taháky – reference k jednotlivým příkazům. Pokročilý uživatel pak potřebuje jít do hloubky a mít konkrétní detaily.

Dokumentace se vždy navrhuje podle cílových skupin. Zkuste se do nich vcítit a udělat si přehled o tom, jaké úkony vaše cílová skupina se softwarem dělá. Užitečné jsou také různé ilustrace a příklady, které uživateli pomůžou.

Adam Kalisz: pokročilé použití (především) OpenSSH

SSH je definováno v RFC 4251 až 4256 a některých dalších jako protokol pro bezpečné vzdálené přihlášení přes nezabezpečenou síť. Nejpoužívanějšími implementacemi jsou OpenSSH, Dropbear, PuTTY a WinSCP.

Při prvním přihlášení se uživateli objeví otisk veřejného klíče serveru, který by měl ověřit proti údajům dodaným správcem. Pokud jste tím správcem vy, měli byste si při instalaci nového stroje tyto údaje opsat, abyste je pak mohli ověřit.

Pokročilejším použitím SSH je sestavování tunelů. Ty fungují jako portál, přes který se lokální port klienta objeví na vzdáleném portu na serveru. Využijete je případě, že potřebujete dostat nešifrovaný protokol na vzdálený server nebo se potřebujete připojit ke službě, která poslouchá jen na lokálním portu na serveru. Pozor na to, že přes DNS stále unikají některé informace.

Existuje i opačný tunel, který vzdálený port ze serveru přesune na lokálního klienta. Můžete tak například obejít NAT nebo vystavit místní službu na veřejný server. Samozřejmě to může zneužít i malware k otevření cesty do vnitřní sítě. Třetí možností je takzvaná SOCKS proxy, která nabízí univerzální rozhraní pro aplikace jako je webový prohlížeč.

Pokročilým řešením je sshuttle, což je vlastně VPN pomocí SSH. Ve výchozím stavu balí jen TCP, ale při troše snahy je možné přes něj dostat i UDP. Přeposílá také DNS dotazy. Výhodou je, že se nejedná o TCP v TCP, čímž odpadá spousta potenciálních problémů. Těmi trpí OpenSSH VPN, která navíc funguje jen v unixových systémech.

SSH je pak možné použít mnoha dalšími způsoby: balíčkovací systémy umí fungovat pomocí SOCKS proxy, SSH může fungovat jako skrytá služba v síti Tor, můžete si posílat shell over DNS, OpenVPN může fungovat skrytě přes SSH a podobně. V hotelových sítích je často přístup limitován jen na DNS, ale můžete tak dostat dotazy ke svému autoritativnímu serveru. SSH se pak dá zabalit do DNS provozu a pak už se dostanete kamkoliv.

Našli jste v článku chybu?