Martok - Sa 29.12.12 01:47
Titel: Wordpress: Admin-Account absichern!
Hallo!
Public Service Announcement: aktuell (ca eine Woche) habe ich auf allen mir bekannten Wordpress-Installationen massenweise Loginversuche auf den Account "admin" mit Passwörtern aus einem ziemlich umfangreichen Wörterbuch. Das ganze 24/7 so ca. alle 10 Minuten.
Ob eine Installation betroffen ist, lässt sich z.B. mit einem
Login-Log [
http://wordpress.org/extend/plugins/simple-login-log/]-Plugin herausfinden (in den Einstellungen aktivieren, dass auch fehlgeschlagene aufgezeichnet werden).
Solltet ihr also ein WP haben oder betreuen oder jemanden kennen der eins hat: nochmal nachsehen, ob euer Passwort
einigermaßen sicher ist [
http://howsecureismypassword.net/]. Ggf. kann man auch den
Admin-Account umbenennen [
http://codex.wordpress.org/Hardening_WordPress#Security_through_obscurity], so wie ich das beobachtet hab wird nur "admin" versucht.
Die haben alle den gleichen User-Agent (nämlich den eines IE6 auf XPSP2), man kann also einfach auf diesen filtern und die Verbindung beenden. Sowas sollte in freier Wildbahn eigentlich nicht mehr existieren, Overblocking ist also unwahrscheinlich ;)
Diesen Code habe ich dazu ganz oben in die wp-config.php (weil die Upgrades überlebt) eingefügt. Damit wird die Verbindung so früh wie einfach möglich beendet, wenn der Bewusste erkannt wird. Das Ganze läuft bei mir seit ein paar Stunden, ist aber bis auf weiteres
ungetestet und
ohne jede Garantie.
PHP-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| if (isset($_SERVER['REQUEST_URI']) && ($rq = $_SERVER['REQUEST_URI']) && !empty($rq) && isset($_SERVER['HTTP_USER_AGENT']) && ($ua = $_SERVER['HTTP_USER_AGENT']) && !empty($ua)) { if (preg_match('#wp-login\.php#i',$rq) && preg_match('#SV1#i',$ua)) { $what = array(); foreach(array('HTTP_USER_AGENT','CONTENT_TYPE','HTTP_REFERER','REMOTE_ADDR','REQUEST_METHOD','QUERY_STRING','REQUEST_URI') as $k) { $what[$k] = $_SERVER[$k]; } $what['POST'] = &$_POST; $what['GET'] = &$_GET; file_put_contents(ABSPATH.'login-block.txt',date('c').';'.json_encode($what)."\r\n",FILE_APPEND); header('HTTP/1.1 403 You are a bot, you don\'t belong here.'); die('Bugger off!'); } } |
Ende der Durchsage.
Grüße,
Martok
Martok - Sa 13.04.13 17:34
Update:
Es geht wieder los [
http://www.heise.de/-1841419]. Diesmal etwas cleverer, mit mehr als 90k Angreifer-Hosts und auch nicht mehr so einfach blockbar, da die sich jetzt als Firefox 18 ausgeben - der ist zwar auch schon etwas her, aber nicht ganz so offensichtlich "böse".
Der Angriff ist aber (besonder was die Timing-Muster angeht) der selbe, ich vermute also mal dass das erste der Probelauf dazu war.
Am Besten ist immer noch, den Adminaccount nicht "admin" zu nennen (und auch nicht so wie ein User, der Beiträge postet) und ein nicht-wörterbuchiges Passwort zu haben.