WordPress Security

49
WordPress Security Brecht Ryckaert

Transcript of WordPress Security

Page 1: WordPress Security

WordPress Security Brecht Ryckaert

Page 2: WordPress Security

Brecht Ryckaert

- Support engineer @ Combell.com- WordPress sinds 1.5- Blogger (tot 2010 techblogger)- Auteur- WordCamp Netherlands 2014

Page 3: WordPress Security

WordPress Security 101

• Amazon Kindle

• + 1800 exemplaren

• Blijft een “work in progress”

• Eerstkomende update ergens in de komende 4 weken

Page 4: WordPress Security

Wie zijn site werd al eens gehacked of had een site van een client die gehacked is geweest?

Page 5: WordPress Security
Page 6: WordPress Security

“Is WordPress nog veilig?”

Page 7: WordPress Security

Tuurlijk!

Page 8: WordPress Security

“Een keten is zo sterk als zijn zwakste schakel."

Page 9: WordPress Security

WordPress hacking - de dreigingen

Onderzoek van WPMUdev heeft uitgewezen dat hacking gebeurt door volgende oorzaken:

• 50%: thema’s of plugins

• 25%: WordPress core (verouderde versies)

• 25%: server configuratie + andere factoren

Page 10: WordPress Security

Wie van jullie installeert security plugins in zijn/haar WordPress websites?

Page 11: WordPress Security

En bij wie van die mensen is dat de enige beveiligingsmaatregel?

Page 12: WordPress Security

Wie gebruikt FTP om bestanden op zijn website te plaatsen en eventuele code te bewerken?

Page 13: WordPress Security

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)

Page 14: WordPress Security

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 + firewall software

Page 15: WordPress Security

Welke soorten aanvallen?

*Meest voorkomende soorten

Page 16: WordPress Security

Type 1 Backdoors

Page 17: WordPress Security
Page 18: WordPress Security

Type 2 Drive By Downloads

Page 19: WordPress Security

Type 3 Pharma Hack

Page 20: WordPress Security

Type 4 Malafide Redirects

Page 21: WordPress Security

Hoe gaan we dergelijke hacks vermijden?

Page 22: WordPress Security

Security in WordPress Plugins, Themes & Best Practices

Page 23: WordPress Security

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

Page 24: WordPress Security

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 officiële WordPress plugin repository (http://www.wordpress.org/plugins)

• Check altijd hoe lang geleden de laatste update uitgegeven werd.

Page 25: WordPress Security

WordPress gebruikers

• Gebruik geen admin user, verwijder deze na installatie!

• Kies een goed wachtwoord: - Hoofdletters & kleine letters- Cijfers- Speciale tekens (@, !, ?, …) - Gebruik geen bestaande woorden

Page 26: WordPress Security

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 files zelf. Werk ALTIJD met een child theme voor aanpassingen.

Page 27: WordPress Security

Eigen thema gemaakt?

• test met https://wordpress.org/plugins/theme-check/

Page 28: WordPress Security

WordPress opties

• Pingbacks uitschakelen

• User Registration uitschakelen indien niet noodzakelijk

Page 29: WordPress Security

De bestandsstructuur Tweaks binnen je hosting

Page 30: WordPress Security

Toegang tot gevoelige files blokkeren via htaccessOptions All -Indexes<files .htaccess> Order allow,deny Deny from all</files><files readme.html>Order allow,deny Deny from all</files><files license.txt> Order allow,deny Deny from all</files><files install.php> Order allow,deny Deny from all</files><files wp-config.php>Order allow,deny Deny from all</files>

Plaats dit in de hoofdmap van je WordPress-installatie

Page 31: WordPress Security

Injections blokkeren via htaccess<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /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} mosConfig_[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>

Page 32: WordPress Security

Robots.txt

User-agent: *Disallow: /cgi-binDisallow: /wp-adminDisallow: /wp-includesDisallow: /wp-content/pluginsDisallow: /wp-content/cacheDisallow: /wp-content/themesAllow: /wp-content/uploads

Page 33: WordPress Security

wp-content/uploads beveiligen met .htaccess

<Files *.php>deny from all

</Files>

Page 34: WordPress Security

Server configuratie Tweaks in php.ini, …

Page 35: WordPress Security

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.

Page 36: WordPress Security

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)

Page 37: WordPress Security

Fail2ban

• Server package tegen brute forcing

• Integreerbaar met wp-fail2ban (https://wordpress.org/plugins/wp-fail2ban/)

Page 38: WordPress Security

Wat als je zelf onvoldoende technisch onderlegd bent om dit

zelf te implementeren?

Page 39: WordPress Security

Managed (WordPress) Hosting

- Nemen de serverconfiguratie voor hun rekening- Doen de WordPress & plugin updates voor je- Ondersteunen jou bij hacking

Page 40: WordPress Security

savvii.nl

• Sponsor van dit event(waarvoor dank!)

• Gespecialiseerd in managed WordPress hosting

Page 41: WordPress Security

Hoe kan je je website proactief doorlichten?

Page 42: WordPress Security

WPScan

• scanner voor WordPress• scant naar vulnerabilities• kan gebruikt worden om DDOS

te simuleren• via CLI• Self hosted• Gratis te gebruiken

Page 43: WordPress Security

Sucuri’s sitecheck

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

Page 44: WordPress Security
Page 45: WordPress Security

Site toch gehacked Wat nu?

Page 46: WordPress Security
Page 47: WordPress Security

Zelf te nemen acties

• Wijzig alle wachtwoorden: MySQL database, FTP, WordPress, …

• Update je gehele installatie van WordPress, de thema’s, plugins

• Controleer de inhoud van je database op eventuele malafide entries of verdachte users

Page 48: WordPress Security

Zijn er nog vragen?

Page 49: WordPress Security

Bedankt!https://joind.in/13678