Muster von Angriffen

Wir erkennen wiederholte und systematische Angriffe in den Logdateien und begegnen ihnen mit fail2ban. Aber Hacker finden immer Mittel und Wege, um fail2ban und denyhosts zu überwinden.

Jeder Dienst eines Webservers, der über das Web zugreifbar ist, ist ein potentielles Ziel für Angriffe.  fail2ban ist eine Anwendung, die auf diese Angriffe reagiert und automatisch nach einer bestimmten Zahl von Login-Versuchen die iptables-Firewall konfiguriert. fail2ban und denyhosts analysieren die Logs anhand von regulären Ausdrücken.

Angriffe, die von fail2ban nicht erkannt werden

fail2ban erkennt keine verteilten Brute Force-Angriffe, da Angreifer anhand ihrer IP-Adresse identifiziert werden.
Dementsprechend gibt es Angriffsmuster, die von fail2ban nicht erkannt werden: Heute kamen mehrere 100 FTP-Zugriffe, immer nur zwei von jeweils einer IP, aber mit hunderten von IP-Adressen. Die Angriffe kamen vorwiegend aus dem russischen Raum (Russland, Moldavien, Ukraine, Polen, Estland). Eine Handvoll IPs aus Frankreich, Belgien und etwas Schweden gehört allem Anschein nach ebenfalls zu diesem Botnetz – vielleicht Server, die den Angriffen bereits zum Opfer gefallen sind.
Nur ein Bruchteil der IP-Adressen war bereits in einer Blacklist. Die IP-Adressen liegen weit auseinander: Nicht einmal auf dem vorletzten Dreier der IP gab es Wiederholungen.

fail2ban erkennt Angriffe seitens wiederkehrender IP-Adressen oder Hosts – aber die Angriffe verwenden jede IP nur zweimal. So springt fail2ban gar nicht erst an. Erst ein Blick in die Logdateien – auth.log bei Ubuntu und secure bei Centos bringen das Angriffsmuster zutage:
Die Angreifer benutzen reellen Benutzernamen, die nur durch eine vorangehende Recherche erkannt werden können. Zum Glück dürfen auf dem angegriffenen Server weder reelle Benutzernamen noch Namen von Domains verwendet werden. Ansonsten wäre das Passwort tatsächlich die letzte Bastion.

proftpd[30994]: 0.0.0.0 (88.147.242.121[88.147.242.121]) - USER holstenburg: no such user found from 88.147.242.121 [88.147.242.121]

von

