Zabezpečení a víceuživatelský server
Tato kapitola shrnuje, co OmniDB dělá pro ochranu uložených přihlašovacích údajů a sdíleného víceuživatelského serveru a co to znamená pro vás jako správce nebo uživatele. Instalaci a zpřístupnění serveru popisuje kapitola Nasazení omnidb-server; správu hesel z příkazové řádky kapitola Konfigurační nástroj OmniDB.
„Serverovým režimem“ se níže rozumí omnidb-server spuštěný bez -A —
víceuživatelská instance, ke které se lidé přihlašují z prohlížeče, ať už naslouchá jen na
loopbacku, nebo na síťové adrese (-H). Desktopová aplikace je vždy jednouživatelská.
Uložená hesla jsou šifrovaná
Hesla k databázím uložená v připojení, hesla a přístupové fráze SSH i soukromé klíče SSH se před
zápisem do uživatelské databáze OmniDB, omnidb.db, šifrují (AES-256-GCM). Šifrovací
klíč v tomto souboru uložen není: je v úložišti tajných údajů operačního systému — v Klíčence
macOS, Správci přihlašovacích údajů Windows nebo v Secret Service na Linuxu — takže samotná kopie
omnidb.db je neprozradí.
Tam, kde žádné úložiště tajných údajů není dostupné (typicky na linuxovém serveru bez grafického
prostředí), uchovává OmniDB klíč místo toho v souboru .connection_secret_key (čitelném
pouze pro vlastníka) v domovském adresáři OmniDB; jakmile tento soubor existuje, používá se vždy.
V takovém případě:
- zálohujte soubor s klíčem spolu s
omnidb.dba chraňte oba stejně; - pokud se klíč ztratí, uložené tajné údaje nelze obnovit — připojení sice zůstanou, ale jejich hesla a klíče SSH je nutné zadat znovu.
Existující nešifrované záznamy ze starších verzí se automaticky zašifrují při prvním spuštění novější verze. Pokud heslo raději vůbec ukládat nechcete, ponechte ho ve formuláři připojení prázdné: OmniDB se na něj pak v případě potřeby zeptá a uchová ho jen v paměti, po dobu 30 minut, pro vaši relaci (viz Vytváření uživatelů a připojení).
Počáteční účet admin
Nová instalace v serverovém režimu vytvoří jednoho superuživatele, admin, s náhodným
heslem, které se jednou vypíše do logu serveru:
omnidb-server: initialized a new app database — initial login: admin / <password> (shown only once; change it under Settings, or run: omnidb-server --set-password admin)
Přihlaste se s ním a změňte ho v Nastavení > Heslo, nebo si předem nastavte vlastní heslo z příkazové řádky:
omnidb-server --set-password admin [-d /path/to/homedir]
Desktopová aplikace nikdy nezobrazuje přihlašovací stránku; ke svému vlastnímu místnímu serveru, dostupnému jen přes loopback, se přihlašuje automaticky.
Ochrana přihlášení a relace
- Po 10 neúspěšných pokusech o přihlášení pro stejné uživatelské jméno nebo ze stejné adresy klienta během 15 minut jsou další pokusy odmítnuty hláškou Příliš mnoho neúspěšných pokusů o přihlášení. Zkuste to znovu za 15 minut. Počítadla se uchovávají v paměti a při restartu serveru se vynulují. Za reverzní proxy je adresou klienta adresa proxy.
- Smazání uživatele okamžitě ukončí všechny jeho relace a odebrání statusu superuživatele platí
okamžitě. Změna hesla (v Nastavení nebo pomocí
--set-password) platí pro nová přihlášení ihned; heslo změněné v Nastavení navíc odhlásí ostatní relace daného uživatele.
Omezení v serverovém režimu
Protože každé připojení víceuživatelského serveru otevírá serverový proces na serverovém počítači, jsou omezeny některé volby připojení, které by četly vlastní soubory serveru:
- Připojení SQLite (databáze SQLite je soubor na serveru) mohou vytvářet a
používat jen superuživatelé OmniDB. Nemohou směřovat dovnitř domovského adresáře OmniDB a URI
file:jsou odmítnuty. - Připojovací řetězce PostgreSQL nesmějí používat parametry
passfile,servicefile,service,sslkey,sslcert,sslrootcert,sslcrlanisslcrldir.
Na desktopovou aplikaci se tato omezení nevztahují, tam jsou soubory vaše vlastní.
Veřejná připojení
Připojení označené jako Veřejné připojení? může používat každý uživatel OmniDB na serveru, upravovat ho však může jen jeho vlastník. Pro všechny ostatní platí:
- uložené heslo se nikdy neodesílá do jejich prohlížeče a heslo vložené do připojovacího řetězce se zobrazuje maskované;
- Otestovat připojení vždy testuje uložený server, port a databázi — předchozí změna těchto polí ve formuláři nepřesměruje uložené heslo jinam.
Exportované soubory
Exporty dotazů a exporty DBML se zapisují do složky temp serveru pod náhodnými názvy
a stáhnout je může jen uživatel, který je vytvořil. Po 24 hodinách se automaticky mažou.
Klíče hostitelů SSH
Tunely SSH a připojení terminálu SSH ověřují klíč hostitele serveru podle souboru
~/.ssh/known_hosts uživatele operačního systému, pod kterým běží
omnidb-server. Neznámý nebo změněný klíč hostitele je odmítnut — OmniDB nedůvěřuje
hostiteli potichu při prvním použití. Přidejte hostitele jednou z tohoto účtu, například:
ssh [email protected] # accept the key once
# or
ssh-keyscan ssh-server.example.com >> ~/.ssh/known_hosts
Vystavení do sítě
Vestavěné TLS neexistuje. Ponechte omnidb-server na 127.0.0.1 (výchozí)
za reverzní proxy, která ukončuje TLS, místo abyste vystavovali prosté HTTP pomocí
-H 0.0.0.0 — viz Nasazení omnidb-server.
Dokud je server navázán na loopback, odpovídá jen na požadavky adresované na
127.0.0.1, localhost nebo [::1] s jeho vlastním portem, což
ho chrání před útoky DNS rebinding z webových stránek. Cookies relace jsou označeny jako
Secure, když požadavek přijde přes TLS nebo s hlavičkou X-Forwarded-Proto:
https, a všechny požadavky měnící stav jsou chráněny proti útokům cross-site request
forgery (CSRF).