Článek: Bezpečnost v Lotus Notes

Článek vyšel v letošním třetím čísle časopisu Security.

Zeptáte-li se společností, které Lotus Notes používají jako komunikační nástroj či aplikační platformu, proč si tento systém vybraly, uslyšíte často: "kvůli jejich bezpečnosti". Už od prvních verzí (z roku 1989) byla vysoká úroveň bezpečnosti jedním z pilířů Lotus Notes; nebyla tam později přidána jenom proto, aby se systém vyrovnal se stále nebezpečnějším prostředím Internetu.

IBM Lotus Notes/Domino je klasický klient/server systém: Lotus Domino je serverová část, poskytující služby klientům. Tím může být "tlustý" klient Lotus Notes, nebo také "lehký" klient - internetový prohlížeč. Možnosti, které tento systém nabízí uživatelům, lze shrnout pod pojem "groupware" - komunikace a spolupráce lidí, sdílení dokumentů, workflow apod. Je pochopitelné, že pro tohle vše požadují společnosti dobré zabezpečení. Jak tyhle požadavky řeší Lotus Notes/Domino je předmětem tohoto článku.

 

Autentizace

První, s čím přijde uživatel do styku, je autentizace, tedy jednoznačná identifikace uživatele, který k severu přistupuje. Lotus Notes představily přístup, který byl ve své době celkem revoluční: identifikace uživatele nejen podle toho, co zná (tj. klasický přístup jméno + heslo), ale i na základě toho, co má. Zrodilo se "Notes ID", tedy něco jako elektronický průkaz, fyzicky reprezentovaný malým souborem na pevném disku, disketě nebo třeba USB flash disku. Tento soubor použije klient Lotus Notes vždy, když chce pracovat se systémem. Je v něm uložena identifikace uživatele, doba platnosti přístupu (tzv. certifikát), uživatelův soukromý klíč používaný pro šifrování a další.

Všechny tyto údaje jsou zabaleny do souboru o velikosti několika kB, který je zašifrován, a odemknout jej lze až po zadání hesla, které si zvolil uživatel. Teprve potom může člověk přistoupit k databázím a pracovat s dokumenty. Dá se to přirovnat k platební kartě a PINu, který tuto kartu odemyká, a umožní s ní vybrat peníze z bankomatu.

 

Autorizace

Po prvním kroku už server Domino ví, s kým komunikuje, zná jeho přesnou identitu. V dalších krocích musí ještě rozhodnout, jaké operace může tento uživatel provádět, s jakými dokumenty pracovat, k čemu je autorizován. Server Lotus Domino toto řeší na několika vrstvách.

Za prvé, můžeme určit, kteří uživatelé či skupiny uživatelů mohou vůbec na server přistupovat. Pokud je uživatel uveden mezi zakázanými lidmi, nebo naopak není uveden mezi povolenými, server Domino jej nepustí dál ke svým databázím.

Za druhé, u každé databáze na serveru nastavíme, kdo s ní může pracovat a s jakou úrovní oprávnění. To se určuje v seznamu přístupových práv (Access Control List - ACL), který umožňuje škálovat rozdělení oprávnění s velkou volností, přesto však přehledně a intuitivně. Zmíním zde pouze základní rozdělení práv na 7 úrovní: bez přístupu, zapisovatel (nemá právo číst), čtenář (nemůže zapisovat), autor (může číst vše a upravovat pouze své dokumenty), editor (může upravovat i cizí dokumenty), návrhář (vývojář, který upravuje vzhled a funkcionalitu aplikace) a manažer (může vše, včetně nastavování přístupových práv a smazání celé databáze).

A za třetí, lze nastavit čtecí či editační práva i k jednotlivým dokumentům, uloženým v databázi, nebo dokonce k částem dokumentu - sekcím.

 

Jako příklad si vezměme personální databázi. Běžným firemním uživatelům dáme k této aplikaci právo autora, mohou tedy číst záznamy ostatních uživatelů a každý může měnit a aktualizovat svůj záznam. Protože jsou ale některé osobní údaje citlivé, nastavíme u každého dokumentu část veřejnou (jméno, pozice, číslo telefonu apod.) a část neveřejnou (vzdělání, zdravotní stav, platová kategorie apod.), ke které má přístup pouze několik vyhrazených osob. Přestože tedy máme všechny údaje pohromadě vedle sebe, můžeme chytře nastavit přístupová práva tak, aby každý viděl právě to, co má.

