Tại sao Linux không cho phép quyền truy cập cổng mạng ở cấp độ người dùng? [đóng cửa]


8

Thỉnh thoảng, tôi sẽ tìm kiếm cách thực hiện các quyền cấp người dùng để truy cập cổng mạng trong Linux và trở nên khá khô khan. Ví dụ: nếu bạn có một máy chạy một quy trình quan trọng lắng nghe trên cổng 5080, tôi cảm thấy như chỉ có một cách để cung cấp cho một nhóm người dùng đáng tin cậy cụ thể truy cập vào cổng đó - giống như bất kỳ quy trình cấp phép lành mạnh nào khác thực hiện, như quyền hệ thống tập tin.

Nhưng có vẻ như các cổng cao có sẵn cho tất cả người dùng và các cổng thấp chỉ có sẵn để root, chỉ có các bản hack thô như authbind và chuyển tiếp với iptables để cho phép người dùng khác sử dụng cổng thấp. Có vẻ như đó là một tình huống rất kỳ lạ, vì vậy tôi tự hỏi, tại sao nó lại được thiết kế theo cách đó và tại sao mọi người không cảm thấy cần phải thay đổi tình huống đó?

Câu trả lời:


4

Linux hỗ trợ các không gian tên mạng. Bạn có thể thực hiện các quy trình khác nhau để xem các bộ giao diện mạng khác nhau. Đây là một chủ đề rộng.

Nếu bạn muốn một cổng giao tiếp chỉ có thể truy cập trong máy cho những người dùng cụ thể, bạn có thể sử dụng ổ cắm Unix truyền thống, có tên trong không gian hệ thống tệp có quyền. Linux tôn vinh quyền đọc / ghi trên ổ cắm AF_UNIX.

Nếu một máy lắng nghe các yêu cầu TCP hoặc UDP bên ngoài trên cổng 5080 đến từ các máy khác, thì chúng ta thực sự không thể nói về quyền của người dùng nữa. Bạn phải xây dựng bảo mật vào giao thức vượt quá 5080: xác thực, mã hóa, toàn vẹn / chống giả mạo / kháng thuốc.


Các không gian tên mạng có cho phép người dùng khác nhau có quyền truy cập vào các không gian tên khác nhau mà về bản chất tất cả người dùng của một số cổng và chặn các cổng khác không?
BT

2

Ban đầu, tôi đoán, bởi vì nó sẽ yêu cầu một thiết kế phức tạp không phù hợp với phạm vi của các hệ thống Unix ban đầu.

Sau đó, tôi đoán, vì đã có một cách được thiết lập để thực hiện các quyền cổng mạng cấp độ người dùng cho các trường hợp phổ biến: inetd , xuất hiện khoảng một vài năm sau ( 4.3BSD ) TCP / IP ( 4.2BSD ). Trình inetdnền chạy dưới dạng root và lắng nghe trên các cổng được chỉ định trong tệp cấu hình của nó. Khi có kết nối đến, inetdsinh ra một chương trình khác được chỉ định trong tệp cấu hình của nó và chạy như một người dùng cũng được chỉ định trong tệp cấu hình inetd. Vì vậy, ít nhất là đối với các dịch vụ được chấp nhận để bắt đầu một quy trình mới trên mỗi kết nối, vấn đề đã được giải quyết.


Hấp dẫn. Tôi phải nói rằng, đó là một điều linux phải làm để tạo ra một giải pháp trong đó mọi hành động đòi hỏi một quy trình mới.
BT

0

Tôi nghĩ một lý do là hầu hết người dùng cần có khả năng sử dụng các cổng phù du để kết nối với các máy chủ khác mà không nhất thiết phải là root.

Kết nối TCP / IPv4 bao gồm hai điểm cuối và mỗi điểm cuối bao gồm địa chỉ IP và số cổng. Do đó, khi người dùng máy khách kết nối với máy tính của máy chủ, một kết nối được thiết lập có thể được coi là 4-tuple (IP máy chủ, cổng máy chủ, IP máy khách, cổng máy khách). Thông thường có ba trong số bốn cái được biết đến - máy khách sử dụng địa chỉ IP của chính nó và khi kết nối với dịch vụ từ xa, cần có địa chỉ IP và số cổng dịch vụ của máy chủ.

Điều không rõ ràng ngay lập tức là khi một kết nối được thiết lập mà phía máy khách của kết nối sử dụng số cổng. Trừ khi một chương trình máy khách yêu cầu rõ ràng một số cổng cụ thể, số cổng được sử dụng là số cổng phù du. Cổng tạm thời là các cổng tạm thời được chỉ định bởi ngăn xếp IP của máy và được chỉ định từ một phạm vi cổng được chỉ định cho mục đích này. Khi kết nối chấm dứt, cổng phù du có sẵn để sử dụng lại, mặc dù hầu hết các ngăn xếp IP sẽ không sử dụng lại số cổng đó cho đến khi toàn bộ nhóm cổng phù du đã được sử dụng. Vì vậy, nếu chương trình máy khách kết nối lại, nó sẽ được gán một số cổng phù du khác cho phía kết nối mới.


1
Làm thế nào các quyền mạng cấp người dùng sẽ ngăn chặn điều đó?
BT
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.