Hlavní navigace

OSS víkend 2017: open source je použitelný i v kanceláři

Ondřej Caletka

V půlce června se v Bratislavě uskutečnil už čtvrtý ročník setkání příznivců otevřených technologií. Mluvilo se například o webových trendech, bezpečnosti i použití open source v kancelářské praxi.

Trendy ve webových technologiích

Web se za poslední desetiletí zásadním způsobem změnil. Dříve byl web především dokument, dnes je web hlavně zážitek. Ne vždy to ale všichni respektují. Příkladem je nedávno spuštěná webová aplikace celní deklarace, která představuje jen padesát let staré papírové dokumenty přenesené do podoby webové stránky, uvádí svou přednášku Marek Galiński ze společnosti RegEx, zabývající se webovými projekty.

Důležitou vlastností dnešních webů je přístup mobile first, tedy plnohodnotná funkcionalita webové stránky na mobilním zařízení. Je třeba omezit množství dat, protože rychlost připojení mobilních klientů a množství mobilních dat je problém. Častou chybou jsou třeba nejrůznější automaticky spouštěné video nápovědy, které si uživatel neobjednal, ale než je stihne zastavit, spotřebují třeba 50 MB jeho mobilního datového balíčku. Stejně tak je potřeba omezit přenášení zbytečných dat. „Stejný obrázek může zabírat od několika set kilobajtů až po několik megabajtů, pokud není optimalizovaný.“

Marek Galiński
Autor: Miloslav Ofúkaný

Marek Galiński

Dobrou volbou pro webové aplikace jsou podle Marka Galińského JavaScriptové frameworky. Ve firmě používáme React, který umožní spouštět celou aplikaci v prohlížeči u klienta. Komunikace se serverem je tedy jen v podobě API dotazů načítajících samotná data. Proti tradičnímu přístupu, kdy se třeba pomocí PHP generovala celá stránka po každém požadavku, jde o výraznou úsporu dat, lepší uživatelský zážitek a to zejména v případě pomalého a nestabilního připojení, které je na mobilních prohlížečích stále častým jevem.

Zatímco při nástupu chytrých zařízení jsme byli šťastni, že máme App store nebo Google Play, dnes lidé pomalu přestávají mít zájem instalovat kvůli každé drobnosti nativní aplikace. Místo toho chtějí otevřít webovou stránku a chovat se v ní, jako by to byla aplikace. Tomu pomáhají různé drobnosti. Android třeba přišel jako první s možností obarvovat pomocí meta značek webové stránky i celé uživatelské rozhraní operačního systému.

Google také rozpoutal na webu typografickou mánii, když spustil službu Google Fonts. Předtím byly k dispozici jen čtyři základní fonty ve čtyřech řezech. Dnes je možné celý design postavit přímo na fontu. Můžete při načítání stránky nabídnout několik fontů, které si prohlížeč stáhne a bude používat na celé stránce, třeba i místo grafických prvků. Bohužel ve světě fontů se open source filozofie uplatňuje velmi zvolna. Spousta pěkných fontů je placených.

Trendem moderních aplikací jsou takzvané mikroanimace. Je to způsob, jak přiblížit virtuální svět tomu fyzickému. Ihned po kliknutí na ovládací prvek se okamžitě něco změní, při vyplňování formuláře se vstup validuje hned v momentě, kdy jej uživatel vyplňuje. Důležité je nezapomenout na odezvu při pozitivním výsledku validace. Pokud uživatel vyplní pole správně, měl by ihned dostat zelené zatržítko. Zcela špatný je v tomto ohledu styl celního prohlášení, kde po vyplnění a odeslání dlouhého formuláře, ke kterému je potřeba číst manuál, dostanete po dvou minutách do datové schránky odpověď, že jste v řádku 30 napsali neplatnou hodnotu, uzavírá přednášku Marek Galiński.

We believe in open source v kancelářské praxi

Václav Steiner ze sdružení CZ.NIC nejprve představil správce české národní domény: Už jsme se trochu rozrostli, máme víc než 100 zaměstnanců, nesedíme jen v Praze, ale také v Brně, Plzni a Českých Budějovicích. Základním pravidlem společnosti je, že veškerá firemní data má uložená na vlastních serverech, nikoli v cloudu.

Vzhledem k tomu, že sdružení samo vyvíjí open source software jako Fred, BIRD nebo Knot DNS, má zájem používat open source i pro vlastní chod společnosti. To sice na první pohled šetří cenu za licence, ale tohle je občas vykoupeno cenou komfortu používání takových aplikací, stejně jako vyššími nároky na znalosti administrátorů. Bereme to jako motivaci administrátorů, aby se neustále učili něco nového a neustrnuli na znalosti jednoho konkrétního systému.

