Hacker in meinem Asterisk Server

Hi!

... und wer sagt, dass eure Asterisk (oder sonstige) Boxen auf 5060 laufen müssen? Da ihr eh nicht wollt, dass ihr von beliebigen Leuten direkt über sip kontaktiert werdet, liegt doch nichts näher als ....

schufti
 
Zuletzt bearbeitet:
Ich fange grad an mich damit zu beschäftigen,

in welcher Datei kann ich denn einstellen, das nur Verbindungen aus dem lokalen Netz erlaubt sind? Eine Whitelist währe eine prima Lösung,
wo kann ich die IP's einstellen?
 
Wenn es nur um Asterisk geht:
In der sip.conf.
Mit deny und permit
z.b: deny=0.0.0.0/0.0.0.0 ;blockt alles
und permit=192.168.178.0/255.255.255.0 lässt nur Adressen beginnend mit 192.168.178.xxx zu.
Wichtig die Reihenfolge!
Du musst das natürlich an deine Bedürfnisse anpassen!
Ein google zu sip.conf gibt da Hilfe.
 
Es gibt noch eine sip_user.conf Datei,
in der alle "bekannte" Anschlüsse mit IP aufgelistet sind.
Ist diese Datei auch relevant?
 
Sagt mir jetzt erst mal gar nichts.
Hab ich auch auf keinem System von mir finden können.
Wenn du allerdings eine Änderung in der sip.conf vornimmst, ist sie so erst mal grundlegend für alle sip-Verbindungen gültig!
Warum flicken wenn man es von vornherein abdichten kann?!
 
Die sip_user.conf wird per include aus der sip.conf geladen.
Die Anlage ist von der Firma iptam und vermutlich speichert die Firma die spezifischen Änderungen hier ab....?
 
Ich habe in der sip.conf nun auch bei jedem Peer die Zeilen
Code:
deny=0.0.0.0/0
permit=192.168.0.0/24
eingefügt.

Um die Wirkung zu testen, habe ich mein Telefon mal mit einer falschen permit-Angabe "ausgesperrt".

Nun erhalte ich zwar:
Code:
[2010-05-14 13:42:28] NOTICE[16167] chan_sip.c: Registration from '<sip:[email protected];user=phone>' failed for '192.168.0.xx' - Device does not match ACL
... kann aber immer noch ausgehend telefonieren. Ein "sip show peers" zeigt mein Telefon auch als angemeldet an.

Was mache ich falsch?

Ralph
 
Na so was. Ich sitze jetzt zufällig vor der CLI und was sehe ich da?
Ein Angriff von der IP 218.93.205.205
Zuerst probiert der jeden peer von 100 bis 9999. Da hat er bei mir drei Stück gefunden.
Dann versucht er alle möglichen Passwörter auszuprobieren. Habe nichts gemacht, einfach nur beobachtet. Die Passwörter konnten nicht geknackt werden.
Einerseits gut, anderseits schade - ich hätte zu gern gesehen, was dann passieren würde.

So sieht das ganze aus:
Code:
[May 14 14:10:31] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"2118832972"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
[May 14 14:10:31] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"3409304672"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
[May 14 14:10:31] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"100"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
[May 14 14:10:31] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"101"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
[May 14 14:10:31] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"102"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
[May 14 14:10:31] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"103"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
...
[May 14 14:11:50] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"9998"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
[May 14 14:11:50] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"9999"<sip:[email protected]>' failed for '218.93.205.205' - No matching peer found
...
[May 14 14:11:55] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"100" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:11:55] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"100" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:11:55] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"100" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
...
[May 14 14:12:59] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"238" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:12:59] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"238" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:12:59] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"238" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
...
[May 14 14:13:57] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"4759" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:13:57] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"4759" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:13:57] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"4759" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
[May 14 14:13:57] NOTICE[18245]: chan_sip.c:21538 handle_request_register: Registration from '"4759" <sip:[email protected]>' failed for '218.93.205.205' - Wrong password
 
