Có thể tạo tường lửa chỉ cho phép lưu lượng truy cập máy chủ web hợp pháp trên cổng 443 chứ không phải bất kỳ dịch vụ nào khác không?


19

Tôi luôn sử dụng thủ thuật đơn giản để vượt qua hầu hết các tường lửa ngăn tôi sử dụng bất kỳ cổng nào. Tôi chỉ đơn giản mở ssh trên một trong các máy chủ của tôi trên cổng 443 và tạo đường hầm cho tất cả lưu lượng truy cập qua đó.

Tuy nhiên bây giờ tôi đang ở trên một mạng có tường lửa mà tôi chưa từng thấy trước đây và tôi thậm chí không biết điều đó là có thể.

Trên mạng này, bạn chỉ có thể sử dụng cổng 443 cho lưu lượng máy chủ web hợp pháp. Nếu tôi mở ssh, hoặc bất cứ thứ gì khác trên cổng 443 và cố gắng kết nối ở đó từ mạng này, nó sẽ bị giết ngay lập tức. Nếu tôi bắt đầu apache trên máy chủ đó, nó hoạt động.

Làm thế nào là điều này thậm chí có thể? Có một số tường lửa siêu tinh vi thậm chí có thể phân tích lưu lượng được mã hóa để xác minh đó là lưu lượng https hợp pháp không? Làm sao?


4
Được gọi là SPI, thiết bị cao cấp hơn có thể thực hiện kiểm tra nâng cao hơn và chấm dứt các kết nối không mong muốn.
Linef4ult

Bạn có thể tạo danh sách trắng và chỉ cho phép lưu lượng truy cập vấn đề là lưu lượng máy chủ web hợp pháp có thể thay đổi trong đó, địa chỉ IP có thể được chỉ định lại, vì vậy ngày nay Microsoft có thể là Google. Bạn nên sử dụng một đường hầm an toàn để liên lạc với các máy chủ của mình và tạo một danh sách trắng các máy khách được phép, sau đó xác định thủ tục để thêm các máy khách bổ sung trong tương lai (vì danh sách đó sẽ thay đổi).
Ramhound

Bạn có thể sử dụng ví dụ Obfsproxy để làm xáo trộn lưu lượng SSH dưới dạng lưu lượng HTTP (S) vô hại.
Michael

Câu trả lời:


26

Có, và họ không cần bất kỳ phép thuật nào ở đây, chỉ cần kết hợp tầm thường trên nội dung gói TCP. Mặc dù SSH và TLS (SSL) mã hóa tải trọng của chúng , bản thân các tiêu đề giao thức vẫn có thể phân biệt và rất khác nhau. Ví dụ: kết nối SSHv2 luôn bắt đầu với ứng dụng khách gửi SSH-2.0-(client name and version). Tương tự, mặc dù tường lửa của bạn thực sự không thể biết liệu kết nối TLS có mang HTTP bên trong hay không, nó có thể nhận ra chính TLS hay không .

Việc kiểm tra các lớp trên TCP thường nằm trong "Kiểm tra gói sâu", một tính năng tương đối phổ biến.

Một cách rõ ràng để bỏ qua điều này là tạo đường hầm SSH bên trong TLS - ví dụ: sử dụng stunnel, haproxy hoặc sniproxy. (Ngoài đường hầm đơn giản, nơi cổng 443 được dành riêng cho SSH-over-TLS, họ cũng có thể ghép nhiều giao thức SSH / HTTP / các giao thức khác trên cùng một cổng dựa trên SNI và ALPN.)

Mặc dù điều này sẽ không luôn đánh bại phân tích lưu lượng thực sự tinh vi, nhưng nó vẫn sẽ bỏ qua hầu hết các bộ lọc mà chỉ kiểm tra "xem nó có giống như tiêu đề TLS không".


Và sau đó là loại tường lửa gây phiền nhiễu - những loại chặn TLS để giải mã và mã hóa lại tất cả lưu lượng. Chúng thực sự có thể nhìn thấy bên trong TLS và có thể chuyển các yêu cầu HTTP trong khi chặn mọi thứ khác. (Lưu ý rằng một số chương trình chống vi-rút cũng làm điều tương tự.) Bạn có thể nhận ra loại này bằng cách xem chứng chỉ máy chủ; tất cả các chứng chỉ được tạo bằng proxy trông giống nhau và thường không vượt qua xác thực, trong khi các chứng chỉ thực được cấp bởi nhiều CA khác nhau.


1
Vì vậy, SSH thực hiện bảo mật cấp ứng dụng, riêng của mình, thay vì chỉ là một giao thức khác trên TLS (theo mặc định, nó không sử dụng)?
Medinoc

2
@Medinoc: Vâng, nó thực hiện các tính năng tương tự (trong SSHv2 "vận chuyển" và "xác thực" lớp ) và không cần TLS cho bất cứ điều gì.
grawity

Có cách nào đáng tin cậy để nhận ra những bức tường lửa đánh hơi này không? Tôi không thích ý tưởng ai đó chặn mật khẩu của mình khi sử dụng https. Tôi thậm chí không biết nó có thể cho đến bây giờ.
Petr

2
POST / HTTP / 1.0 base64garbage HTTP / 200 200 OK base64garbage tạo giao thức vận chuyển
Joshua

3
@Petr Mở rộng nhận xét của grawity, nếu đó là máy tính của chủ nhân, các certs có thể đã được cài đặt trước khi họ đưa nó cho bạn; và tường lửa MITM sẽ được định cấu hình để nếu bạn không sử dụng chứng chỉ của họ thì sẽ không cho phép lưu lượng https để các lựa chọn của bạn tuân thủ chính sách hoặc không có https. OTOH trong trường hợp đó, việc kiểm tra chứng chỉ có thể sẽ nói một cái gì đó như "được xác minh bởi Tên chủ nhân" và một cái gì đó tương tự trong tên CA nếu bạn khoan sâu hơn. ví dụ: trên máy tính làm việc của tôi, đó là bluecoat.companyname.com (trong đó bluecoat là nhãn hiệu của tường lửa đang được sử dụng).
Dan Neely
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.