Giả định:
Người phục vụ:
- Tôi có máy chủ Debian Squeeze, có thể định tuyến trên Internet công cộng, với địa chỉ IPv4 tĩnh.
- Tôi có quyền truy cập không hạn chế để sửa đổi phần mềm trên máy chủ.
- Máy chủ có thể lắng nghe trên các cổng tùy ý, cấu hình lại các quy tắc tường lửa, về cơ bản không có hạn chế nào về những gì máy chủ có thể được thực hiện.
Khách hàng:
- Tôi có thể chạy Firefox, chương trình Java, chương trình .NET và một số tệp thực thi gốc không yêu cầu quyền truy cập của quản trị viên trên hệ thống cục bộ của tôi (máy tính để bàn Windows bị khóa không có quyền quản trị).
- Tôi có thể cài đặt Addons vào Firefox.
- Tôi có thể nghe trên bất kỳ cổng nào trên
localhost
giao diện loopback ( ). Vì vậy, các chương trình nói trên có thể liên kết với một cổng cục bộ và thực hiện I / O mạng tùy ý mà không cần thông qua proxy. - Tất cả các truy cập Internet công cộng được định tuyến thông qua proxy HTTP hạn chế chặn nhiều trang web và kiểm tra trạng thái cẩn thận. Trên cổng 80, nó cho phép độc quyền HTTP (không có TLS / SSL). Trên cổng 443, nó cho phép
CONNECT
SSL / TLS dựa trên các máy chủ từ xa không bị chặn bởi tên miền / địa chỉ IP. - Proxy HTTP hạn chế không thực hiện kiểm tra gói sâu các kết nối TLS được phép thông qua proxy và nó không thực hiện các cuộc tấn công Man in the Middle vào các kết nối đó.
- Máy chủ được đề cập ở trên mà tôi có quyền truy cập, không bị chặn bởi proxy.
Mục tiêu:
Tôi muốn định tuyến tất cả các yêu cầu HTTP và HTTPS do Firefox phát ra, thông qua máy chủ ở trên, qua SSL / TLS.
Các ghi chú khác về "Mục tiêu":
- Ngay cả khi trang web điểm cuối (ví dụ
http://superuser.com
:) không sử dụng SSL / TLS cho máy chủ của tôi, tôi vẫn muốn sử dụng SSL / TLS từ máy khách của mình đến máy chủ của mình và để máy chủ của tôi thực hiện yêu cầu HTTP - dù được mã hóa hay không - - đến đích mong muốn của tôi. - Tôi không quan tâm nếu máy chủ của tôi đang xem lưu lượng SSL "rõ ràng". Nói cách khác, tôi không yêu cầu mã hóa SSL đầu cuối đầy đủ từ máy khách cục bộ của mình, tất cả các cách đến máy chủ từ xa, nếu máy chủ từ xa đang được truy cập bởi vd
https://google.com
. Nói cách khác, tôi tin tưởng máy chủ sẽ giữ bí mật dữ liệu của tôi. - Tôi sẵn sàng cài đặt bất kỳ phần mềm hoặc addon Firefox nào không yêu cầu quyền quản trị và có thể chạy trên Windows 7 32 bit.
- Phần mềm nguồn mở được ưu tiên hơn sở hữu độc quyền và phần mềm miễn phí được ưu tiên hơn phần mềm yêu cầu phí giấy phép.
- Phần mềm hiện có được ưu tiên hơn là phải mã hóa phần mềm mới, mặc dù tôi sẵn sàng viết mã nếu đó là cách duy nhất.
Tôi đang tìm kiếm một "giải pháp" được mô tả một cách lỏng lẻo mô tả:
- Phần mềm nào sẽ được yêu cầu trên máy khách? Nếu có một gói phần mềm cụ thể mà bạn biết, hãy đặt tên cho nó; mặt khác, mô tả những gì phần mềm máy khách sẽ phải làm .
- Phần mềm nào sẽ được yêu cầu trên máy chủ? Nếu có một gói phần mềm cụ thể mà bạn biết, hãy đặt tên cho nó; mặt khác, mô tả những gì phần mềm máy chủ sẽ phải làm .
- Nếu bạn đặt tên cho các gói phần mềm cụ thể ở trên, hãy mô tả các tham số cấu hình nào sẽ cần thiết để thiết lập nó để đáp ứng mục tiêu của tôi.
- Nếu vì lý do nào đó bạn tin rằng điều này là không thể , hãy mô tả lý do tại sao .
Những điều tôi đã thử mà không làm việc
- Cài đặt
squid
trên máy chủ của mình, tôi đã cố gắng thiết lập proxy HTTP tiêu chuẩn của riêng mình trên máy chủ của mình. Điều này không thành công, bởi vì khi tôi yêu cầu các trang web trong Firefox qua HTTP thông thường, Firefox cũng cố gắng truy cập máy chủ của tôi qua HTTP thông thường! Điều này không được chấp nhận, vì tất nhiên proxy trên mạng cục bộ của tôi có thể quan sát và / hoặc chặn lưu lượng HTTP thông thường giữa máy khách của tôi và máy chủ. - VPN không hoạt động , thậm chí không OpenVPN qua TLS nghe trên cổng 443, vì tôi không có quyền trên máy tính cục bộ để cài đặt
tun
bộ điều hợp mạng có thể thực hiện định tuyến lớp 3, tôi cũng không thể thực hiện bất kỳ loại định tuyến lớp 2 nào (ví dụtap
). Tóm lại: Tôi cần quyền quản trị để cài đặt OpenVPN và ngay cả khi tôi có các quyền quản trị đó tạm thời, công ty sẽ không hài lòng nếu họ thấy nó được cài đặt. Một chương trình Java hoặc .NET ít được chú ý hơn, đặc biệt là khi nó không được cài đặt trong Thêm / Xóa Chương trình và không có thành phần trình điều khiển hạt nhân như OpenVPN.
socat
hoặc đặc quyền quản trị trên hộp máy khách Windows.