Absichern von Wordpress
Hat man einen Wordpress Blog online, sollte man diesen schnellst möglich vor Angreifern schützen.
global
- neuste Version verwenden ;)
- eigene DB inkl. DB-Benutzer mit nur den benötigten Rechten auf die Tabellen der WordPress DB
- anderen DB Prefix für die Tabellen verwenden (nicht "wp_")
- WordPress/ PHP ErrorReporting unterdrücken/ abschalten
- Standard admin Benutzer löschen und selbstdefinierten verwenden
- Anzahl Logins für Userbereich beschränken (s.u. Plugins)
- WordPress Version verstecken:
- 1) abhängig vom Theme
- 2) durch Plugin, s.u.
- WordPress ID META Tag entfernen (s.u. Plugins)
- zusätzliche .htaccess für den wp-admin Bereich verwenden
- minimale Berechtigungen setzen, d.h. kein 777 ;)
- Externer DDOS Checker
- WP-Update Checker Script als cronjob einrichten
- WP Security News abonieren ;)
2 Faktor Authentifizierung
<Files wp-login.php> AuthType Digest AuthName "HTTP Digest Access" AuthDigestProvider file AuthUserFile /etc/apache2/htdigestuser.pwd Require user admin </Files> <Location /wp-admin/> AuthType Digest AuthName "HTTP Digest Access" AuthDigestProvider file AuthUserFile /etc/apache2/htdigestuser.pwd Require user admin </Location>
xmlrpc.php absichern
<Files xmlrpc.php> BrowserMatch "Poster" allowed BrowserMatch "WordPress" allowed BrowserMatch "Windows Live Writer" allowed BrowserMatch "wp-iphone" allowed BrowserMatch "wp-android" allowed BrowserMatch "wp-windowsphone" allowed Order Deny,Allow Deny from All Allow from env=allowed </Files>
Systemconfig
find /srv/wordpress/ -type d -exec chmod 755 {} \; find /srv/wordpress/ -type f -exec chmod 644 {} \;
<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)"> order deny,allow deny from all </FilesMatch> <Directory ~ "/srv/httpd/vhosts/www.yourdomain.de/htdocs/wp-(login\.php|admin/)"> Order deny,allow Deny from all Allow from 127.0.0.1 AuthType Digest AuthName "HTTP Digest Access" AuthDigestProvider file AuthUserFile /etc/apache2/htdigestuser.pwd Require user admin Satisfy Any </Directory> <Directory /srv/httpd/vhosts/www.yourdomain.de/htdocs/wp-admin/css/> Order deny,allow Allow from all </Directory> <Directory /srv/httpd/vhosts/www.yourdomain.de/htdocs/wp-admin/images/> Order deny,allow Allow from all </Directory>
Bei dem ersten Directory-Eintrag wird ein RegEx angewendet, welches sowohl den Bereich wp-admin als auch wp-login.php schützt. Wenn nur wp-admin geschützt wird ist weiterhin ein Brute-Force-Angriff gegen die Login-Seite möglich!
Plugins
- Limit Login Attempts
- Secure WordPress
- WP Security Scan
- Security Ninja
- Hide My WP
- Email Encoder Bundle
- BulletProof Security
- Acunetix Secure WordPress
- Acunetix WP Security
- AntiVirus
- Sucuri Security - SiteCheck Malware Scanner
- Ultimate Category Excluder
- Wordfence Security
- WP-DBManager
- WP-Optimize
- WP Crontrol
- login-lockdown
- wp-login-security
- second-factor
- duo-wordpress
- websitedefender-wordpress-security
- wordpress-file-monitor-plus
- update-notification
- wordpress-firewall-2
- block-bad-queries