Zuletzt bearbeitet:
Auch auf die gefahr hin, dafuer jetzt zum "fai2ban fanatiker" ebgestempelt zu werden - wenn ich sowas hier sehe:
Code:
...  failed for '218.93.205.205' - No matching peer found
... failed for '218.93.205.205' - Wrong password
so erinnert mich das sofort an meine filter.d/asterisk.conf (auszug):
Code:
failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
Wie gesagt, bei mir wurde noch kein asterisk angegriffen, aber ich bin recht zuversichtlich, dass fail2ban derlei angriffe mit diesen regeln genauso zuverlaesig abblocken wuerde wie es das bei SSH angriffen tut. Bei mir laeuft es mittels denyhosts, mit iptables waere es vermutlich sogar noch besser (schneller).

fail2ban rulez!!!
Chris
 
Hatte auch diese Hackangriffe. Zum Glück hatte ich die Passwörter so geändert, dass mindestens dort Endstation ist. Bei einem früheren Angriff wurde diese IP 193.170.134.152 der Uni Linz verwendet. Eine Mail an abuse blieb unbeantwortet.
Wenn es nur um Asterisk geht:
In der sip.conf.
Mit deny und permit
z.b: deny=0.0.0.0/0.0.0.0 ;blockt alles
und permit=192.168.178.0/255.255.255.0 lässt nur Adressen beginnend mit 192.168.178.xxx zu.
Dies scheint aber nur zu gehen wenn man eine feste IP hat. Oder habe ich ein Brett vor dem Kopf? Ich sehe auch nicht wie dies mit DynDNS gehen könnte. Was macht ihr bei sich ändernder IP?
 
Hallo zusammen,

nun hat es mich letzte Nacht ganz offensichtlich auch erwischt, der Schaden hält sich
erfreulicherweise in Grenzen. Hab bei Sipgate einen Prepaid Account ... "Nur" 30¤

Ziel war bei mir Kuba ...

Mir stellt sich im Moment die Frage, wie die Asterisk vernünftig abzusichern ist. Habe
natürlich die "schwachen" Passwörter erstmal durch "stärkere" ersetzt. Interessant
finde ich die Möglichkeit der deny/permit Adressbereiche. Gibt es eine Möglichkeit
mehrere erlaubte Bereiche anzugeben?

vG Michael
 
Auch auf die gefahr hin, dafuer jetzt zum "fai2ban fanatiker" ebgestempelt zu werden
Chris, wie wäre es mit einem ausführichen HowTo so etwa in der Art wie Betateilchens Baukasten? Ich meine mich erinnern zu können, dass Du fail2ban seinerzeit auch nicht auf Anhieb hingekriegt hattest.

Marcel
 
Gips doch schon hier. Der rest steht in der anleitung - die sollte man schon durchlesen.

Gruss
Chris
 
Chris,

Du hast ja recht; aber dieser Thread zeigt ein "Flickwerk" an, von dem ich dachte, dass es wertvoll wäre es zu vervollständigen.

Soweit bin ich gekommen:
cd /usr/src
wget http://downloads.sourceforge.net/fail2ban/fail2ban-0.8.4.tar.bz2
tar -jxf fail2ban-0.8.4.tar.bz2
cd fail2ban-0.8.4

Das entsprechende Verzeichnis dann tatsächlich auch vorhanden:
vs1234:/usr/src/fail2ban-0.8.4#

Wie in dem HowTo zu lesen ist geht es nicht überall mit den IP-Tables und an deren Stelle wird auf den message-file ausgewichen. Die Befehle im HowTo von Voip-Info.org habe ich deshalb ausgelassen und wollte hier direkt zu diesem File, den VoIP_Indianer angesprochen hatte:
Schau Dir einfach mal die unterschiedlichen Aktionen an, die in /etc/fail2ban/action.d definiert sind. Die entsprechende Aktion wird dann einfach in den Asterisk-Jail eingetragen.
Aber unter /etc/ finde ich kein Verzeichnis von fail2ban ??? Irgend etwas scheint da noch zu fehlen. Wie geht's an dieser Stelle weiter?

Gruss Marcel

