WORDPRESS SECURITY
WORDCAMP NÜRNBERG 2016
Daniel Potthast

@d_potthast#wcnbg
WORDPRESS SECURITY
AGENDA WORDPRESS SECURITY
▸ Aktuelle Lage
▸ Automatische Updates
▸ Zugriffsbeschränkung
WORDPRESS SECURITY

AKTUELLE LAGE
WORDPRESS SECURITY: AKTUELLE LAGE
WORDPRESS AUF 26% ALLER INTERNETSEITEN1
▸ Oftmals …
▸ … kein HTTPS für Backend (WP-Admin)
▸ … Standardbenutzer und einfache Passwörter
▸ … (zu viel) Plug-Ins aktiviert
1 http://w3techs.com/technologies/details/cm-wordpress/all/all
WORDPRESS SECURITY: AKTUELLE LAGE
RANSOMWARE BEFÄLLT AUCH WEBSERVER
WORDPRESS SECURITY: AKTUELLE LAGE
RANSOMWARE BEFÄLLT AUCH WEBSERVER
▸ CTB-Locker

„Your personal files are encrypted by CTB-Locker. Your
scripts, documents, photos, databases and other important
files have been encrypted with strongest encryption
algorithm AES-256 and unique key, generated for this site.“

→ Wiederherstellung (bisher) unmöglich

→ Externe Backups regelmäßig erstellen
WORDPRESS SECURITY: AKTUELLE LAGE
DER FALL MOSSACK FONSECA
▸ WordPress auf der Hauptseite
▸ Revolution Slider (Version 2.1.7)

Zugriff auf Systemdateien und Zugangsdaten
▸ WP SMTP plugin

Zugangsdaten des Mail-Servers im Klartext gespeichert
→ Gefahr durch veraltete Plug-Ins

→ Regelmäßig Updates und Security-Fixes installieren

→ Nicht mehr gepflegte Plug-Ins ersetzen
https://www.wordfence.com/blog/2016/04/mossack-fonseca-breach-vulnerable-slider-revolution/
WORDPRESS SECURITY

AUTOMATISCHE UPDATES
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
PROBLEM
▸ WordPress Core und Plug-Ins sollten regelmäßig aktualisiert
werden
▸ Theoretisch kein Problem:

WordPress kann automatisch aktualisieren
▸ Automatische Updates benötigen Schreibrechte für PHP

oder FTP-Zugang

→ keinesfalls Lese- und Schreibrechte für „alle“ (777)

→ keine Absicherung bei Angriffen
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
LÖSUNG
▸ Unix-Rechteverwaltung sinnvoll nutzen

Standardwerte: Ordner = 755, Dateien = 644	
▸ 7	 	 	 6	 	 	 4

rwx rwx rwx

Besitzer Gruppe Sonstige
▸ Live-Modus
▸ Rechte Ordner (chmod 755), Rechte Dateien (444)

→ PHP kann keine Dateien / Ordner schreiben
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
LÖSUNG
▸ Update-Modus
▸ Rechte Dateien / Ordner (777)

→ PHP kann Dateien / Ordner schreiben und ausführen
▸ Vorgehen
▸ Rechte werden nur für die Zeit der Updates gesetzt
▸ Benutzer können zusätzlich angepasst werden, jedoch
▸ Einschränkungen beim Shared Hosting
▸ PHP-CGI-Prozesse laufen oftmals mit Standardbenutzer
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
UMSETZUNG
▸ Shared-Hosting mit Cronjobs und SSH
▸ all-inkl: ab Premium-Paket
▸ domainfactory: ab Professional-Paket
▸ STRATO: ab PowerWeb Plus
▸ Eigener Server
▸ Cronjobs über crontab
▸ Jobs mit Jenkins (continuous integration)
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
UMSETZUNG
▸ Update-Modus aktivieren





▸ Live-Modus aktivieren
cd	/var/www	
chmod	-R	0777	./wordpress
cd	/var/www	
find	./wordpress	-type	d	-exec	chmod	755	{}	;	
find	./wordpress		-type	f	-exec	chmod	444	{}	;	
find	./wordpress/wp-content/cache	-type	f	-exec	chmod	644	{}	;	
find	./wordpress/wp-content/uploads	-type	f	-exec	chmod	644	{}	;
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
UMSETZUNG
▸ WP-CLI herunterladen
▸ Updates installieren
cd	~	
curl	-O	https://raw.githubusercontent.com/wp-cli/builds/gh-pages⤸	
/phar/wp-cli.phar	
chmod	+x	wp-cli.phar
./wp-cli.phar	core	update	--path=/var/www/wordpress	(--debug)	
./wp-cli.phar	core	update-db	--path=/var/www/wordpress	
./wp-cli.phar	plugin	update	--all	--path=/var/www/wordpress	
./wp-cli.phar	theme	update	--all	--path=/var/www/wordpress
WORDPRESS SECURITY: AUTOMATISIERTE UPDATES
ÜBER DEN TELLERRAND
▸ Zusätzliche Überprüfung
▸ Tools wie WPScan suchen nach Schwachstellen

