====== 4SA313 cvičení Ing. Pavlíčka ====== //Zimní semestr 2023/24// ===== Přidělení bodů ===== ^druh úkolu ^počet bodů ^poznámka ^ |[[ semestralniUloha |semestrální úloha]] | 30 | Více kontrolních bodů, obhajoba nejpozději do konce zkouškového období. | |průběžné testy | 40 |7 testů a 2 domácí úkoly | |[[zkouska | závěrečná zkouška]] | 30 | | Budou též nadstandardní úkoly, za jejichž splnění získají studenti body navíc. ===== Obsah cvičení, průběžné testy ===== ==== Plán cvičení ==== ^týden ^téma ^ | 1. | 16. září|Hesla | | 2. | 23. září|SSH | | 3. | 30. září|Unix - základní příkazy, adresářová struktura | | 4. | 7. října|Unix - procesy | | 5. | 14. října|Certifikáty, certifikát pro server | | 6. | 21. října|Osobní certifikáty - podepisování, šifrování | | 7. | 28. října|//státní svátek// | | 8. | 4. listopadu|//inovační týden// | | 9. | 11. listopadu|Protokol TLS, konfigurace Apache | | 10. | 18. listopadu|LDAP | | 11. | 25. listopadu|Zabezpečení HTTPS, útoky na weby | | 12. | 2. prosince|OpenPGP - podepisování, šifrování, správa klíčů | | 13. | 9. prosince|rezerva | ==== Termíny testů ==== ^termín ^zadání testu ^body ^komentář ^ | 23. 9.; 12:45 až 13:00 | [[LP-test1 | test hesla]] | 5 | //na začátku cvičení// | | 30. 9.; 16:00 až 22:00 | [[LP-test2 | test na SSH - tunel ]] | 3 | //mimo cvičení, test v InSIS// | | 7. 10.; 16:00 až 22:00 | [[LP-test2 | test na SSH - bastion ]] | 2 | //mimo cvičení, test v InSIS// | | 14. 10.; 16:00 až 22:00 | [[LP-test3 | test na práva ]] | 5 | //mimo cvičení, test v InSIS// | | 21. 10.; 16:00 až 22:00 | [[LP-test6 | test certifikáty]] | 5 | //mimo cvičení, test v InSIS// | | do 11. 11. 14:30 | //viz sem. úloha// | - | zvolit aplikaci pro semestrální úlohu | | do 11. 11. 23:59 | [[lp-test7 | podepisování dokumentů a el. pošty]] | 5 | //domácí úkol// | | do 11. 11. 23:59 | [[lp-test9 | přihlášení do VPN]] | 2 | //domácí úkol// | | 18. 11.; 16:00 až 22:00 | [[LP-test8 | test TLS]] | 5 | //mimo cvičení, test v InSIS// | | do 2. 12. 16:00 | //viz sem. úloha// | - | instalace aplikace na server (semestrální úloha) | | do 9. 12. 16:00 | //viz sem. úloha// | - | protokol o auditu (semestrální úloha) | | 9. 12.; 16:00 až 22:00 | [[LP-test4 | test PGP podepisování, klíče]] | 5 | //mimo cvičení, test v InSIS// | | do 16. 12. 23:59 | [[LP-test10 | security.txt ]] | 3 | // domácí úkol // | === Termíny z přednášek === Ještě si dovolím připomenout dva termíny z přednášek ^termín ^zadání testu ^body ^komentář ^ | 7. října; do 23:59 | //zakázat přihlašování heslem// | -2 | | 11. listopadu; do 23:59 | identifikační prostředky na NIA | 2 | ==== Aplikace adminer a ldap-account-manager ==== * adminer - stáhnout z [[https://www.adminer.org]], URL aplikace ''https://bisxxx.vse.cz/adminer/'' * ldap-account-manager - balíček pro Debian, * adminer dostupný ze školní sítě (146.102.0.0/16) a případně z vybraných IP adres (z domova, ...), * dostupné pouze přes doménové jméno a https, tj. při testování z bis.vse.cz následující příkazy nevrátí aplikaci, ale buď odmítnou spojení (kód 4xx či 5xx), nebo přesměrují na ''https://bisxxx.vse.cz/adminer/'' (příkazy jsou pro adminer, pro LAM obdobně) * ''curl http://bisxxx.vse.cz/adminer/'' např. ''curl http://bis049.vse.cz/adminer/'' * ''curl http://146.102.54.xxx/adminer/'' např. ''curl http://146.102.54.49/adminer/'' * ''curl %%--%%insecure https://146.102.54.xxx/adminer/'' např. ''curl %%--%%insecure https://146.102.54.49/adminer/'' * úvodní stránka a lam (https://bisxxx.vse.cz/lam/) - na https://securityheaders.com/ hodnocení B a lepší * úvodní stránka a lam (https://bisxxx.vse.cz/lam/) - na https://observatory.mozilla.org/ hodnocení B a lepší * budete doplňovat bezpečnostní hlavičky - zjistěte si, proti jakým útokům chrání, ==== Admin aplikace přes adm-bisxxx.vse.cz ==== Doporučený postup: - vytvořte samostatný DocumentRoot pro adm-bisxxx.vse.cz, např. ''mkdir /var/www/adm-bis081'' - do tohoto adresáře umístěte ukázkový ''index.html'' (např. informací, že se jedná o adm-bis081.vse.cz) - do tohoto adresáře přesuňte adresář s aplikací adminer (''mv /var/www/html/adminer /var/www/adm-bis081'') - požádejte o certifikát pro doménové jméno adm-bisxxx.vse.cz, tj. příkaz ''certbot %%--%%domains adm-bis081.vse.cz'', neupravujte konfigurační soubory, - v ''/etc/apache2/sites-available'' zkopírujte ''000-default-le-ssl.conf'' do **adm-bisxxx.conf** (''cp 000-default-le-ssl.conf adm-bis081.conf''), - v tomto novém konfiguračním souboru je potřeba změnit **ServerName** a **cesty k certifikátům** a i další (např. adresář pro adminer), - v původním ''000-default-le-ssl.conf'' je potřeba zrušit adminer a LAM (a případně i sks) - v ''000-default.conf'' je potřeba nastavit přesměrování na HTTPS pro adm-bisxxx.vse.cz; buď použijete regulární výraz nebo dvakrát RewriteCond s operátorem OR; popis viz [[https://www.jakpsatweb.cz/server/mod-rewrite.html]]; na bis.vse.cz je obecnější zápis, kdy nemusím při doplnění jména upravovat ''000-default.conf'' - nastavit použití nové //site// - ''a2ensite adm-bis081.conf'' - a nyní již zkontrolovat úpravy (''apachectl configtest''), restartovat apache (''systemctl restart apache2'') a **otestovat** ==== Content-Security-Policy ==== Doporučuji následující postup pro vytváření hlavičky Content-Security-Policy: * nejdříve potřebujete mít nainstalovaný LDAP server a dokonfigurovat aplikaci, * přečtěte si základní informace o hlavičce Content-Security-Policy, např. [[ https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | Content Security Policy (CSP)]] od Mozilla či článek [[https://www.root.cz/clanky/bezpecnejsi-web-s-hlavickou-content-security-policy/|Bezpečnější web s hlavičkou Content-Security-Policy]] * CSP definuje mnoho pravidel, některé jsou bezpečné (např. upgrade-insecure-requests), některé nahrazují starší direktivy (frame-ancestors), * hlavním cílem je ochrana proti [[ https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting | Cross-Site Scripting (XSS) ]] - tato pravidla je potřeba odladit. Nejvhodnější je nastavit doporučený bezpečný standard a poté zkoušet, zda něco nepřestalo fungovat. Doporučuji v prohlížeči spustit Nástroje pro vývojáře v nich si zobrazit konzoli (console). * některé aplikace generují CSP hlavičku sami, není vhodné je přepisovat (apache, u [[ https://httpd.apache.org/docs/2.4/mod/mod_headers.html#header | Header ]] se podívejte na parametr setifempty). Nepřepisujte CSP pravidla pro aplikace jako adminer či LAM, ===== Nadstandardní úkoly pro semestrální práci ===== Zde jsou návrhy rozšiřujících úloh k semestrální práci. Některé návrhy se mohou vzájemně vylučovat, některé návrhy lze realizovat pouze u některých aplikací. ^popis rozšíření ^počet bodů ^ |[[https://en.wikipedia.org/wiki/ModSecurity|ModSecurity - web application firewall]]. Nainstalovat a nakonfigurovat ([[https://www.linuxbabe.com/security/modsecurity-apache-debian-ubuntu|návod pro Debian]], [[https://www.root.cz/clanky/hardening-webovy-aplikacni-firewall-modul-modsecurity/ | návod v češtině]]). Ukázat v logách nějaké zachycené útoky (SQL Injection, XSS, ...) | 3 | |[[https://en.wikipedia.org/wiki/Fail2ban|Fail2ban]] - aplikace v logách hledá útočníky a poté je může blokovat ([[https://www.howtogeek.com/675010/how-to-secure-your-linux-computer-with-fail2ban/|návod]]). 1 bod při instalaci a upozorňování na e-mail, 3 body při blokování přes nftables. [[fail2ban|Poznámky k instalaci]]. | 1-3 | |SSH server bude používat dvoufaktorovou autentizaci - použít Time-based One-time Password Algorithm (TOTP), též se používá označní Google Authenticator. Tj. uživatel se přihlásí klíčem a jednorázovým kódem. Pokud dodatečné údaje pro TOTP nemá nastaveny, tak se nepřihlásí. Ze serveru bis.vse.cz (popř. z celé školní sítě) by mělo být možné se přihlásit bez dvoufaktorové autentizace, tj. pouze klíčem. | 2 | |SSH přihlášení uživatele pomocí OpenSSH certifikátu - viz https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Certificate-based_Authentication. Nelze současně s předchozím úkolem (SSH a 2FA). V PuTTY podpora od verze 0.78. | 2 | |SSH přihlášení pomocí privátního klíče umístěného na FIDO2 či čipové kartě/tokenu. Potřebujete HW úložiště privátního klíče. V případě PuTTY se podívejte na https://github.com/NoMoreFood/putty-cac. Pravděpodobně nejde rozumně kombinovat s předchozími úkoly (SSH a 2FA, SSH a certifikáty). Ze tří zadání na SSH si vyberte jen jedno. | 2 | |Přihlášení do aplikace pomocí dvoufaktorové autentizace (TOTP). Část aplikací dvoufaktorovou autentizaci nepodporuje. V případě WordPressu je to součást zadání. | 1-3 | --- Různé služby pro testování webů/serverů/domén: https://webbkoll.dataskydd.net/en/ https://observatory.mozilla.org/ https://internet.nl https://cryptcheck.fr/ https://www.hardenize.com/ AbuseIPDB is an IP address blacklist for webmasters and sysadmins to report IP addresses engaging in abusive behavior on their networks: [[https://www.abuseipdb.com/user/55693|{{https://www.abuseipdb.com/contributor/55693.svg?nocache&401|AbuseIPDB Contributor Badge}}]]