Jitsi + Linphone = kein Telefon

Einen ganzen Vormittag kann man damit verbrennen, wenn Jitsi und Linphone zusammen laufen und beide SIP VOIP Anschlüsse bedienen können sollen. „Sollen“, weil „können“ tun sie es nicht, bis man die wahre Ursache erkennt 🙂

Falls der geneigte Leser etwas Frust aus dem Text herausliest, „etwas“ ist stark untertrieben.

Was war passiert ?

Nun, ich hatte LinPhone4 installiert, um es auszuprobieren und es behalten, weil es, an dem Tag, besser mit Sipgate funktionierte, als Jitsi, welches mit Sipgate gar nicht mehr kann 🙁  Jetzt mußte ich feststellen, daß ich mit LinPhone ohne irgendwelche Fehlermeldungen auf UI Seite, weder angerufen werden, noch selbst anrufen konnte, egal auf welchem Konto!

Nachdem ich in den Einstellungen von LinPhone die Position des Logs gefunden hatte, fielen mir dort wiederholt diese Zeilen auf:

2017-10-05 11:25:17:394 ERROR No listening point matching for [udp://sipgate.de:5060]
2017-10-05 11:25:17:394 ERROR belle_sip_client_transaction_send_request(): no channel available

Natürlich neben jeder Menge „Technobabble“ des Clienten, versteht sich 🙂

Was sagt uns das ?

Antwort: Nichts 🙂

Lediglich 1 .. in Worten EINE ..  Webseite konnte Google finden, die schon mal was davon gehört hatte. Zum Glück, war es die richtige.

Übersetzt meint die Fehlermeldung, daß das Programm keinen Kommunikationskanal öffnen konnte. Nur wieso nicht, darüber schweigt es sich aus. Hellseher haben halt immer Konjunktur, weil der Rest blöd genug ist, Raum für deren „Notwendigkeit“ zu schaffen. Dank der einen Webseite, war es dann aber zum Glück recht einfach, der Ursache auf die Spur zu kommen.

Auflösung

Einen „Channel“ etabliert man, in dem man einen TCP Port bindet und dem Gegenüber sagt, das man darauf angerufen werden kann. Wieso man beim „Anrufen“ nicht direkt mit dem SIP Provider eine TCP-Connection aufmachen kann, will ich gar nicht wissen, wenn man SIP lernen will, wird man eh durch Unlogik erschlagen. IMHO, eins der schlechtesten Protokolle aller Zeiten. Stückwerk ^10.

Ok, was braucht man um einen Port zu binden ? Eine Portnummer und niemanden, der schneller als man selbst war! Mit anderen Worten, Jitsi hatte sich schon permanent auf Port 5060 gebunden, weswegen Linphone das nicht konnte. Soweit, so in den RFCs für TCP Ports vorgesehen. Warum Linphone das nicht schreiben kann, ist ein weiteres Rätsel, weil die Fehlermeldung des TCP/IP Stacks zu dem „Fehler“ ist eindeutig!

Jetzt bietet LinPhone in den Kontoeinstellungen an, daß man statt Port 5060 zufällige Ports benutzen kann. Wieso das nicht der Standard ist, wird man nie erfahren. Jedenfalls funktioniert das SIP Konto sofort, wenn man die feste Portzuweisung abgeschaltet hat:

Fazit: In Jitsi habe ich jetzt SIP deaktiviert, damit entfällt auch das Binden des Ports.

Da Jitsi eh derzeit nicht mit Sipgate kann, spielt das es keine Rolle mehr. Warum das alles am Tag, an dem ich Linphone ausprobiert habe, funktioniert hat, ist ein weiteres Mysterium.

Das VOIP stinkt, dürfte vielen leidgeplagten Telefonanschlußinhabern bekannt sein, wie sehr das grade stinkt, hier im Überblick:

Skype:

Old: Raustelefonieren geht, angerufen werden geht nicht.
New: Raustelefonieren geht, Gui ist Mist, angerufen werden, geht nicht, weil sobald man „abnimmt“ legt Skype auf! Fix in Sicht ? Nein. Problem bekannt ? Seit Monaten.

Jitsi:

Fritz!box: Raus geht, Rein geht.
Sipgate: Raus geht, Rein geht nicht.

Jitsi Android:

Fritz!box: geht gar nicht.
Sipgate: Raus geht, Rein geht.

LinPhone:

Fritz!box: geht beides
Sipgate: geht beides

Einzig gültiger Kommentar zu Sipgate+Jitsi: AAAAAAAAAAAAAAAAAAAARRGGS!

Diese Woche im Netz

Clever: Generalschlüssel in AVM’s Kabelsmodems „vergessen“.

Quelle: Golem.de

Viele IT-Sicherheitslösung liefern keine Lösungen und sind komplett überflüßig. Ein IT Insider packt aus..

Quelle: Golem.de

Facebook erklärt Millionen für tod 🙂

Quelle: TheHackerNews

Wird es neue Netzwerkkabelstecker geben ?

Quelle: Golem.de

Lepraerreger bei Eichhörnchen gefunden.

Quelle: Bild der Wissenschaft

Alles was Android ist, kann mit DirtyCow gerooted werden.

Quelle: Golem.de

20% der Wahltweets im US-Wahlkampf sollen von Meinungsbildungsbots gekommen sein.

Quelle: Spektrum.de

Ein bericht über EMail.Überwachung in Deutschland.

Quelle: Golem.de

Taucher entdecken eine 1950 abgeworfene Atombombe der US-Armee.

Quelle: Focus.de

Neues TCP Protokoll sollauch gleich verschlüsseln.

Quelle: Golem.de

 

Designfehler in TCP RFC

Moin,

wer gestern und heute die News gelesen hat, der wird über den Beitrag zum TCP Fehler in Linuxkernel gestolpert sein.

Was ist passiert ?

Einigen findigen Forschern/Hackern ist es gelungen, einen Designfehler in einem per RFC vorgegebenen Standard zu finden. Damit ist es möglich eine TCP Verbinden zu beeinflussen z.b. Sie von extern zu beenden oder Daten einzuschleusen. Wählt der Angreifer das Paket günstig aus, kann er z.b. Schadcode in eine Webseite einschleusen auf dem Web von Server zum Betrachter. Er kann auch herausbekommen, ob Server A mit einer xbeliebigen anderen IP Adresse grade eine Kommunikation hat.  Was aber nicht geht ist, herauszubekommen, mit wem ein an der Verbindung beteiligter spricht, wenn man nicht genau auch der IP sucht. Mit anderen Worten, man müßte sehr viele Kombinationen durchprobieren, und zwar genau während eine Verbindung besteht.

Möglich wird das über einen festen globalen Zähler, der es durch geschicktes Ausnutzen von Datenpaketen und deren Antworten erlaubt, vorherzusehen, wie die nächste gültige Sequenznummer in einem TCP Paket aussehen wird, so daß man als Angreifer genau diese Sequenznummer benutzen kann.

Die Bewertung

Gerade bei Webseiten werden die TCP Verbindungen aber i.d.R. sehr schnell wieder geschlossen, so daß der Angreifer schon verdammt viel Glück haben muß. Interessanter sind Angriffe schon auf Downloadportale, wo die Verbindungen auch mal eine Stunde vorhanden sind, weil GBweise Daten transportiert werden. Allerdings dabei einen funktionierenden INJECT hinzubekommen, in eine unbekanntfortgeschrittene Datenübertragung, wäre praktisch unmöglich.

Der Angriffsvektor ist zwar heftig, aber muß schon genau wissen wen man angreifen will. Zufällige Besuche von IP A auf Server B beim Surfen sind also extrem unwahrscheinlich als Ziel.

Zudem kommt ein Laufzeitproblem im Netz dazu, so daß man selbst als Angreifer in der Nähe des Ziels  sein müßte, da mit jedem HOP im Netz, die Laufzeitschwankung größer wird und man ungenauere Werte ermittelt. Je ungenauer der Wert den man als Angreifer für die nächsten Sequenznummer ermittelt, desto niedriger die Erfolgsrate.

Gegenmaßnahnen

Serveranbieter, die Linux einsetzen, können jetzt einfach den globalen counter individuell hochsetzen, so daß ScriptKids, die Tools zum Injecten einsetzen werden, eine schlechte Ausgangsbasis haben. Und das geht so :

Fedora/RedHat/CentOS:

  1. echo “net.ipv4.tcp_challenge_ack_limit = 999999999”  > /etc/sysctl.d/1-tcp-challenge-ack.conf
  2.  “sysctl -p” zum Updaten der Konfiguration eingeben.

Ubuntu/Debian/Mint:

  1. Open /etc/sysctl.conf, append a command “net.ipv4.tcp_challenge_ack_limit = 999999999”.
  2. Use “sysctl -p” to update the configuration.

Ich für meinen Teil würde empfehlen, den Wert nicht auf 99999999 zusetzen, sondern den Wert per $Random zu setzen. Das verwirrt die Angreifer noch viel mehr. Und per Cronjob einmal die Minute den Randomwert ändern 😀 Dann hat man schon genau das, was den Kernelpatch später auch ausmachen wird 😀