===== Bezpečnost systému ===== Zde se nastavují konfigurační parametry pro bezpečnost systému. {{:orsoftopen:o0:konfig:okonfig:bezpecnost.png?direct&}} ==== Objektová ochrana ==== * **Objektová ochrana zapnuta** - zapnutí/vypnutí systému přístupu podle nastavených oprávnění (hlavní vypínač objektové ochrany). Je-li zapnuto, řídí se přístupová práva uživatelů k úlohám podle přidělených profilů. * **Rozšířený přístupový strom **- zapnutí/vypnutí rozšířené funkce přístupového stromu viz. **[[:orsoftopen:o0:admin:opristuptree|přístupový strom]]** {{:orsoftopen:o0:admin:opristuptree_06.png}} ==== Hesla ==== Zde se nastavují parametry pro přístupová hesla do Orsoftu * **Platnost hesla (dny)** - maximální platnost hesla ve dnech. Po uplynutí této doby je uživatel při přihlašování vyzván ke změně hesla. Bez změny hesla mu není přihlášení dovoleno. Je-li vyplněna nula, je platnost neomezená. * **Minimální platnost hesla** - doba od poslední změny hesla, během které si uživatel nemůže heslo znovu změnit. Je-li vyplněna nula, může si uživatel měnit heslo kdykoliv. * **Počet logovaných změn hesla** - (připravuje se) udává, kolik předchozích hesel uživatele se loguje. S využitím logovaných hesel se uživateli nepovolí změnit heslo na takové, které již dříve používal. Je-li vyplněna nula, tak se pouze kontroluje, zda nové heslo není shodné s aktuálním. * **Minimální délka hesla** - minimální celkový počet znaků hesla * **Minimální počet číslic** - minimální počet číslic v hesle * **Minimální počet malých písmen** - minimální počet malých písmen v hesle * **Minimální počet velkých písmen** - minimální počet velkých písmen v hesle * **Minimální počet speciálních znaků** - minimální počet znaků hesla, které musejí být ze sady povolených speciálních znaků * **Sada povolených speciálních znaků** - sada znaků, na něž se kontroluje minimální počet speciálních znaků v hesle ==== Neúspěšné přihlášení uživatele ==== Pokud jsou při přihlašování klienta zadány na přihlašovací obrazovce třikrát za sebou chybné přihlašovací údaje (login, heslo), dojde k ukončení klientského programu. Další pokusy o přihlášení jsou možné až po novém spuštění klienta. Veškerá přihlášení (úspěšné, i neúspěšné pokusy) jsou systémem logovány v interním logu. ==== Doba nečinnosti ==== * **Maximální doba nečinnosti (minuty)** - doba, po které je uživatel, který během ní v Orsoftu neprovedl žádnou akci (byl nečinný), automaticky odhlášen, tj. jím spuštěný Orsoft je ukončen. Pokud je vyplněna nula, žádné hlídání nečinnosti se neprovádí. Tato **hodnota se použije pouze** pro ty uživatele, kteří nemají maximální dobu nečinnosti nastavenou individuálně v tabulce **[[:orsoftopen:o0:admin:ouziv|uživatelů]]**. ==== NIS2 Compliance ==== Pro vyšší zabezpečení IS jsou připravena tato rozšíření: === Šifrování komunikace C/S === Od verze 26.1 je možné nasadit silné šifrování při komunikaci mezi klientem „IS Open“ a serverem. Je třeba vyřešit několik problémů s důvěryhodností certifikátů a uznáním platnosti certifikátu. Komunikace mezi klientem a serverem se přesune výše do protokolu TLS (nyní ve verze 1.3). Nejdříve se Klient a Server asymetricky dohodnou na klíči a parametrech šifrování a následně již komunikace probíhá zašifrovaně symetrickou šifrou. * **Na SERVERU** budou tyto úložiště klíčů v adresáři „./soubory“: * o1j_ssl_cs.ks * Soubor je keystore typu JKS a obsahuje právě jeden klíč a certifikát pro šifrování komunikace * Ideální je, aby byl klíč certifikován důvěryhodnou CA. NENÍ to však podmínka, lze použít i „self-signed“ certifikát. * o1j_trusted.ks * Tento keystore obsahuje důvěryhodné certifikáty CA. Standardně je využit při komunikace s různými servery pro ověření https (například ARES, ČSSZ, …) * V tomto souboru MUSÍ být certifikát klíče, který uložen v o1j_ssl_cs.ks * **Na KLIENTU** budou tyto úložiště klíčů v adresáři „./soubory“: * o1j_trusted.ks * tento soubor se automaticky přenese ze serveru v rámci aktualizačního procesu (v té chvíli ještě nešifrovaně – to je v pořádku, neboť soubor obsahuje JEN A POUZE veřejné části asymetrického klíče). * Tento soubor se při startu klienta zavede jako defaultní „trustStore“ pro instanci JRE (zamění tak defaultní trustStore, který je v v JRE/security/cacerts). Zapnutí komunikace SSL/TLS se provádí pomocí java proměnných ve spouštěcí dávce: -DRMI_COMPRESS=SSL === Striktní určení komunikačních portů === IS Open využívá komunikace na serveru na 4 portech: - RMI_PORT – Registry pro RMI - RMI_PORT_SERVICE – port pro služby - RMI_PORT_SERVICE_SETTINGS – nastavení - RMI_PORT_SERVICE_AKTU_KLIENT – pro aktualizaci klienta Od verze 26.1 je připravena úprava ORCore, tak aby bylo možné porty nadefinovat a nevyužívat dynamické porty. Java defaultně pro RMI používá dynamické porty v prostoru 52000 a výše. Příklad nastavení v dávce: ''set JAVA_OPTS=-DRMI_PORT=2105'' Příklad uživatel se 7 servery: - RMI_PORT: 2101 – 2107 - RMI_SERVICE: 42201 - 42207, - RMI_SERVICE_SETTINGS: 42301 – 42307 - RMI_AKTU_KLIENT: 42401 - 42407 Čísla jsou pouze doporučení (best practices), správce systému může zvolit sám dle svých podmínek. === Mutifaktové ověření pro Open === Pro verzi 26.1 je připraveno řešení MFA na principu Time-based-One-Time-Password. Základní princip TOTP: TOTP=Truncate(HMAC_SHA256(secret,floor(time/30s))) * Po zapnutí této funkcionality je možné v tabulce OUZIV vygenerovat tajný klíč. Na základě něj se vytvoří QR kód pro pro import tajného klíče do Autentikátoru. * Ověřeno využití * Google Autentikatoru * Microsoft Autentikatoru. * Na základě času se mění kód každých 30 sec. a tento kód je unikátní pro každého uživatele IS Open. * Při přihlášení musí zadat správně jméno, heslo + kód z autentikátoru. * Pozn.: Je třeba mít synchronizovaný čas serveru s nějakou centrální časovou autoritou. {{:orsoftopen:o0:konfig:okonfig:o0_nis2_mfa_ouziv.jpg?700}} {{:orsoftopen:o0:konfig:okonfig:o0_nis2_mfa_msauth.jpg?250}} {{:orsoftopen:o0:konfig:okonfig:o0_nis2_mfa_login.jpg?420}} === Bezpečné uložení přístupových hesel do systému === Požadavky na bezpečnost: - Heslo nesmí být uloženo v otevřené podobě - Nestačí „rychlé“ hashovací funkce, musí být použity „pomalé“, iterační kryptografické metody. **Řešení:** Pro verzi 26.1 budou obrazy hesel do systému v tabulce OUZIV ukládány s vysokou zabezpečovací funkcí. Použijeme Argon2Id, která je považována za jednu z nejbezpečnějších. **Princip:** * Pokud bude uživatel ověřen starým způsobem a v databázi je uloženo staré heslo, uloží se nové * Při příštím loginu se již bude kontrolovat na nové Argon2Id. **Parametry pro Argon2Id:** ^ Cíl ^ Memory (KB) ^ Iterace ^ Paralelismus ^ Přibližný čas ^ | Maximální bezpečnost (server) | 65536 | 3 | 1 | ~10–20 s | | Vyvážené (doporučeno) | 16384 | 2 | 4 | ~1–2 s | | Rychlé (desktop klient) | 8192 | 1 | auto | < 1 s | V Open řešení využijeme „vyvážené“ nastavení – tedy 16 MB paměti, 2 iterace a stupeň paralelismu 4. Testováno na několika různých počítačích. Je třeba brát v úvahu, že hashování hesla vzhledem k bezpečnosti provádí KLIENT! **Metoda Argon2Id** Argon2id je hybridní variantou kryptografické hashovací funkce Argon2, která byla vítězem soutěže Password Hashing Competition v roce 2015. Používá kombinaci algoritmů Argon2i a Argon2d, aby se účinně bránila proti časově-paměťovým útokům i útokům postranními kanály. Díky tomu je Argon2id ideální pro bezpečné ukládání hesel, protože kombinuje odolnost proti útokům pomocí GPU (jako Argon2d) s odolností proti útokům postranními kanály (jako Argon2i). **Hybridní přístup:** Argon2id kombinuje odolnost proti útokům postranními kanály (jako je Argon2i) s ochranou proti útokům pomocí GPU (jako je Argon2d). **Ideální pro hesla:** Kombinace těchto vlastností z něj činí nejvíce doporučený typ pro moderní aplikace, zejména pro bezpečné ukládání hesel. Odolnost proti útokům: Je navržen tak, aby byl odolný proti sofistikovaným útokům, jako jsou útoky postranními kanály a útoky s časově-paměťovou náročností, a je považován za state-of-the-art pro bezpečné hashování hesel. **Konfigurovatelnost:** Lze ho nakonfigurovat pomocí parametrů, jako je paměťová a časová náročnost a stupeň paralelizace, aby bylo možné najít optimální rovnováhu mezi bezpečností a výkonem. === Šifrované uložení přístupových údajů do databází === Jedná se o obsah souboru hibernate.properties, který leží na disku serveru v adresáři „cfg“. Je třeba zajistit, aby nebylo čitelné heslo pro připojení do databáze. Open server mívá silný přístup do DB (většinou admin práva). Potřebuje mít uložené autentikační údaje do DB v souboru hibernate.properties **Standard:** ''hibernate.connection.password=MojeTajneHeslo123'' **Zabezpečené heslo** ''hibernate.connection.password=ENCRYPTED(qdOhPjT73yZy61jHq2r6gw== )'' Zašifrování hesla se provádí v Administrace / Nástroje administrátora / DB nástroje / Zašifrování hesla pro DB connection. Takto zašifrované heslo se vloží do souboru hibernate.properties