Máy chủ chuyển tiếp Netcat


0

Điều này có lẽ khá đơn giản nhưng tôi không thể quấn đầu xung quanh nó.

Tôi thiết lập một tên miền phụ, giả sử nó nc.example.com. Thiết lập DNS của tôi và tất cả để trỏ tên miền phụ đến một máy chủ từ xa chạy Nginx để đảo ngược yêu cầu tới cổng 3123.

Sau đó, tôi lắng nghe yêu cầu sử dụng netcat trên máy chủ từ xa , như thế này:

nc -l 3123

Để tôi có thể nhận các yêu cầu HTTP từ nc.example.com.

Tiếp theo, về tôi máy địa phương , Tôi sử dụng netcat để kết nối với máy chủ không liên quan (DNS công cộng của Google), như thế này:

$ nc 8.8.8.8 80
GET / HTTP/1.1
Host: nc.example.com

(có thêm 2 dòng mới để hoàn thành yêu cầu HTTP, nhưng không thể hiển thị ở đây)

Tôi nhận được kết nối trên máy chủ từ xa như sau:

$ nc -l 3123
GET / HTTP/1.1
Connection: upgrade
Host: nc.example.com
X-Real-IP: <redacted_1>
X-Forwarded-Host: nc.example.com
X-Forwarded-Server: nc.example.com
X-Forwarded-For: <redacted_2>, <redacted_1>

Bây giờ, tôi không chắc tại sao điều này xảy ra, bởi vì tôi nghĩ rằng nc sẽ kết nối với 8.8.8.8, thay vì địa chỉ IP của máy chủ của tôi. Là 8.8.8.8 chuyển tiếp yêu cầu đến máy chủ của tôi thay mặt tôi? Có bất kỳ ý nghĩa bảo mật như là kết quả của điều này?


CHỈNH SỬA :

Tôi mới nhận ra rằng <redacted_2> là một địa chỉ IP riêng ( 172.24.199.96 . Tôi đang làm điều này trong mạng lưới trường đại học của tôi.

Điều này có nghĩa là bộ định tuyến ngược dòng đang ủy quyền yêu cầu cho tôi, dựa trên Host tiêu đề? Điều đó có thể hiểu được vì trường đại học của tôi gần đây đã triển khai một số loại lọc mạng mặc dù không có nhiều chi tiết về nó. Mặc dù tôi không hiểu tại sao nó lại hành xử theo cách này?

Câu trả lời:


1

Địa chỉ IP nào máy chủ Nginx của bạn nhận được kết nối từ ?

Dường như có một "proxy trong suốt" chặn tất cả các yêu cầu HTTP mà máy tính cục bộ của bạn gửi và chuyển tiếp chúng dựa trên tiêu đề Máy chủ. (Có thể là vi-rút, phần mềm chống vi-rút, proxy lưu trữ, bộ lọc của phụ huynh, v.v.)

Đặc biệt vì tiêu đề X-Forwarded-For của bạn có hai địa chỉ IP, mặc dù Nginx chỉ nên thêm một địa chỉ.

Các máy chủ DNS của Google chắc chắn không thực hiện chuyển tiếp như vậy - thậm chí họ không chấp nhận kết nối trên cổng 80. (Trên thực tế, "proxy mở" hoạt động như thế sẽ được coi là một vấn đề bảo mật ...)


Bạn nói đúng, tôi đã cố kết nối với cùng một máy chủ từ một máy khác và nó không hoạt động. Tôi chỉnh sửa câu hỏi để thêm chi tiết, tôi nhận ra rằng redacted_2 là một địa chỉ IP riêng. Bộ định tuyến ngược dòng của tôi có thể đang thực hiện ủy quyền, nhưng tại sao nó lại chuyển tiếp các yêu cầu dựa trên Host tiêu đề?
Irvin Lim

Đó là cách các proxy "minh bạch" hoạt động. Tường lửa lặng lẽ chuyển hướng tất cả các kết nối TCP: 80 đến proxy, tại đó IP đích 'gốc' bị mất. Vì vậy, proxy phải đoán đích thực sự dựa trên chính yêu cầu HTTP. /// Còn tại sao bộ định tuyến của bạn đang thực hiện proxy proxy đó là một câu hỏi cho chủ sở hữu / quản trị viên của nó.
grawity

Cảm ơn, tôi thực sự chỉ cần tìm ra rằng là tốt. Có lẽ có một số bộ lọc và bộ nhớ đệm đang diễn ra, vì đó là một mạng lưới trường đại học.
Irvin Lim
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.