Zabezpečení

Tento dokument poskytuje podrobný přehled technických opatření k zajištění bezpečnosti platformy iNuweb. Věnuje se použitým technologiím, bezpečnostním nastavením serveru a klienta a zajištění integrity dat.

Bezpečnostní Nastavení SSH Tunelu

Zde se popisuje zabezpečení SSH tunelu mezi serverem a klientem, vytvořenými v Delphi, s plnou kontrolou nad šifrovacími algoritmy a výměnou klíčů.

Použité Algoritmy a Klíče

  1. Algoritmus pro výměnu klíčů:

    • Curve25519 (keCurve25519Sha256) je nastaven jako preferovaný algoritmus pro výměnu klíčů. Tento moderní algoritmus založený na eliptických křivkách poskytuje vysokou úroveň bezpečnosti a efektivitu s nižšími výpočetními nároky ve srovnání s tradičními algoritmy, jako je RSA.

    • Další algoritmy, jako například ECDH (ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521) a Diffie-Hellman s SHA-2 (keDHGroup14Sha256, keDHGroup16Sha512, keDHGroup18Sha512), jsou povoleny jako záložní pro zajištění kompatibility.

  2. Šifrovací algoritmus (Ciphers):

    • Používají se pouze moderní AES-CTR algoritmy (AES-256 CTR, AES-192 CTR, AES-128 CTR), které poskytují silné šifrování a ochranu proti moderním útokům. Starší CBC režimy (jako Blowfish, Cast128 a TripleDES v CBC režimu) byly deaktivovány kvůli jejich potenciálním zranitelnostem.

  3. Algoritmus pro HMAC (Integrity Check):

    • Pro integritu zpráv jsou použity algoritmy HMAC-SHA2 (hmacSHA2_256_etm, hmacSHA2_512_etm), které zajišťují vysokou úroveň ochrany integrity. SHA1 a MD5 HMAC algoritmy byly deaktivovány, aby se zabránilo využití známých zranitelností.

  4. HostKeyAlgorithms (Algoritmy klíčů pro autentizaci):

    • Preferované algoritmy jsou Eliptické Křivky (EC) a RSA s délkou klíče 4096 bitů. Tento záložní RSA klíč zajišťuje kompatibilitu, pokud eliptické křivky nejsou podporovány, a poskytuje vysokou úroveň zabezpečení díky své délce.

  5. Kompresní algoritmus:

    • Komprese je v tomto nastavení vypnuta. Vypnutí komprese eliminuje potenciální bezpečnostní rizika spojená s kompresními útoky (např. BREACH) a je v souladu s aktuálními doporučeními pro bezpečné nastavení SSH tunelů.

Konfigurace na Straně Serveru a Klienta

  • Server a klient jsou nakonfigurováni tak, aby preferovali Curve25519 pro výměnu klíčů, přičemž všechny ostatní algoritmy jsou uvedeny v seznamu povolených, aby byla zajištěna zpětná kompatibilita.

  • RSA klíč s délkou 4096 bitů je přítomen jako záložní možnost, ale primárně jsou využívány eliptické křivky pro dosažení vyšší bezpečnosti a výkonu.


Bezpečnostní Nastavení Serveru

Tento úsek shrnuje bezpečnostní nastavení produkčního serveru, včetně konfigurace protokolů, šifrovacích algoritmů, firewallu a dalších opatření pro ochranu.

1. Protokoly a Šifrovací Algoritmy pro HTTPS

  • Povolené protokoly: Server je nastaven tak, aby přijímal pouze moderní protokoly TLS 1.2 a TLS 1.3, což poskytuje vysokou úroveň zabezpečení pro šifrované komunikace. Starší protokoly SSL 2.0, SSL 3.0, TLS 1.0 a TLS 1.1 byly zakázány kvůli známým zranitelnostem.

  • Šifrovací sady (Cipher Suites): Server akceptuje pouze bezpečné šifrovací sady, včetně AES-GCM a ChaCha20-Poly1305, které jsou odolné proti moderním útokům a poskytují vysoký stupeň ochrany. CBC šifrovací sady byly deaktivovány pro eliminaci rizik spojených s blokovým šifrováním v CBC režimu.