2.6.29.206,
2.62.191.171,
2.132.177.162,
2.132.185.0,
2.133.109.142,
2.152.132.31,
5.18.50.21,
5.18.76.230,
5.18.178.79,
5.53.113.140,
5.58.58.211,
5.58.138.202,
5.79.209.24,
5.105.171.26,
5.128.17.179,
5.141.88.254,
5.165.42.92,
5.165.53.193,
5.248.233.167,
5.250.151.162,
31.31.8.171,
31.31.12.221,
31.41.93.26,
31.130.86.191,
31.135.151.231,
31.148.218.61,
31.162.19.108,
31.173.100.105,
31.173.242.219,
31.180.121.141,
31.200.233.3,
31.202.242.105,
31.211.105.29,
37.19.54.208,
37.20.162.75,
37.21.94.108,
37.45.246.77,
37.54.127.102,
37.114.180.255,
37.115.170.142,
37.115.227.141,
37.139.178.205,
37.150.43.209,
37.151.36.73,
37.157.219.42,
37.214.133.232,
37.214.205.74,
37.214.229.231,
37.229.45.60,
37.232.153.29,
46.19.141.219,
46.33.32.4,
46.41.76.198,
46.42.239.208,
46.42.252.55,
46.48.129.1,
46.61.66.217,
46.71.148.230,
46.118.125.193,
46.133.40.149,
46.149.184.26,
46.149.185.192,
46.149.186.20,
46.151.47.80,
46.161.181.144,
46.164.156.122,
46.164.244.155,
46.165.14.104,
46.166.100.86,
46.172.206.245,
46.175.188.121,
46.200.6.20,
46.215.232.8,
47.8.24.95,
49.35.171.113,
51.254.148.189,
59.95.32.249,
62.182.201.243,
62.183.86.30,
62.210.215.120,
62.220.52.16,
64.111.124.4,
67.8.168.160,
69.159.131.160,
74.93.194.113,
76.68.44.97,
77.35.167.7,
77.93.37.63,
77.93.43.18,
77.122.49.89,
77.123.82.131,
77.236.79.233,
78.56.208.237,
78.67.204.74,
78.111.19.140,
78.132.160.12,
78.140.50.88,
78.157.226.7,
78.157.231.31,
78.219.83.93,
79.105.144.101,
79.126.12.106,
79.173.88.127,
79.174.64.33,
80.93.125.58,
80.145.77.219,
80.234.117.44,
81.45.73.220,
81.45.73.220,
81.162.252.228,
81.163.114.106,
82.67.111.163,
82.125.131.167,
82.147.78.13,
82.149.128.169,
82.208.100.54,
83.20.6.188,
83.139.187.215,
83.142.111.245,
83.146.115.122,
83.154.247.199,
83.220.236.68,
83.222.207.158,
83.234.206.54,
84.108.29.37,
85.25.151.170,
85.26.235.237,
85.64.163.254,
85.95.187.199,
85.115.248.197,
85.140.6.79,
85.173.179.89,
85.192.175.18,
87.117.13.126,
87.117.38.49,
87.238.233.97,
87.240.24.243,
87.243.55.25,
88.13.62.126,
88.75.39.92,
88.102.99.154,
88.147.242.121,
88.147.243.161,
88.164.244.56,
88.200.137.67,
89.105.158.244,
89.153.248.89,
89.219.46.223,
89.249.128.204,
89.250.169.153,
89.254.250.237,
90.105.208.134,
90.150.140.19,
91.55.107.194,
91.79.10.145,
91.90.13.64,
91.122.158.227,
91.122.217.192,
91.124.115.230,
91.191.207.180,
91.203.107.142,
91.211.105.65,
91.211.172.238,
91.214.81.130,
91.217.108.78,
91.219.165.225,
91.231.160.179,
91.234.77.217,
91.240.14.24,
92.39.220.188,
92.112.157.120,
92.113.157.205,
92.141.158.183,
92.160.120.136,
92.222.8.66,
92.244.236.97,
93.74.43.117,
93.78.56.94,
93.78.172.119,
93.79.218.20,
93.80.133.121,
93.117.72.109,
93.174.91.54,
93.185.192.74,
94.20.88.246,
94.20.102.27,
94.23.222.94,
94.43.85.254,
94.43.126.213,
94.50.194.152,
94.50.195.79,
94.102.116.20,
94.140.132.65,
94.140.241.142,
94.153.209.158,
94.153.244.210,
94.178.155.1,
94.181.37.213,
94.190.1.169,
94.231.73.141,
94.240.253.108,
94.241.243.40,
94.243.88.75,
95.32.115.139,
95.37.254.90,
95.56.147.120,
95.57.96.83,
95.65.72.21,
95.71.122.34,
95.71.150.190,
95.72.143.67,
95.72.159.43,
95.79.6.150,
95.79.122.10,
95.79.177.228,
95.84.26.89,
95.84.182.219,
95.132.249.96,
95.133.230.20,
95.134.178.180,
95.139.178.30,
95.142.155.242,
95.153.99.97,
95.170.116.67,
95.174.193.39,
95.189.166.246,
96.84.81.10,
103.204.52.220,
106.192.63.189,
109.88.86.46,
109.93.151.65,
109.108.41.112,
109.162.26.87,
109.188.124.1,
109.188.127.55,
109.188.127.145,
109.201.160.11,
109.233.194.203,
109.237.126.115,
109.238.238.118,
112.150.229.220,
117.203.245.86,
118.139.177.206,
118.250.0.0,
119.73.125.143,
128.69.218.163,
130.180.211.0,
130.180.211.127,
130.180.211.195,
130.180.218.217,
130.180.220.117,
134.249.173.114,
134.249.183.209,
145.249.129.207,
145.255.17.121,
147.30.250.212,
149.3.12.195,
151.249.168.187,
154.67.88.236,
156.54.75.163,
157.50.163.125,
159.224.98.116,
162.144.78.152,
176.8.249.228,
176.32.136.195,
176.36.20.49,
176.36.136.134,
176.59.44.197,
176.59.131.151,
176.67.10.47,
176.67.13.6,
176.97.56.24,
176.98.174.227,
176.99.71.83,
176.100.80.63,
176.104.175.220,
176.106.8.142,
176.109.35.180,
176.109.44.153,
176.109.165.138,
176.109.184.84,
176.111.80.217,
176.122.107.26,
176.122.107.26,
176.209.100.88,
176.212.238.53,
178.19.251.255,
178.34.157.78,
178.46.161.224,
178.47.86.253,
178.67.91.238,
178.68.9.155,
178.69.237.220,
178.72.129.223,
178.76.224.207,
178.76.225.111,
178.76.230.233,
178.89.235.136,
178.90.249.117,
178.91.20.176,
178.91.59.121,
178.92.179.120,
178.93.149.216,
178.94.7.207,
178.121.95.19,
178.121.188.147,
178.126.158.170,
178.155.5.69,
178.159.122.25,
178.168.26.19,
178.213.6.179,
178.213.133.121,
178.217.111.2,
178.251.111.110,
184.145.9.55,
185.23.48.133,
185.39.74.13,
185.54.179.4,
185.54.179.66,
185.57.30.198,
185.77.205.54,
185.117.148.98,
185.143.41.130,
185.171.68.200,
188.0.189.197,
188.68.134.108,
188.112.225.58,
188.114.16.121,
188.138.144.179,
188.162.228.124,
188.163.26.46,
188.163.108.51,
188.170.198.55,
188.187.20.143,
188.235.236.53,
188.235.236.64,
188.239.22.2,
188.244.137.0,
188.254.110.85,
188.254.110.92,
188.254.110.198,
193.0.206.103,
193.105.62.6,
193.107.90.215,
193.150.92.7,
193.169.122.68,
193.239.83.27,
194.28.36.132,
194.28.88.177,
194.44.126.10,
194.44.155.141,
194.158.67.211,
195.16.79.156,
195.34.74.98,
195.64.201.157,
195.78.246.223,
195.88.17.201,
195.114.121.85,
195.154.200.47,
195.154.200.47,
195.208.173.166,
195.230.154.75,
195.250.94.43,
198.1.124.44,
198.12.157.19,
198.20.230.219,
198.57.181.118,
207.127.13.140,
208.79.235.86,
211.142.221.140,
212.3.99.243,
212.74.200.89,
212.87.182.63,
212.90.61.203,
212.96.109.91,
212.97.0.6,
212.98.181.212,
212.112.126.168,
212.164.83.210,
213.24.132.86,
213.24.132.128,
213.111.219.66,
213.184.245.63,
213.230.100.88,
217.9.157.201,
217.19.208.102,
217.19.216.249,
217.66.156.18,
217.66.157.85,
217.76.76.242,
217.107.125.194,
217.115.102.15,
217.118.78.86