Po dlouhých dohodách bylo jako standardní prostředí pro zaměstnance zvoleno Ubuntu 16.04 LTS s prostředím Unity. Pokud někdo, třeba znalejší uživatel, Ubuntu používat nechce, může si nainstalovat i jinou distribuci podle svého uvážení, pak ale nemůže počítat s velkou podporou IT oddělení. „Máme také několik instalací MS Windows, zejména pro lidi co pracují na projektech EU, kde nutně potřebují Microsoft Office, stejně jako například pro účetní software.“

Co se týče hardwaru, používají zaměstnanci obvykle notebooky Dell Latitude s dokovací stanicí a desktopy HP mini nebo Dell Optiplex. Při provozování Linuxu jsou občas problémy třeba s odpojováním externích displejů nebo s nefunkční hibernací. Také jsme bojovali s novými USB-C/Thunderbolt doky u nejnovějších modelů notebooků. I když je konektor stejný a po zapojení se rozsvítí, nemusí to ještě znamenat, že daná zařízení spolu budou fungovat.

U notebooků se sdružení snaží vynucovat jedno zásadní pravidlo – šifrovaný disk. Typicky jde o LUKS nad LVM svazkem, šifrující minimálně oddíl /home, případně i celý kořenový svazek. Zaměstnanci mají také zakázáno používat nelegální software. K zálohování se používá nástroj Déjà Dup, který umožňuje zálohy šifrovat a umístit lokálně nebo vzdáleně. Vzdálené zálohování probíhá na Samba svazky.

Největší potíž uživatelů je nejspíš s kancelářským balíkem. Když v LibreOffice Writeru otevřete dokument vytvořený ve Wordu, obvykle se rozpadne formátování. S novými verzemi LibreOffice se však situace postupně zlepšuje. V tomto roce mají v CZ.NIC v plánu usnadnit sdílení dokumentů mezi zaměstnanci, buď pomocí ownCloud, nebo Libreoffice Online.

V CZ.NIC si také vyvinuli vlastní aplikaci Office CMS. Jde o webovou aplikaci v Django, napojenou na mojeID. Řeší interní telefonní seznam, mapu kanceláří, evidenci dovolených a úvazků a podobné věci potřebné pro hladší chod sdružení.

Notebooky pro běžné uživatele se instalují pomocí FAI a dále se spravují a aktualizují pomocí Ansible. Držitel notebooku pak nemá vůbec práva superuživatele, takže má málo šancí něco rozbít. Pro správu uživatelů je použit OpenLDAP, kterým se autentizují lidé k interním službám a Wi-Fi síti.

Elektronickou poštu obstarávají na straně serveru běžné linuxové balíky Postfix, Cyrus IMAP, Spamassasin, ClamAV a webmail roundcube. Problémem byl kalendář. Ve sdružení provedli velké srovnání dostupných kalendářových řešení. Nakonec jsme vybírali mezi Zimbrou a SOGo. Problém Zimbry je, že jde o velký moloch, který má vlastní řešení pro poštu, správu uživatelů, apod., takže se těžko integruje se stávajícím systémem. Proto bylo zvoleno SOGo. Má placenou i komunitní verzi, vývojáři reagují rychle a chyby průběžně opravují. Nasazení SOGo jsme konzultovali i s CESNETem a ZČU v Plzni, kde jej už používají delší dobu.

Pro interní komunikaci zaměstnanci používají Jabber, v serverové implementaci jabberd2. Problém je, že historie se ukládá pouze v klientovi, což přináší potíže při práci na více zařízeních. Testujeme také Mattermost, což je open source alternativa ke Slacku. V CZ.NIC také provozují z historických důvodů velké množství lístkových systémů: Trac, RT, Redmine, OTRS, OSTicket. Je toho moc, posteskl si na závěr Václav Steiner.

Bezpečnostní HTTP hlavičky

Aktuálním trendem je přechod webu na HTTPS, o kterém prohlížeče tvrdí, že jde o zabezpečený přenos. Technologické firmy se dnes předhánějí v tom, která lépe nakonfiguruje HTTPS komunikaci, aby dostala lepší skóre v testu SSL Labs. K získání hodnocení A+ dnes už nestačí jen správně nakonfigurovat šifrování, ale je potřeba také přidat hlavičku HTTP Strict Transport Security. Úkolem této hlavičky je zabránit útoku typu SSL-striping.

