Ich habe eine Telefonanlage (VOIP-Server), an die Telefone angeschlossen werden, um Anrufe zu tätigen. Die Telefonanlage, die ich verwende, istSternchen. Dieser Server wird nicht verwendet und dient ausschließlich zur Analyse von Angriffen.
Der PBX-Dienst ist nicht wichtig. Wenn ich einen anderen Dienst wie beispielsweise MongoDB hätte, bin ich sicher, dass Bots im Internet nach Schwachstellen suchen würden, um diese Datenbank anzugreifen.
Wie dem auch sei, ich analysiere alle Pakete, die auf meinem Server über UDP-Port 5060 ankommen (dort lauscht Asterisk) und die Pakete, die ankommen, sehen folgendermaßen aus:
IP (tos 0x0, ttl 113, id 654, offset 0, flags [none], proto UDP (17), length 521)
43.249.129.89.58255 > 171.21.78.225.5060: SIP, length: 493
REGISTER sip:54.84.215.2:5060 SIP/2.0
To: <sip:[email protected]>
From: <sip:[email protected]>;tag=824e5f4a7221279e4f7a
Via: SIP/2.0/UDP 10.4.1.117:58255;branch=z9hG4bK183d5a24-59ec-4f05-8325-747389112824;rport
Call-ID: e5f4a722128024e4f7a824
CSeq: 1 REGISTER
Contact: <sip:[email protected]:58255>
Expires: 3600
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
User-Agent: PolycomSoundPointIP SPIP_550 UA 3.3.2.0413
Content-Length: 0
Dieses Paket stammt von einem Bot, da ich KEINE Pakete an meinen Server sende.
Beachten Sie, dass der einzige Zweck dieses Servers darin besteht, zu verstehen, wie Bots funktionieren und wie sie meinen Server angreifen. Ich verwende diese PBX nicht; daher muss jede Anfrage, die an diesen Server geht, von einem bösartigen Bot stammen. Jedes Mal, wenn ich ein UDP-Paket an Port 5060 gesendet bekomme, blockiere ich diese IP-Adresse.
Nun meine Frage:
Ich betreibe diesen Server seit einem Monat und werde immer noch ungefähr jede Minute angegriffen. Ich habe über 15.000 IPs blockiert! Wie viele Bots gibt es im Internet? Ändern sie ihre Quell-IP-Adresse und erreichen deshalb immer wieder meinen Server? Wenn sie ihre Quell-IP ändern können, liegt das daran, dass ich das UDP-Protokoll verwende? Sollte ich TCP statt UDP verwenden, um das Problem zu lösen?
Außerdem ist es lustig, wie ähnlich sich die Angriffe von verschiedenen IPs sind. Beispielsweise verwenden sie denselben Benutzeragenten wie das Telefon und der Angriff kommt von verschiedenen IPs. Es ist, als hätten alle Bots denselben Code.
Sobald ich dieses Problem gelöst habe und verstehe, wie Bots funktionieren, möchte ich diese Lösung auf meinem echten Server implementieren. Ich verwende hierfür nicht den echten Server, da es schwierig wäre, die guten von den schlechten Paketen zu unterscheiden. Eine Lösung wäre, eine Whitelist von IPs auf meiner Firewall zu verwenden, aber ich möchte nicht, dass meine Benutzer eine zusätzliche Form der Authentifizierung durchführen müssen, insbesondere wenn sie den Dienst von ihrem Mobiltelefon aus verwenden, dessen IP-Adresse sich häufig ändern kann.
Antwort1
Ich verstehe jetzt, warum die Leute versuchen, so viele Ports wie möglich geschlossen zu halten. In meinem Fall wollte ich die Ports offen halten und die Angreifer blockieren. Ich habe festgestellt, dass es ein endloser Kampf ist.
Um das Problem zu lösen, musste ich verstehen, wie iptables funktioniert. Meine Regeln sehen folgendermaßen aus:
~# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set MyBlackList src
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 match-set MyWhiteList src
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5060
DROP udp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 1:65535
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 1:65535
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Mit diesen Regeln lasse ich zunächst nur Verbindungen zum Port 5060 nur über TCP zu.
Wenn ein Telefon fälschlicherweise versucht, eine Verbindung zu diesem Port herzustellen, wird die IP-Adresse zu MyBlackList hinzugefügt. In diesem Fall kann der Angreifer keine weiteren Anfragen stellen.
Wenn ein Telefon eine korrekte Verbindung herstellt, wird es zu MyWhiteList hinzugefügt. In diesem Fall kann es auf andere Ports zugreifen und Anrufe tätigen. Wenn es in Zukunft zu viele ungültige Anfragen stellt, kann es immer noch zu MyBlackList hinzugefügt werden.
Seit ich diesen Ansatz verwende, werde ich nur noch selten angegriffen. Jetzt sind nur noch 10 IPs blockiert statt tausender.