際際滷

際際滷Share a Scribd company logo
WordPress Security Brecht Ryckaert
Brecht Ryckaert
- Support engineer @ Combell.com

- WordPress sinds 1.5

- Blogger (tot 2010 techblogger)

- Auteur

- WordCamp Netherlands 2014
WordPress Security 101
 Amazon Kindle

 + 1800 exemplaren

 Blijft een work in progress

 Eerstkomende update ergens
in de komende 4 weken
Wie zijn site werd al
eens gehacked of had
een site van een client
die gehacked is
geweest?
WordPress Security
Is WordPress nog 厩艶庄鉛庄乙?
Tuurlijk!
Een keten is zo sterk als zijn zwakste schakel."
WordPress hacking - de dreigingen
Onderzoek van WPMUdev heeft uitgewezen dat hacking
gebeurt door volgende oorzaken:
 50%: themas of plugins
 25%: WordPress core (verouderde versies)
 25%: server con鍖guratie + andere factoren
Wie van jullie
installeert security
plugins in zijn/haar
WordPress websites?
En bij wie van die mensen
is dat de enige
beveiligingsmaatregel?
Wie gebruikt FTP om
bestanden op zijn
website te plaatsen en
eventuele code te
bewerken?
FTP
Uit persoonlijke ervaring heb ik geleerd dat FTP eveneens een
bijzonder zwakke schakel is. Heel wat hacks gebeuren middels
gestolen FTP-gegevens die men heeft bemachtigd via:
 Keyloggers
 Virussen (meestal trojans)
 Andere malware of spyware
 Lekken in oudere versies van software (Acrobat Reader 8, Flash
Player)
FTP
Hoe vermijden we hacking via FTP:
 Geen FTP gebruiken! Gebruik SFTP waar mogelijk.
 OS up to date houden
 Software up to date houden
 Gebruik anti-virus + anti-malware + 鍖rewall software
Welke soorten aanvallen?
*Meest voorkomende soorten
Type 1 Backdoors
WordPress Security
Type 2 Drive By Downloads
Type 3 Pharma Hack
Type 4 Mala鍖de Redirects
Hoe gaan we dergelijke 
hacks vermijden?
Security in WordPress Plugins, Themes & Best Practices
Security door middel van plugins
iThemes Security
Wordfence Security
Sucuri Security
Sucuri Security Website Firewall
Bulletproof Security
Limit Login Attempts
All in one WP Security & Firewall
Security m辿t plugins
 Beperk het aantal plugins waar mogelijk
 Verwijder gedeactiveerde plugins altijd
 Hou je plugins altijd up to date
 Probeer je te beperken tot plugins uit de of鍖ci谷le
WordPress plugin repository (http://www.wordpress.org/
plugins)
 Check altijd hoe lang geleden de laatste update
uitgegeven werd.
WordPress gebruikers
 Gebruik geen admin user, verwijder deze na installatie!
 Kies een goed wachtwoord: 
- Hoofdletters & kleine letters
- Cijfers
- Speciale tekens (@, !, ?, )
- Gebruik geen bestaande woorden
WordPress Themes
 Altijd up to date houden
 Gratis theme? Altijd via http://www.wordpress.org/
themes.
 Premium themes? Hou dit altijd goed up to date
 Nooit themes aanpassen in de theme 鍖les zelf. Werk
ALTIJD met een child theme voor aanpassingen.
Eigen thema gemaakt?
 test met https://wordpress.org/plugins/theme-check/
WordPress opties
 Pingbacks uitschakelen
 User Registration uitschakelen indien niet noodzakelijk