Čtěte: Bezpečnější šifrování HTTPS s hlavičkami HSTS a HPKP

Není však možné jen bez rozmyslu kopírovat konfiguraci z nějaké dokumentace. Jako příklad uvedl Tomáš Hála ve své přednášce webové stránky SK-NIC, kde nejprve zablokovali všechny verze TLS kromě tehdy nejnovější 1.2 a následně zavedením HSTS hlavičky s platností i na subdomény znefunkčnili službu Whois, která HTTPS vůbec nepodporovala.

Důležité je také upozornit, že web, který má HTTPS nemusí být nutně bezpečný. HTTPS jen autentizuje přenosový kanál mezi klientem a serverem, připomíná Tomáš Hála důležitý fakt. O chyby webových aplikací se dlouhodobě zajímá organizace OWASP, která vydává přehled deseti nejčastějších problémů na současném webu. V tuto chvíli probíhá příprava vydání nového seznamu, který má nahradit současný, pět let starý.

Prvním bodem seznamu je Injection, tedy přebírání neošetřeného vstupu od uživatele. Jedná se největší problém, proti kterému ale zároveň bohužel žádná HTTP hlavička nepomůže.

Druhým bodem v seznamu je chyba autentizace a správy relace. Zde už je možné zlepšit situaci správným nastavením cookie pro relaci. Volba HttpOnly hlavičky Set-Cookie zabrání možnosti manipulace s cookie prostřednictvím JavaScriptu. Volba Secure pak vynutí použití HTTPS. Novinkou je parametr SameSite=Lax. Ten zabrání použití cookie pro požadavky z jiné stránky, čímž efektivně brání útoku CSRF.

Na třetím místě v seznamu zranitelností je Cross-site scripting (XSS). Podstata útoku je přebírání neošetřeného vstupu od klienta. Ten se může vyskytovat na nejrůznějších místech. Příkladem takového ne zcela zřejmého vektoru útoku může být třeba i zobrazení detailu TLS certifikátu v ovládacím panelu webhostingu. Uživatel totiž může útočný kód skrýt do atributů certifikátu, který do ovládacího panelu nahraje. Pokud chcete vědět, co všechno se dá pomocí XSS dělat, doporučuji vyzkoušet projekt BeEf.

Hlavička X-XSS-Protection: 1 dokáže vypnout ten nejjednodušší případ XSS. Při jejím nastavení prohlížeč neinterpretuje kód, který klient předtím odeslal. Je ale v moderních prohlížečích zapnutá ve výchozím nastavení, takže její význam velký není.

Mnohem účinnější je hlavička Content-Security-Policy (CSP). Ta umožňuje zabránit spouštění libovolného JavaScriptu, který nepochází z vyjmenovaných domén. Problém je ale třeba v in-line JavaScriptu, který se dříve často používal. Pro eliminaci útoků je důležité in-line JavaScript pokud možno nepoužívat a následně zablokovat, to však obvykle vyžaduje kompletní přepsání webové aplikace.

Pro dynamicky generované weby je možné použít volbu nonce, obsahující náhodný řetězec, který se pro každé vygenerování stránky změní. Stejný řetězec nonce pak musí být součástí každé značky <script>, jinak daný skript prohlížeč neprovede. Útočník tak nemá šanci svůj vlastní skript vložit. Problém je s kódem JavaScriptu, který dynamicky vyrábí <script>  značky za běhu. I když to vypadá jako nesmyslný nápad, ve skutečnosti tak funguje spousta JavaScriptových knihoven.

V definici CSP verze 3 přibyla nová volba strict-dynamic, která umožňuje vynucovat přítomnost nonce pouze pro značky definované staticky (tedy v dokumentu načteném z webového serveru). Zároveň jde o definici zpětně kompatibilní s původním CSP 2.

Další hlavičkou, na kterou Tomáš Hála upozornil, je HPKP, která umožní v prohlížeči zapamatovat otisk veřejného klíče TLS serveru a napříště neumožnit připojení s jiným, byť platným certifikátem. Bohužel riziko kompletního znefunkčnění webové stránky při chybě operátora je natolik veliké, že převyšuje potenciální přínos této hlavičky. Podle bezpečnostního experta Ivana Ristice je z toho důvodu HPKP mrtvou technologií.

Hlavička X-Content-Type-Options: nosniff zablokuje prohlížeči snahu detekovat typ posílaných dat podle obsahu namísto podle MIME typu. Tím je možné předejít případným útokům na detekční algoritmus. Hlavička X-Frame-Options: DENY/SAMEORIGIN zase brání tomu, aby se stránka načetla v rámci na jiné stránce. Tímto způsobem je možné bojovat s takzvaným clickjackingem. Referrer-Policy dokáže deklarovat, kam se mají posílat hlavičky Referrer opouštění stránky. Je tím možné chránit soukromí návštěvníků.

