====== 4SA313 cvičení Ing. Pavlíčka ====== //Letní 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. | 12. února|Hesla | | 2. | 19. února|SSH | | 3. | 26. února|Unix - základní příkazy, adresářová struktura | | 4. | 4. března|Unix - procesy | | 5. | 11. března|Certifikáty | | 6. | 18. března|Protokol TLS | | 7. | 25. března|Konfigurace Apache | | 8. | 1. dubna|//velikonoce// | | 9. | 8. dubna|//inovační týden// | | 10. | 15. dubna|LDAP | | 11. | 22. dubna|Zabezpečení HTTPS, útoky na weby | | 12. | 29. dubna|OpenPGP - podepisování, šifrování, správa klíčů | | 13. | 6. května|Osobní certifikáty - podepisování, šifrování | ==== Termíny testů ==== ^termín ^zadání testu ^body ^komentář ^ | 19. 2.; 12:45 až 13:00 | [[LP-test1 | test hesla]] | 5 | //na začátku cvičení// | | 26. 2.; 16:00 až 22:00 | [[LP-test2 | test na SSH - tunel ]] | 3 | //mimo cvičení, test v InSIS// | | 4. 3.; 16:00 až 22:00 | [[LP-test2 | test na SSH - bastion ]] | 2 | //mimo cvičení, test v InSIS// | | 11. 3.; 16:00 až 22:00 | [[LP-test3 | test na práva ]] | 5 | //mimo cvičení, test v InSIS// | | 18. 3.; 16:00 až 22:00 | [[LP-test6 | test certifikáty]] | 5 | //mimo cvičení, test v InSIS// | | do 25. 3. 9:15 | //viz sem. úloha// | - | zvolit aplikaci pro semestrální úlohu | | 25. 3.; 16:00 až 22:00 | [[LP-test8 | test TLS]] | 5 | //mimo cvičení, test v InSIS// | | do 18. 4. 23:59 | [[lp-test9 | přihlášení do VPN]] | 2 | //domácí úkol// | | do 29. 4. 16:00 | //viz sem. úloha// | - | instalace aplikace na server (semestrální úloha) | | do 6. 5. 16:00 | //viz sem. úloha// | - | protokol o auditu (semestrální úloha) | | 6. 5.; 16:00 až 22:00 | [[LP-test4 | test PGP podepisování, klíče]] | 5 | //mimo cvičení, test v InSIS// | | do 13. 5. 23:59 | [[lp-test7 | podepisování dokumentů a el. pošty]] | 5 | //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ář ^ | 4. 3.; do 23:59 | //zakázat přihlašování heslem// | -2 | | 12. 4.; 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ř. na anglické wikipedii č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]] * založte si účet na https://report-uri.com/ * přečtěte si informace o [[https://scotthelme.co.uk/report-uri-csp-wizard/|CSP Wizard na report-uri.com]] * pomocí CSP Wizard vygenerujte CSP pravidla, * přepněte do provozu, * nesmí se přepsat CSP pravidla pro 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 | |Webový server používá EC certifikát (tj. ne RSA). A je i zajištěna automatická aktualizace tohoto certifikátu. | 2 | |Doplněn soubor security.txt, viz [[https://securitytxt.org/]] či [[https://www.michalspacek.cz/k-cemu-je-soubor-security.txt]]. Dostupný na [[https://bisxxx.vse.cz/.well-known/security.txt]], nedostupný přes http (přesměrování na https). Soubor musí být podepsán pomocí PGP, musí odkazovat odkaz na OpenPGP klíč (ten musí být ke stažení). | 2 | --- 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}}]]