http://wpscan.org/
WORDPRESS SECURITY

ZUGRIFFSBESCHRÄNKUNG
WORDPRESS SECURITY: ZUGRIFFSBESCHRÄNKUNG
.HTACCESS-DATEIEN BEI APACHE-WEBSERVER
▸ Ordner-Auflistung deaktivieren
▸ Direktzugriff nur für bestimmte Dateitypen erlauben

Options	All	-Indexes
Order	deny,allow	
Deny	from	all	
<Files	~	".(css|doc|docx|gif|jpe?g|js|odf|pdf|png|rar|rtf|xls|xlsx|⤸	
xml|zip)$">	
		Allow	from	all	
</Files>
WORDPRESS SECURITY: ZUGRIFFSBESCHRÄNKUNG
.HTACCESS-DATEIEN BEI APACHE-WEBSERVER
▸ Login nur nach Passworteingabe
▸ Zugriff auf wp-includes Ordner blockieren

<Files	wp-login.php>	
		AuthType	Basic	
		AuthName	"Restricted	Admin-Area"	
		AuthUserFile	/pfad/zur/.htpasswd	
		Require	valid-user	
</Files>
<IfModule	mod_rewrite.c>	
		RewriteEngine	On	
		RewriteBase	/	
		RewriteRule	^wp-admin/includes/	-	[F,L]	
		RewriteRule	!^wp-includes/	-	[S=3]	
		RewriteRule	^wp-includes/[^/]+.php$	-	[F,L]	
</IfModule>
WORDPRESS SECURITY: ZUGRIFFSBESCHRÄNKUNG
.HTACCESS-DATEIEN BEI APACHE-WEBSERVER
▸ Zugriff auf wp-config.php blockieren







▸ Zugriff auf .htaccess-Dateien blockieren
<files	~	"^.*.([Hh][Tt][Aa])">	
		Order	allow,deny	
		Deny	from	all	
		Satisfy	all	
</files>
<files	wp-config.php>	
		Order	allow,deny	
		Deny	from	all	
</files>
WORDPRESS SECURITY: LEARNINGS
ZUSAMMENFASSUNG
▸ Möglichst wenig (Schreib-) Rechte für Web-Server
▸ Updatebarkeit ist Schutz und Risiko gleichzeitig
▸ Regelmäßig externe Backups erstellen
▸ Dateien: ohne Schreibrechte für Web-Server
▸ Datenbank: komplette Dumps
▸ Veraltete Plug-Ins entfernen / ersetzen
WORDPRESS SECURITY
DANKE FÜR DIE AUFMERKSAMKEIT
▸ Daniel Potthast

dp@sblum.de

@d_potthast
▸ Präsentation

! https://sblum.de/wordcamp