Zwischen den Versuchen liegen 3, 5 Minuten, manchmal mehrere Stunden – von jeder IP nur zwei Mal. Kann man so einen Angriff mit fail2ban erkennen? Kaum.
Zurück zu den alten iptables und alle IP-Adressen manuell eintragen:

iptables -A INPUT -s 83.220.236.68 -p tcp --destination-port ftp -j DROP

Es ist kaum vertretbar, mehr als die letzte Triade der IP auszuschließen. Russische IPs und Deutsche IPs liegen eng zusammen. Schon ein Ausschluss auf 77.244.210.0/24 muss überprüft werden.

77.244.210.xxx kann die IP eines deutschen Providers sein
77.244.210.178 ist eine russische IP

IP-Range prüfen

Das Ausschließen über die IP-Adresse – selbst wenn der letzte IP-Block mit /24 oder sogar mit /16 einbezogen wird – gibt natürlich auf keine echte Sicherheit. Benutzername und Passwort sind die letzte Bastion. In diesem Sinne raten alle Webmaster zu Passwörtern von mindestens 12 Zeichen, die nicht nur aus Buchstaben, sondern auch aus Sonderzeichen und Ziffern bestehen sollten. Der Benutzername sollte keinen Bezug zum Domainnamen und erkennbaren Redakteuren der Seite haben.

WordFence beobachtet eine Angriffswelle

Die Angriffe auf den FTP-Port begannen Ende November. Zur selben Zeit beobachteten auch andere Webmaster den massiven Anstieg an Attacken – vor allem Brute Force-Attacken auf WordPress.
Die Angriffswelle auf WordPress-Installationen, von der WordFence berichtet, ähnelt der Attacke auf die FTP-Account: In erster Linie bemerkenswert, dass die kleine Ukraine so einen hohen Anteil bei den Hackversuchen stellt.
Bei mehreren Servern haben wir dieses Angriffsmuster auf das WordPress-Login ebenfalls beobachtet: Die Angriffe kommen ebenfalls vor allem aus Russland, der Ukraine, Moldavien, …
Ein Zwei-Faktor-Login (z.B. mit htpasswd) bringt nur wenig, denn WordPress hat vor einiger Zeit (seit Version 3.5) beschlossen, dass das XML-RPC API (Beiträge über Email einbringen) nicht mehr in den Einstellungen abgestellt werden kann.
Den meisten WordPress-Betreibern ist das XML-RPC-Interface gar nicht bekannt. Neben dem Schreiben von Beiträgen über einen externen Editor verarbeitet WordPress Pingbacks über das XML-RPC-API.

Angriffe finden

Die Angriffe gegen denn FTP-Port findet man in den Logdateien des Servers. Angriffe auf das WordPress-Login zeigen sich in den Error-Logs der Domain, wenn kein Plugin wie WordFence installiert ist. Bei WordPress-Installationen sollte das XML-RPC API über ein Plugin geschlossen werden.

failed password for
ssh Ubuntu 14 / Centos 7
USER anonymous: no such user found from

Hacker-Angriff auf Port 21