SlideShare a Scribd company logo
1 of 31
Download to read offline
Jak si (ne)nechat hacknout 
Wordpress stránky 
Michal Kubíček 
How to have unhackableWordPress site 
Webexpo > Praha > 14-09-2014
BEZPEČNOST VE WORDPRESS
CO Z TOHO MAJÍ? 
- Rozesílání nevyžádané pošty 
- DDoS útoky 
- Podvodná přesměrování 
- Pozměňování obsahu stránek 
- Vkládání skrytých zpětných odkazů a iframes 
- Vkládání reklamy 
- Znevěrohodnění webu 
- Přístup k osobním údajům a heslům uživatelů 
- Přístup k platebním bránám 
- Odcizení služeb 
- Vložení škodlivého kódu do PC uživatele 
- Ukládání nelegálního materiálu na „bezpečném“ stroji 
- Osobní důvody 
- Jen tak/LOL
JÁDRO
ŠABLONY
PLUGINY
USD: UPDATE, SOURCE, DELETE
USD: UPDATE, SOURCE, DELETE 
LFI: /wp-admin/admin-ajax.php?action=revslider_show_image&img=../wp-config.php
UPLOAD ŠKODLIVÉHO KÓDU
UPLOAD ŠKODLIVÉHO KÓDU 
#zákaz spouštění nechtěných souborů z /uploads/ 
<Files ~ ".*..*"> 
Order Allow,Deny 
Deny from all </Files> 
<FilesMatch ".(jpg|jpeg|jpe|gif|png|tif|tiff)$"> 
Order Deny,Allow 
Allow from all 
</FilesMatch>
POVOLENÁ EDITACE SOUBORŮ Z ADMINU
PINGBACK & TRACKBACK, XMLRPC, DDoS ÚTOKY
<IfModule mod_alias.c> 
RedirectMatch 403 /(.*)/xmlrpc.php$ 
</IfModule> 
<Files xmlrpc.php> 
Order Deny,Allow 
Deny from all 
</Files> 
RewriteEngine On 
RewriteCond %{REQUEST_METHOD} ^TRACE 
RewriteRule .* - [F]
ÚTOKY HRUBOU SILOU
ÚTOKY HRUBOU SILOU: PŘEJMENOVAT NICK I LOGIN 
Source: http://blog.sucuri.net
ÚTOKY HRUBOU SILOU: OMEZENÍ PROBLÉMOVÝCH IP 
<Limit GET POST PUT> 
Order allow,deny 
Allow from all 
# zakaze 110.89.*.* 
Deny from 110.89.0.0/16 
# zakaze 208.43.251.* 
Deny from 208.43.251.0/24 
</Limit>
ÚTOKY HRUBOU SILOU: OMEZENÍ ZEMÍ (ISO CODES) 
<IfModule mod_geoip.c> 
GeoIPEnable ON 
#Vietanm 
SetEnvIF GEOIP_COUNTRY_CODE VN BlockThese 
#russia 
SetEnvIF GEOIP_COUNTRY_CODE RU BlockThese 
#romania 
SetEnvIF GEOIP_COUNTRY_CODE RO BlockThese 
#turkey 
SetEnvIF GEOIP_COUNTRY_CODE TR BlockThese 
#China 
SetEnvIF GEOIP_COUNTRY_CODE CN BlockThese 
#Nigeria 
SetEnvIF GEOIP_COUNTRY_CODE NG BlockThese 
#Iran 
SetEnvIF GEOIP_COUNTRY_CODE IR BlockThese 
Deny from env=BlockThese 
</IfModule>
ÚTOKY HRUBOU SILOU: PŘEJMENOVAT WP-LOGIN
ÚTOKY HRUBOU SILOU: ZABEZPEČIT WP-LOGIN 
#Ochrana wp-login pomocí .htpasswd 
<Files wp-login.php> 
AuthUserFile ~/.htpasswd 
AuthName “Private access” 
AuthType Basic 
require user mysecretuser 
</Files>
ÚTOKY HRUBOU SILOU: KONTROLA REFFERERU 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_METHOD} POST 
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login).php* 
RewriteCond %{HTTP_REFERER} !.*vasedomena.cz.* [OR] 
RewriteCond %{HTTP_USER_AGENT} ^$ 
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L] 
</ifModule>
ÚTOKY HRUBOU SILOU: SILNĚJŠÍ HESLO
ÚTOKY HRUBOU SILOU: OMEZENÍ POČTU PŘIHLÁŠENÍ
ONLINE NA http://michalkubicek.cz/tahak-pro-wp-config-php/ 
WP-CONFIG TAHÁK 
zápis Co umí 
define('FORCE_SSL_LOGIN', true); Vynucení https protokolu na přihlašovací stránku (SSL) 
define('FORCE_SSL_ADMIN', true); Vynucení https protokolu na administraci 
define('DISALLOW_FILE_EDIT', true); Vypnutí editace PHP v administraci 
define('WP_AUTO_UPDATE_CORE', true); Zapnutí automatické aktualizace jádra 
add_filter( 'auto_update_plugin', '__return_true'); Zapnutí automatické aktualizace pluginů 
add_filter( 'auto_update_theme', '__return_true'); Zapnutí automatické aktualizace šablon 
define('DISALLOW_FILE_MODS', true); Vypnutí instalace pluginů a šablon z administrace 
define('WP_HTTP_BLOCK_EXTERNAL', true); Zablokování externích požadavků (např. pluginy) 
define('WP_ACCESSIBLE_HOSTS', 'povolenaurl.cz'); Povolení externího požadavku z konkrétní URL 
error_reporting(0); 
Vypnutí chybových hlášek 
@ini_set('display_errors', 0); 
define('WP_MEMORY_LIMIT', '96M'); Zvýšení limitu PHP paměti 
define('FS_CHMOD_FILE', 0755); 
define('FS_CHMOD_DIR', 0644); 
Nastavení oprávnění pro soubory a složky 
define('WP_POST_REVISIONS', 2 ); Omezení počtu revizí dokumentu
OPRÁVNĚNÍ SLOŽEK A SOUBORŮ 
root (kořenový adresář) 0755 
wp-includes/ 0755 
.htaccess 0644 
wp-admin/index.php 0644 
wp-admin/js/ 0755 
wp-content/themes/ 0755 
wp-content/plugins/ 0755 
wp-admin/ 0755 
wp-content/ 0755 
wp-config.php 0644
MASKOVÁNÍ 
Bývá 
- license.txt, readme.txt 
- <head> signatura
<Files license.txt> 
order allow,deny 
deny from all 
</files> 
<Files wp-config-sample.php> 
order allow,deny 
deny from all 
</Files> 
<Files readme.html> 
order allow,deny 
deny from all 
</Files> 
ServerSignature Off 
RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 
RewriteRule .* - [F,L] 
# přejmenování wp-login na 'administrace' 
RewriteCond %{REQUEST_URI} administrace/?$ [NC] 
RewriteRule backend/?$ /wp-login.php [NC,L] 
MASKOVÁNÍ
MASKOVÁNÍ 
/wp-content/themes/vase-sablona/function.php 
remove_action('wp_head', 'feed_links', 2); 
remove_action('wp_head', 'feed_links_extra', 3); 
remove_action('wp_head', 'rsd_link'); 
remove_action('wp_head', 'wlwmanifest_link'); 
remove_action('wp_head', 'index_rel_link'); 
remove_action('wp_head', 'start_post_rel_link', 10, 0); 
remove_action('wp_head', 'parent_post_rel_link', 10, 0); 
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); 
remove_action('wp_head', 'wp_generator'); 
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
WEB APPLICATION FIREWALL 
CloudFlare 
Incapsula 
cloudproxy.sucuri 
easywaf Kona Akamai 
modsecurity
UŽITEČNÉ PLUGINY A STRÁNKY 
• Google Authenticator – dvoufázové ověření 
• All In One WP Security 
• Ochrana proti brute force - přejmenování účtu, změní login stránku, captcha 
• Změna prefixu DB 
• Automatické backupy (pozor na procházení adresáři) 
• Jednoduchá změna oprávnění složek a souborů 
• Firewall, blacklist, whitelist 
• Bot Honeypot 
• Comment spam captcha 
• Detekce změn souborů 
• Acunetix SecureWordPress, AcunetixWP Security – scaner zranitelností 
• Sucuri Security - zjistí neobvyklé soubory, Malware Scaner 
• Change DB Prefix Plugin 
• https://api.wordpress.org/secret-key/1.1/salt/ - generování tajných slovíček 
• http://bezpecnostwebu.cz/ukazky/htaccess.txt - vytuněný htaccess 
• http://wordpress.bigdrobek.com/bezpecnost/ - fajn přehled základních kroků, jak zabezpečit WP 
• http://musilda.cz 
• http://wpsecure.net/ - EN 
• http://blog.sucuri.net - EN
KAŽDÁ APLIKACE JE BEZPEČNÁ. 
DO CHVÍLE, NEŽ V NÍ NĚKDO NAJDE CHYBU.
DĚKUJI ZA POZORNOST 
@MICHALKUBICEK 
www.pronetmedia.cz 
www.michalkubicek.cz 
www.bezpecnostwebu.cz

