Chuyện hoang đường hay thực tế: SELinux có thể giới hạn người dùng root?


20

Tôi đã đọc hoặc nghe ở đâu đó (có thể trong khóa học TỰ TIN của LinuxCBT ; nhưng tôi không chắc chắn) rằng có các máy chủ Linux trực tuyến, trong đó mật khẩu của người dùng root cũng được cung cấp. Máy chủ Linux được tăng cường bằng cách sử dụng các quy tắc SELinux, sao cho mọi người đều có thể đăng nhập với người dùng root, nhưng không thể gây hại cho HĐH.

Nó có vẻ như là một huyền thoại đối với tôi, nhưng tôi muốn chắc chắn: Có thể làm cứng một hộp Linux (có thể với SELinux), để ngay cả người dùng root cũng không thể thực hiện các hoạt động độc hại cụ thể trên nó? (Ví dụ: xóa tệp hệ thống, xóa tệp nhật ký, dừng dịch vụ quan trọng, v.v.)

Một hộp Linux như vậy sẽ là điểm khởi đầu tuyệt vời để xây dựng một honeypot .

Chỉnh sửa: Dựa trên một câu trả lời (hiện đã bị xóa) và một chút Googling, tôi đã nhận được ít nhất hai liên kết chỉ ra các máy chủ Linux cứng như vậy. Thật không may, cả hai máy chủ đều ngừng hoạt động. Đối với hồ sơ, tôi sẽ sao chép-dán các mô tả ở đây:

1) Từ http://www.coker.com.au/selinux/play.html :

Truy cập root miễn phí trên máy SE Linux!

Để truy cập ssh máy chơi Debian của tôi vào play.coker.com.au với quyền root, mật khẩu là ...

Lưu ý rằng các máy như vậy đòi hỏi rất nhiều kỹ năng nếu bạn muốn chạy chúng thành công. Nếu bạn phải hỏi liệu bạn có nên chạy nó không thì câu trả lời là "không".

Mục đích của việc này là để chứng minh rằng tất cả các bảo mật cần thiết có thể được cung cấp bởi SE Linux mà không cần bất kỳ quyền Unix nào (tuy nhiên chúng tôi vẫn khuyên bạn nên sử dụng quyền Unix cũng như cho các máy chủ thực). Ngoài ra, nó còn cho bạn cơ hội đăng nhập vào máy SE và xem nó như thế nào.

Khi bạn đăng nhập vào máy chơi SE Linux, hãy đảm bảo rằng bạn sử dụng tùy chọn -x để tắt chuyển tiếp X11 hoặc đặt ForwardX11 không trong tệp / etc / ssh / ssh_config trước khi bạn đăng nhập. Đồng thời đảm bảo rằng bạn sử dụng tùy chọn -a để tắt chuyển tiếp tác nhân ssh hoặc đặt ForwardAgent no trong tệp / etc / ssh / ssh_config trước khi bạn đăng nhập. Nếu bạn không vô hiệu hóa chính xác các cài đặt này thì việc đăng nhập vào máy chơi sẽ khiến bạn có nguy cơ bị tấn công thông qua ứng dụng khách SSH.

Có một kênh IRC để thảo luận về vấn đề này, đó là #selinux trên irc.freenode.net .

Đây là một câu hỏi thường gặp nhanh

2) Từ http://www.osnews.com/comments/3731

Mục đích của Gentoo là làm cho Gentoo trở nên khả thi với môi trường máy chủ sản xuất có độ an toàn cao, độ ổn định cao. Dự án này không phải là một dự án độc lập tách rời khỏi Gentoo thích hợp; dự định là một nhóm các nhà phát triển Gentoo tập trung vào việc cung cấp các giải pháp cho Gentoo nhằm cung cấp sự bảo mật và ổn định mạnh mẽ. Máy này là máy demo Selinux của Hardened Gentoo . Việc sử dụng chính của nó là để kiểm tra và kiểm toán sự tích hợp và chính sách của Selinux.


2
Nó cũng đã được yêu cầu ở đây . Mặc dù về mặt lý thuyết là có thể, nhưng nó có vẻ khó đối với tôi (trừ khi bạn giới hạn người dùng root đó đến mức không thể làm gì hữu ích). Viết các quy tắc SELinux thực sự làm những gì bạn đặt ra là khó khăn trong trường hợp tốt nhất.
Gilles 'SO- ngừng trở nên xấu xa'

4
Với các nhân gần đây, người dùng không root có thể tạo các không gian tên trong đó họ có UID 0. Vì họ không UID 0 trong không gian tên toplevel, họ không thể làm hại hệ thống. Về bản chất, chúng không có cơ hội gây hại, không giống như cách tiếp cận của Selinux, nơi tất cả các cơ hội như vậy phải bị lấy đi. Xem kernel: Hỗ trợ không gian têntách biệt hoàn toàn hai tài khoản mà không cần cài đặt hệ điều hành riêng biệt?
Gilles 'SO- ngừng trở nên xấu xa'

Phụ thuộc vào trình điều khiển đồ họa của bạn cho dù nó thực sự an toàn hay không.
Joshua

Câu trả lời:


17

Thực tế: có, SELinux có thể giới hạn người dùng root.

Điều này có thể xảy ra vì SELinux không thực sự quan tâm đến người dùng Unix hiện tại: tất cả những gì họ thấy là một siêu dữ liệu bổ sung được gọi là bối cảnh (bao gồm, trong số các trường khác, một trường miền ) và cho phép SELinux quyết định liệu hành động được yêu cầu có thể được ủy quyền hay không không phải.