V nejbližší budoucnosti můžeme očekávat další dvě nové hlavičky: Expect-CT a Expect-Staple. První jmenovaná bude vyžadovat zveřejnění TLS certifikátu v systému Cerificate Transparency, druhá pak vyžádá podporu pro OCSP Stapling.

Tomáš Hála ve své přednášce také upozornil na projekt securityheaders.io, který dokáže podobným způsobem jako SSL Labs oznámkovat webovou stránku právě podle přítomnosti nejrůznějších bezpečnostních hlaviček. Na závěr pak, i s odkazem na zmíněné problémy webových stránek SK-NIC, upozornil na petici nasadomena.sk. Active 24 se snaží dlouhodobě bojovat za lepší správu slovenské národní domény, budeme proto rádi, když výzvu podpoříte.

LDAP jako úložiště konfiguračních údajů DHCP serveru

Pro některé služby lokální sítě, jako je třeba DNS, funguje zálohování přímo jako součást protokolu. Pro DHCP takový způsob jednoduchý není. Je možné provozovat dva servery se shodnou konfigurací, problém je ale s dynamickým poolem přidělovaných adres. Naštěstí implementace DHCP serveru od ISC i něco takového umožňuje, zbývá však vyřešit synchronnost konfigurací, uvozuje svou přednášku Martin Bílý z FIT ČVUT.

K synchronizaci konfigurací by se dalo třeba použít NFS, ale takový způsob vnese do řešení další společnou závislost. Použití LDAP jako úložiště konfigurace umožňuje takový problém díky replikovatelnosti LDAP databáze eliminovat. Dvojice DHCP serverů může pracovat v režimu master-slave, kdy se servery mezi sebou vlastním protokolem komunikují a zjišťují nejen živost souseda, ale i si sdělují informace o všech dynamicky zapůjčených adresách. LDAP pak slouží jako úložiště konfiguračních údajů. Podpora je přímo součástí ISC DHCP serveru, stačí to tedy jen správně nastavit. LDAP serverů může být větší množství, mohou pracovat v režimu master-master, takže se dokáží také vzájemně plnohodnotně zastoupit.

V konfiguraci DHCP serveru je třeba definovat spojovací údaje pro spojení s LDAP serverem. Je třeba zadat base-dn jako kořen konfigurace. Volba ldap-method dynamic zajistí, že konfigurace se z LDAP nepřenese jen jednou při startování DHCP serveru, ale definice strojů se z LDAP načítá dynamicky za běhu. Díky tomu není nutné po každé změně statických zápůjček restartovat DHCP server.

Martin Bílý
Autor: Miloslav Ofúkaný

Martin Bílý

Dále konfigurace DHCP serveru obsahuje definici failover protokolu, kde je navázáno spojení se druhým DHCP serverem. Je možné v konfiguraci nechat i část záznamů staticky a migrovat konfiguraci do LDAPu postupně.

Na straně LDAPu je potřeba rozšířit schéma o DHCP definice, nastavit přístupová práva a indexy. Součástí balíčku DHCP serveru je i skript pro migraci textového konfiguračního souboru, který vygeneruje LDIF soubor, který stačí do LDAP naimportovat. Je však třeba dávat pozor například na úvodní nuly v číselných údajích, které nesmí být potlačeny. Jinak jde při uložení do LDAP o zcela jiný objekt.

Uvnitř LDAP databáze je třeba vytvořit pro každý server samostatný objekt třídy dhcpServer, který slouží jako ukazatel na vlastní konfiguraci. Následně je potřeba definovat jednotlivé podsítě v objektech typu dhcpSubnet a jednotlivé statické zápůjčky v objektu typu  dhcpHost.

Problémy při nastavení jsou například správné pořadí služeb, běží-li LDAP server na stejném stroji jako DHCP server. Dalším problémem může být duplicitní MAC adresa v LDAP. V takovém případě LDAP vrátí dva objekty, což DHCP server nepředpokládá. Také při rychlém restartu dojde občas k problému s failover protokolem. Osvědčil se mi postup: vypnout službu, podívat se z okna, zapnout službu, komentuje Martin Bílý.

(Fotografie: Miloslav Ofúkaný, AMAVET klub č. 962, fotky.promospravy.sk)

Našli jste v článku chybu?