WordPress absichern - WP Camp 2012 in Berlin

download WordPress absichern - WP Camp 2012 in Berlin

If you can't read please download the document

description

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/

Transcript of WordPress absichern - WP Camp 2012 in Berlin

  • 1. WordPress absichernTorsten Landsiedel@zodiac1978

2. Was ist Sicherheit?Sicherheit ist ein relativer Zustand der Gefahrenfreiheit, der stets nur fr einen bestimmten Zeitraum,eine bestimmte Umgebung oder unter bestimmten Bedingungengegeben 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 fr 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 Passwrter Mglichst lang (>10 Zeichen) Mehrere Wrter hintereinander Hutsahneregalhuepfburg Satz mit Regeln Dieser Satz ist ein super Passwort, dass ich mir gerade ausdenke! DSi1sPdimga! Nicht aufschreiben, nicht teilen, regelmig ndern(Stichwort: Zahnbrste!) KeePass nutzen 10. Schlechte Passwrter Vermeide bekannte Muster: Bernd1978 (Vorname + Geburtsjahr) P@ssw0rt (bekannte Ersetzungen) Wrterbuch-Wort Doppelt verwendete Passwrter Typische Tasten-Folgen oder Klassiker: Password, 123456, 12345678, qwerty, abc123 11. Das schwchste Glied der Kette ... 12. Der Weg muss sicher sein! Betriebssystem aktuell? Alle Sicherheitsupdates eingespielt? Virenscanner aktiv und aktuell? Wenn mglich 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. Aufrumen! + Ordnung! Unbenutzte Themes und Plugins lschen! Nein, deaktivieren reicht nicht Plugins und Themes nur aus vertrauenswrdigen Quellenbeziehen! Verzeichnisse anzeigen verhindern Options All -Indexes (in .htaccess) Oder in jedem Ordner eine leere index.php 14. Security-Basics Sicherheitsschlssel in der wp-config.php setzen http://codex.wordpress.org/Editing_wp-config.php#Security_Keys Sollte das Blog gehackt werden, unbedingt diese Schlssel erneuern!Damit werden die Cookies verschlsselt und die bleiben sonst valide! 15. Security through obscurity 16. Security through obscurity Sicherheit durch Verschleierung Sinnvoll nur als Ergnzung! Prfix ndern $table_prefix = wp_deinprfix_; Bei der Installation durch nderung in wp-config.php Ansonsten durch Plugins Verhindert einfache SQL-Injections 17. Wichtige Ordner verschieben wp-config.php (sofern mglich) in den Ordner berdem 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 Frher Standard, daher hufig 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 mchte/kann, der nutzt das Search & Replace-Plugin vonFrankBltge: http://wordpress.org/extend/plugins/search-and-replace/ ) Und immer an das Prfix 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 mchte/kann, der nutzt das Search & Replace-Plugin vonFrankBltge: http://wordpress.org/extend/plugins/search-and-replace/ ) Und immer an das Prfix 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-Klassenentfernen// 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 verrt, 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 Passwrter! Oder ein Plugin: Limit Login Attempts Grenzen kennen! Distributed Brute Force 26. Kill PHP execution Im Ordner /uploads/ per htaccess die Ausfhrung von PHPverhindern:Order Deny, AllowDeny from All(http://wp.smashingmagazine.com/2012/10/09/four-malware-infections-wordpress/) 27. wp-config.php schtzen Bei PHP-Problemen darf niemals diese Datei ffentlich werden,daher schtzen!order deny,allowdeny from all Zusatzfunktion: Versionsnummer verstecken 28. Versionsnummer verstecken Generator-Eintrag aus Head entfernen: 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 angehngt! 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-Verschlsselung Ab etwa 60 EUR / Jahr SSL-Zertifikat define(FORCE_SSL_LOGIN, true); define(FORCE_SSL_ADMIN, true); Shared SSL-Lsung nur fr den Login Redirect 301 /sslhttps://sslsites.de/example.de/wp-login.php ??? 31. Zugriffsrechte Immer nur soviel Rechte einrumen wie ntig 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 abschlieen 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 SiteScripting (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! Weiterfhrende 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 prfen 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 prfen 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 fr 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 spter auf dem Campoder online: http://torstenlandsiedel.de/kontakt/ https://twitter.com/zodiac1978/