Tại sao su thế giới thực thi?


20

Tôi có một máy chủ không đầu được đăng nhập từ xa bởi nhiều người dùng. Không ai trong số những người dùng khác ở trong tệp sudoers, vì vậy họ không thể lấy được root thông qua sudo. Tuy nhiên, vì các điều khoản trên su-rwsr-xr-xkhông có gì ngăn cản được họ từ cố gắng để brute force password root là.

Người ta có thể lập luận rằng nếu người dùng biết mật khẩu gốc thì họ có thể thỏa hiệp hệ thống, nhưng tôi không nghĩ đây là trường hợp. OpenSSH được cấu hình với PermitRootLogin noPasswordAuthentication no, và không ai trong số những người dùng khác có quyền truy cập vật lý vào máy chủ. Theo như tôi có thể nói, thế giới thực thi quyền /usr/bin/sulà con đường duy nhất cho người dùng cố gắng root trên máy chủ của tôi.

Điều khiến tôi bối rối hơn nữa là nó thậm chí còn không hữu ích. Nó cho phép tôi chạy sutrực tiếp thay vì cần phải làm sudo su, nhưng điều này hầu như không phải là một sự bất tiện.

Tôi đang nhìn cái gì đó? Là thế giới thực thi sự cho phép trên suchỉ vì lý do lịch sử? Có bất kỳ nhược điểm nào trong việc loại bỏ sự cho phép mà tôi chưa gặp phải không?


9
"Nó cho phép tôi chạy su trực tiếp thay vì cần phải làm sudo su, nhưng điều này hầu như không phải là một sự bất tiện." - Còn hệ thống không có tùy chọn sudocài đặt thì sao? Tôi muốn nói rằng đó là một sự bất tiện khá lớn ở đó;)
marcelm

1
Bạn luôn có thể hạn chế quyền truy cập cho / bin / su, nhưng hãy nhớ thực hiện tương tự cho / usr / bin / pkexec.
JPA

6
Tôi dường như không thể hiểu được động lực đằng sau câu hỏi này. Có vẻ như bạn đã tự hỏi tại sao su cần phải được thực thi trên thế giới, nhưng điều gì sẽ là điểm thay thế? Đó là, nếu su chỉ được thực thi bởi root (?), Bạn nghĩ nó có thể được sử dụng để làm gì?
David Z

1
@DavidZ Trên thực tế, nó thực sự hữu ích cho root! Bạn có thể nhanh chóng chuyển đổi người dùng với nó.
val nói Phục hồi lại

1
@val Vâng, điều đó đúng. Thực tế là root có thể sử dụng su không phải là câu hỏi ở đây. .
David Z

Câu trả lời:


39

Một điểm còn thiếu trong câu trả lời của ilkkachu là việc nâng lên root chỉ là một cách sử dụng cụ thể su. Mục đích chung của su là mở một vỏ mới trong tài khoản đăng nhập của người dùng khác. Người dùng khác thể root(và có lẽ thường xuyên nhất là), nhưng sucó thể được sử dụng để giả sử bất kỳ danh tính nào mà hệ thống cục bộ có thể xác thực.

Ví dụ: nếu tôi đăng nhập với tư cách là người dùng jimvà tôi muốn điều tra một sự cố mikeđã được báo cáo, nhưng tôi không thể sao chép, tôi có thể thử đăng nhập với tư cách mikevà chạy lệnh gây rắc rối cho anh ta.

13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit  # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)

Sử dụng -ltùy chọn sunguyên nhân để mô phỏng đăng nhập đầy đủ (trên mỗi mantrang).

Ở trên đòi hỏi kiến ​​thức về mikemật khẩu, tuy nhiên. Nếu tôi có sudoquyền truy cập, tôi có thể đăng nhập mikengay cả khi không có mật khẩu của anh ấy.

13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>

Tóm lại, lý do các quyền trên sutệp thực thi là như bạn hiển thị, là bởi vì đây sulà một công cụ có mục đích chung có sẵn cho tất cả người dùng trên hệ thống.


1
Điều đó làm cho rất nhiều ý nghĩa. Vì tôi có thói quen sử dụng sudonên tôi quên rằng sucó thể được sử dụng nhiều hơn là chỉ sudo -s. Và không phải là một sudoer, đây sẽ là cách duy nhất để chuyển đổi người dùng mà không thay đổi các phím ssh. Đối với trường hợp sử dụng của tôi, đây là một lý do khác để loại bỏ quyền, nhưng giờ tôi đã hiểu tại sao quyền thực thi thế giới được đặt theo mặc định. Cảm ơn!
Altay_H

