Absichern von Wordpress
Erscheinungsbild
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