De bestandsstructuur Tweaks binnen je hosting
Toegang tot gevoelige 鍖les blokkeren via htaccess
Options All -Indexes
<鍖les .htaccess>
Order allow,deny
Deny from all
</鍖les>
<鍖les readme.html>
Order allow,deny
Deny from all
</鍖les>
<鍖les license.txt>
Order allow,deny
Deny from all
</鍖les>
<鍖les install.php>
Order allow,deny
Deny from all
</鍖les>
<鍖les wp-con鍖g.php>
Order allow,deny
Deny from all
</鍖les>
Plaats dit in de hoofdmap 
van je WordPress-installatie
Injections blokkeren via htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{QUERY_STRING} ../ [NC,OR]
RewriteCond %{QUERY_STRING} boot.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag= [NC,OR]
RewriteCond %{QUERY_STRING} ftp: [NC,OR]
RewriteCond %{QUERY_STRING} http: [NC,OR]
RewriteCond %{QUERY_STRING} https: [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosCon鍖g_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|棚|"|;|?|*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Robots.txt
User-agent: *
Disallow: /cgi-bin
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Allow: /wp-content/uploads
wp-content/uploads beveiligen met .htaccess
<Files *.php>
deny from all
</Files>
Server con鍖guratie Tweaks in php.ini,
PHP versie
 Huidige PHP-versie 5.6
 Heel wat security tweaks vanaf 5.4
 Heel wat hosters draaien nog 5.3
 Vraag actief naar upgrades bij je hoster! Een goede
hoster standaardiseert op 5.5.
PHP.ini
 safe_mode (weg sinds 5.4, deprecated in 5.3)
 allow_url_fopen
 register_globals (weg sinds 5.4, deprecated in 5.3)
Fail2ban
 Server package tegen brute forcing
 Integreerbaar met wp-fail2ban (https://wordpress.org/
plugins/wp-fail2ban/)
Wat als je zelf onvoldoende
technisch onderlegd bent om dit
zelf te implementeren?
Managed (WordPress)
Hosting
- Nemen de servercon鍖guratie voor
hun rekening

- Doen de WordPress & plugin
updates voor je

- Ondersteunen jou bij hacking
savvii.nl
 Sponsor van dit event
(waarvoor dank!)

 Gespecialiseerd in managed
WordPress hosting
Hoe kan je je website 
proactief doorlichten?
WPScan
 scanner voor WordPress

 scant naar vulnerabilities

 kan gebruikt worden om DDOS
te simuleren

 via CLI

 Self hosted

 Gratis te gebruiken
Sucuris sitecheck
 http://sitecheck.sucuri.net/

 Gratis te gebruiken
WordPress Security
Site toch gehacked Wat nu?
WordPress Security
Zelf te nemen acties
 Wijzig alle wachtwoorden: MySQL database, FTP,
WordPress, 
 Update je gehele installatie van WordPress, de themas,
plugins
 Controleer de inhoud van je database op eventuele
mala鍖de entries of verdachte users
Zijn er nog vragen?
Bedankt!
https://joind.in/13678

More Related Content

WordPress Security

  • 2. Brecht Ryckaert - Support engineer @ Combell.com - WordPress sinds 1.5 - Blogger (tot 2010 techblogger) - Auteur - WordCamp Netherlands 2014
  • 3. WordPress Security 101 Amazon Kindle + 1800 exemplaren Blijft een work in progress Eerstkomende update ergens in de komende 4 weken
  • 4. Wie zijn site werd al eens gehacked of had een site van een client die gehacked is geweest?
  • 6. Is WordPress nog 厩艶庄鉛庄乙?
  • 8. Een keten is zo sterk als zijn zwakste schakel."
  • 9. WordPress hacking - de dreigingen Onderzoek van WPMUdev heeft uitgewezen dat hacking gebeurt door volgende oorzaken: 50%: themas of plugins 25%: WordPress core (verouderde versies) 25%: server con鍖guratie + andere factoren
  • 10. Wie van jullie installeert security plugins in zijn/haar WordPress websites?
  • 11. En bij wie van die mensen is dat de enige beveiligingsmaatregel?
  • 12. Wie gebruikt FTP om bestanden op zijn website te plaatsen en eventuele code te bewerken?
  • 13. FTP Uit persoonlijke ervaring heb ik geleerd dat FTP eveneens een bijzonder zwakke schakel is. Heel wat hacks gebeuren middels gestolen FTP-gegevens die men heeft bemachtigd via: Keyloggers Virussen (meestal trojans) Andere malware of spyware Lekken in oudere versies van software (Acrobat Reader 8, Flash Player)
  • 14. FTP Hoe vermijden we hacking via FTP: Geen FTP gebruiken! Gebruik SFTP waar mogelijk. OS up to date houden Software up to date houden Gebruik anti-virus + anti-malware + 鍖rewall software
  • 15. Welke soorten aanvallen? *Meest voorkomende soorten
  • 18. Type 2 Drive By Downloads
  • 20. Type 4 Mala鍖de Redirects
  • 21. Hoe gaan we dergelijke hacks vermijden?
  • 22. Security in WordPress Plugins, Themes & Best Practices
  • 23. Security door middel van plugins iThemes Security Wordfence Security Sucuri Security Sucuri Security Website Firewall Bulletproof Security Limit Login Attempts All in one WP Security & Firewall
  • 24. Security m辿t plugins Beperk het aantal plugins waar mogelijk Verwijder gedeactiveerde plugins altijd Hou je plugins altijd up to date Probeer je te beperken tot plugins uit de of鍖ci谷le WordPress plugin repository (http://www.wordpress.org/ plugins) Check altijd hoe lang geleden de laatste update uitgegeven werd.
  • 25. WordPress gebruikers Gebruik geen admin user, verwijder deze na installatie! Kies een goed wachtwoord: - Hoofdletters & kleine letters - Cijfers - Speciale tekens (@, !, ?, ) - Gebruik geen bestaande woorden
  • 26. WordPress Themes Altijd up to date houden Gratis theme? Altijd via http://www.wordpress.org/ themes. Premium themes? Hou dit altijd goed up to date Nooit themes aanpassen in de theme 鍖les zelf. Werk ALTIJD met een child theme voor aanpassingen.
  • 27. Eigen thema gemaakt? test met https://wordpress.org/plugins/theme-check/
  • 28. WordPress opties Pingbacks uitschakelen User Registration uitschakelen indien niet noodzakelijk
  • 29. De bestandsstructuur Tweaks binnen je hosting
  • 30. Toegang tot gevoelige 鍖les blokkeren via htaccess Options All -Indexes <鍖les .htaccess> Order allow,deny Deny from all </鍖les> <鍖les readme.html> Order allow,deny Deny from all </鍖les> <鍖les license.txt> Order allow,deny Deny from all </鍖les> <鍖les install.php> Order allow,deny Deny from all </鍖les> <鍖les wp-con鍖g.php> Order allow,deny Deny from all </鍖les> Plaats dit in de hoofdmap van je WordPress-installatie
  • 31. Injections blokkeren via htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC] RewriteRule ^(.*)$ - [F,L] RewriteCond %{QUERY_STRING} ../ [NC,OR] RewriteCond %{QUERY_STRING} boot.ini [NC,OR] RewriteCond %{QUERY_STRING} tag= [NC,OR] RewriteCond %{QUERY_STRING} ftp: [NC,OR] RewriteCond %{QUERY_STRING} http: [NC,OR] RewriteCond %{QUERY_STRING} https: [NC,OR] RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} mosCon鍖g_[a-zA-Z_]{1,21}(=|%3D) [NC,OR] RewriteCond %{QUERY_STRING} base64_encode.*(.*) [NC,OR] RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|棚|"|;|?|*|=$).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR] RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC] RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^(.*)$ - [F,L] </IfModule>
  • 32. Robots.txt User-agent: * Disallow: /cgi-bin Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-content/cache Disallow: /wp-content/themes Allow: /wp-content/uploads
  • 33. wp-content/uploads beveiligen met .htaccess <Files *.php> deny from all </Files>
  • 35. PHP versie Huidige PHP-versie 5.6 Heel wat security tweaks vanaf 5.4 Heel wat hosters draaien nog 5.3 Vraag actief naar upgrades bij je hoster! Een goede hoster standaardiseert op 5.5.
  • 36. PHP.ini safe_mode (weg sinds 5.4, deprecated in 5.3) allow_url_fopen register_globals (weg sinds 5.4, deprecated in 5.3)
  • 37. Fail2ban Server package tegen brute forcing Integreerbaar met wp-fail2ban (https://wordpress.org/ plugins/wp-fail2ban/)
  • 38. Wat als je zelf onvoldoende technisch onderlegd bent om dit zelf te implementeren?
  • 39. Managed (WordPress) Hosting - Nemen de servercon鍖guratie voor hun rekening - Doen de WordPress & plugin updates voor je - Ondersteunen jou bij hacking
  • 40. savvii.nl Sponsor van dit event (waarvoor dank!) Gespecialiseerd in managed WordPress hosting
  • 41. Hoe kan je je website proactief doorlichten?
  • 42. WPScan scanner voor WordPress scant naar vulnerabilities kan gebruikt worden om DDOS te simuleren via CLI Self hosted Gratis te gebruiken
  • 47. Zelf te nemen acties Wijzig alle wachtwoorden: MySQL database, FTP, WordPress, Update je gehele installatie van WordPress, de themas, plugins Controleer de inhoud van je database op eventuele mala鍖de entries of verdachte users
  • 48. Zijn er nog vragen?