vpn trafiğini stunnel ve 443 numaralı bağlantı noktasında SSL trafiğine benzediğinden emin olun


13

Giden ve gelen trafiğimi SSL trafiğine olabildiğince meşru göstermeye çalışıyorum. OpenVPN trafiğine değil SSL trafiğine benzediğinden emin olmak için kendi trafiğimi DPI haline getirmenin bir yolu var mı? Yapılandırma kurulumuma göre, tüm trafik SSL bağlantı noktası olan 443 numaralı bağlantı noktasını kullanıyor mu?

Yapılandırmam aşağıdaki gibidir:

Dizüstü bilgisayarda STUNNEL:

[openvpn]
# Set sTunnel to be in client mode (defaults to server)
client = yes  
# Port to locally connect to
accept = 127.0.0.1:1194  
# Remote server for sTunnel to connect to
connect = REMOTE_SERVER_IP:443

Dizüstü bilgisayarda OPENVPN CONFIG:

client
dev tun
proto tcp
remote 127.0.0.1 1194
resolv-retry infinite
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun

SUNUCU SUNUCUSU YAPILANDIRMASI:

sslVersion = all
options = NO_SSLv2
;chroot = /var/lib/stunnel4/
; PID is created inside the chroot jail
pid = /stunnel4.pid
; Debugging stuff (may useful for troubleshooting)
 debug = 7
 output = /var/log/stunnel4/stunnel4.log
setuid = root
setgid = root
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
compression = zlib
[openvpn]
accept = REMOTE_SERVER_IP:443
connect = REMOTE_SERVER_IP:11440
cert=/etc/stunnel/server.pem
key=/etc/stunnel/server.key

Sunucuda OPENVPN CONFIG:

local REMOTE_SERVER_IP
port 11440
proto tcp

VPN'lerle yeni yönleri öğrenmeye ve analiz vb.
Jason

2
Dizüstü bilgisayarınızda çalışan wireshark ile 2. soruya cevap verebilir ve muhtemelen yolda daha fazla bilgi edinebilirsiniz
Alec Istomin

Gerçekte gerçekten kullanmak istiyorsanız , TLS tünelinize ( sunucu tarafı ve istemci tarafı) basit saldırıları önlemek için TLS sıkıştırmasını devre dışı bırakmanız (CRIME nedeniyle) ve mevcut TLS protokollerinin ve kriptosuitlerin sayısını kısıtlamanız gerektiğinden değil dünya.
ysdx

SSL / TLS için diğer bağlantı noktalarını da kullanabilirsiniz. hatta SCTP ve IPv6 üzerinden yapıyorum.
Skaperen

Yanıtlar:


22

TLS üzerinden OpenVPN

VPN'niz aktarım protokolü olarak TCP kullanıyor. Stunnel örneği, TLS / TCP'deki TCP akışının içeriğini kapsüllemek için kullanılır. Bu protokol yığını alırsınız:

[IP] <------------------------> [IP]
[OpenVPN] <------------------------> [OpenVPN]
            [TLS] <~~~~~> [TLS]
[TCP] <-> [TCP] <-----> [TCP] <-> [TCP]
[IP] <-> [IP] <-----> [IP] <-> [IP]
[] [] [] []
 Sunucu stunnel stunnel İstemcisi

Stunnel örnekleri arasında tel üzerinde bu protokol yığını vardır:

[IP]
[OpenVPN]
[TLS]
[TCP (443)]
[IP]
[...]

TLS yükünü şifrelediğinde, bir saldırgan yalnızca şunları görebilir:

[??? ]
[TLS]
[TCP (443)]
[IP]
[...]

