Truyền SSH qua HTTPS
- Để truyền SSH qua HTTPS, cần điều chỉnh cả phía client lẫn server.
- Trong ví dụ cấu hình client, thiết lập
ProxyCommand và ServerAliveInterval trong tệp ~/.ssh/config.
- Script
~/.ssh/https-tunnel.bash được sử dụng tạo kết nối TLS bằng socat đồng thời gửi phương thức CONNECT trong phần header.
Ví dụ cấu hình server
- Trong cấu hình máy chủ HTTPS Apache2, nạp
proxy_connect_module và dùng chỉ thị AllowCONNECT để cho phép sử dụng phương thức HTTP CONNECT tới các đích cụ thể.
- Ở phía server, cấu hình để trên
https-server chỉ cho phép dùng phương thức CONNECT dành cho duy nhất host đích ssh-server.
Bối cảnh
- Trong lúc ở lại bệnh viện, tác giả muốn làm việc từ xa thông qua Wi-Fi của bệnh viện, nơi hầu hết các kiểu kết nối đều bị chặn.
- Mạng của bệnh viện chỉ cho phép kết nối HTTP và HTTPS, còn SSH thì bị chặn hoàn toàn.
- Tác giả tìm cách truyền SSH qua HTTP hoặc HTTPS.
Các cách khả thi
- Dự án
sslh, cho phép đồng lưu trữ giao thức SSH và HTTPS trên một cổng duy nhất rồi phân phối một cách trong suốt.
sslh không bọc một giao thức vào trong giao thức khác mà dùng nhiều heuristic khác nhau để chuyển hướng tới backend thực tế.
- Cách dùng chỉ thị
ProxyCommand của openssh để bọc hoàn toàn giao thức SSH vào trong một giao thức khác.
SSH over HTTP
- Để thử nghiệm SSH over HTTP đơn giản, cấu hình Apache2 để cho phép phương thức
CONNECT với đích duy nhất ssh-server:22.
- Phía client có thể điều chỉnh dễ dàng bằng
socat.
- Dùng
ServerAliveInterval để kết nối HTTP không bị ngắt ngay cả khi ở trạng thái nhàn rỗi.
SSH over HTTPS
socat không hỗ trợ HTTPS proxy nhưng có hỗ trợ đóng gói TLS.
- Có thể tự triển khai khá dễ phương pháp dựa trên
CONNECT.
- Sử dụng script
~/.ssh/https-tunnel.bash để triển khai đường hầm SSH over HTTPS.
Kết luận
- Sự hiện diện phổ biến của HTTPS cho phép truyền dữ liệu qua các thiết bị trung gian bị giới hạn rất chặt chẽ.
- Phương thức
CONNECT là một mẹo hữu ích để bọc luồng payload TCP vào luồng host TLS.
ServerAliveInterval được dùng để duy trì kết nối trên các lớp truyền tải bên dưới vốn không thân thiện với kết nối nhàn rỗi.
Ý kiến của GN⁺
- Điểm quan trọng nhất của bài viết này là đã đưa ra một giải pháp sáng tạo giúp có thể kết nối SSH ngay cả trong môi trường mạng bị hạn chế.
- Cách kết hợp SSH và HTTPS có thể đặc biệt thú vị với những người có kiến thức chuyên môn về bảo mật mạng.
- Cách vượt qua các giới hạn mạng bằng thiết lập
ProxyCommand và ServerAliveInterval cung cấp thông tin hữu ích cho quản trị viên mạng hoặc chuyên gia bảo mật.
1 bình luận
Ý kiến Hacker News