Bạn thường cho rằng proxy SOCKS phải chạy ngay nơi đã có quyền truy cập mạng. OpenSSH có thể đặt trình lắng nghe ở một nơi hoàn toàn khác. Chuyển tiếp động từ xa mở cổng SOCKS trên một máy chủ từ xa và khởi tạo mọi kết nối từ ứng dụng SSH cục bộ của bạn, ứng dụng này mang theo đường VPN đã được phê duyệt của laptop. Pi nhận được một proxy có giới hạn; nó không thừa hưởng đường hầm hay đặc quyền của bạn.

Trình lắng nghe và phía khởi tạo kết nối có thể khác nhau

Một ssh -D 1080 thông thường chạy trình lắng nghe trên máy của bạn và gửi các kết nối ra từ đó. Chuyển tiếp động từ xa đảo ngược điều đó: trình lắng nghe xuất hiện trên máy chủ từ xa, và mọi kết nối mà nó chấp nhận đều được mở từ phía cục bộ. hướng dẫn của ứng dụng OpenSSH ghi lại -R không có đích cố định đúng như cách bố trí SOCKS4/5 này.

Một lệnh được hỗ trợ từ laptop trông như sau, với tài khoản, các máy chủ và cổng được coi là chỗ giữ chỗ:

ssh -NT -S none -o ExitOnForwardFailure=yes \
  -o PermitRemoteOpen=app.corp.example:443 \
  -R 1080 [email protected]

Ba chi tiết làm công việc hữu ích ở đó. -S none giữ phiên tránh xa một master điều khiển dùng chung, ExitOnForwardFailure thất bại nhanh thay vì để bạn với một phiên nửa mở, và PermitRemoteOpen giới hạn những gì trình lắng nghe từ xa có thể với tới. Hãy dùng một tài khoản Pi được cấp quyền và xác minh khóa của máy chủ trước khi thêm bất kỳ điều nào trong số này.

Trình lắng nghe từ xa thực sự phơi bày điều gì

Kiểm tra chính sách chuyển tiếp của máy chủ trước khi dựa vào trình lắng nghe. Với GatewayPorts no chuyển tiếp từ xa vẫn bị ràng buộc vào loopback, và đó là mức phơi bày bạn muốn. Một máy chủ được cấu hình để buộc chuyển tiếp bằng ký tự đại diện sẽ công bố cùng cổng đó trên mọi giao diện, biến một proxy cá nhân thành thứ mà mạng cục bộ có thể với tới.

Loopback cũng không phải ranh giới theo người dùng. Một tiến trình khác trên Pi có thể kết nối tới 127.0.0.1:1080 nếu biết cổng, nên các tài khoản cục bộ của Pi và mọi thứ chạy trên đó là một phần trong thiết kế truy cập của bạn. Đó là lý do để giữ danh sách đích hẹp, không phải lý do để bỏ qua bước kiểm tra chính sách.

Hãy giữ đích được phép thật cụ thể cho ứng dụng mà bạn đang cố với tới. Thay nó bằng chuyển tiếp không giới hạn để một chương trình không liên quan hoạt động sẽ mở rộng đường đi vượt xa vấn đề bạn bắt đầu. Danh sách đích cũng ghi lại phiên dùng để làm gì, điều này giúp người kiểm toán sau này. Hãy ghi nó bên cạnh tài khoản bạn đã dùng.

Đưa một ứng dụng đi qua proxy

Một ứng dụng trên Pi hiểu proxy sau đó có thể gửi yêu cầu. Tiền tố socks5h giao tên đích cho proxy, nên việc tra cứu và kết nối đều diễn ra ở phía laptop, và nó khớp với đích được đặt tên trong PermitRemoteOpen:

curl --proxy socks5h://127.0.0.1:1080 \
  --noproxy '' https://app.corp.example/

Giữ nguyên việc xác thực chứng chỉ thông thường và xác thực riêng của ứng dụng. Proxy thay đổi nơi kết nối TCP được tạo; nó không làm cho một dịch vụ không xác thực trở nên an toàn và không biến một điểm cuối tự ký thành điểm cuối đáng tin.

Laptop vẫn cần tuyến đường riêng và quyền truy cập trình phân giải cho cả máy chủ SSH lẫn ứng dụng. Lưu lượng của ứng dụng SSH trên đó phải được chọn bởi chính sách VPN đã phê duyệt, và một ngoại lệ split-tunnel có thể đẩy lưu lượng đó đi theo đường khác với đường bạn đã kiểm tra.

Chứng minh đường đi và đóng lại

Xác nhận rằng trình lắng nghe tồn tại ở nơi bạn mong đợi và chỉ có đích dự định trả lời:

$ ss -ltnp | grep 1080
LISTEN 0 128 127.0.0.1:1080 0.0.0.0:*
$ curl -sS -o /dev/null -w '%{http_code}\n' \
    --proxy socks5h://127.0.0.1:1080 https://app.corp.example/

ExitOnForwardFailure có thể chứng minh chuyển tiếp đã được thiết lập, và vẫn không thể chứng nhận rằng việc đăng nhập vào ứng dụng thành công ở phía sau. Hãy kiểm tra ứng dụng, không chỉ cổng. Một trình lắng nghe chấp nhận rồi làm hỏng mọi yêu cầu thường có nghĩa là tên đích hoặc tuyến đường của laptop sai, không phải đường hầm đã hỏng.

Cách bố trí này chỉ mang TCP. UDP, ICMP và các chương trình phớt lờ cài đặt proxy nằm ngoài nó, và chuyển tiếp kết thúc ngay khi phiên SSH kết thúc. Hãy dừng phiên đó khi xong và gỡ cài đặt proxy mà bạn đã thêm vào ứng dụng.

Để truy cập lâu dài, hãy dùng thay vào đó việc đăng ký được chủ mạng hỗ trợ hoặc một cổng được quản lý. Proxy ngược là công cụ sai để lẩn tránh các hạn chế về thiết bị hoặc tài nguyên của VPN; dùng bên trong những hạn chế đó, nó chỉ đơn thuần là một đường ứng dụng được cấp quyền với giới hạn rõ ràng.

Bài viết liên quan