More Related Content

Similar to Jak si (ne)nechat hacknout Wordpress stránky - How to have unhackable WordPress site

WordPress "root" skripty - WP Weekend #3
WordPress "root" skripty - WP Weekend #3 WordPress "root" skripty - WP Weekend #3
WordPress "root" skripty - WP Weekend #3 Brilo Team
 
Silex
SilexSilex
SilexKeyup
 
WordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčWordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčBrilo Team
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilováníVladimír Smitka
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceVladimír Smitka
 
Technologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopůTechnologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopůPeckaDesign.cz
 
Nejčastější webové zranitelnosti
Nejčastější webové zranitelnostiNejčastější webové zranitelnosti
Nejčastější webové zranitelnosticCuMiNn
 
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 201410 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014Radek Kucera
 

Similar to Jak si (ne)nechat hacknout Wordpress stránky - How to have unhackable WordPress site (9)

WordPress "root" skripty - WP Weekend #3
WordPress "root" skripty - WP Weekend #3 WordPress "root" skripty - WP Weekend #3
WordPress "root" skripty - WP Weekend #3
 
Silex
SilexSilex
Silex
 
Editace šablony & child theme
Editace šablony & child themeEditace šablony & child theme
Editace šablony & child theme
 
WordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčWordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin Hlaváč
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilování
 
Bezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konferenceBezpečnost Wordpressu - 4. WP konference
Bezpečnost Wordpressu - 4. WP konference
 
Technologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopůTechnologie užívané při vývoji velkých e-shopů
Technologie užívané při vývoji velkých e-shopů
 
Nejčastější webové zranitelnosti
Nejčastější webové zranitelnostiNejčastější webové zranitelnosti
Nejčastější webové zranitelnosti
 
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 201410 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
 

More from Michal Kubicek

Jak zvýšit obrat eshopu? Case studies www.svetcukraru.cz
Jak zvýšit obrat eshopu? Case studies www.svetcukraru.czJak zvýšit obrat eshopu? Case studies www.svetcukraru.cz
Jak zvýšit obrat eshopu? Case studies www.svetcukraru.czMichal Kubicek
 
Jak na Google Analytics
Jak na Google AnalyticsJak na Google Analytics
Jak na Google AnalyticsMichal Kubicek
 
SEO skoleni Ostrava VSB
SEO skoleni Ostrava VSBSEO skoleni Ostrava VSB
SEO skoleni Ostrava VSBMichal Kubicek
 
NEW MEDIA as a marketing communication tool
NEW MEDIA as a marketing communication toolNEW MEDIA as a marketing communication tool
NEW MEDIA as a marketing communication toolMichal Kubicek
 

More from Michal Kubicek (7)

Jak zvýšit obrat eshopu? Case studies www.svetcukraru.cz
Jak zvýšit obrat eshopu? Case studies www.svetcukraru.czJak zvýšit obrat eshopu? Case studies www.svetcukraru.cz
Jak zvýšit obrat eshopu? Case studies www.svetcukraru.cz
 
PPC reklama
PPC reklamaPPC reklama
PPC reklama
 
Jak na Google Analytics
Jak na Google AnalyticsJak na Google Analytics
Jak na Google Analytics
 
Základy SEO
Základy SEOZáklady SEO
Základy SEO
 
SEO Linkbuilding
SEO LinkbuildingSEO Linkbuilding
SEO Linkbuilding
 
