28. Februar 2023
Da mir Tools für die automatische Beschaffung und Verwaltung von SIP-Scanner-Blacklisten zu unsicher sind und sie das System im schlimmsten Fall beschädigen können, bin ich dazu übergegangen mir die Blacklisten selbst zu erstellen. Mit entsprechenden Python-Skripten beschränkt sich der wöchentliche Aufwand nur auf ein paar Minuten.
Auf https://www.kwancro.com/honeypotdata/ werden dankenswerterweise im Lisen von schädlichen IP-Adressen und und SIP-Scanner aktualisiert und veröffentlich, die wir uns mit Copy and Paste in eine TXT-Datei kopieren können, um sie in Iptables des zu schützenden SIP-Servers zu übertragen, der in meinem Fall auf einem Raspberry Pi mit Raspbian als Linux-Betriebssystem betrieben wird.
Der obige Screenshot befindet sich z.B. auf Source IPs, 7 days. Die Liste der IP-Adressen können wir für die Aktualisierung unserer Blacklist mit Copy and Paste herauskopieren. Allerdings ist das Ergebnis zweispaltig:
45.93.16.128 84348 23.226.128.19 78978 2.57.121.78 65934 45.93.16.73 27649 89.22.120.227 24408 45.134.144.111 10367 195.154.54.249 8184 185.225.209.17 7432 174.138.185.10 7324 70.34.199.194 4341 157.90.21.27 4262 185.225.209.16 2828 151.106.38.130 2708 95.216.21.57 2705 151.106.32.136 2611
Für die Weiterverarbeitung ist es wichtig, dass diese Liste keine Leerzeilen enthält und jede Zeile aus zwei Strings besteht. Dann können wir sie in eine TXT-Datei kopieren, die wir kwancro.txt nennen. Um die störende rechte Spalte zu entfernen, nutzen wir ein kleines Python-Skript, das ich kwancro.py genannt habe:
#!/usr/bin/env python with open('/etc/asterisk/sipblacklist/kwancro.txt', 'r') as f: for line in f: line = line.strip().split()[0] print("iptables -A INPUT -s " + line + " -j DROP")
Auf unserem Asterisk-Server legen wir einen neuen Ordner /etc/asterisk/sipblacklist/ an und kopieren diese kwancro.py und die kwancro.txt in diesen Ordner. Wichtig ist, dass die kwancro.py ausführbar ist und wenn sie auf Windows editiert worden ist, entsprechend umgewandelt worden ist. Das geht zum Beispiel mit den Befehlen wie folgt. Eventuell müssen wir vorher noch mit „sudo apt install dos2unix“ dos2unix installieren. Dos2unix ist nur notwendig, wenn Dateien auf Windows erzeugt wurden:
sudo dos2unix /etc/asterisk/sipblacklist/kwancro.py sudo chmod 777 /etc/asterisk/sipblacklist/kwancro.py
Jetzt legen wir noch eine Bash-Datei namens kwancro.sh an, die ebenfalls in denselben Ordner unterzubringen ist:
#!/bin/bash sudo dos2unix /etc/asterisk/sipblacklist/kwancro.txt sudo chmod 777 /etc/asterisk/sipblacklist/kwancro.txt sudo python /etc/asterisk/sipblacklist/kwancro.py
Wir haben nun unsere zweispaltige kwancro.txt auf Linux oder Windows erzeugt und schieben sie nun den besagten Ordner /etc/asterisk/sipblacklist/ und können dabei eventuell die alte kwancro.txt überschreiben.
Nun führen wir in der Linux-Kommandozeileneingabe folgenden Befehl aus:
sudo bash /etc/asterisk/sipblacklist/kwancro.sh
und schwups werden aus der der Liste der kwancro.txt Zeile für Zeile Befehle für Iptables generiert:
root@raspberrypi:/home/pi# sudo bash /etc/asterisk/sipblacklist/kwancro.sh dos2unix: Datei /etc/asterisk/sipblacklist/kwancro.txt wird ins Unix-Format umgewandelt … iptables -A INPUT -s 23.226.128.19 -j DROP iptables -A INPUT -s 174.138.185.10 -j DROP iptables -A INPUT -s 74.50.91.234 -j DROP iptables -A INPUT -s 89.22.120.227 -j DROP iptables -A INPUT -s 45.134.144.111 -j DROP iptables -A INPUT -s 195.154.54.249 -j DROP iptables -A INPUT -s 128.90.102.26 -j DROP iptables -A INPUT -s 128.90.200.40 -j DROP iptables -A INPUT -s 128.90.158.4 -j DROP iptables -A INPUT -s 128.90.167.237 -j DROP iptables -A INPUT -s 178.208.167.16 -j DROP iptables -A INPUT -s 128.90.174.120 -j DROP iptables -A INPUT -s 128.90.160.46 -j DROP root@raspberrypi:/home/pi#
Dadurch sind diese IPs von Iptables gesperrt.
Das gleiche Verfahren funktioniert nach dem gleichen Prinzip auch mit SIP-Scannern, wenn wir auf „User agent used“ eine Liste herauskopieren:
8001 142 MGKsip%20release%201110 65934 3CXPhoneSystem 9570 PBX 4268 PolycomSoundPointIP[space]SPIP_550[space]UA[space]3.3.2.0413 3202 Asterisk[space]PBX 2908 Avaya%20IP%20Phone%201120E 2774 pplsip 1567 DentalKeramik 586 Cisco[space]SPA 265 Linksys-SPA942 245 friendly-scanner 112 PPtpPbxCisco12345 79 Cisco/SPA112-1.4.1(SR5) 72 - 42
Diese ist ebenfalls zweispaltig, wenn man genau hinschaut. Diese Liste kopieren wir in eine Datei namens sipcanner.txt und lassen sie von einer sipscanner.py bearbeiten:
#!/usr/bin/env python3 with open('/etc/asterisk/sipblacklist/sipscanner.txt', 'r') as f: for line in f: data = line.strip().split() keyword = data[0] print('iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "%s" --algo bm' % keyword)
Dazu nutzen wir die sipscanner.sh
#!/bin/bash sudo dos2unix /etc/asterisk/sipblacklist/sipscanner.txt sudo chmod 777 /etc/asterisk/sipblacklist/sipscanner.txt sudo python /etc/asterisk/sipblacklist/sipscanner.py
und führen sie mit
sudo bash /etc/asterisk/sipblacklist/sipscanner.sh
aus:
root@raspberrypi:/home/pi# sudo bash /etc/asterisk/sipblacklist/sipscanner.sh dos2unix: Datei /etc/asterisk/sipblacklist/sipscanner.txt wird ins Unix-Format umgewandelt … dos2unix: Datei /etc/asterisk/sipblacklist/sipscanner.py wird ins Unix-Format umgewandelt … iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Avaya%20IP%20Phone%201120E" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Asterisk[space]PBX" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "pbx" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Linksys-SPA942" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Auerswald%20COMpact%205000R%20sofia-sip/1.12.11" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "pplsip" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "FXS_GW%20(3504a_114_0225.bin)" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Z%203.14.38765%20rv2.8.3" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "8001" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "MGKsip%20release%201110" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "3CXPhoneSystem" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "PBX" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "PolycomSoundPointIP[space]SPIP_550[space]UA[space]3.3.2.0413" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Asterisk[space]PBX" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Avaya%20IP%20Phone%201120E" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "pplsip" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "DentalKeramik" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Cisco[space]SPA" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Linksys-SPA942" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "PPtpPbxCisco12345" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "Cisco/SPA112-1.4.1(SR5)" --algo bm iptables -I INPUT -j DROP -p udp --dport 5060 -m string --string "-" --algo bm root@raspberrypi:/home/pi#
Und auf einen Schlag sind jede Menge SIP-Scanner in Iptables gesperrt.
APIBAN: Dieser kostenlose Dienst aktualisiert IpTables regelmäßig und löscht ältere Einträge. Er nutzt die Daten, welche auf Kwancro zur Verfügung gestellt werden.
https://github.com/palner/apiban/tree/master/clients/go
Getestet habe ich Apiban noch nicht. Dies will ich zur Sicherheit auf einem getrennten System nachholen. Und dann werde ich darüber berichten.
Verwandte Themen:
SIP-Scanner blockieren, die Fail2Ban nicht entdecken kann – 17.1.2022: Wenn im Asterisk-CLI Meldungen wie „Timeout on … on non-critical invite transaction.“ als „WARNING“ auftreten, handelt es sich meistens um einen Angriff durch einen SIP-Scanner. Sie sind für Betreiber von Asterisk-Servern eine Gefahr, da Fail2Ban oft nicht in der Lage ist diese unerwünschten Eindringlinge zu blockieren. Manchmal treten die Attacken der SIP-Scanner massenhaft auf und können sogar den Betrieb eines Asterisk-Servers empfindlich stören. Nachfolgend eine Lösung ohne Einsatz nicht ausreichend getesteter Skripte, die den Asterisk-Server eventuell zum Abstürzen bringen könnten. – weiter –
|
Fail2Ban für Asterisk installieren und konfigurieren – 28. Februar 2023: Fail2Ban ist ein Programm, das auf einem Server läuft und Log-Dateien von Asterisk überwacht, um ungewöhnliche Aktivitäten aufzuspüren und diese in Echtzeit zu blockieren. Es ist ein wichtiger Bestandteil der Sicherheitsstrategie, da es verhindert, dass unauthorisierte Nutzer auf den Asterisk-Server zugreifen und somit sensible Daten oder Dienste manipulieren oder zerstören. Fail2Ban minimiert das Risiko von Angriffen auf Asterisk, indem es potenzielle Bedrohungen schnell erkennt und automatisch blockiert, bevor sie Schaden anrichten können. – weiter – |
Asterisk-Telefonserver auf einem Raspberry Pi – Installation, Konfiguration, Programmierung, SIP, IAX2, AGI-Skripte, Sicherheit und Tipps zum praktischen Betrieb – 2.11.2022: Diese Seite richtet sich an jene, welche einen Asterisk-Telefon-Server auf einem Raspberry Pi betreiben möchten und später ein kleines Netzwerk aus Asterisk-Servern planen, um ein eigenständiges Telefonnetz aufzubauen. Los geht es mit der Installation von Raspbian und Asterisk auf einem Raspberry Pi und dann nach Lust und Laune immer tiefer in die Programmierung von Asterisk. Die Themen werden laufend erweitert.
Selbstverständlich muss es nicht unbedingt ein Raspberry Pi sein. Andere Linux-Rechner gehen auch. – weiter – |