Những gì người ta thường quan niệm là người dùng root sẽ được ánh xạ trong SELinux với tư cách là người dùng Unix gốc chạy các tên miền unconfined_thoặc sysadm_tTỰ TIN. Nó là người dùng root toàn năng cổ điển đầy đủ năng lượng.

Tuy nhiên, người ta có thể thiết lập hoàn hảo hệ thống của mình để sinh ra một vỏ gốc (ý tôi là vỏ người dùng Unix gốc) chạy user_ttên miền SELinux của người dùng bị hạn chế . Theo chính sách của SELinux, shell như vậy sẽ không khác gì bất kỳ shell người dùng bị hạn chế nào khác và sẽ không có đặc quyền đặc biệt nào trên hệ thống, do đó hạn chế người dùng root một cách hiệu quả.

Theo quan điểm thực nghiệm, làm những việc như vậy theo nghĩa đen là vô ích, tuy nhiên thực tế tương tự tìm đường đi trong thế giới thực. Một ví dụ kinh điển sẽ là một quản trị viên cơ sở dữ liệu cần có khả năng dừng / khởi động trình nền cơ sở dữ liệu, chỉnh sửa các tệp cấu hình, v.v. Nếu không có SELinux, tất cả các hành động này sẽ yêu cầu người dùng leo thang tới các đặc quyền gốc (ngay cả khi nó chỉ dành cho một đặc quyền dòng lệnh thông qua sudocông cụ chẳng hạn, tuy nhiên thậm chí có thể dễ bị rò rỉ).

Nhờ có Selinux, chúng tôi có thể cung cấp cho người dùng này một vỏ gốc chính hãng, nhưng thay vì chạy unconfined_thoặc sysadm_tcác miền, nó sẽ chạy dbadm_tmiền. Điều này có nghĩa là anh ta sẽ có nhiều đặc quyền hơn người dùng bị hạn chế, nhưng những đặc quyền mới này sẽ bị giới hạn ở những gì cần thiết để quản trị máy chủ cơ sở dữ liệu: người dùng này sẽ không thể can thiệp vào các dịch vụ, tệp hoặc chạy các lệnh quản trị khác so với các dịch vụ khác yêu cầu nghiêm ngặt để làm công việc của mình.

Tương tự, máy chủ web và các quản trị viên dịch vụ khác cũng có thể có các shell gốc khác chạy song song trên cùng một hệ thống, mọi người sẽ thấy người dùng Unix hiện tại của họ là root , nhưng nhờ có Selinux, mỗi người sẽ có các đặc quyền khác nhau giới hạn ở những gì là cần thiết cho mục đích riêng của họ .


1

Vâng nó có thể. Nhưng không hữu ích lắm.

Về mặt lý thuyết, bạn có thể không cho phép người dùng root chạy các tệp nhị phân có thể được sử dụng cho mục đích xấu, thực thi các chính sách thông qua một cái gì đó như SELinux. Tuy nhiên, điều này đưa ra một vấn đề, đó là ngay cả khi người dùng root ban đầu không được phép làm gì đó, họ chỉ có thể sử dụng các phương pháp khác để thay đổi hoặc xóa chính sách của Selinux. Do vấn đề này, bạn thực sự sẽ không cho phép người dùng root thực hiện bất kỳ hành động nào, làm cho nó không hữu ích lắm.


Đầu tiên, tôi cũng bi quan như bạn. Nhưng, để có thêm kiến ​​thức, dường như không cần phải "không cho phép người dùng root thực hiện bất kỳ hành động nào". Kiểm tra câu trả lời đã được chỉnh sửa của tôi, bao gồm các liên kết và thông tin đến bằng chứng khái niệm. Thật không may, chúng không còn có sẵn; nhưng có vẻ như việc triển khai không bị hạn chế nghiêm trọng.
MS Dousti

-5

Có thể làm cứng một hộp Linux (có thể bằng SELinux), sao cho ngay cả người dùng root cũng không thể thực hiện các hoạt động độc hại cụ thể trên nó?

Điều này nghe có vẻ rẻ tiền, nhưng thật dễ dàng: thay đổi uid của root người dùng thành khác không. Chỉ cần truy cập vào / etc / passwd và / etc / bóng, sửa đổi các mục uid = 0 hiện có từ "root" thành một cái khác, sau đó thêm một tài khoản có tên "root" mà uid không bằng 0 và không được sử dụng.

Nó đạt được mục đích mà không có. Đó cũng là một cách để tuyên bố rằng bất kỳ ai cũng có thể có "quyền truy cập root" mà không thực sự cung cấp các đặc quyền leo thang.


3
Vâng, nhưng sau đó rootngười dùng không thực sự là người dùng root. Câu hỏi đặt ra là liệu siêu người dùng thực tế có thể bị hạn chế theo cách như vậy không.
terdon

Nghe có vẻ nguy hiểm - tất nhiên ngoại trừ bạn tạo một tài khoản khác với uid 0. Nhưng điều đó sẽ giống như đổi tên root và sử dụng lại tên "root".
Volker Siegel

Câu hỏi chỉ đề cập đến "root" không nhất thiết phải tương đương với siêu người dùng, tức là uid = 0. Trong những dịp hiếm hoi, đây là một sự phân biệt hữu ích.
Otheus

2
Tuy nhiên, bối cảnh cho thấy rõ ràng rằng OP đang hỏi liệu siêu người dùng chứ không phải một số người dùng ngẫu nhiên có tên người dùng rootcó thể bị giới hạn theo cách như vậy.
terdon

1
ĐƯỢC. Ít nhất, xin vui lòng chỉnh sửa câu trả lời của bạn và cho thấy những gì bạn đề xuất có thể đạt được. Nó liên tục bị đánh dấu là chất lượng thấp vì chiều dài của nó. Đó là lý do tại sao nó nhận được downvote.
terdon
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.