Proxy mit ssh für TLS

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
Benutzeravatar
Tintom
Beiträge: 2035
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Proxy mit ssh für TLS

Beitrag von Tintom » 08.10.2020 13:48:39

Hallo zusammen,
ich habe einen managed vServer, bei dem eine Nextcloud-Instanz läuft. Auf die Software des Servers und dessen Konfiguration habe ich keinen Einfluss und muss das nehmen was angeboten wird. Ich nutze den vServer u.a. zur Synchronisation meiner Termine und Kontakte auf dem Smartphone. Mein Smartphone ist relativ alt (Android-Version 4.3), ich benutze es nur noch zum Telefonieren und eben die Synchronisation von Terminen und Kontakten.
Nun gab es ein Systemupgrade des vServers und in Folge dessen wurde die Unterstützung für unsichere Protokolle rausgekickt. In der Folge heißt das, der vServer aktzeptiert nur noch TLS ≥ v. 1.2. Damit hat mein Smartphone aber Probleme, ich bekomme bei der Synchronisierung mit der Nextcloud-Instanz Fehler beim SSL-Handshake (Fehlermeldung kann ich bei Bedarf nachliefern). Zur Synchronisation verwende ich auf dem Telefon die App davdroid (heißt heute Davx5 soweit ich weiß) in der Version 1.9.2 (neue Versionen lassen sich nicht mehr installieren).
Ich möchte beides, also Telefon und vServer, gerne weiter nutzen und habe mir nun überlegt, den Datenverkehr des Smartphones über einen Debian-Rechner (home) zu leiten. Ich will dazu dem Telefon einen chroot verpassen und dann mittels ssh eine Verbindung an den heimischen Rechner herzustellen, der als Proxy fungieren soll. So stelle ich mir das vor:

Code: Alles auswählen

# [vServer] #
# TLS ≥ 1.2 #<‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒
      |                                            |
      ⚡                                            |
      |                                            |
      |                                            ∇
#[Android 4.3]#                               # [home] #
#  TLS < 1.2  # ‒‒ ssh -D <Port> user@home ‒‒ # Debian #
Meine Frage: Kann ich das wie dargestellt mit ssh so umsetzen, dass die unterschiedlichen Protokollversionen zwischen Telefon und vServer „übersetzt“ werden? Oder brauche ich einen „richtigen“ Proxyserver? Oder gar ganz etwas anderes?

uname
Beiträge: 10199
Registriert: 03.06.2008 09:33:02

Re: Proxy mit ssh für TLS

Beitrag von uname » 09.10.2020 12:18:24

Also SSH hat mit HTTPS gar nichts zu tun. Was du brauchst wäre eher ein HTTP-Proxy wie Squid, wobei
a.) ich nicht weiß ob dein Termine- und Kontakte-App damit überhaupt klar kommt (eher nicht)
b.) TLS ist eigentlich Ende-zu-Ende (Client über Proxy zum Server) und damit ist das Problem immer noch da

Ich schlag mal folgendes vor:
a.) neues Smartphone
b.) neue Software auf den Smartphone, welche mit dem TLS-Standard umgehen kann (freies Android-Release)
c.) Zugriff auf die Nextcloud ohne HTTPS also nur mit HTTP erlauben (kannst du irgendwo konfigurieren, sofern du die Nextcloud konfigurieren darfst)

c.) ist sehr komisch. Etwas veraltete TLS-Protokolle werden mit aller Gewalt verboten, unverschlüsselte Verbindungen jedoch nicht.
Wegen der Sicherheit würde ich mir weniger Sorgen machen. Dein Smartphone ist so alt, da kommt es auf die unverschlüsselte Verbindung auch nicht mehr an.

eggy
Beiträge: 2315
Registriert: 10.05.2008 11:23:50

Re: Proxy mit ssh für TLS

Beitrag von eggy » 09.10.2020 15:58:25

@Tintom: könnte sein, dass man das mit haproxy hinbekommt, hab ich aber noch nicht versucht und kann dazu keine weiteren sachdienlichen Hinweise geben. Und mitmproxy wäre wohl das nächste Tool, dem ich sowas mit überschaubarem Aufwand zutrauen würde. Gib mal bitte Bescheid, was funktioniert hat und was nicht, das Thema interessiert mich auch, hab aber grade nicht die Zeit mich da selbst nochmal in Ruhe umzusehen. Machbar ist das alles sicher, ob sinnvoll, steht auf nem anderen Blatt.

wanne
Moderator
Beiträge: 6609
Registriert: 24.05.2010 12:39:42

Re: Proxy mit ssh für TLS

Beitrag von wanne » 13.10.2020 03:52:46

Android 4.3 kann prinzipiell TLS 1.2 es muss lediglich eingeschaltet werden.
Das müsste etwa so aussehen:

Code: Alles auswählen

 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