Wordpress Security

  • 1.
    WORDPRESS SECURITY WORDCAMP NÜRNBERG2016 Daniel Potthast
 @d_potthast#wcnbg
  • 2.
    WORDPRESS SECURITY AGENDA WORDPRESSSECURITY ▸ Aktuelle Lage ▸ Automatische Updates ▸ Zugriffsbeschränkung
  • 3.
  • 4.
    WORDPRESS SECURITY: AKTUELLELAGE WORDPRESS AUF 26% ALLER INTERNETSEITEN1 ▸ Oftmals … ▸ … kein HTTPS für Backend (WP-Admin) ▸ … Standardbenutzer und einfache Passwörter ▸ … (zu viel) Plug-Ins aktiviert 1 http://w3techs.com/technologies/details/cm-wordpress/all/all
  • 5.
    WORDPRESS SECURITY: AKTUELLELAGE RANSOMWARE BEFÄLLT AUCH WEBSERVER
  • 6.
    WORDPRESS SECURITY: AKTUELLELAGE RANSOMWARE BEFÄLLT AUCH WEBSERVER ▸ CTB-Locker
 „Your personal files are encrypted by CTB-Locker. Your scripts, documents, photos, databases and other important files have been encrypted with strongest encryption algorithm AES-256 and unique key, generated for this site.“
 → Wiederherstellung (bisher) unmöglich
 → Externe Backups regelmäßig erstellen
  • 7.
    WORDPRESS SECURITY: AKTUELLELAGE DER FALL MOSSACK FONSECA ▸ WordPress auf der Hauptseite ▸ Revolution Slider (Version 2.1.7)
 Zugriff auf Systemdateien und Zugangsdaten ▸ WP SMTP plugin
 Zugangsdaten des Mail-Servers im Klartext gespeichert → Gefahr durch veraltete Plug-Ins
 → Regelmäßig Updates und Security-Fixes installieren
 → Nicht mehr gepflegte Plug-Ins ersetzen https://www.wordfence.com/blog/2016/04/mossack-fonseca-breach-vulnerable-slider-revolution/
  • 8.
  • 9.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES PROBLEM ▸ WordPress Core und Plug-Ins sollten regelmäßig aktualisiert werden ▸ Theoretisch kein Problem:
 WordPress kann automatisch aktualisieren ▸ Automatische Updates benötigen Schreibrechte für PHP
 oder FTP-Zugang
 → keinesfalls Lese- und Schreibrechte für „alle“ (777)
 → keine Absicherung bei Angriffen
  • 10.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES LÖSUNG ▸ Unix-Rechteverwaltung sinnvoll nutzen
 Standardwerte: Ordner = 755, Dateien = 644 ▸ 7 6 4
 rwx rwx rwx
 Besitzer Gruppe Sonstige ▸ Live-Modus ▸ Rechte Ordner (chmod 755), Rechte Dateien (444)
 → PHP kann keine Dateien / Ordner schreiben
  • 11.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES LÖSUNG ▸ Update-Modus ▸ Rechte Dateien / Ordner (777)
 → PHP kann Dateien / Ordner schreiben und ausführen ▸ Vorgehen ▸ Rechte werden nur für die Zeit der Updates gesetzt ▸ Benutzer können zusätzlich angepasst werden, jedoch ▸ Einschränkungen beim Shared Hosting ▸ PHP-CGI-Prozesse laufen oftmals mit Standardbenutzer
  • 12.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES UMSETZUNG ▸ Shared-Hosting mit Cronjobs und SSH ▸ all-inkl: ab Premium-Paket ▸ domainfactory: ab Professional-Paket ▸ STRATO: ab PowerWeb Plus ▸ Eigener Server ▸ Cronjobs über crontab ▸ Jobs mit Jenkins (continuous integration)
  • 13.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES UMSETZUNG ▸ Update-Modus aktivieren
 
 
 ▸ Live-Modus aktivieren cd /var/www chmod -R 0777 ./wordpress cd /var/www find ./wordpress -type d -exec chmod 755 {} ; find ./wordpress -type f -exec chmod 444 {} ; find ./wordpress/wp-content/cache -type f -exec chmod 644 {} ; find ./wordpress/wp-content/uploads -type f -exec chmod 644 {} ;
  • 14.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES UMSETZUNG ▸ WP-CLI herunterladen ▸ Updates installieren cd ~ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages⤸ /phar/wp-cli.phar chmod +x wp-cli.phar ./wp-cli.phar core update --path=/var/www/wordpress (--debug) ./wp-cli.phar core update-db --path=/var/www/wordpress ./wp-cli.phar plugin update --all --path=/var/www/wordpress ./wp-cli.phar theme update --all --path=/var/www/wordpress
  • 15.
    WORDPRESS SECURITY: AUTOMATISIERTEUPDATES ÜBER DEN TELLERRAND ▸ Zusätzliche Überprüfung ▸ Tools wie WPScan suchen nach Schwachstellen
 http://wpscan.org/
  • 16.
  • 17.
    WORDPRESS SECURITY: ZUGRIFFSBESCHRÄNKUNG .HTACCESS-DATEIENBEI APACHE-WEBSERVER ▸ Ordner-Auflistung deaktivieren ▸ Direktzugriff nur für bestimmte Dateitypen erlauben
 Options All -Indexes Order deny,allow Deny from all <Files ~ ".(css|doc|docx|gif|jpe?g|js|odf|pdf|png|rar|rtf|xls|xlsx|⤸ xml|zip)$"> Allow from all </Files>
  • 18.
    WORDPRESS SECURITY: ZUGRIFFSBESCHRÄNKUNG .HTACCESS-DATEIENBEI APACHE-WEBSERVER ▸ Login nur nach Passworteingabe ▸ Zugriff auf wp-includes Ordner blockieren
 <Files wp-login.php> AuthType Basic AuthName "Restricted Admin-Area" AuthUserFile /pfad/zur/.htpasswd Require valid-user </Files> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+.php$ - [F,L] </IfModule>
  • 19.
    WORDPRESS SECURITY: ZUGRIFFSBESCHRÄNKUNG .HTACCESS-DATEIENBEI APACHE-WEBSERVER ▸ Zugriff auf wp-config.php blockieren
 
 
 
 ▸ Zugriff auf .htaccess-Dateien blockieren <files ~ "^.*.([Hh][Tt][Aa])"> Order allow,deny Deny from all Satisfy all </files> <files wp-config.php> Order allow,deny Deny from all </files>
  • 20.
    WORDPRESS SECURITY: LEARNINGS ZUSAMMENFASSUNG ▸Möglichst wenig (Schreib-) Rechte für Web-Server ▸ Updatebarkeit ist Schutz und Risiko gleichzeitig ▸ Regelmäßig externe Backups erstellen ▸ Dateien: ohne Schreibrechte für Web-Server ▸ Datenbank: komplette Dumps ▸ Veraltete Plug-Ins entfernen / ersetzen
  • 21.
    WORDPRESS SECURITY DANKE FÜRDIE AUFMERKSAMKEIT ▸ Daniel Potthast
 dp@sblum.de
 @d_potthast ▸ Präsentation
 ! https://sblum.de/wordcamp