WordPress absichern - WP Camp 2012 in Berlin
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

WordPress absichern - WP Camp 2012 in Berlin

on

  • 1,998 views

Vortrag von Torsten Landsiedel beim WPCamp 2012 in Berlin ...

Vortrag von Torsten Landsiedel beim WPCamp 2012 in Berlin

"Sicherheit ist kein Zustand, der erreicht werden kann, sondern eine Einstellung."

Es gibt unzählige Artikel zum Thema Sicherheit und WordPress im Netz mit vielen nützlichen, manchmal auch unnützen, Vorschlägen, wie man sein Blog absichern kann. In der Session zu der diese Slides gehören wollte ich die wichtigsten Sicherheitsmaßnahmen vorstellen und die Teilnehmer für das Thema Sicherheit sensibilisieren.

- Einführung in das Thema Sicherheit und WordPress für Anfänger
- Auffrischung des Themas Sicherheit für Fortgeschrittene
- Vorstellung von Plugins zur Verbesserung der Sicherheit

Nähere Infos unbedingt in dem Blogeintrag zu den Slides auf meinem Blog nachlesen:
http://torstenlandsiedel.de/blog/

Statistics

Views

Total Views
1,998
Views on SlideShare
1,610
Embed Views
388

Actions

Likes
2
Downloads
27
Comments
0

1 Embed 388