socket.setEnabledProtocols(new String[]{TLS_v1_1, TLS_v1_2});
}
Ich weiß nicht, was das für ne App ist, mit der du syncronisierst. Aber wenn die OpenSource ist, kannst du eventuell mal fragen, ob sie die 3 Zeilen einbauen um Android 4.X zu supporten.
Sonst würde mich die Fehlermeldung intersessieren.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Tintom
Beiträge: 2035
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Proxy mit ssh für TLS

Beitrag von Tintom » 13.10.2020 23:25:57

Danke für eure Antworten!
c.) Zugriff auf die Nextcloud ohne HTTPS also nur mit HTTP erlauben (kannst du irgendwo konfigurieren, sofern du die Nextcloud konfigurieren darfst)
c.) ist sehr komisch. Etwas veraltete TLS-Protokolle werden mit aller Gewalt verboten, unverschlüsselte Verbindungen jedoch nicht.
Mit der Nextcloud-Instanz kann ich nur per https kommunizieren, unverschlüsselte http-Verbindungen werden automatisch auf https umgeleitet. Das passiert anscheinend auf Serverebene, die .htaccess im Webroot sowie die .htaccess der Nextcloud haben da keine Weiterleitungen eingebaut.

Bevor ich es mit Proxies versuche will ich erstmal versuchen vielleicht doch noch die App zum Funktionieren zu überreden.

Ich verwende davdroid in der Version 1.9.2. Die nächsthöhere Version braucht mind. API-Level 19 (Android 4.4), aktuell verlangt die App Level 21 (Android 5). Ich unterstelle jetzt einfach mal der Entwickler weiß was er tut und setzt den String minSDKVersion nicht aus blinder Versionitis hoch. Ich erwarte daher wenig Interesse seitens des Entwicklers um sich auf eine veraltete Version, die auf einem veralteten Telefon läuft zu fokussieren, daher möchte ich versuchen das hier zu lösen.

