https://lynt.cz
Hlavní kroky pro bezpečný a rychlý web
Vláďa Smitka
@smitka
Lynt services s.r.o.
21. 10. 2017 1
WordCamp Brno 2017
https://lynt.cz21. 10. 2017 3
• Ideální je začít nový web rovnou na HTTPS (i na vývoji)• Využít hlavičku HSTS na produkci• Přesměrování patří do konfigurace, ne do pluginu
• Generátor konfigurace:• https://mozilla.github.io/server-side-tls/ssl-config-generator/
• Svou konfiguraci si vyzkoušejte na https://www.ssllabs.com/ssltest/
https://lynt.cz
Co se ještě mohlo pokazit?
• Uživatelské jméno? Admin
• Silné heslo?
• Prefix tabulek? (může někdy pomoci)
• Šifrovací klíče u one-click instalátoru? (https://api.wordpress.org/secret-key/1.1/salt/)
21. 10. 2017 6
https://lynt.cz
Hesla
Počty kombinací: http://projects.lambry.com/elpassword/
21. 10. 2017 7
GTX 1050 MD5 PHPASS (MD5) Bcrypt
Hash/s 5 863 MH/s 1 880 kH/s 3 959 H/s
Doba louskání -8 znaků
35 s 31 hod 610 dní
Typ hesla Počet kombinací
6 znaků (malá písmena) 308 915 776
8 znaků 208 827 064 576
8 znaků + čísla 2 821 109 907 456
8 znaků (velká/malá) + čísla 218 340 105 584 896
8 znaků (v/m) + čísla + speciál 6 634 204 312 890 625
https://lynt.cz
Jak na hesla?
• Password Manager
– KeePass, LastPass, 1password, DashLane, RoboForm
21. 10. 2017 8
• Jak heslo poslat klientovi:‒ Šifrovaný mail (PGP, S/MIME)‒ Jednorázové sdílení (https://secure.lynt.cz/), pro
soubory https://send.firefox.com/‒ Šifrovaný archiv + heslo SMS
https://lynt.cz
První zlepšení
• Lepší hashování hesel - bcrypt
• Vrácení chyby 403 při chybném přihlášení
• Odfiltrování citlivých dat z Rest APInapř. /wp-json/wp/v2/users – mail v md5
• https://u.lynt.cz/mu1
21. 10. 2017 9
https://lynt.cz
Omezení přístupu
• Přístup k wp-login.php pouze z ČR/SK(ideálně pouze z VPN)
• Fail2Ban blokující chybná přihlášení z chyb 403
• Zákaz XML-RPC (je nutný pro JetPack, některé další pluginy a aplikace pro správu WP)
• Blokace známých útoků
• Zjišťování uživatelských jmen
• Mnoho vyřeší WordFence
• https://www.slideshare.net/vsmitka/wordfence-2016
21. 10. 2017 11
https://lynt.cz
Aktualizace
• Systém pro hromadnou správu – MainWP
• https://mainwp.com/
• 1 vyhrazený web s dashboardem
• Na ostatní instalace MainWP Child
21. 10. 2017 12
https://lynt.cz
Main WP
21. 10. 2017 15
https://mainwp.com/extension/vulnerability-checker/
CVE-2017-8295
https://lynt.cz
Antispam pro komentáře
• Akismet – je třeba aktivovat na https://akismet.com/
• NoSpamNX
• https://u.lynt.cz/antispam- vyžaduje registraci na http://www.projecthoneypot.org
• Nezapomeňte také smazat vzorové příspěvky ;-)
21. 10. 2017 18
https://lynt.cz
Cachování
21. 10. 2017 19
OP code cache
Transientní cache
Stránková cache
Cache prohlížeče
Objektová cache
Disková cache
Proxy cache
https://lynt.cz
Cachování
• Disková cache – Linux využívá volnou RAM pro rychlejší přístup k souborům = je dobré mít hodně RAM
• OP code cache – PHP do RAM ukládá zpracovaný PHP kód (PHP 5.6+, starší s rozšířením)
• Transientní cache – při použití WP ukládá výsledky složitých operací do DB (https://codex.wordpress.org/Transients_API)
• Objektová cache – ukládá výsledky složitých operací do jiného úložiště – lze použít jako úložiště pro transienty– je třeba podpora serveru a drop-in do WP (Memcache, Redis, Xcache, APC, APCu)
21. 10. 2017 20
https://lynt.cz
Cachování
• Stránková cache – uloží výsledek pracování skriptu do statického souboru – např. WP SuperCache
• Proxy – reverzní na straně serveru/„dopředná“ na straně lokální sítě – ukládá statický soubor, aby se nemusel znova stahovat/generovat (varnish, nginx microcache/squid)
• Cache prohlížeče – řídí se expires hlavičkami, pokud nejsou, snaží se je odvodit (většinou podle stáří souboru)
21. 10. 2017 21
https://lynt.cz
Změření rychlosti
• https://gtmetrix.com/
• http://www.webpagetest.org (speed index < 3000)
21. 10. 2017 22
https://lynt.cz
Jak vypadá naše typická infrastruktura
• Fyzické servery s hodně RAM nebo více VPS s oddělenou funkcionalitou
• PHP 7.1 s OP cache
• APCu pro Object Cache (případně Redis)
• WP SuperCache – 12 hodin (kvůli nonce)
• Reverzní Nginx proxy cache (Microcache) –několik minut
• HTTP/2 – pro lepší stahování zdrojů
• https://u.lynt.cz/nginx
21. 10. 2017 23
https://lynt.cz
.htaccess
• Připravená běžná pravidla: https://u.lynt.cz/htaccess
• Bezpečnostní hlavičky
• Cachování statických souborů
• Gzip
• Blokace souborů, GEO blokace
• Přesměrování HTTP na HTTPS, bez www na www
21. 10. 2017 24
https://lynt.cz
Checklist HTTPS, správné přesměrování a HSTS - otestovat
Generovaná hesla + password manager
Ochrana před zkoušením hesel (omezení na vybrané adresy, Fail2ban na serveru, bezpečnostní plugin – např. WordFence)
Hromadná správa + zálohy – např. MainWP
Antispamový plugin (pokud mám komentáře)
PHP 7+, HTTP/2
Object cache drop-in (pokud lze – info od hostingu)
Stránková cache - např. WP SuperCache
Otestovat rychlost
21. 10. 2017 25
https://lynt.cz
Další tipy
• https://lynt.cz/blog/10-nejcastejsich-problemu-modernich-webu
• https://lynt.cz/blog/optimalizace-vykonu-webovych-aplikaci-na-co-se-zamerit
• https://lynt.cz/blog/verze-wordpress-skryvat-nebo-ne
• https://lynt.cz/blog/wordpress-v-cz-velky-pruzkum
• https://www.slideshare.net/vsmitka
• A můj Twitter ;-) https://twitter.com/smitka
21. 10. 2017 26