Nachtrag: Mit
apt-get install python iptables
wird Python ausgepackt, aber immer noch nichts unter etc???

Mit
python setup.py install
immer noch nichts unter etc ???

Nachtrag 2:
Nach Neustart von WinSCP ist das Verzeichni jetzt endlich vorhanden :)
 
Zuletzt bearbeitet:
So jetzt kommen halt doch noch ein paar offene Fragen (sorry, fals sie trivial sein sollten):

1) Um sich nicht selbst auszuschliessen empfiehlt Voip-Info.org:
Don't Ban Yourself
We don't want to ban ourselves on accident. Edit /etc/fail2ban/jail.conf and edit the ignoreip option under the [DEFAULT] section to include your IP addresses or network, as well as any other hosts or networks you do not wish to ban.
Nun ich habe eine dynamische und nicht eine statische DNS. Ich nehme einmal an, dass die betreffende Zeile
PHP:
ignoreip = 127.0.0.1
mit einem # davor als Kommentar inaktiv gemacht wird. Jetzt habe ich mich aber immer noch nicht vom Ban ausgeschlossen. VoIP_Indianer empfiehlt:
PHP:
-A INPUT -p tcp -m tcp --dport ssh -j ACCEPT
einzutragen, aber er sagt nicht wo. Ist dies ein Linux-Befehl und wenn ja, wo einzutragen?

2) Ist es richtig, dass die Anweisungen von Voip-Info.org betreffend Asterisk Logging überflüssig sind, da die Änderungen unter [asterisk-iptables] in Asterisk-Jail schon auf den messages-file verweisen, in dem die Hackversuche schon registriert werden?

3) VoIP_Indianer hat in seinem Vorschlag
PHP:
[asterisk-iptables]
enabled  = true
filter   = asterisk
#action   = iptables-allports[name=ASTERISK, protocol=all]
action   = hostsdeny[name=ASTERISK, protocol=all]
logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 259200
die folgende von Voip-Info.org empfohlene zweite Zeile bei action ausgelassen
PHP:
           sendmail-whois[name=ASTERISK, dest=root, [email protected]]
. Hat dies einen bestimmten Grund, oder könnte ich dort an Stelle von "[email protected]" ohne weiteres einfach meine Mailadresse angeben "me@mydomain"?

Marcel

Nachtrag:
4) Liege ich richtig, wenn ich annehme, dass bei Voip-Info.org der Teil Turn IPTABLES on überflüssig ist und übersprungen werden kann, da ja mit dem messages-File gearbeitet wird, der ja von Asterisk schon benutzt wird?

Nachtrag 2:
5) Wie kann ich überprüfen, ob Fail2ban funktioniert? Die Anweisung von Voip-Info.org bezieht sich ja auf die Version mit iptables und nicht auf diejenige mit dem messages-File.


Vorschlag für Admin: Meine beiden letzten Beiträge #74 und #75 wären am Ende vom Thread " [HowTo] Hacker in asterisk vserver abwehren mit Fail2Ban (auch ohne iptables)" besser platziert. Vielleicht kann diese jemand von Euch dorthin verschieben.
 
Zuletzt bearbeitet:
Zu 1) kann ich nix sagen, da ich nicht mit iptables arbeiten kann

Zu 2): doch, du musst die angegebenen aenderungen in der /etc/asterisk/logger.conf vornehmen, sonst geht mit dem asterisk jail gar nix.

Zu 3): die zeile ist kein muss, du kriegst dann halt keine email. Das kann einerseits sehr angenehm sein, denn es koennen sehr viele emails werden (eine pro ban). Andrerseits ersparen einem die mails den blick ins log, ob fail2ban auch wirklich geht, und erzeugen ein angenehmes erfolgserlebnis. Und das taeglich (wenn nicht stuendlich) ;-)

Uebrigens haengt der email versand dann von den einstellungen deines vservers ab. Bei mir ging sendmail gar nicht, aber stattdessen mail. Und was du als absenderadresse eintraegst ist voellig egal - viel wichtiger ist es, [email protected] einzutragen.
 