ACL, tedy seznam oprávnění k databázi, doplňuje ECL (Execution Control List), neboli seznam oprávnění obecně spouštět operace v klientu Lotus Notes. Každý kousek kódu, který je v Lotus Notes vytvořen, je digitálně podepsán tím, kdo jej naposledy upravoval. Do ECL je tedy rozumné zanést pouze ta jména vývojářů, kterým věříme - jsou to interní firemní vývojáři nebo například tvůrci z IBM/Lotus. Pokud na pracovní stanici spustí uživatel kód, jehož autor nemá oprávnění v ECL, objeví se nejdříve varující dialog, ve kterém podezřelou operaci povolíme nebo zakážeme. Tato funkcionalita úspěšně zamezuje šíření škodlivých samospouštěcích skriptů, které známe z jiných systémů - díky ECL se tento kód nemůže automaticky spustit a šířit se tak dál.

 

Komunikace

Klient Lotus Notes a server Domino spolu komunikují pomocí vnitřního, uzavřeného protokolu, který se stará o bezpečné spojení. Server k tomu využívá pouze portu číslo 1352, takže správci firemního firewallu stačí povolit pouze tento port, pokud se klienti Lotus Notes chtějí připojovat k serveru zvenčí.

Navíc lze tuto komunikaci mezi klientem a serverem, která by se neodehrávala pouze v rámci firemní sítě, šifrovat. Případný útočník, zachytávající komunikaci, tak nezíská data v otevřeném formátu, ale šifrovaná.

Lotus Notes umožňují uživatelům také pracovat off-line. Pomocí systému replikace, což je vysoce sofistikovaná synchronizace, lze uložit dokumenty v databázi i lokálně, na pevný disk notebooku. S takovou aplikací lze pracovat stejně, jako by byla na serveru, protože změny, které jsme v režimu off-line provedli, se po připojení do sítě korektně přenesou na server, a naopak.

To však může s sebou nést určitá rizika - notebook s off-line databázemi můžeme ztratit nebo jej může někdo odcizit. I proti tomu mají Lotus Notes obranu. Lokální off-line databáze lze zašifrovat pomocí zmíněného ID souboru uživatele. Bez tohoto souboru, a hlavně hesla k němu, jsou lokální databáze pro útočníka bezcenné.

Podpora standardů

Server Lotus Domino podporuje celou řadu standardů. Z těch bezpečnostních zmiňme možnost odesílat a přijímat elektronicky podepsanou či šifrovanou poštu (S/MIME). Dále pak podporu X.509 certifikátů a PKI - dvojici soukromý/veřejný klíč si lze nechat certifikovat u externí certifikační autority (v ČR například I.CA, vydává kvalifikované certifikáty pro komunikaci se státní správou) a poté použít i v Lotus Notes.

Chceme-li zabezpečit internetovou komunikaci se serverem Domino, lze to udělat i bez prostředníka - Lotus Domino může sloužit jako registrační i certifikační autorita pro vydávání X.509 certifikátů, pomocí kterých se šifruje například HTTP protokol (HTTPS).

 

Další požadavky na bezpečnost

Lotus Notes umí vyhovět i specifickým požadavkům na přísná bezpečnostní pravidla. Již zmíněný Notes ID soubor, uchovávající identitu uživatele, lze šifrovat tak, že jej odemkne ne pouze jedno heslo, jak je obvyklé, ale například 2 z 5 hesel, které zná 5 různých lidí. Tyto identity se použijí zpravidla pro super administrátorské účty, které mohou mít přístup do všech (i citlivých) databází, nebo pro certifikační autoritu.

V počítačových systémech bývá administrátor většinou pánem všeho, s možností maximálního přístupu k datům. Pokud je toto nežádoucí, lze Lotus Domino nastavit tak, že administrátoři mají právo kompletně řídit a spravovat běh serveru, ale k vybraným citlivým databázím nebudou mít ani čtenářská práva.

Všechny přístupy uživatelů k serveru se samozřejmě ukládají do logů, které lze dále prohledávat, zpracovávat a analyzovat. Součástí Lotus Domino serveru jsou i nástroje, kterými se dají nastavit virtuální senzory, hlídající výskyt určitých událostí v systému. V případě objevení takové události na ni zareagují - například odešlou informativní email správci systému. Hlídanou událostí může být docházející místo na pevném disku, ale i neúspěšný pokus o přístup do citlivé databáze.


Shrnutí

Systém Lotus Notes/Domino je po dvě desítky let stabilním systémem pro sdílení a práci s dokumenty, podporu spolupráce uživatelů a platformou pro rychlý vývoj aplikací na míru. To vše lze provozovat i při náročných požadavcích na bezpečnost a přesná pravidla pro přístup k informacím.

Předchozí: Lotus Tea - podzim 2007
Následující: Série seminářů na podzim a zimu