1. https://lynt.cz
Hlavní kroky pro bezpečný a
rychlý web
Vláďa Smitka
vladimir.smitka@lynt.cz
@smitka
Lynt services s.r.o.
21. 10. 2017 1
WordCamp Brno 2017
3. 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/
6. 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
8. 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
9. 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 API
např. /wp-json/wp/v2/users – mail v md5
• https://u.lynt.cz/mu1
21. 10. 2017 9
11. 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
12. 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
18. 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
20. 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
21. 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
23. 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
24. 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
25. 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