Verfasser: proseed GmbH - Online Marketing & Consulting Fahrgasse 89 60311 Frankfurt am Main E-Mail: info@proseed.de Tel.: +49 69 247 52 62 0 proseed GmbH
Inhaltsverzeichnis 1. Einleitung...1 2. Die häufigsten WordPress-Schwachstellen...1 3. Installation...2 a. Präfix der Datenbanktabellen ändern (VOR DER INSTALLATION)...2 b. Anpassung der Konfigurationsdatei...2 c. Individuellen Benutzernamen und sicheres Passwort wählen...2 4. Verwendung...3 d. Weitere Benutzer erstellen...3 e. WordPress immer aktuell halten...3 f. Plugins nur vom offiziellen Plugin-Verzeichnis installieren...3 g. Plugin BulletProof Security...3 h..htaccess bearbeiten...3 i. Plugin-Verzeichnis schützen...5 j. WordPress-Version verschleiern...5 k. WordPress-Login...5 l. Schutz gegen Spam einrichten...5 m. Vollständige Datensicherung der Webseite...5 5. Quellen...6
1. Einleitung Aktuell gibt es wieder vermehrt Angriffe auf WordPress-Installationen. Deshalb kann man über WordPress-Sicherheit nicht oft genug sprechen. Da wir selbst sehr viel mit WordPress arbeiten, möchte ich die Gelegenheit nutzen, ein paar nützliche Tipps zu geben, wie man seine WordPress-Installationen sicherer machen und vor unbefugten Zugriffen schützen kann. Es gibt sicherlich hunderte relevante Tipps, ich konzentriere mich hier jedoch auf die wichtigsten Basics. Die Absicherung von WordPress fängt bereits bei der Installation an. 2. Die häufigsten WordPress-Schwachstellen In den meisten Fällen sind Standardnutzer wie z.b. Admin und Standardpasswörter bzw. schwache Passwörter die Schwachstelle selbst. Die meisten Brute-Force-Attacken 1 laufen automatisch ab und versuchen sich unter dem Nutzer Admin so lange mit einer Liste von meistgenutzten Passwörtern, z.b. 1234567890, einzuloggen bis die Hacker erfolgreich im Backend sind. Ist das Passwort einmal identifiziert, versuchen es einige Hacker auch noch bei anderen Seiten, die zu einem Unternehmen oder einem Blogger gehören. Untersuchungen haben gezeigt, dass immer noch die meisten Menschen ein und dieselben Passwörter verwenden. 1 Brute-Force-Attacken sind Versuche eines Computer-Programms, das Passwort eines anderen Programms zu knacken, indem alle möglichen Kombinationen von Buchstaben und Zahlen ausprobiert werden. Daher ist ersichtlich, dass die Länge eines Passworts massgeblich für die Sicherheit von Daten wichtig ist. 1
3. Installation a. Präfix der Datenbanktabellen ändern (VOR DER INSTALLATION) Standardmäßig steht hier wp_. Daraus wird später in der Datenbank zum Beispiel wp_posts oder wp_comments. Das Präfix in der wp-config.php zu etwas Individuellem ändern wie z.b. projektname_ oder ihr_name_ Beispiel: $table_prefix = 08xyz15_ ; // Nur Zahlen, Buchstaben und Unterstriche bitte! Dies ist auch im Nachhinein mit dem Plugin Change DB Fix möglich. b. Anpassung der Konfigurationsdatei Generierung der Sicherheitsschlüssel (Bitte Link anklicken) https://api.wordpress.org/secret-key/1.1/salt/ und in die deine-seite/wp-config.php eintragen. c. Individuellen Benutzernamen und sicheres Passwort wählen auf keinen Fall sollte admin, demo, test, wordpress, webmaster oder Ähnliches verwendet werden. 2
4. Verwendung d. Weitere Benutzer erstellen Benutzer mit Redakteur- oder Autoren-Rechten erstellen. e. WordPress immer aktuell halten f. Plugins nur vom offiziellen Plugin-Verzeichnis installieren https://wordpress.org/plugins/ g. Plugin BulletProof Security Plugin BulletProof Security installieren und aktivieren unter BPS Security -> Login Security -> Max Login Attempts einstellen (Anzahl der Loginversuche) z.b. Max Login Attempts: 3 ein weiteres Plugin, welches diese Funktionalität ebenfalls zur Verfügung stellt ist: Limit Login Attempts h..htaccess bearbeiten Optimierte.htaccess ist hier zu finden: http://posteed.com/optimierte-htaccess-fuer-wordpress/ oder auf der nächsten Seite (Seite 5) zu finden. Im Ordner deine-seite/.htaccess anpassen (bzw. erstellen) Der Code sollte zusätzlich zu dem bereits vorhandenen Code des BulletProof Security Plugins in die.htaccess eingefügt werden Unter BPS Security -> htaccess Core -> htaccess File Editor kann die.htaccess bearbeitet oder ge- und entsperrt werden mit einem Klick auf Lock htaccess File 3
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME}!-f RewriteCond %{REQUEST_FILENAME}!-d RewriteRule. /index.php [L] </IfModule> # END WordPress # Deflate Komprimierung nach Dateityp aktivieren <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-shockwave-flash </IfModule> # Cache aktivieren <IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType text/html "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType application/x-javascript "access plus 1 month" ExpiresByType application/xhtml-xml "access plus 600 seconds" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/x-icon "access plus 1 month" </IfModule> <ifmodule mod_headers.c> <filesmatch "\\.(ico jpe?g png gif swf)$"> Header set Cache-Control "max-age=2592000, public" </filesmatch> <filesmatch "\\.(css)$"> Header set Cache-Control "max-age=604800, public" </filesmatch> <filesmatch "\\.(js)$"> Header set Cache-Control "max-age=604800, private" </filesmatch> <filesmatch "\\.(x?html? php)$"> Header set Cache-Control "max-age=600, private, must-revalidate" </filesmatch> </ifmodule> # GZIP Komprimierung aktivieren, sofern möglich <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html? txt css js php pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> # ETag deaktivieren <FilesMatch "\.(ico pdf flv jpg jpeg png gif js css swf)(\.gz)?$"> Header unset ETag FileETag None </FilesMatch> 5 4
i. Plugin-Verzeichnis schützen Eine leere index.html in das Plugin-Verzeichnis /wp-content/plugins/ einfügen j. WordPress Version verschleiern <meta name= generator content= WordPress <?php bloginfo( version );?> /> aus der header.php (des aktuellen Themes /wp-content/themes/dein-theme/) entfernen k. WordPress-Login Normalerweise kann man sich über deine-seite/wp-login anmelden, dies ist jedoch bekannt und dadurch als sicherheitskritisch einzustufen Verstecken-Plugin Rename wp-login.php installieren und aktivieren Login-URL einstellen auf z.b. deine-seite.de/zugang l. Schutz gegen Spam einrichten Das Plugin WP-SpamShield installieren und einrichten m. Vollständige Datensicherung der Webseite durch regelmäßige Backups der Seite sorgen kann im Falle eines erfolgreichen Hackangriffs, die Webseite schnellstmöglich wieder Online gesetzt werden, ohne dass irgendwelche Beiträge, Kommentare, Plugins o.ä. fehlen. Plugin-Empfehlung für die Sicherung: backwpup 5
5. Quellen http://bueltge.de/wordpress-buch/wordpress-sicherer-machen/30/ http://marcel-schrepel.biz/2014/10/wordpress-sicher-machen- 2014-10-tipps-fuer-plugins-und-sicherheit.html http://timplaten.de/wordpress/wordpress-sicherer-machen-in- 10-schritten/ https://www.lotsofways.de/checkliste-wordpress-sicher-machen/ http://www.1pw.de/brute-force.html Sie haben Fragen zum Wordpress-Sicherheitsguide oder allgemein zu Wordpress? Dann können Sie sich sehr gerne an unseren Ansprechpartner wenden. Marcel Ruppert Key Account Manager E-Mail: marcel.ruppert@proseed.de Tel.: +49 69 247 52 62 62 6