Yani evet, düz TLS trafiği (HTTP / TLS, SMTP / TLS, POP / TLS veya trafiğe bakan biri için başka bir şey olabilir, ancak 443 TCP bağlantı noktası kullanıldıkça HTTP / TLS'ye çok benziyor). Bunu wireshark kullanarak kontrol edebilirsiniz: stunnel örnekleri arasındaki trafiği kaydedin. Wireshark kullanıcı arayüzünde (akışın bir paketindeki sağ düğme) wireshark'tan trafiği TLS olarak yorumlamasını isteyebilirsiniz: TLS trafiği olarak tanıyacaktır (farklı TLS mesajlarını göreceksiniz, ancak TLS oturumunun yükünü görmeyeceksiniz) .

Modern bir tarayıcının ne yapacağına bakmak için istemcide SNI kullanmak isteyebilirsiniz . ALPN'yi de kullanmak isteyebilirsiniz , ancak stunnel şu anda bunu yapmıyor.

Yerleşik TLS'li OpenVPN

Buna karşılık, OpenVPN kullanıyorsanız, böyle bir şeye sahip olacaksınız:

[IP]
[OpenVPN]
[TCP]
[IP]
[...]

Bu şöyle görünür:

[??? ]
[OpenVPN]
[TCP]
[IP]
[...]

Yerleşik TLS katmanı (IP, Ethernet) paketlerini kapsamaz, ancak yalnızca oturumu ayarlamak ve kimlik doğrulaması için kullanılır:

[TLS]
[OpenVPN]
[TCP]
[IP]
[...]

Bu durumda, trafik yok değil düz bir TLS trafiği gibi bakmak ama besbelli OpenVPN. Bu trafiği wireshark'ta OpenVPN olarak yorumlarsanız, OpenVPN mesajlarını ve bunların içindeki TLS mesajlarını (ancak yükü değil) tanırsınız .

Uyarı

Pasif bir saldırgan, uzak sunucunuzun aslında bir OpenVPN sunucusu olduğunu söyleyemezse, aktif bir saldırganın bunu bulabileceğini bilmelidir: sadece sunucunuza TLS üzerinden bağlanarak, HTTP / TLS sunucusu olmadığını doğrulamak için . OpenVPN protokolünü konuşmaya çalışarak, sunucunuzun bir OpenVPN / TLS sunucusu olduğunu tespit edebilecektir.

İstemci kimlik doğrulaması ile TLS üzerinden OpenVPN

TLS istemci kimlik doğrulamasını etkinleştirebileceğinizden endişe duyuyorsunuz: Bir saldırgan çalışan bir TLS oturumu başlatamayacak ve TLS üzerinden hangi yükün kapsüllendiğini tahmin edemeyecektir.

* Uyarı: ** OpenVPN'deki yerleşik TLS desteğinden bahsetmiyorum (neden size yardımcı olmayacağına dair açıklama için yukarıya bakın).

Çoğullamalı OpenVPN / TLS ve HTTP / TLS

Diğer bir çözüm TLS oturumu üzerinden hem HTTP hem de OpenVPN sunmaktır. sslh , protokolün yükünü otomatik olarak algılamak ve düz bir HTTP / TCP sunucusuna veya OpenVPN / TCP sunucusuna göndermek için kullanılabilir. Sunucu standart HTTP / TLS sunucusu gibi görünecektir, ancak bu sunucuyla OpenVPN / TLS konuşmaya çalışan biri, aslında bir OpenVPN / TLS sunucusu olduğunu algılayabilecektir.

        ya OpenVPN / TCP
          veya HTTP / TCP       
[1] .---------. .------. HTTP / TCP .-------------.
-> | stunnel | ----> | sslh | -------> | HTTP sunucusu |
   '---------' '------' | '-------------'
                           | .----------------.
                           '------> | OpenVPN sunucusu |
                        OpenVPN / TCP '----------------'

[1] = OpenVPN / TLS / TCP veya HTTP / TLS / TCP

HTTP üzerinden OpenVPN TLS üzerinden CONNECT

Başka bir çözüm, standart bir HTTP / TLS sunucusu kullanmak ve OpenVPN sunucusuna bağlanmak için HTTP CONNECT / TLS kullanmaktır: standart bir HTTP sunucusu gibi görünecektir. HTTP CONNECT isteğini yetkilendirmek için istemcinin kimlik doğrulaması bile gerekebilir (kalamar bunu yapabilmelidir).

OpenVPN'de bir HTTP Proxy kullanma seçeneği vardır:

http-proxy proxy.example.com

Bunu, uzak bir HTTPS PROXY'ye bağlanan bir stunnel örneği ile birleştirebilmelisiniz:

http-proxy 127.0.0.1 8443
remote vpn.example.com

Bu protokol yığınını uygulayan:

[IP] <------------------------> [IP]
[OpenVPN] <------------------------> [OpenVPN]
            [HTTP] <-------------> [HTTP]
            [TLS] <~~~~~> [TLS]
[TCP] <-> [TCP] <-----> [TCP] <-> [TCP]
[IP] <-> [IP] <-----> [IP] <-> [IP]
[] [] [] []
 Sunucu HTTPS PROXY stunnel İstemcisi

Lütfen HTTP CONNECT yaklaşımını biraz açıklayabilir misiniz? Bunu ayarlamak için nereden bir rehber bulabilirim?
kontextify

kobtextify: OpenVPN / HTTP_CONNECT / TLS'nin olası bir uygulaması hakkında bazı ayrıntılar ekledi.
ysdx

Teşekkürler! Web sunucusu veya Squid kısmı nasıl görünürdü?
kontextify

Sanırım «acl VPN_SERVER dstdomain vpn.example.com» «acl VPN_PORT bağlantı noktaları 1194» «acl CONNECT yöntemi CONNECT» «http_access VPN_SERVER VPN_PORT CONNECT'e izin ver» «http_access tümünü reddet».
ysdx

4

ysdx'in cevabı harika ve trafiğin telde nasıl görüneceğini çok iyi açıklıyor.

Bununla birlikte, trafik analizinin uygulamaları tanımlamak için uzun bir yol kat edebileceğidir.

OpenVPN bağlantınızın kablodaki bir https bağlantısı gibi göründüğünü varsayalım, böylece bir saldırgan bayt akışını okuyamaz ve ne tür bir bağlantı olduğunu bilemez.

Tipik bir https bağlantısı çok uzun sürmeyecek. Belki tarayıcınız posta sunucunuzla bağlantıyı açık tutuyor, bilmiyorum. Genel olarak, birçok farklı uzak sunucuya nispeten kısa bağlantılar olacaktır.

OTOH, OpenVPN bağlantısı saatler veya günler boyunca yaşayabilir ve openvpn sunucusuna birçok veri gönderir.

Bağlantıyı periyodik olarak bırakarak ve yeniden başlatarak uzun ömürlü bağlantıyı azaltabilirsiniz. Bunun muhtemelen uygulama trafiğiniz için etkileri vardır, ancak uygulanabilir olabilir. Bununla birlikte, sizin ve openvpn sunucusu arasındaki çok fazla trafik paterni kamufle etmek için çok daha zor olacak.


2
Evet. Dahası, sanırım trafiğin şekline bakmak ("patlama" gibi) ve standart bir HTTP / TLS, IMAP / TLS, POP / TLS, OpenVPN / TLS ile karşılaştırmak mümkün olabilir. Belirli bir TLS trafiğini bu trafik profillerine göre sınıflandırmayı deneyebilir ve TLS bağlantınızda kapsüllenen trafik türü hakkında bir fikriniz olabilir.
ysdx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.