Semestrální úloha

Student dostane k dispozici linuxový server se základní instalací operačního systému Debian. Úkolem je nainstalovat webovou aplikaci s autentizací uživatelů a správně zabezpečit server. Mezi 12. a 13. týdnem semestru si studenti vzájemně provedou bezpečnostní testování serveru. Na základě výsledků tohoto testování mají možnost ještě upravit konfiguraci serveru a ten poté odevzdají k hodnocení.

Semestrální úloha se skládá ze dvou částí

  1. konfigurace serveru, instalace a konfigurace aplikace;
  2. bezpečnostní otestování serveru jiného studenta dle zadaných kontrolních otázek.

Požadavky na aplikace

  • Dokončit konfiguraci operačního systému.
  • Nainstalovat jednu webovou aplikaci včetně potřebných komponent:
    • aplikaci si student vybírá ze seznamu či ji může navrhnout sám (vyučující výběr schvaluje),
    • aplikace musí mít autentizaci uživatelů,
    • hesla uživatelů musí být uložena v LDAPu (centrální autentizace uživatelů),
    • uživatel aplikace musí mít možnost změnit si své heslo - obvykle přes samostatnou aplikaci,
  • Správa uživatelů v LDAPu musí být možná přes webové rozhraní.
  • Založit účet pro auditora. Auditor musí mít přístup přes ssh včetně sudo. Dále potřebuje přístup k aplikaci, aby mohl ověřit její funkčnost.

Bezpečnostní požadavky

  • nainstalovány aktualizace,
  • minimalizovat počet otevřených síťových portů na nezbytné funkční minimum,
  • logování přístupu,
  • parametry https:
    • certifikát pro https, který bude uznáván ve většině prohlížečů,
    • veškeré spojení přes SSL (redirect z http),
    • nakonfigurovat OCSP stapling,
    • při dotazech s chybným či chybějícím servername (viz SNI) či hostname (viz HTTP) vracet chybu či neutrální stránku,
    • server musí získat v testech SSLLabs hodnocení A či A+,
  • SSH - přihlášení pouze pomocí klíčů,
  • přístup k webové aplikaci pro správu LDAPu musí být omezen na školní síť (IP rozsah 146.102.0.0/16). Obdobné omezení platí i pro aplikace pro správu databáze (adminer, phpmyadmin). Při práci z domova lze využít školní VPNku.

Před servery je nainstalován firewall, který povoluje provoz z celého světa na portech 22, 80 a 443. Ze školní sítě je povolen veškerý provoz s výjimkou SMTP (tcp/25) a Microsoft Network. Ze serverů je omezeno odesílání pošty - adresa odesílatele musí být ze školní domény (@vse.cz, @bis122.vse.cz, …). Na serverech není možné přijímat poštu z vnějšku.

Požadovaná dokumentace

úkol způsob splnění termín
Volba aplikace V InSIS zvolena aplikace (téma) do 10. cvičení
Nainstalování serveru včetně aplikací Nainstalován Apache (web server), LDAP server, aplikace - nemusí být vše propojené dohromady. Vytvořen účet pro auditora. Předběžný protokol o instalaci uložený do odevzdávárny v InSIS. do 12. cvičení
Bezpečnostní otestování cizího serveru Protokol o bezpečnostním testování odevzdán do odevzdávárny v InSIS. mezi 12. a 13. cvičením
Závěrečné úpravy vlastního serveru Protokol o instalaci serveru odevzdán do odevzdávárny v InSIS do konce zkouškového (cvičící může termín změnit)

Za semestrální úlohu může student získat 30 bodů, z toho 8 bodů je za audit cizího serveru, 22 bodů je za instalaci serveru. Student může získat prémiové body za originální nebo zajímavé řešení.

U auditu serveru se odečítají body např. za:

  • pozdní odevzdání,
  • neprovedení části auditu (na testovaném serveru nejsou stopy po testování),
  • informace protokolu neodpovídají reálnému stavu serveru,

Z bodů za instalaci serveru se odečítá např. za následující nedostatky:

  • lze se přihlásit přes SSH pomocí hesla,
  • neplatný certifikát u https,
  • chybí redirect z http na https pro všechny či část aplikací,
  • chybí HSTS,
  • server nemá hodnocení A či A+ na SSLLabs,
  • není nainstalován LDAP server,
  • LDAP server neobsahuje uživatele,
  • uživatelé ve webové aplikaci se neautentizují vůči LDAPu,
  • není nainstalována či funkční aplikace,
  • program lynis vrací méně než 65%,
  • chybějící závěrečný protokol,
  • student nainstaloval zbytečnou komponentu (např. na serveru běží MySQL databáze, ale aplikace ji nepoužívá).

