2008-12-18 36 views
5

Xem xét có rất nhiều tường lửa draconian trên thế giới, có lý do nào tôi không nên chạy phần mềm máy chủ trên cổng 80 để đảm bảo khả năng truy cập lớn nhất có thể không? Dường như ngoại lệ tường lửa phổ biến nhất là cho phép các kết nối gửi đi trên cổng 80. Tôi hiểu rằng bất kỳ loại kiểm tra gói nào sẽ chặn lưu lượng truy cập không phải HTTP của tôi nhưng nếu đó là trường hợp tôi chắc chắn tường lửa sẽ không có bất kỳ các cổng đi mở khác.Tại sao tôi không nên chạy phần mềm máy chủ không phải của tôi trên cổng 80?

Nếu máy chủ đã có máy chủ web trên cổng 80 thì có thể sử dụng một số loại máy chủ ảo đang nghe trên cổng 80 (tức là myDomain.com:80 myApp.myDomain.com:80 trên cùng một máy) ?

Trả lời

7

Nếu bạn cần làm điều này, tại sao không chỉ quấn mã mạng của bạn bằng giao diện SOAP hoặc HTTPHandler?

Sau đó, các gói của bạn sẽ phù hợp với HTTP, bạn sẽ nhận được thông qua tường lửa và mọi người đều hạnh phúc?

Nó sẽ được dễ dàng hơn nhiều so với việc giải quyết tất cả các vấn đề cài đặt và hoạt động bạn sẽ nhận được từ đa purposing cổng 80.

+0

Bật. Ngay cả nhị phân trên http cũng được. HTTP là một định dạng dòng rất thích hợp. –

+0

Hiệu suất bị mất bao nhiêu khi gửi dữ liệu nhị phân qua HTTP? Nếu nó không quá tệ thì đây có thể là cách để đi. Một số loại hệ thống nén HTTP có hỗ trợ hiệu suất không? – Luke

+0

@Luke: Tùy thuộc vào lượng thông tin bạn chuyển. Tiêu đề HTTP thêm tiêu đề nhỏ cho mọi yêu cầu. Nhưng nếu yêu cầu của bạn chỉ được mở một lần, thì nó sẽ bị bỏ qua. – some

1

Để trả lời bạn câu hỏi thứ hai "là nó có thể sử dụng một số loại máy chủ ảo lắng nghe trên cổng 80":

Có, có, và nó được gọi là lưu trữ ảo và được xử lý bởi hầu hết các máy chủ web hiện đại. Nhưng sau đó tất cả các yêu cầu từ ứng dụng của bạn phải bắt đầu với giao thức HTTP 1.1, nơi một máy chủ được chỉ định. Ứng dụng của bạn có thể phải là một ứng dụng CGI. Nhưng đó có thể không phải những gì bạn muốn.

Cách khác là để ứng dụng của bạn kiểm soát cổng 80 và chuyển hướng tất cả các truy vấn http đến máy chủ web. Của nó lộn xộn và nếu ứng dụng của bạn đi xuống, do đó, các máy chủ web.

Giải pháp là có nhiều hơn một địa chỉ IP trên máy chủ của bạn (bạn có thể liên kết nhiều hơn một địa chỉ ip trên một số điện thoại). Sau đó, bạn có thể liên kết mydomain.com:80 tại địa chỉ 1 với máy chủ web và myapp.mydomain.com tại địa chỉ 2 cho ứng dụng, nhưng chúng vẫn nằm trên cùng một máy chủ.

Và để trả lời câu hỏi đầu tiên của bạn: "có bất kỳ lý do nào tôi không nên chạy phần mềm máy chủ trên cổng 80": Có, đó là thực tiễn không tốt. Mong đợi nhận được rất nhiều truy vấn http từ quá trình quét tự động. Bạn có thể chọn trả lời chúng với tiêu đề http chính xác hoặc bỏ qua chúng.

2

Tôi có thể nghĩ ra hai lý do: đầu tiên, nếu bạn đang thực hiện để tránh tường lửa của công ty, bạn sẽ vi phạm chính sách bảo mật và thứ hai, bạn sẽ sử dụng reserved port cho giao thức mà nó không phải là Không được đăng ký để có thể gây nhầm lẫn đáng kể cho các khách hàng đang cố gắng tương tác với hệ thống của bạn (ví dụ, Google chẳng hạn) và các cơn đau đầu đáng kể đối với ứng dụng của bạn khi họ thực hiện.

EDIT Trên các hệ thống Unix, số cổng thấp yêu cầu các tài khoản đặc quyền để chạy. Đây sẽ là một lý do khác để tránh làm điều đó trong môi trường đó vì ứng dụng của bạn có thể cần các đặc quyền cao hơn so với yêu cầu khác.

+0

Chỉnh sửa của bạn chỉ đúng trên * Hệ thống kiểu NIX; theo như tôi biết, Microsoft đã không triển khai loại hạn chế này. Và chỉ cần làm rõ, đánh số thấp là bất cứ điều gì dưới 1024 –

+1

@monoxide - cố định. Mặc dù tôi là một lập trình viên C# /. NET bây giờ, trong trái tim tôi là người Unix. – tvanfosson

1

Không thể thực hiện lưu trữ ảo cho các miền khác đang nghe trên cổng 80. Chỉ một quy trình có thể nghe trên cổng. Ảo lưu trữ xảy ra ở lớp ứng dụng dựa trên các tiêu đề HTTP.

Sự cố khác mà bạn có thể gặp phải là máy chủ proxy. Không phải loại mà người dùng thiết lập, mà là proxy tự động của các công ty hoặc ISP. Những điều này sẽ không hiểu giao thức của ứng dụng của bạn và có thể sẽ không thành công.

Cuối cùng, nếu ứng dụng của bạn đang chạy trên một biến thể Unix/Linux, cổng 80 sẽ yêu cầu quyền ưu tiên gốc.

0

tôi sẽ thú nhận với khi làm việc xung quanh một bức tường lửa hà khắc bằng việc có một máy chủ ssh lắng nghe trên cổng 80 về nhà và sử dụng đường hầm ssh ssh để cung cấp quyền truy cập vào các máy chủ và dịch vụ khác. Tôi đẩy nhanh thêm rằng tôi đã làm điều này với sự gia trì của những người quản trị tường lửa --- tất cả chúng tôi đều đồng ý rằng đó là giải pháp tốt nhất cho các vấn đề trong tầm tay.

Tôi đẩy nhanh để thêm rằng chiến thuật này ám cổng 80 vô ích cho mục đích dự định, điều này tốt với tôi vì đó là máy trạm cá nhân của tôi. Nếu bạn chỉ có một máy trong miền của mình thì đó sẽ là một vấn đề. Nhưng có một máy tôi có thể dành để phục vụ ssh từ cổng 80 tạo ra không có vấn đề cài đặt hoặc hoạt động. Tôi chỉ chạy /etc/init.d/apache stop và sau đó chạy một sshd để nghe cổng 80. Sau đó, tôi đã tốt để đi cho một vài tháng tôi cần thiết để làm điều này.

Máy quét tự động đến gõ cổng 80 trên máy trạm cá nhân của tôi có thể bị treo :-)

+0

Vâng tôi đã làm như vậy, nhưng tôi nghĩ từ quan điểm của việc thực hiện một dịch vụ tuyệt vời (điều đó xảy ra không được trên đầu trang của HTTP) có sẵn cho người dùng có thể không biết làm thế nào để đường hầm qua ssh. – Luke

Các vấn đề liên quan