SEO skoleni Ostrava VSB
SEO skoleni Ostrava VSBSEO skoleni Ostrava VSB
SEO skoleni Ostrava VSB
 
NEW MEDIA as a marketing communication tool
NEW MEDIA as a marketing communication toolNEW MEDIA as a marketing communication tool
NEW MEDIA as a marketing communication tool
 

Jak si (ne)nechat hacknout Wordpress stránky - How to have unhackable WordPress site

  • 1. Jak si (ne)nechat hacknout Wordpress stránky Michal Kubíček How to have unhackableWordPress site Webexpo > Praha > 14-09-2014
  • 3. CO Z TOHO MAJÍ? - Rozesílání nevyžádané pošty - DDoS útoky - Podvodná přesměrování - Pozměňování obsahu stránek - Vkládání skrytých zpětných odkazů a iframes - Vkládání reklamy - Znevěrohodnění webu - Přístup k osobním údajům a heslům uživatelů - Přístup k platebním bránám - Odcizení služeb - Vložení škodlivého kódu do PC uživatele - Ukládání nelegálního materiálu na „bezpečném“ stroji - Osobní důvody - Jen tak/LOL
  • 8. USD: UPDATE, SOURCE, DELETE LFI: /wp-admin/admin-ajax.php?action=revslider_show_image&img=../wp-config.php
  • 10. UPLOAD ŠKODLIVÉHO KÓDU #zákaz spouštění nechtěných souborů z /uploads/ <Files ~ ".*..*"> Order Allow,Deny Deny from all </Files> <FilesMatch ".(jpg|jpeg|jpe|gif|png|tif|tiff)$"> Order Deny,Allow Allow from all </FilesMatch>
  • 12. PINGBACK & TRACKBACK, XMLRPC, DDoS ÚTOKY
  • 13. <IfModule mod_alias.c> RedirectMatch 403 /(.*)/xmlrpc.php$ </IfModule> <Files xmlrpc.php> Order Deny,Allow Deny from all </Files> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F]
  • 15. ÚTOKY HRUBOU SILOU: PŘEJMENOVAT NICK I LOGIN Source: http://blog.sucuri.net
  • 16. ÚTOKY HRUBOU SILOU: OMEZENÍ PROBLÉMOVÝCH IP <Limit GET POST PUT> Order allow,deny Allow from all # zakaze 110.89.*.* Deny from 110.89.0.0/16 # zakaze 208.43.251.* Deny from 208.43.251.0/24 </Limit>
  • 17. ÚTOKY HRUBOU SILOU: OMEZENÍ ZEMÍ (ISO CODES) <IfModule mod_geoip.c> GeoIPEnable ON #Vietanm SetEnvIF GEOIP_COUNTRY_CODE VN BlockThese #russia SetEnvIF GEOIP_COUNTRY_CODE RU BlockThese #romania SetEnvIF GEOIP_COUNTRY_CODE RO BlockThese #turkey SetEnvIF GEOIP_COUNTRY_CODE TR BlockThese #China SetEnvIF GEOIP_COUNTRY_CODE CN BlockThese #Nigeria SetEnvIF GEOIP_COUNTRY_CODE NG BlockThese #Iran SetEnvIF GEOIP_COUNTRY_CODE IR BlockThese Deny from env=BlockThese </IfModule>
  • 18. ÚTOKY HRUBOU SILOU: PŘEJMENOVAT WP-LOGIN
  • 19. ÚTOKY HRUBOU SILOU: ZABEZPEČIT WP-LOGIN #Ochrana wp-login pomocí .htpasswd <Files wp-login.php> AuthUserFile ~/.htpasswd AuthName “Private access” AuthType Basic require user mysecretuser </Files>
  • 20. ÚTOKY HRUBOU SILOU: KONTROLA REFFERERU <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login).php* RewriteCond %{HTTP_REFERER} !.*vasedomena.cz.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L] </ifModule>
  • 21. ÚTOKY HRUBOU SILOU: SILNĚJŠÍ HESLO
  • 22. ÚTOKY HRUBOU SILOU: OMEZENÍ POČTU PŘIHLÁŠENÍ
  • 23. ONLINE NA http://michalkubicek.cz/tahak-pro-wp-config-php/ WP-CONFIG TAHÁK zápis Co umí define('FORCE_SSL_LOGIN', true); Vynucení https protokolu na přihlašovací stránku (SSL) define('FORCE_SSL_ADMIN', true); Vynucení https protokolu na administraci define('DISALLOW_FILE_EDIT', true); Vypnutí editace PHP v administraci define('WP_AUTO_UPDATE_CORE', true); Zapnutí automatické aktualizace jádra add_filter( 'auto_update_plugin', '__return_true'); Zapnutí automatické aktualizace pluginů add_filter( 'auto_update_theme', '__return_true'); Zapnutí automatické aktualizace šablon define('DISALLOW_FILE_MODS', true); Vypnutí instalace pluginů a šablon z administrace define('WP_HTTP_BLOCK_EXTERNAL', true); Zablokování externích požadavků (např. pluginy) define('WP_ACCESSIBLE_HOSTS', 'povolenaurl.cz'); Povolení externího požadavku z konkrétní URL error_reporting(0); Vypnutí chybových hlášek @ini_set('display_errors', 0); define('WP_MEMORY_LIMIT', '96M'); Zvýšení limitu PHP paměti define('FS_CHMOD_FILE', 0755); define('FS_CHMOD_DIR', 0644); Nastavení oprávnění pro soubory a složky define('WP_POST_REVISIONS', 2 ); Omezení počtu revizí dokumentu
  • 24. OPRÁVNĚNÍ SLOŽEK A SOUBORŮ root (kořenový adresář) 0755 wp-includes/ 0755 .htaccess 0644 wp-admin/index.php 0644 wp-admin/js/ 0755 wp-content/themes/ 0755 wp-content/plugins/ 0755 wp-admin/ 0755 wp-content/ 0755 wp-config.php 0644
  • 25. MASKOVÁNÍ Bývá - license.txt, readme.txt - <head> signatura
  • 26. <Files license.txt> order allow,deny deny from all </files> <Files wp-config-sample.php> order allow,deny deny from all </Files> <Files readme.html> order allow,deny deny from all </Files> ServerSignature Off RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f [NC,OR] RewriteCond %{REQUEST_FILENAME} -d [NC] RewriteRule .* - [F,L] # přejmenování wp-login na 'administrace' RewriteCond %{REQUEST_URI} administrace/?$ [NC] RewriteRule backend/?$ /wp-login.php [NC,L] MASKOVÁNÍ
  • 27. MASKOVÁNÍ /wp-content/themes/vase-sablona/function.php remove_action('wp_head', 'feed_links', 2); remove_action('wp_head', 'feed_links_extra', 3); remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'start_post_rel_link', 10, 0); remove_action('wp_head', 'parent_post_rel_link', 10, 0); remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
  • 28. WEB APPLICATION FIREWALL CloudFlare Incapsula cloudproxy.sucuri easywaf Kona Akamai modsecurity
  • 29. UŽITEČNÉ PLUGINY A STRÁNKY • Google Authenticator – dvoufázové ověření • All In One WP Security • Ochrana proti brute force - přejmenování účtu, změní login stránku, captcha • Změna prefixu DB • Automatické backupy (pozor na procházení adresáři) • Jednoduchá změna oprávnění složek a souborů • Firewall, blacklist, whitelist • Bot Honeypot • Comment spam captcha • Detekce změn souborů • Acunetix SecureWordPress, AcunetixWP Security – scaner zranitelností • Sucuri Security - zjistí neobvyklé soubory, Malware Scaner • Change DB Prefix Plugin • https://api.wordpress.org/secret-key/1.1/salt/ - generování tajných slovíček • http://bezpecnostwebu.cz/ukazky/htaccess.txt - vytuněný htaccess • http://wordpress.bigdrobek.com/bezpecnost/ - fajn přehled základních kroků, jak zabezpečit WP • http://musilda.cz • http://wpsecure.net/ - EN • http://blog.sucuri.net - EN
  • 30. KAŽDÁ APLIKACE JE BEZPEČNÁ. DO CHVÍLE, NEŽ V NÍ NĚKDO NAJDE CHYBU.
  • 31. DĚKUJI ZA POZORNOST @MICHALKUBICEK www.pronetmedia.cz www.michalkubicek.cz www.bezpecnostwebu.cz