Nach wannes Hinweis habe ich mir mal den Quellcode angeschaut (https://gitlab.com/bitfireAT/davx5-ose/-/tree/v1.9.2). Da finde ich in der Datei SSLSocketFactoryCompat.kt Hinweise, dass TLS 1.2 eigentlich unterstützt werden sollte (https://gitlab.com/bitfireAT/davx5-ose/ ... .kt#L58-74). Ich habe darauf den Support des vServer-Anbieters angeschrieben und um Info hinsichtlich der eingestellten Parameter für SSL gebeten. Die Antwort war folgende:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
ssl_ecdh_curve secp384r1:prime256v1


Wenn ich das nun mit der o.g. Datei vergleiche sehe ich da ein paar Übereinstimmungen, Server und Client sollten also die gleiche Sprache sprechen. Sie tun es aber anscheinend nicht, das Log habe ich auf nopaste geladen: NoPaste-Eintrag41165


Habt ihr noch Ideen?

wanne
Moderator
Beiträge: 6609
Registriert: 24.05.2010 12:39:42

Re: Proxy mit ssh für TLS

Beitrag von wanne » 14.10.2020 08:47:52

Die android logs sind leider nicht aussagefähig. Lustigerweise sendet der Client eine ausführlichere Fehlermeldung an den Server. (Die man mit Wireshark abfangen kann.)
Wenn ich das nun mit der o.g. Datei vergleiche sehe ich da ein paar Übereinstimmungen, Server und Client sollten also die gleiche Sprache sprechen.
Nein. Der Server kann entweder SHA256 oder SHA384 als MAC. Du kannst nur MD5 und SHA1.
Leider wird man da vermutlich wenig machen können. Support gibt sofort ne schlechte Note bei Qualys obwohl es die Sicherheit für neue Clients nicht verschlechtert. (Die Aushandlung welcher MAC und welche Verschlüsslung genommen wird passiert, wie die Aushandlung der Keys per RSA-Signatur wer die fälschen kann um den Cipher zu ändern kann auch die Keys ändern und jede noch so gute Verschlüsslung ist nutzlos wenn man bestimmen kann, welcher Key genutzt wird...)

Die Argumentation von Qualys ist, dass du als Serverbetreiber keinen sicheren Betrieb garantieren kannst, wenn du auch grottige Clienten zulässt. Und das man die deswegen ausschließen muss.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Tintom
Beiträge: 2035
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Proxy mit ssh für TLS

Beitrag von Tintom » 18.10.2020 13:49:18

Kurzes Zwischenfazit: Android und ich werden keine dicken Freunde mehr.
Ich dachte, bevor ich mit wireshark auf die Suche gehe, versuche ich die App selbst zu bauen. Meine Vermutung ist, wenn ich hier hier "TLS" mit "TLSv1.2" ersetze, könnte der Verbindungsaufbau funktionieren. Aber nach zwei Tagen mit Android Studio bekomme ich die App immer noch nicht gebaut. Ich muss dazu sagen, dass ich vom Android Bauprozess für Apps oder Java absolut keine Ahnung habe. Nun breche ich meine Versuche mit Android Studio ab, die Fehlermeldungen geben keine passenden Treffer mehr bei der Suchmaschine zurück.

wanne
Moderator
Beiträge: 6609
Registriert: 24.05.2010 12:39:42

Re: Proxy mit ssh für TLS

Beitrag von wanne » 20.10.2020 17:37:19

Tintom hat geschrieben: ↑ zum Beitrag ↑
18.10.2020 13:49:18
Meine Vermutung ist, wenn ich hier hier "TLS" mit "TLSv1.2" ersetze, könnte der Verbindungsaufbau funktionieren.
Nein. Damit würdest du nur TLS1.0 und TLS1.1 abschalten, wenn ich das richtig sehe.
Tintom hat geschrieben: ↑ zum Beitrag ↑
18.10.2020 13:49:18
Ich muss dazu sagen, dass ich vom Android Bauprozess für Apps oder Java absolut keine Ahnung habe.
Die Anwendung ist in Kotlin nicht (wie die meisten anderen Android-Apps) in Java.
Die scheinen sich da aber schon ziemlich Arbeit zu machen, für ältere Handys. (Da läuft wahrscheinlich TLS 1.2. Du kannst da mal mit adb im Log nachschauen.) Problem bleibt, dass dein Handy halt kein SHA2 kann. Dein Serveranbieter aber ausschließlich ciphers mit SHA2 supported.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Tintom
Beiträge: 2035
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Proxy mit ssh für TLS

Beitrag von Tintom » 20.10.2020 22:44:00

Danke für deine Rückmeldung!
Ich denke, dass ich da etwas falsch verstanden habe. Wenn du sagst
wanne hat geschrieben: ↑ zum Beitrag ↑
20.10.2020 17:37:19
Problem bleibt, dass dein Handy halt kein SHA2 kann. Dein Serveranbieter aber ausschließlich ciphers mit SHA2 supported.
Wo siehst du das?
Wenn ich mir die Ciphers von Serverkonfiguration und Quellcode anschaue, dann sehe ich z.B.:
Server: ECDHE-RSA-AES256-GCM-SHA384
Client: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

oder
Server: ECDHE-RSA-AES128-GCM-SHA256
Client: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

Sind die dann nicht identisch?

Mein Eindruck war dann, wenn Server und Client die gleichen Ciphern beherrschen, gibt es beim Aushandeln der TLS-Version anscheinend einen Fehler. Deshalb wollte ich im Quellcode TLSv1.2 erzwingen. Vielleicht ist mein Gedanke aber auch komplett abwegig. Ich werde jetzt eine VM aufsetzen und versuchen die Situation dann nachzustellen. Die Logs von adb geben übrigens keine weiteren Informationen als die bislang bekannten.

wanne
Moderator
Beiträge: 6609
Registriert: 24.05.2010 12:39:42

Re: Proxy mit ssh für TLS

Beitrag von wanne » 21.10.2020 00:08:37

Wo siehst du das?
Wenn ich mir die Ciphers von Serverkonfiguration und Quellcode anschaue, dann sehe ich z.B.:
Im Quellcode mag der Name wohl stehen. Dein Android lernt das deswegen noch lange nicht... Die haben da eine Whiteliste von Ciphern, die sie aktivieren, wenn sie vorhanden sind.
Android 4.3 kann wohl:

Code: Alles auswählen

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)  
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) 
TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA (0xc022)  
TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA (0xc021) 
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39)  
TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x38) 
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA (0xc00f)
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA (0xc005)  
TLS_RSA_WITH_AES_256_CBC_SHA (0x35)
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) 
TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA (0xc01c) 
TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA (0xc01b) 
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x16) 
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x13) 
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA (0xc00d) 
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc003) 
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) 
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) 
TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA (0xc01f) 
TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA (0xc01e) 
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33) 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x32) 
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA (0xc00e) 
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA (0xc004) 
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 
TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)  
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)  
TLS_ECDH_RSA_WITH_RC4_128_SHA (0xc00c)  
TLS_ECDH_ECDSA_WITH_RC4_128_SHA (0xc002)  
TLS_RSA_WITH_RC4_128_SHA (0x5)  
TLS_RSA_WITH_RC4_128_MD5 (0x4)
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x88)
TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA (0x87)
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x45)
TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA (0x44)
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x84)
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x41)
Kruzt du das mit der List von davdroid bleibt da das übrig:

Code: Alles auswählen

TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) 
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 
TLS_RSA_WITH_AES_256_CBC_SHA (0x35)
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) 
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) 
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
Tintom
Beiträge: 2035
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Proxy mit ssh für TLS

Beitrag von Tintom » 21.10.2020 08:53:03

Alles klar, danke!

Antworten