Obsah

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í.

1. Požadavky

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

Bezpečnostní požadavky

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

Změny od ZS 2024/2025:

2. Termíny

ú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)

3. Bodování

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:

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

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.

4. Doporučení

Certifikáty

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

Databáze MySQL a MariaDB

Databáze MySQL je historicky velmi oblíbená u webových aplikací. MySQL databáze není open source, licence neumožňuje její přímou distribuci v Debianu. Existuje klon MariaDB , který je součástí Debianu a doporučuji ho používat. Jedinou výjimkou je situace, kdy se na stránkách aplikace explicitně uvádí, že MariaDB není podporována.

Webové rozhraní pro LDAP

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

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 Tool 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,

Jak řešit problémy s nastavením LDAP?

Nejčastější chyby

Výpis dotazů na LDAP server

Pokud předchozí rady nepomohou, tak můžete zkusit vypsat si dotazy na LDAP server dle následujícího postupu:

  1. ukončete službu slapd pomocí
    sudo systemctl stop slapd
  2. spusťte slapd v debugovacím režimu pomocí následujícího příkazu
    sudo /usr/sbin/slapd -h ldap://127.0.0.1:389/ -g openldap -u openldap -F /etc/ldap/slapd.d -d 256
  3. zkuste se ve Vaší aplikaci přihlásit (u některých aplikací nezapomeňte zvolit, že se připojujete přes LDAP):
    • žádný požadavek se neobjeví - máte nejspíše chybně server (IP adresu či URL, chybné číslo portu, chybně nastaveno šifrování spojení (nešifrovat)). Jinou možností je, že aplikace kontroluje, že uživatel je založen i v ní - někdy je potřeba zaškrtnout volbu pro automatické založení účtu, někdy je potřeba založit účet v aplikaci a přiřadit ověření přes LDAP.
    • objeví se informace o chybném hesle (požadavek BIND)
    • ověření hesla proběhlo, ale další požadavek skončil chybou - nejsou vyplněny některé atributy, vyžadujete nastavení skupin, ale skupiny nejsou vytvořeny, …
  4. ukončení aplikaci slapd (Ctrl/C),
  5. spusťte proces slapd
    sudo systemctl start slapd