2. https://lynt.cz
Kdo jste?
12. 8. 2017 2
Správci serverů
• Spravuji firewall
• Nastavuji Apache/Nginx/IIS
Vývojáři
• Upravuji si šablony a pluginy v PHP
• Píšu si vlastní doplňky
Uživatelé
• Koupím šablonu, nahraji pár pluginů
• Jen si upravuji texty, zbytek řeší někdo jiný
3. https://lynt.cz
Na co se podíváme
12. 8. 2017 3
• Bezpečnostní návyky
• Bezpečnost WP
• Aktualizace
• Zálohování
• HTTPS
• Role ve WP
• Bezpečnostní plugin a nastavení
7. https://lynt.cz
Kdo poslouchá?
• Já
• Zlí lidé na veřejných sítích
• Hacknuté routery
7% domácích routerů má kritické zranitelnosti (Eset)
• https://www.routersecurity.org/bugs.php
• Malware v PC/na serveru
12. 8. 2017 7
9. https://lynt.cz
Jak se bránit?
• HTTPS
– Certifikáty jsou levné,
– nebo zdarma Let‘s Encrypt (musí podporovat hosting)
• VPN
– Ideální způsob pro přihlášení do administrace
– https://protonvpn.com/
– https://lynt.cz/blog/ikev2-vpn-v-cloudu-snadno-a-
rychle
12. 8. 2017 9
17. https://lynt.cz12. 8. 2017 17
Předmět: Bezpečnostní problém WEDOS Hosting [8614001612]
Datum: Wed, 20 Jul 2017 14:32:48 +0200
Od: WEDOS <hosting@wedos.com>
Komu: <ty>
Vážený zákazníku,
Na Vaší webové prezentaci tvujweb.cz založené na redakčním systému Wordpress byl
zjištěna škodlivý kód, který masivně útočí na další weby a infikuje návštěvníky.
Neprodleně nainstalujte náš antivirový plugin Wedos-WP-Antivir, který naleznete v
příloze i s návodem k instalaci. V opačném případě budeme bohužel nuceni Vaši
webovou prezentaci pozastavit.
WEDOS Internet, a.s.
19. https://lynt.cz
Zabezpečení WP
12. 8. 2017 19
Co nedělat:
• Skrývat verzi WP
• Posunout wp-config o úroveň výše
• Omezit přístup k celému wp-admin
Co se může hodit:
• Změna prefixu tabulek
• Bránit vyčítání uživatelských jmen
• Blokace XML-RPC
Co dělat:
• Aktualizovat
• Zálohovat
• Používat HTTPS
• Používat silná hesla a vhodná oprávnění
• Neprovozovat více webů ve stejném prostoru
• Omezit chybná přihlášení/blokovat přístup k wp-login.php
• Filtrovat známé útoky
• Blokovat SPAM
20. https://lynt.cz
Aktualizace
„Aktualizace jsou u OpenSource zásadní!“
• WP se aktualizuje sám v rámci minor verzí (3.7+)
• Lze nastavit automatické aktualizace šablon i
pluginů – větší riziko, že se něco rozbije
• Šablona musí být aktualizovatelná! (Child
Themes)
• Systémy pro správu aktualizací
12. 8. 2017 20
21. https://lynt.cz
MainWP
• Vyžaduje jeden vyhrazený WP web pro Dashboard:
https://cs.wordpress.org/plugins/mainwp/
• Na jednotlivé web se instaluje Child
https://wordpress.org/plugins/mainwp-child/
– Správa aktualizací
– Hromadná instalace pluginů/šablon
– Správa obsahu
– Automatické updaty vybraných pluginů a šablon
– Kontrola proti WPscan DB (https://wpvulndb.com/)
– Zálohování
12. 8. 2017 21
23. https://lynt.cz
Další nástroje
• http://infinitewp.com/
• https://wpremote.com/
• https://managewp.com/
• https://ithemes.com/sync/
• https://jetpack.com/support/site-management/
• https://cs.wordpress.org/plugins/wp-updates-
notifier/ (notifikace o dostupných aktualizacích)
12. 8. 2017 23
24. https://lynt.cz
Zálohování
• Ruční – překopírování obsahu FTP a export DB
• Na hostingu – zeptejte se svého hostera, jak to
řeší
• V systémech na hromadnou zprávu
• Zálohovací plugin (BackWPup, BackWPup)
• Nastavení BackWPup - https://www.slideshare.net/vsmitka/bezpenost-
wordpress-pro-zatenky/38
• Jak často?
– Pro běžné weby 1x týdně soubory, 1x denně DB
– Je dobré mít uložený stav cca 3 měsíce zpět
12. 8. 2017 24
26. https://lynt.cz
HTTPS
12. 8. 2017 26
• Proč mít HTTPS?
– Bezpečně přenášíte data svých návštěvníků
– Nebezpečné sítě nemohou modifikovat váš obsah
– Můžete použít HTTP/2 pro vyšší výkon
– Můžete používat Google Nákupy
• Proč nemít HTTPS?
– Nevím…
„HTTPS je standard a slušnost“
27. https://lynt.cz
HTTPS – jak to nastavit
12. 8. 2017 27
• Oprava absolutních odkazů z http://<muj-web> na
https://<muj-web>
– WP-CLI:
wp search-replace 'http://<muj-web>' 'https://<muj-web>' -
-skip-columns=guid
– UPDATE wp_posts SET post_content = REPLACE(post_content,
'http://<muj-web>', 'https://<muj-web>')
– https://interconnectit.com/products/search-and-replace-for-
wordpress-databases/
– https://cs.wordpress.org/plugins/ssl-insecure-content-fixer/
28. https://lynt.cz
Přesměrování na HTTPS
• Do .htaccess
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,NE,L]
12. 8. 2017 28
29. https://lynt.cz
Problémy, které mohou nastat
• Smyčka přesměrování = v cestě je proxy server,
který dešifruje provoz – např. Flexible SSL u
CloudFlare, nebo různá řešení webhosterů:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] ==
'https') {
$_SERVER['HTTPS']='on';
}
12. 8. 2017 29
30. https://lynt.cz
HTTPS - tipy
• Test, zda je vše správně nastavené
• https://www.ssllabs.com/ssltest/analyze.html
• Pokud používáte skript Search&Replace for WP,
tak ho nezapomeňte po použití smazat
• Pro podobné skripty lze použít zabezpečení
pomocí https://blocking.top
„Nový web spouštějte rovnou na HTTPS“
12. 8. 2017 30
31. https://lynt.cz
Oprávnění
12. 8. 2017 31
• Návštěvník (Subscriber)
– Může pouze číst obsah, editovat svůj profil. Má jednodušší práci s komentáři.
• Spolupracovník (Contributor)
– Může psát nové příspěvky, ale publikovat je může až Admin nebo Šéfredaktor.
Nemá přístup do galerie médií (může ale vkládat obrázky z externích zdrojů) –
guest blogging.
• Redaktor (Author)
– Může spravovat své příspěvky včetně správy komentářů, nahrávat soubory do
galerie médií. Nemůže pracovat se stránkami.
• Šéfredaktor (Editor)
– Může spravovat veškerý obsah – příspěvky, stránky, komentáře, kategorie, v
jeho komentářích může být javascript.
• Administrátor (Administrator)
– Může spravovat vše – obsah, pluginy, šablony, widgety.
• SuperAdministrátor (pro WP multisite) – spravuje síť webů
32. https://lynt.cz
Přidání práv
• Nejčastěji chceme, aby Šéfredaktor mohl
měnit widgety a menu
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );
https://cs.wordpress.org/plugins/user-role-
editor/
12. 8. 2017 32
33. https://lynt.cz
Cross infekce
12. 8. 2017 33
Složkasweby Web1
Web2
Web3
Kam všude mají skripty přístup lze ověřit nástrojem MFB:
https://github.com/lynt-smitka/PHP-Mini-File-Browser/
42. https://lynt.cz
IP blokace administrace
Blokace WP-ADMIN
.htaccess ve wp-admin:
Order deny,allow
Allow from x.x.x.x
Deny from all
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
12. 8. 2017 42
Blokace přihlašovací stránky
hlavní .htaccess:
<Files wp-login.php>
Order deny,allow
Allow from x.x.x.x
Deny from all
</Files>
43. https://lynt.cz
Další blokace
Blokace podezřelých POST (hlavní .htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .*/(wp-comments-post|wp-login|admin-ajax).php.*
RewriteCond %{HTTP_REFERER} !.*%{HTTP_HOST}.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) https://%{HTTP_HOST}/? [R=301,L]
</ifModule>
Blokace PHP v uploads (.htacces v této složce)
<FilesMatch .php$>
Order allow,deny
Deny from all
</FilesMatch>
12. 8. 2017 43