Tại sao 1024 cổng đầu tiên chỉ giới hạn cho người dùng root?


53

Đây là sự tò mò nhàn rỗi hơn bất cứ điều gì khác. Một người bạn của tôi đã hỏi tôi 'phạm vi cổng nào mà chỉ root mới có thể sử dụng trong Linux?' Tôi bảo anh 0-1024 bị hạn chế. Sau đó, anh ấy hỏi tôi tại sao lại như vậy và ... tôi đã thua lỗ. Không có ý kiến ​​gì.

Có một lý do tại sao các cổng này bị hạn chế và 1025-65535 không?

Hầu hết các dịch vụ mạng chính (HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP, v.v.) đều nằm trong phạm vi này để có thể có câu trả lời tôi nghĩ:

  • Một người dùng không tin cậy có thể chạy một chương trình nghe trên các cổng này để biết chi tiết đăng nhập.
  • Một người dùng không tin cậy có thể chạy một ứng dụng máy chủ trái phép.

Bất cứ ai có thể làm sáng tỏ ở đây?

Câu trả lời:


52

Giả sử bạn đang trao đổi dữ liệu với máy tính trên một cổng <1024 và bạn biết rằng máy tính đang chạy một số biến thể của unix. Sau đó, bạn biết rằng dịch vụ chạy trên cổng đó được quản trị viên hệ thống chấp thuận: nó chạy dưới quyền root hoặc ít nhất phải được bắt đầu bằng root.

Trên thế giới rộng lớn, hoang dã của Internet, điều này không thành vấn đề. Hầu hết các máy chủ được quản lý bởi cùng một người như các dịch vụ chạy trên chúng; bạn sẽ không tin tưởng vào gốc rễ hơn những người dùng khác.

Với các máy nhiều người dùng, đặc biệt là trên mạng cục bộ, điều này có thể quan trọng. Ví dụ, trong những ngày trước khi mật mã dân sự, một phương pháp phổ biến để chạy các lệnh shell trên một máy khác là rsh( r emote sh ell); bạn có thể sử dụng xác thực mật khẩu hoặc bạn có thể xác thực chỉ bằng cách chứng minh bạn là người dùng X trên máy A (với máy B biết rằng X @ A có thể đăng nhập là X @ B mà không cần mật khẩu). Làm thế nào để chứng minh điều đó? Máy rshkhách được cài đặt gốc và sử dụng số cổng <1024, vì vậy máy chủ biết rằng máy khách mà nó đang nói là đáng tin cậy và sẽ không nói dối về việc người dùng nào trên A đang gọi nó. Tương tự NFS được thiết kế để minh bạch đối với người dùng và quyền, do đó, một cấu hình phổ biến là trên mạng cục bộ, mọi máy đều sử dụng cùng một cơ sở dữ liệu người dùng và người dùng N tại A gắn hệ thống tệp từ máy chủ B sẽ có quyền của người dùng N tại B. Một lần nữa, thực tế rằng máy khách NFS đến từ số cổng <1024 chứng tỏ rằng root tại A đã kiểm tra máy khách NFS, được cho là đảm bảo rằng nếu nó truyền một yêu cầu có ý định đến từ người dùng N thì yêu cầu đó thực sự là từ người dùng N.

Người dùng trái phép không thể chạy máy chủ trên các cổng thấp là một lợi ích khác, nhưng không phải là lợi ích chính. Trước đây, việc giả mạo khá mới lạ và người dùng đang chạy các máy chủ giả mạo sẽ nhanh chóng bị các quản trị viên cảnh giác phá hủy.


2
Vì vậy, loại xác thực của một người nghèo, sau đó? Liệu quy ước này có bất kỳ lợi ích thực sự trong các hệ điều hành hiện đại giống như * nix không?
Andrew Lambert

2
@Amazed: Thế giới unix là bảo thủ, vì vậy câu hỏi cần đặt ra là "Nó có gây ra rắc rối thực sự nào không?" (và cần được trả lời với kiến ​​thức đầy đủ rằng mọi sever đáng chạy đều có đối số dòng lệnh để thay đổi cổng).
dmckee

5
@dmckee cũng có thể lập luận rằng một thiết kế như vậy dẫn đến nhiều máy chủ chạy bằng root, ngay cả khi chúng có tùy chọn chạy trên các cổng thay thế.
Andrew Lambert

5
@Amazed Nó vẫn có thể đôi khi hữu ích ngày hôm nay, trên các mạng cục bộ. Tôi không nghĩ rằng nó dẫn đến nhiều máy chủ chạy dưới quyền root, các dịch vụ có thể liên kết cổng sau đó bỏ đặc quyền hoặc sử dụng các khả năng nếu có hoặc quản trị viên có thể chuyển hướng một cổng trên cấu hình tường lửa. Tôi không nghĩ rằng nó sẽ được đưa vào nếu unix được thiết kế ngày hôm nay, nhưng nó không gây hại.
Gilles 'SO- ngừng trở nên xấu xa'

1
Điều vô lý này nên được bỏ đi từ kernel. Không có số cổng nên có bất kỳ ý nghĩa đặc biệt. "Lý do" đằng sau thiết kế đó đã lỗi thời từ lâu (tôi nghĩ nó đã gây tranh cãi ngay cả tại thời điểm thiết kế). Nhưng điều tồi tệ hơn là ý tưởng về bất kỳ phạm vi số đặc biệt nào "đáng tin cậy" là những hàm ý. Máy chủ web cần được thực thi như root chỉ để phục vụ các trang web. Một khai thác duy nhất và máy chủ lỗ đã biến mất. Và để làm gì? Đối với thiết kế di sản mà thậm chí không bao giờ làm việc một chút.
masi
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.