2. HTTP Strict Transport Security (HSTS)

  • HSTS hlavička: Na serveru je aktivní hlavička HSTS (Strict-Transport-Security), která instruuje prohlížeče, aby komunikovaly pouze přes HTTPS. Nastavení zahrnuje parametry:

    • max-age=31536000 (zajišťuje vynucení HTTPS po dobu 1 roku)

    • includeSubDomains (pravidlo platí i pro subdomény)

    • preload (umožňuje přidání domény do HSTS preload seznamu)

Tímto nastavením je server chráněn proti útokům typu downgrade a zabezpečený proti pokusům o komunikaci přes HTTP.

3. HTTP/2

  • HTTP/2 podpora: Server je nakonfigurován tak, aby využíval HTTP/2, což přináší vyšší efektivitu, bezpečnost a výkon při komunikaci s klientem. HTTP/2 umožňuje multiplexování, kompresi hlaviček a další optimalizace pro moderní webové aplikace.

4. Konfigurace Firewallu

  • Povolené porty: Na firewallu byly povoleny konkrétní TCP porty pro řízený přístup:

    • TCP port 80: Povolen pro příchozí připojení.

    • TCP port 443: Povolen pro příchozí připojení.

Tato pravidla zabezpečují, že pouze specifické služby mají přístup na server, čímž se snižuje riziko neoprávněných připojení.

5. Další Bezpečnostní Opatření

  • Registry a Konfigurace: V registrech byly vytvořeny a upraveny potřebné klíče pro správné povolení a zakázání protokolů. Tím je zajištěno, že server akceptuje pouze podporované a bezpečné protokoly a šifrovací sady.

  • Pravidelné testování a monitorování: Provádíme pravidelné bezpečnostní testy pomocí nástroje Qualys SSL Labs, abychom zajistili, že server odpovídá aktuálním bezpečnostním standardům a je odolný vůči novým zranitelnostem.


Bezpečné Ukládání Hesel

V rámci zajištění vysoké úrovně bezpečnosti ukládáme hesla uživatelů výhradně ve formě hashů s využitím algoritmu Bcrypt. Tento přístup eliminuje riziko, že by skutečné heslo bylo v systému přístupné nebo snadno obnovitelné při kompromitaci databáze.

Princip Bezpečného Hashování Pomocí Bcrypt

  1. Jedinečný Salt pro Každé Heslo: Algoritmus Bcrypt automaticky generuje náhodný salt pro každé heslo. Salt zajišťuje, že i dvě identická hesla mají rozdílný hash, čímž se eliminuje možnost použití předpočítaných útoků (tzv. rainbow tables).

  2. Iterace a Cost Factor: Bcrypt používá konfigurovatelný cost factor, který určuje počet iterací hashování. Čím vyšší hodnota cost factoru, tím delší je čas potřebný na výpočet hashe. Tento parametr slouží jako ochrana proti útokům hrubou silou (brute-force), protože výrazně zpomaluje opakované pokusy o prolomení hesla.

    • Nastavení Cost Factoru: Cost factor je nastaven na hodnotu 12, což poskytuje dobrou rovnováhu mezi bezpečností a výkonem serveru.

  3. Bezpečné Ověření Hesla: Při ověřování hesla Bcrypt využívá uložený hash, který obsahuje jak salt, tak i počet iterací. Díky tomu je možné přesně zopakovat hashování se správnými parametry a ověřit, zda zadané heslo odpovídá uloženému hashi.

Výhody Použití Bcrypt

  • Odolnost proti útokům hrubou silou: Díky iteracím je Bcrypt pomalejší než standardní hashovací algoritmy, což výrazně zvyšuje nároky na výpočetní výkon při pokusech o prolomení hesla.

  • Automatický Salt: Bcrypt eliminuje potřebu spravovat salt ručně, což zjednodušuje správu a zajišťuje, že každý uživatel má unikátní hash.

  • Bezpečnost i při kompromitaci databáze: Vzhledem k tomu, že ukládáme pouze hashe hesel, skutečné heslo není nikde v systému uloženo a nelze ho zpětně odvodit.

Doporučené Postupy

  • Pravidelná Aktualizace Cost Factoru: Jak se výpočetní výkon postupně zvyšuje, budeme pravidelně kontrolovat a případně zvyšovat hodnotu cost factoru s ohledem na aktuální hardware.

Bcrypt poskytuje silné zabezpečení pro ukládání hesel díky kombinaci náhodného saltu, iterací a odolnosti vůči moderním útokům. Toto řešení zajišťuje, že i při kompromitaci databáze jsou uživatelská hesla chráněna proti přímému zneužití.

Last updated