lưu lượng truy cập vpn và đảm bảo nó giống như lưu lượng SSL trên cổng 443


13

Tôi đang cố gắng làm cho lưu lượng truy cập đi và đến của mình trông hợp pháp nhất gần với lưu lượng SSL nhất có thể. Có cách nào để DPI lưu lượng truy cập của riêng tôi để đảm bảo nó trông giống lưu lượng SSL và không phải lưu lượng OpenVPN không? Và dựa trên thiết lập cấu hình của tôi, tất cả lưu lượng truy cập có sử dụng cổng 443 là cổng SSL không?

Cấu hình của tôi như sau:

STUNNEL trên máy tính xách tay:

[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

OPENVPN CONFIG TRÊN máy tính xách tay:

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

XÁC NHẬN CONFIG TRÊN MÁY CHỦ:

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

OPENVPN CONFIG trên máy chủ:

local REMOTE_SERVER_IP
port 11440
proto tcp

Cố gắng tìm hiểu các khía cạnh mới với VPN và hiểu các giao thức mạng cùng với phân tích ...
Jason

2
Bạn có thể trả lời câu hỏi thứ 2 với wireshark đang chạy trên máy tính xách tay của bạn và có thể tìm hiểu thêm rất nhiều trên đường
Alec Istomin

Không phải là bạn có thể nên tắt tính năng nén TLS (vì CRIME) và hạn chế số lượng giao thức TLS và tiền điện tử có thể tránh được các cuộc tấn công đơn giản vào đường hầm TLS của bạn ( phía máy chủ và phía máy khách) nếu bạn thực sự muốn sử dụng điều này trong thực tế thế giới.
ysdx

bạn có thể sử dụng các cổng khác cho SSL / TLS. tôi thậm chí còn làm điều đó qua SCTP và IPv6.
Skaperen

Câu trả lời:


22

OpenVPN qua TLS

VPN của bạn đang sử dụng TCP làm giao thức vận chuyển. Ví dụ stunnel được sử dụng để đóng gói nội dung của luồng TCP trong TLS / TCP. Bạn nhận được ngăn xếp giao thức này:

[IP] <------------------------> [IP]
[OpenVPN] <------------------------> [OpenVPN]
            [TLS] <~~~~~> [TLS]
[TCP] <-> [TCP] <-----> [TCP] <-> [TCP]
[IP] <-> [IP] <-----> [IP] <-> [IP]
[] [] [] []
 Máy chủ stunnel Máy khách

Giữa các trường hợp stunnel bạn có ngăn xếp giao thức này trên dây:

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

Khi TLS mã hóa tải trọng của nó, kẻ tấn công chỉ có thể thấy:

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

Vì vậy, có, đó là lưu lượng TLS đơn giản (có thể là HTTP / TLS, SMTP / TLS, POP / TLS hoặc bất cứ thứ gì khác cho ai đó đang xem lưu lượng nhưng nó trông rất giống HTTP / TLS khi cổng TCP 443 được sử dụng). Bạn có thể kiểm tra điều này bằng cách sử dụng wireshark: ghi lại lưu lượng giữa các trường hợp stunnel. Trong UI của wireshark (nút bên phải trên một gói của luồng), bạn có thể yêu cầu wireshark diễn giải lưu lượng là TLS: nó sẽ nhận ra đó là lưu lượng TLS (bạn sẽ thấy các thông báo TLS khác nhau nhưng không phải là tải trọng của phiên TLS) .

Bạn có thể muốn sử dụng SNI trong máy khách để trông giống như những gì một trình duyệt hiện đại sẽ làm. Bạn cũng có thể muốn sử dụng ALPN nhưng stunnel hiện không xử lý được điều đó.

OpenVPN với TLS dựng sẵn

So sánh, nếu bạn đang sử dụng OpenVPN, bạn sẽ có một cái gì đó như thế này:

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

Trông như thế này:

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

Lớp TLS dựng sẵn không gói gọn các gói (IP, Ethernet) mà chỉ được sử dụng để thiết lập phiên và xác thực:

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

Trong trường hợp này, lưu lượng truy cập của bạn không giống như lưu lượng TLS đơn giản nhưng rõ ràng là OpenVPN. Nếu bạn diễn giải lưu lượng này là OpenVPN trong wireshark, bạn sẽ nhận ra các thông điệp OpenVPN và bên trong chúng là các thông báo TLS (nhưng không phải là tải trọng).

Cảnh báo

Bạn nên lưu ý rằng nếu kẻ tấn công thụ động sẽ không thể nói rằng máy chủ từ xa của bạn thực tế là máy chủ OpenVPN, kẻ tấn công đang hoạt động sẽ có thể tìm ra điều này: chỉ cần kết nối với máy chủ của bạn qua TLS, anh ta sẽ có thể để xác nhận rằng đó không phải là máy chủ HTTP / TLS. Bằng cách cố gắng nói giao thức OpenVPN, anh ta sẽ có thể phát hiện ra rằng máy chủ của bạn là máy chủ OpenVPN / TLS.

OpenVPN qua TLS với xác thực ứng dụng khách

Bạn lo lắng về điều này, bạn có thể kích hoạt xác thực ứng dụng khách TLS: kẻ tấn công sẽ không thể bắt đầu phiên TLS hoạt động và sẽ không thể đoán được tải trọng nào được gói trong TLS.

* Cảnh báo: ** Tôi không nói về hỗ trợ TLS dựng sẵn trong OpenVPN (xem bên trên để biết giải thích về lý do tại sao nó không giúp bạn).

OpenVPN / TLS và HTTP / TLS đa kênh

Một giải pháp khác là phục vụ cả HTTP và OpenVPN qua phiên TLS. sslh có thể được sử dụng để tự động phát hiện tải trọng của giao thức và gửi đến máy chủ HTTP / TCP đơn giản hoặc máy chủ OpenVPN / TCP của bạn. Máy chủ sẽ trông giống như máy chủ HTTP / TLS tiêu chuẩn nhưng ai đó đang cố gắng nói OpenVPN / TLS với máy chủ này sẽ có thể phát hiện ra rằng trên thực tế nó cũng là máy chủ OpenVPN / TLS.

        hoặc OpenVPN / TCP
          hoặc HTTP / TCP       
[1] .---------. .------. HTTP / TCP .-------------.
-> | choáng | ----> | sslh | -------> | Máy chủ HTTP |
   '---------' '------' | '-------------'
                           | .----------------.
                           '------> | Máy chủ OpenVPN |
                        OpenVPN / TCP '----------------'

[1] = Hoặc OpenVPN / TLS / TCP hoặc HTTP / TLS / TCP

OpenVPN qua HTTP KẾT NỐI qua TLS

Một giải pháp khác là sử dụng máy chủ HTTP / TLS tiêu chuẩn và sử dụng HTTP CONNECT / TLS để kết nối với máy chủ OpenVPN: nó sẽ trông giống như một máy chủ HTTP tiêu chuẩn. Bạn thậm chí có thể yêu cầu xác thực ứng dụng khách để ủy quyền cho yêu cầu HTTP CONNECT (mực sẽ có thể thực hiện việc này).

OpenVPN có một tùy chọn để sử dụng Proxy HTTP:

http-proxy proxy.example.com

Bạn sẽ có thể kết hợp điều này với một cá thể stunnel kết nối với HTTPS PROXY từ xa:

http-proxy 127.0.0.1 8443
remote vpn.example.com

Mà sẽ thực hiện ngăn xếp giao thức này:

[IP] <------------------------> [IP]
[OpenVPN] <------------------------> [OpenVPN]
            [HTTP] <-------------> [HTTP]
            [TLS] <~~~~~> [TLS]
[TCP] <-> [TCP] <-----> [TCP] <-> [TCP]
[IP] <-> [IP] <-----> [IP] <-> [IP]
[] [] [] []
 Máy chủ stunnel HTTPS PROXY

Bạn có thể giải thích về cách tiếp cận HTTP CONNECT không? Tôi có thể tìm thấy một hướng dẫn để thiết lập điều này ở đâu?
kontextify

kussyextify: đã thêm một số chi tiết về khả năng triển khai OpenVPN / HTTP_CONNECT / TLS.
ysdx

Cảm ơn! Máy chủ web hoặc phần Mực sẽ trông như thế nào?
kontextify

Tôi đoán một số thứ như «acl VPN_SERVER dstdomain vpn.example.com» «acl VPN_PORT cổng 1194» «acl Phương pháp CONNECT CONNECT» «http_access cho phép VPN_SERVER VPN_PORT CONNECT» «http_access từ chối tất cả».
ysdx

4

Câu trả lời của ysdx rất hay và mô tả rất rõ giao thông sẽ trông như thế nào trên dây.

Tuy nhiên, điều chưa được đề cập là phân tích lưu lượng có thể đi một chặng đường dài để xác định các ứng dụng.

Giả sử rằng kết nối OpenVPN của bạn trông giống như kết nối https trên dây, vì vậy kẻ tấn công không thể đọc luồng byte và biết đó là loại kết nối nào.

Một kết nối https thông thường sẽ không tồn tại quá lâu. Có thể trình duyệt của bạn giữ kết nối mở với máy chủ thư của bạn, tôi không biết. Nhìn chung, sẽ có rất nhiều kết nối tương đối ngắn đến rất nhiều máy chủ từ xa đa dạng.

OTOH, kết nối OpenVPN có thể tồn tại hàng giờ hoặc nhiều ngày và sẽ gửi rất nhiều dữ liệu qua lại cho máy chủ openvpn.

Bạn có thể giảm thiểu kết nối lâu dài bằng cách định kỳ thả và khởi động lại kết nối. Điều này có lẽ có ý nghĩa đối với lưu lượng ứng dụng của bạn, nhưng có thể khả thi. Tuy nhiên, mô hình của rất nhiều lưu lượng truy cập giữa bạn và máy chủ openvpn sẽ khó ngụy trang hơn rất nhiều.


2
Đúng. Hơn nữa, tôi đoán có thể nhìn vào hình dạng của lưu lượng truy cập (chẳng hạn như "độ bùng nổ" của nó) và so sánh nó với HTTP / TLS, IMAP / TLS, POP / TLS, OpenVPN / TLS tiêu chuẩn. Bạn có thể cố gắng phân loại lưu lượng truy cập TLS nhất định với các cấu hình lưu lượng truy cập đó và có ý tưởng về loại lưu lượng được gói gọn trong kết nối TLS của bạn.
ysdx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.