1
Một điểm khác là sudo, cũng có thể được sử dụng để giả sử danh tính của người dùng khác root. Nó chỉ đơn giản cho phép kiểm soát chi tiết hơn đối với những người có thể làm những gì như ai, bao gồm cả việc thừa nhận một danh tính khác mà không cần mật khẩu của danh tính đó.
chepner

Một phần của sự nhầm lẫn là mọi người nghĩ sulà viết tắt của "siêu người dùng", điều này xảy ra, khi không có người dùng nào được chỉ định (hoặc root là chỉ định giải thích) nhưng nó cũng là viết tắt của "người dùng chuyển đổi". Việc sử dụng thứ hai sunày do đó dễ bị lãng quên.
Monty Harder

20

Về mặt lịch sử (trên các đơn vị không phải GNU), không, hoặc ít nhất nó đã kiểm tra thủ công nếu bạn ở trong một nhóm gọi là "bánh xe" được phép su. Phiên bản GNU sukhông tái tạo chức năng này do hệ tư tưởng của RMS về kiểm soát truy cập tại thời điểm đó:

Why GNU `su' does not support the `wheel' group
===============================================

   (This section is by Richard Stallman.)

   Sometimes a few of the users try to hold total power over all the
rest.  For example, in 1984, a few users at the MIT AI lab decided to
seize power by changing the operator password on the Twenex system and
keeping it secret from everyone else.  (I was able to thwart this coup
and give power back to the users by patching the kernel, but I wouldn't
know how to do that in Unix.)

   However, occasionally the rulers do tell someone.  Under the usual
