Absichern von Wordpress

Aus Laub-Home Wiki

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.


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