Zu 1) kann ich nix sagen, da ich nicht mit iptables arbeiten kann
Habe dies ja auch nicht für iptables sondern für den meassages-File eingerichtet. Besteht dann keine Gefahr, dass man sich selbst ausschliessen kann?

Anmerkung: Hast Du gesehen, dass ich noch Nachträge angefügt habe?

Gruss Marcel

Nachtrag: Beim weiterem Nachdenken... dann halt einfach den Router neu straten mit neuer IP?

Nachtrag 2:
Wo wird fail2ban gestartet???
vs1234:/# /etc/init.d/fail2ban start
-bash: /etc/init.d/fail2ban: Datei oder Verzeichnis nicht gefunden
Tatsächlich, unter init.d befindet sich kein File fail2ban ??? Wo ist der geblieben???
 
Zuletzt bearbeitet:
Zunaechst mal finde ich, dass diese ganze diskussion nicht in diesen thread gehoert. Koennte ein mod bitte ab 74 abschneiden und entweder an diesen thread anhaengen (der thematisch passt) oder einen neuen dafuer eroeffnen? Danke!

Sodann -
Einrichtung von fail2ban mit denyhost logik (also nicht iptables):

1 - installation von fail2ban samt zubehoer - hast du ja wohl gemacht
2 - modifikation der logger.conf (hoffentlich auch gemacht), reload nicht vergessen
3 - erstellen der datei /etc/fail2ban/jail.local mit fuer asterisk folgendem inhalt:
Code:
[asterisk-denyhosts]

enabled  = true
filter   = asterisk
action   = hostsdeny[name=ASTERISK, protocol=all]
           mail-whois[name=ASTERISK, [email protected], [email protected]]
logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 259200
Die werte sind meine und koennen an den eigenen bedarf adaptiert werden. Siehe auch meinen kommentar hinsichtlich mail oder sendmail oben. Ausserdem sollte man in jail.local noch reinschreiben, was man fuer SSH (oder anderes) anders will als es in der jail.conf steht, z.b. so:
Code:
[ssh]
action   = hostsdeny[name=SSH, protocol=all]
           mail-whois[name=SSH, [email protected], [email protected]]
bantime = 259200
4 - sicherstellen, dass /etc/fail2ban/filter.d/asterisk.conf folgendes enthaelt:
Code:
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf


[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
        NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

5- fail2ban starten mit /etc/init.d/fail2ban start
. . . du solltest sofort eine (oder mehrere) email(s) erhalten

6 - auf fehlermeldungen pruefen: tail -f /var/log/fail2ban.log

7 - zuruecklehnen und gefuehl der (relativen) sicherheit geniessen.

That's all, folks!

Fuer alle weiteren fragen, erstmal diese FAQ auswendig lernen ;-)

Chris
 
Zuletzt bearbeitet:
Auch auf die Gefahr hin das ich daneben liege: Hast Du getestet ob asterisk tcpwrappers benutzt, bzw. die hosts.deny auswertet? Wär mir nämlich neu das er das tut (nicht alle Dienste tun das automatisch).

Hab auch eben mal testweise meine IP in die hosts.deny meines Servers reingeschrieben, das war dem asterisk ziemlich egal, hat mich trotzdem telefonieren lassen. Aber vielleicht gibts ja eine tcpwrapper Geschichte die man einkompilieren kann, von der ich nichts weiß.
 
Hm, ich reiche die frage gerne weiter an leute, die mehr davon verstehen als ich.
Hab auch eben mal testweise meine IP in die hosts.deny meines Servers reingeschrieben, das war dem asterisk ziemlich egal, hat mich trotzdem telefonieren lassen.
Das ist allerdings ungut. Ich habe das nicht getestet - und seit ich fail2ban installiert habe, gab es keinen angriffversuch mehr gegen meine asterisken. Also weder eine meldung von fail2ban, noch die ueblichen spuren in den messages (die ich mir seit der letzten attacke taeglich zusenden lasse und ansehe).

Wie konntest du denn eigentlich wieder auf deinen server zugreifen, wenn deine IP in der hosts.deny ist?

Gruss
Chris
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.