http://torstenlandsiedel.de 388

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WordPress absichern - WP Camp 2012 in Berlin Presentation Transcript

  • 1. WordPress absichern Torsten Landsiedel @zodiac1978
  • 2. Was ist Sicherheit?„Sicherheit ist ein relativer Zustand der Gefahrenfreiheit, der stets nur für einen bestimmten Zeitraum, eine bestimmte Umgebung oder unter bestimmten Bedingungen gegeben ist.“
  • 3. 100% Sicherheit gibt es nicht
  • 4. SpannungsfelderSicherheit Benutzerfreundlichkeit
  • 5. Wieso ich?➔ Meine Webseite ist doch unwichtig!➔ Wer hat denn Interesse an meinen Daten?➔ Ich habe doch kaum Besucher!➔ Ich habe doch ein „Sicherheits-Plugin“ installiert!
  • 6. Darum!➔ Hosting für Phishing-Seiten➔ Spam-Versand➔ Vandalismus / Wettbewerb➔ Link-Farming (Backlinks)➔ Viren/Malware-Infektionen verbreiten➔ Werbung (Pop-Ups, iFrames, Direktlinks, etc.)
  • 7. Es kann jeden treffen ...➔ Reuters-Blog gehackt, nutzte veraltete WordPress-Version (Heise.de)➔ Admartinator gehackt➔ AMD-Blog defaced, dann offline➔ Upload Magazin gehackt➔ etc. etc. ...
  • 8. Sicherheit erreichen➔ Updaten, Updaten, Updaten! – WordPress-Core, Themes und Plugins aktuell halten – Benachrichtigung per Plugin (Mail on Update) – Oder gleich Infinite WP oder Manage WP (o.ä.)
  • 9. Gute Passwörter➔ Möglichst lang (>10 Zeichen)➔ Mehrere Wörter hintereinander – Hutsahneregalhuepfburg➔ Satz mit Regeln – Dieser Satz ist ein super Passwort, dass ich mir gerade ausdenke! – „DSi1sPdimga!“➔ Nicht aufschreiben, nicht teilen, regelmäßig ändern (Stichwort: Zahnbürste!)➔ KeePass nutzen
  • 10. Schlechte Passwörter➔ Vermeide bekannte Muster: ➔ Bernd1978 (Vorname + Geburtsjahr) ➔ P@ssw0rt (bekannte Ersetzungen)➔ Wörterbuch-Wort➔ Doppelt verwendete Passwörter➔ Typische Tasten-Folgen oder Klassiker: ➔ Password, 123456, 12345678, qwerty, abc123
  • 11. Das schwächste Glied der Kette ...
  • 12. Der Weg muss sicher sein!➔ Betriebssystem aktuell? Alle Sicherheitsupdates eingespielt?➔ Virenscanner aktiv und aktuell?➔ Wenn möglich SFTP statt FTP – http://de.wikipedia.org/wiki/Secure_File_Transfer_Protocol➔ Alternativ FTP over TLS – http://de.wikipedia.org/wiki/FTP_über_TLS
  • 13. Aufräumen! + Ordnung!➔ Unbenutzte Themes und Plugins löschen! – Nein, deaktivieren reicht nicht …➔ Plugins und Themes nur aus vertrauenswürdigen Quellen beziehen!➔ Verzeichnisse anzeigen verhindern – Options All -Indexes (in .htaccess) – Oder in jedem Ordner eine leere index.php
  • 14. Security-Basics➔ Sicherheitsschlüssel in der wp-config.php setzen – http://codex.wordpress.org/Editing_wp-config.php#Security_Keys➔ Sollte das Blog gehackt werden, unbedingt diese Schlüssel erneuern! Damit werden die Cookies verschlüsselt und die bleiben sonst valide!
  • 15. Security through obscurity
  • 16. Security through obscurity➔ „Sicherheit durch Verschleierung“➔ Sinnvoll nur als Ergänzung!➔ Präfix ändern ➔ $table_prefix = wp_deinpräfix_;➔ Bei der Installation durch Änderung in wp-config.php➔ Ansonsten durch Plugins➔ Verhindert einfache SQL-Injections
  • 17. Wichtige Ordner verschieben➔ wp-config.php (sofern möglich) in den Ordner über dem öffentlichen Ordner verschieben – WordPress sucht automatisch auch dort!➔ wp-content-Ordner verschieben – define( WP_CONTENT_DIR, $_SERVER[DOCUMENT_ROOT] . /blog/wp-content ); – define( WP_CONTENT_URL, http://example/blog/wp-content); – define( WP_PLUGIN_DIR, $_SERVER[DOCUMENT_ROOT] . /blog/wp-content/plugins ); – define( WP_PLUGIN_URL, http://example/blog/wp-content/plugins);
  • 18. „admin“ als Username➔ Früher Standard, daher häufig Angriffsziel➔ User-ID=1=Admin → OMG!➔ Admin umbenennen:➔ UPDATE wp_users SET user_login = Your New Username WHERE user_login = Admin;➔ (Wer nicht phpMyAdmin o.ä. nutzen möchte/kann, der nutzt das Search & Replace-Plugin von FrankBültge: http://wordpress.org/extend/plugins/search-and-replace/ )➔ Und immer an das Präfix denken!
  • 19. Ist das (un)sicher?➔ Ist der neue Username dann geheim? Eher nicht ... – Permalinkproblem: ● /?author=1 → /author/admin – the_author_posts_link ● Link zur Autoren-Übersichtsseite bei Multiautoren-Blogs – comment_class ● Autor kommentiert in eigenem Blog – Login-Fehlermeldung
  • 20. Warum nur ...
  • 21. „admin“ als Username➔ User-ID per MySQL ändern:➔ UPDATE wp_users SET ID = 1234 WHERE wp_users.ID = 1;➔ UPDATE wp_usermeta SET user_id = 1234 WHERE wp_usermeta.user_id = 1;➔ UPDATE wp_posts SET post_author = 1234 WHERE wp_posts.post_author = 1;➔ UPDATE wp_links SET link_owner = 1234 WHERE wp_links.link_owner = 1;➔ UPDATE `wp_comments` SET `user_id` = 1234 WHERE `wp_comments`.`user_id` = 1;➔ (Wer nicht phpMyAdmin o.ä. nutzen möchte/kann, der nutzt das Search & Replace-Plugin von FrankBültge: http://wordpress.org/extend/plugins/search-and-replace/ )➔ Und immer an das Präfix denken!
  • 22. Autoren-Link umschreiben➔ Autoren-Link umschreiben per Plugin: Edit Author Slug ➔ http://wordpress.org/extend/plugins/edit-author-slug/
  • 23. Benutzername von Kommentar-Klassen entfernen// Security: Hide Usernames from Classes// drweb.de/magazin/eine-wordpress-installation-korrekt-absichern/function remove_comment_author_class($classes { foreach($classesas$key=>$class) { if(strstr($class,"comment-author-")) { unset($classes[$key]); } } return$classes;}add_filter(comment_class,andys_remove_comment_author_class);
  • 24. Login-Fehlermeldungen➔ Login verrät, ob Benutzername und/oder Passwort falsch waren ...➔ Schlechte Usability:add_filter(login_errors,create_function($a, "return null;"));➔ Besser:function explain_less_login_issues() { return ‘FEHLER: Login falsch!’;}add_filter( ‘login_errors’, ‘explain_less_login_issues’ );
  • 25. Brute-Force-Attacken➔ Was hilft? → Gute Passwörter!➔ Oder ein Plugin: Limit Login Attempts➔ Grenzen kennen! – Distributed Brute Force
  • 26. Kill PHP execution➔ Im Ordner „/uploads/“ per htaccess die Ausführung von PHP verhindern: <FilesMatch *.php> Order Deny, Allow Deny from All </Files> (http://wp.smashingmagazine.com/2012/10/09/four-malware-infections-wordpress/)
  • 27. wp-config.php schützen➔ Bei PHP-Problemen darf niemals diese Datei öffentlich werden, daher schützen!<FilesMatch "(wp-config.php|liesmich.html|readme.html)"> order deny,allow deny from all</FilesMatch>➔ Zusatzfunktion: Versionsnummer verstecken
  • 28. Versionsnummer verstecken➔ Generator-Eintrag aus Head entfernen: – <meta name="generator" content="WordPress <?php bloginfo(version); ?>" /> – remove_action(wp_head, wp_generator);➔ Aber was ist mit den Feeds? – add_filter(the_generator, create_function(, return "";));➔ wp_enqueue_script()-Problem – Wenn keine Version angegeben wird WP-Version angehängt!
  • 29. Versionsnummer verstecken// remove wp version param from any enqueued scripts// http://docs.appthemes.com/tutorials/removing-wordpress-version-number/function at_remove_wp_ver_css_js( $src ) { if(strpos($src,ver=)) $src= remove_query_arg(ver,$src); return$src;}add_filter(style_loader_src,at_remove_wp_ver_css_js,9999);add_filter(script_loader_src,at_remove_wp_ver_css_js,9999);
  • 30. SSL-Verschlüsselung➔ Ab etwa 60 EUR / Jahr – SSL-Zertifikat – define(FORCE_SSL_LOGIN, true); – define(FORCE_SSL_ADMIN, true);➔ Shared SSL-Lösung nur für den Login – Redirect 301 /ssl https://sslsites.de/example.de/wp-login.php – ???
  • 31. Zugriffsrechte➔ Immer nur soviel Rechte einräumen wie nötig➔ Trennung Administration & Nutzung (Windows) – Editor/Redakteur zum Arbeiten – Admin extra sichern➔ Was nicht da ist, kann nicht missbraucht werden (Editor ausblenden) – define(DISALLOW_FILE_EDIT,true);➔ Dateirechte (Verzeichnisse: 755, Dateien: 644)
  • 32. Zwei mal abschließen …➔ htaccess-Passwort-Sicherung des Logins (nur wp-login.php!) – Initiative WordPress-Sicherheit – Zugang nur bestimmten IPs oder IP-Bereichen erlauben/verbieten➔ Adminkonto extra absichern – Google Authenticator oder Duo Two-Factor Authentication➔ Blacklist – http://perishablepress.com/5g-blacklist-2012/
  • 33. Kinder & Brunnen➔ Backups! – FTP & MySQL-Datenbank – SQL-Backup per Plugin: WP DB Backup – Oder direkt in die Dropbox – Bei vielen Datenbanken: MySQL-Dumper – Nicht auf dem Server speichern (nicht öffentlich, nicht online)➔ Richtig reagieren – http://codex.wordpress.org/FAQ_My_site_was_hacked
  • 34. Monitoring➔ Vorteil: Schnellere Reaktionszeit➔ Alle Änderungen werden per Mail gemeldet – WordPress File Monitor Plus➔ Nachteil: Serverbelastung
  • 35. Theme & Plugin-Devs➔ Vertraue NIEMALS einer Usereingabe!● Maskieren (escapen) je nach Kontext gegen Cross Site Scripting (XSS): – esc_attr, esc_html, esc_js, esc_url, esc_url_raw, esc_textarea
  • 36. Theme & Plugin-Devs➔ Schutz vor SQL-Injection ➔ esc_sql ➔ $wpdb->prepare() / insert() / update() / select() ➔ Und immer an $wpdb->prefix denken!➔ Weiterführende Links: ➔ http://codex.wordpress.org/Data_Validation ➔ http://remicorson.com/sanitizing-strings-and-data-validation-in-wordpress/
  • 37. Informiere dich!➔ Sicherheits-Blogs abonnieren – http://blog.sucuri.net/category/wordpress – http://googleonlinesecurity.blogspot.de/ ➔ http://wpsecure.net/ ➔ http://blog.unmaskparasites.com/ ➔ http://perishablepress.com/category/web-design/security/ ➔ https://www.badwarebusters.org/
  • 38. Online Malware Scanner➔ http://sitecheck.sucuri.net/scanner/➔ http://safeweb.norton.com/➔ http://www.unmaskparasites.com/security-report/➔ http://www.unmaskparasites.com/malware-warning-guide/➔ http://www.urlvoid.com/➔ http://siteinspector.comodo.com/online_scan➔ https://www.virustotal.com/
  • 39. Themes prüfen➔ http://wordpress.org/extend/plugins/tac/➔ http://wordpress.org/extend/plugins/exploit-scanner/➔ http://wordpress.org/extend/plugins/theme-check/➔ http://wordpress.org/extend/plugins/log-deprecated-notices/➔ http://wordpress.org/extend/plugins/deprecation-checker/
  • 40. Plugins prüfen➔ http://wordpress.org/extend/plugins/log-deprecated-notices/➔ http://wordpress.org/extend/plugins/deprecation-checker/➔ http://wordpress.org/extend/plugins/plugin-check/➔ http://wordpress.org/extend/plugins/p3-profiler/
  • 41. Sicherheits-Plugins für den Ernstfall➔ http://wpantivirus.com/➔ http://wordpress.org/extend/plugins/wp-security-scan/➔ http://wordpress.org/extend/plugins/secure-wordpress/➔ http://wordpress.org/extend/plugins/timthumb-vulnerability-scanner/➔ http://wordpress.org/extend/plugins/bulletproof-security/➔ http://wordpress.org/extend/plugins/6scan-protection/➔ http://wordpress.org/extend/plugins/better-wp-security/➔ http://wordpress.org/extend/plugins/ultimate-security-checker/➔ http://wordpress.org/extend/plugins/wordfence/
  • 42. Danke! Vielen Dank an die XING-WordPress-Gruppe!Vielen Dank an das WordPress-Meetup Hamburg!
  • 43. Fragen?➔ Zeit ist knapp, daher gerne auch später auf dem Camp oder online: ➔ http://torstenlandsiedel.de/kontakt/ ➔ https://twitter.com/zodiac1978/