Student může přijít o body i za nesplnění termínů. Za předmět jsou definovány dva termíny, cvičící může přidat i další.

  1. 5. cvičení, SSH - zakázáno přihlašování pomocí hesla. Budu kontrolovat, že se na studentský server nedá přihlásit pomocí hesla (výjimkou může být přihlášení z bis.vse.cz). Za každý započatý týden nesplnění odečítám dva body.
  2. Příprava serveru pro audit. Před začátkem auditů serverů (obvykle po cvičení ve 12. týdnu) vyučující kontroluje stav serverů a může správci serveru odečíst body při nesplnění některého z požadavků. V případě problémů s účtem auditora může odečítat body vlastníkovi serveru i auditorovi - kdo zavinil problémy. Kontroluje se:
    • Zda je založen účet pro auditora, zda se již přihlásil, zda může udělat sudo. Při zakládání účtů používejte školní přihlašovací jména.
    • Zda je nainstalován a běží webový server a odpovídá na portu 80 (http) a 443 (https). Na portu 80 postačuje přesměrování na port 443.
    • Zda je nainstalován a běží LDAP server (proces slapd).
    • Zda existuje aspoň pokus o instalaci vlastní aplikace.

Získání certifikátu pro server:

  • Let's Encrypt - automatizované získávání certifikátu. Pozor, jedna doména může získat za týden jen 20 certifikátů. V lednu 2018 jsem požádal o zvýšení limitu pro vse.cz. 11. ledna 2018 pro doménu vse.cz zvýšili týdenní limit na 250.
  • Comodo - testovací na 90 dní. Tento certifikát lze získat přes mnohé zprostředkovatele, např. www.ssl.com.

Pro správu obsahu na LDAP serveru jsou v Debianu k dispozici dvě aplikace:

  • ldap-account-manager - webfrontend for managing accounts in an LDAP directory
  • phpldapadmin - web based interface for administering LDAP servers - pro poslední verzi Debianu (a pro PHP 7.2 a novější) není k dispozici

Instalace a konfigurace ldap-account-manager

Ldap account manager (LAM) používá profily. Každý profil definuje, který LDAP server se spravuje a co mohou oprávnění uživatelé tohoto profilu upravovat. Správa profilů je chráněná globálním heslem, konfigurace každého profilu je též chráněna heslem. Další heslo je pro přihlášení do profilu (obvykle uživatel cn=admin,dc=vse,dc=cz) a editaci údajů v rámci profilu. A každý vytvořený uživatel by měl mít své vlastní heslo.

Postup:

  1. musíte mít nainstalován apache (https) a PHP - ověřte si, že Vám dohromady fungují,
  2. nainstalujte LDAP server, tj. balíčky slapd a ldap-utils, příkaz: apt install slapd ldap-utils
  3. ověřte, že se Vám správně nainstaloval, dotaz ldapsearch -x -b dc=vse,dc=cz by měl vypsat dva objekty (popř. dotaz včetně URL k LDAP serveru: ldapsearch -H ldap://127.0.0.1 -x -b dc=vse,dc=cz),
  4. nainstalujte ldap-account-manager, příkaz apt install ldap-account-manager,
  5. na adrese https://bisxxx.vse.cz/lam se Vám otevře webové rozhraní. Nejdříve je potřeba nakonfigurovat vlastní LAM, lze to udělat přes webové rozhraní či přímo v konfiguračních souborech.
    1. vpravo nahoře je LAM configuration
    2. zvolte Edit general settings, počáteční heslo je lam,
    3. na další stránce změňte heslo pro globálního správce,
    4. přes LAM configuration zvolte volbu Edit server profiles, počáteční heslo je opět lam,
      • úplně dole nastavte nové heslo pro správu profilu,
      • v Security settings nastavte uživatele cn=admin,dc=vse,dc=cz
      • časovou zónu nastavte na Prahu, jazyk rozhraní dle svého uvážení,
      • v Server settings nastavte Tree suffix na dc=vse,dc=cz,
      • uložte (Save)
    5. znovu se vraťte do konfigurace profilu a přejděte na Account types
      • je nastavena podpora typů Users a Group - je potřeba nastavit v jaké organizační jednotce se mají uživatelé či skupiny zakládat. Obvyklé je ou=People,dc=vse,dc=cz pro užívatele, a ou=group,dc=vse,dc=cz pro skupiny.
      • u Users místo ou=People,dc=my-domain,dc=com zadejte ou=People,dc=vse,dc=cz
      • u Group místo ou=group,dc=my-domain,dc=com zadejte ou=group,dc=vse,dc=cz
      • uložte
    6. volitelné - v Modules můžete u jednotlivých typů upravit schémata. U users stačí inetOrgPerson (poté je vhodné v Account Types upravit atributy, které se mají zobrazovat v seznamu),
    7. volitelné - v Module Settings můžete nastavit atributy, které se mají vyplňovat při zakládání
  6. po konfiguraci LAM se vraťte na úvodní obrazovku na přihlaste se (heslo uživatele cn=admin,dc=vse,dc=cz)
  7. Vypíše se
          The following suffixes are missing in LDAP. LAM can create them for you.
          You can setup the LDAP suffixes for all account types in your LAM server profile on tab "Account types".
          ou=People,dc=vse,dc=cz
          ou=group,dc=vse,dc=cz
          
  8. nechte založit organizační jednotky (Create). Pokud se uvedené nevypíše, tak jste již ou založili či máte chybu v konfiguraci profilu.
  9. založte skupinu,
  10. založte uživatele - nezapomeňte nastavit heslo,
  11. vyzkoušejte Tree browser - je zde jiný pohled na atributy u objektu, lze též ověřit heslo uživatele vytvořeného v LDAPu,
  • Last modified: 2024/03/28 14:42
  • by pavlicek