`su' mechanism, once someone learns the root password who sympathizes
with the ordinary users, he or she can tell the rest.  The "wheel
group" feature would make this impossible, and thus cement the power of
the rulers.

   I'm on the side of the masses, not that of the rulers.  If you are
used to supporting the bosses and sysadmins in whatever they do, you
might find this idea strange at first.

Bạn có thể tìm thấy nhiều hơn về vấn đề này bằng cách "nhóm bánh xe rms" hoặc tương tự.


3
Đây là câu trả lời đúng duy nhất. Các thiết lập là có chủ ý, lịch sử, và đây chính xác là lý do cho nó. Tất cả các blabla kỹ thuật chỉ là vậy - blabla. Bạn hoàn toàn có thể giới thiệu lại nhóm "bánh xe" trong một Unix hiện đại.
Tom

10

Tuy nhiên, vì các điều khoản trên su-rwsr-xr-xkhông có gì ngăn cản được họ từ cố gắng để brute force password root là.

Vâng. Giả sử hệ thống Linux thông thường của bạn, pam_unix.somô-đun sẽ trì hoãn nỗ lực xác thực thất bại trong khoảng hai giây, nhưng tôi không nghĩ có gì để ngăn chặn các nỗ lực đồng thời.

Tất nhiên các nỗ lực không được ghi lại:

Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu

Brute-buộc một mật khẩu sẽ hiển thị nổi bật trong nhật ký, nếu bạn có bất kỳ loại hệ thống để theo dõi chúng. Và nếu bạn có người dùng địa phương không tin cậy, có lẽ bạn nên. Người dùng địa phương không đáng tin cậy cũng có thể cố gắng sử dụng bất kỳ khai thác leo thang đặc quyền chỉ dành cho địa phương và chúng phổ biến hơn nhiều so với leo thang đặc quyền từ xa.

Điều khiến tôi bối rối hơn nữa là nó thậm chí còn không hữu ích.

Tất nhiên nó hữu ích, nó cho phép bạn tự nâng mình lên root, nếu bạn biết mật khẩu.

Nó cho phép tôi chạy sutrực tiếp thay vì cần phải làm sudo su, nhưng điều này hầu như không phải là một sự bất tiện.

sudo sulà hơi dư thừa. Không cần sử dụng hai chương trình có nghĩa là cho phép bạn chạy các chương trình như một người dùng khác, một chương trình là khá đủ. Chỉ cần sử dụng sudo -ihoặc sudo -s(hoặc sudo /bin/bashvv) nếu bạn muốn chạy shell.

Tôi đang nhìn cái gì đó? Là thế giới thực thi quyền trên su chỉ vì lý do lịch sử?

Xem ở trên. Chà, không phải tất cả các hệ thống đều có thể sudothay thế, tôi không chắc nếu bạn xem đó là lịch sử.

Có bất kỳ nhược điểm nào trong việc loại bỏ sự cho phép mà tôi chưa gặp phải không?

Không thực sự, không xa như tôi biết. Tôi nghĩ rằng một số hệ thống đã suthiết lập để chỉ thành viên của một nhóm cụ thể (" wheel") có thể chạy nó. Bạn có thể làm tương tự sudonếu bạn thích ( chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo).

Hoặc bạn chỉ có thể xóa một hoặc cả hai chương trình nếu bạn không cần chúng. Mặc dù trên Debian, suđi kèm với logingói, vì vậy có lẽ không nên loại bỏ toàn bộ gói. (Và ghép nối loginsuvới nhau như thế có vẻ hơi lịch sử.)


1
Các hệ thống BSD yêu cầu người dùng phải ở trong wheelnhóm để sử dụng su. Có một số hệ thống BSD (tôi chỉ có thể nói cho OpenBSD) hoàn toàn không giao hàng sudo(đó là gói của bên thứ 3). OpenBSD có doassự tái hiện lại những điều cơ bản sudo, nhưng nó bị tắt theo mặc định khi cài đặt một hệ thống mới.
Kusalananda

@Kusalananda Bạn chỉ cần vào trong wheelnếu bạn muốn suroot. Bất kỳ tài khoản nào cũng có thể suvào bất kỳ tài khoản không root nào mà họ có mật khẩu, bất kể họ là thành viên nào trong wheelnhóm.
Jim L.

Tôi chạy 'sudo su -' để đảm bảo rằng vỏ gốc tôi nhận được là thông tin đăng nhập gốc đầy đủ, không có môi trường ô nhiễm từ tài khoản người dùng của tôi. Các sudoers mặc định trên RHEL bao gồm khá nhiều biến môi trường có thể thực thi được (chẳng hạn như PS1).
jsbillings

@jsbillings, hmm, ok. Có sulàm sạch môi trường không? Nó dường như không làm điều đó trên Debian ...
ilkkachu

Tôi có thể sử dụng trong mọi Linux mà tôi biết. Tâm trí bảnh bao.
jsbillings

7

Bạn đã có một số câu trả lời hay, nhưng có một phần trong bài đăng của bạn mà họ không giải quyết.

Theo như tôi có thể nói, thế giới thực thi quyền trên / usr / bin / su là con đường duy nhất cho người dùng cố gắng lấy quyền root trên máy chủ của tôi.

Đó là một giả định nguy hiểm. Nếu bạn đã đặt mật khẩu tốt cho root, thì trong hầu hết các trường hợp, nhiều khả năng việc leo thang đặc quyền thành công sẽ là do việc khai thác lỗi trong kernel hoặc nhị phân setuid (tất nhiên bạn cũng có thể xóa setuid bit từ những thứ đó, nhưng passwdlà setuid và nếu bạn muốn bảo mật cao, bạn cũng nên cung cấp cho người dùng của mình và từ chối họ tùy chọn thay đổi mật khẩu của họ không tương thích với điều đó).


1

su cần phải được thực thi trên thế giới để mọi người có thể chạy nó. Trong nhiều hệ thống, nó có thể được sử dụng để thay đổi cho người dùng khác, bằng cách cung cấp mật khẩu của họ.

Nếu bạn lo lắng về việc ai đó đánh cắp mật khẩu gốc, bạn có thể vô hiệu hóa nó. (làm cho hàm băm không hợp lệ để không có mật khẩu nào có thể khớp với nó)

Tôi không biết về sự đồng thuận, nhưng tôi xem xét việc có thể đăng nhập trực tiếp với quyền root là một vấn đề bảo mật.


-2

Các câu trả lời khác là chính xác nói "su" cho phép bạn đăng nhập vào các tài khoản khác ngoài root.

Một lưu ý về "sudo su" mặc dù. Điều này thực sự cho phép bạn đăng nhập vào tài khoản root mà không cần biết mật khẩu root. Bạn phải biết mật khẩu của tài khoản bạn chạy sudo cũng như tài khoản đó có trong tệp sudoers.


3
Điều đó phụ thuộc hoàn toàn vào việc sudoerstargetpwhay không rootpw.
muru

1
Điều này không có gì để làm với sutất cả.
Kusalananda
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.