Mengapa su world executable?

20

Saya memiliki server tanpa kepala yang login ke jarak jauh oleh banyak pengguna. Tidak ada pengguna lain di file sudoers, sehingga mereka tidak dapat memperoleh root melalui sudo. Namun, karena izin aktif sutidak -rwsr-xr-xada yang menghentikan mereka dari mencoba memaksa paksa root password.

Orang bisa berargumen bahwa jika pengguna mengetahui kata sandi root, mereka dapat membahayakan sistem, tapi saya rasa ini bukan masalahnya. OpenSSH dikonfigurasi dengan PermitRootLogin nodan PasswordAuthentication no, dan tidak ada pengguna lain yang memiliki akses fisik ke server. Sejauh yang saya tahu, dunia mengeksekusi izin /usr/bin/suadalah satu-satunya jalan bagi pengguna yang mencoba mendapatkan root di server saya.

Apa yang lebih membingungkan bagi saya dalam hal itu bahkan tidak berguna. Ini memungkinkan saya untuk berlari susecara langsung alih-alih perlu melakukannya sudo su, tetapi ini bukan ketidaknyamanan.

Apakah saya mengabaikan sesuatu? Apakah dunia mengeksekusi izin di susana hanya karena alasan historis? Apakah ada kerugian untuk menghapus izin yang belum saya temui?

Altay_H
sumber
9
"Itu memungkinkan saya untuk menjalankan su secara langsung daripada perlu melakukan sudo su, tapi ini bukan ketidaknyamanan." - Bagaimana dengan sistem tanpa sudomenginstal opsional ? Saya akan mengatakan itu adalah ketidaknyamanan yang cukup besar di sana;)
marcelm
1
Anda selalu dapat membatasi akses untuk / bin / su, tetapi ingat untuk melakukan hal yang sama juga untuk / usr / bin / pkexec.
jpa
6
Sepertinya saya tidak bisa memahami motivasi di balik pertanyaan ini. Sepertinya Anda bertanya-tanya mengapa su perlu dieksekusi dunia, tetapi apa gunanya alternatifnya? Artinya, jika su hanya dapat dieksekusi oleh root (?), Menurut Anda apa itu bisa digunakan?
David Z
1
@ DavidZ Bahkan, ini memang berguna untuk root! Anda dapat dengan cepat beralih pengguna dengan itu.
val berkata Reinstate Monica
1
@val Ya, itu benar. Fakta bahwa root dapat menggunakan su tidak dipertanyakan di sini. (Saat membaca ulang, saya bisa melihat bagaimana komentar saya sebelumnya menyarankan sebaliknya, tapi bukan itu yang saya maksud.) Saya ingin tahu apa yang Altay_H pikirkan tentang ini sebelum mereka menanyakan pertanyaan ini.
David Z

Jawaban:

39

Satu hal yang hilang dari jawaban ilkkachu adalah bahwa meninggikan ke root hanya satu penggunaan khusus untuk su. Tujuan umum su adalah untuk membuka shell baru di bawah akun login pengguna lain. Pengguna lain itu mungkin root(dan mungkin paling sering), tetapi sudapat digunakan untuk mengasumsikan identitas apa pun yang dapat diautentikasi sistem lokal.

Misalnya, jika saya masuk sebagai pengguna jim, dan saya ingin menyelidiki masalah yang miketelah dilaporkan, tetapi saya tidak dapat mereproduksi, saya mungkin mencoba masuk sebagai mike, dan menjalankan perintah yang memberinya masalah.

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)

Menggunakan -lopsi susebab untuk mensimulasikan login penuh (per manhalaman).

Namun di atas memerlukan pengetahuan tentang mikekata sandi. Jika saya memiliki sudoakses, saya dapat masuk mikebahkan tanpa kata sandi.

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>

Singkatnya, alasan hak akses pada sueksekusi adalah sebagai Anda menunjukkan, karena sumerupakan alat tujuan umum yang tersedia untuk semua pengguna pada sistem.

Jim L.
sumber
1
Itu sangat masuk akal. Karena saya terbiasa menggunakan, sudosaya lupa bahwa itu subisa digunakan lebih dari sekadar sudo -s. Dan tanpa menjadi sudoer ini akan menjadi satu-satunya cara untuk beralih pengguna tanpa mengubah kunci ssh. Untuk kasus penggunaan saya, ini adalah alasan lain untuk menghapus izin, tapi saya mengerti sekarang mengapa dunia mengeksekusi izin diatur secara default. Terima kasih!
Altay_H
1
Poin lain adalah bahwa sudojuga dapat digunakan untuk mengasumsikan identitas pengguna selain root. Ini hanya memungkinkan kontrol yang lebih halus atas siapa yang dapat melakukan apa sebagai siapa, termasuk mengasumsikan identitas lain tanpa perlu kata sandi identitas itu.
chepner
Bagian dari kebingungan adalah bahwa orang berpikir sukependekan dari "pengguna super", yang ia lakukan, ketika tidak ada pengguna yang ditentukan (atau root ditentukan secara eksplisit) tetapi juga singkatan dari "pengguna beralih". suKarenanya penggunaan kedua ini mudah dilupakan.
Monty Harder
20

Secara historis (pada kesatuan non-GNU), itu tidak, atau setidaknya secara manual memeriksa jika Anda berada dalam grup yang disebut "roda" diizinkan su. Versi GNU sutidak mereproduksi fungsi ini karena ideologi RMS tentang kontrol akses pada saat itu:

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.

Anda dapat menemukan lebih banyak tentang masalah ini dengan Googling "grup roda rms" atau serupa.

R ..
sumber
3
Ini satu-satunya jawaban yang benar. Pengaturannya disengaja, historis, dan inilah tepatnya alasannya. Semua blabla teknis hanya itu - blabla. Anda benar-benar dapat memperkenalkan kembali grup "roda" di Unix modern.
Tom
10

Namun, karena izin aktif sutidak -rwsr-xr-xada yang menghentikan mereka dari mencoba memaksa paksa root password.

Iya nih. Dengan asumsi sistem Linux Anda biasa, pam_unix.somodul tidak menunda upaya otentikasi gagal ~ dua detik, tapi saya tidak berpikir ada sesuatu untuk menghentikan upaya simultan.

Upaya gagal dicatat tentu saja:

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

Memaksa kata sandi dengan kasar akan terlihat jelas di log, jika Anda memiliki sistem untuk memonitornya. Dan jika Anda memiliki pengguna lokal yang tidak dipercaya, mungkin Anda harus melakukannya. Pengguna lokal yang tidak tepercaya juga dapat mencoba menggunakan eksploitasi eskalasi hak istimewa hanya lokal, dan mereka jauh lebih umum daripada eskalasi hak istimewa jarak jauh.

Apa yang lebih membingungkan bagi saya dalam hal itu bahkan tidak berguna.

Tentu saja ini berguna, memungkinkan Anda untuk meningkatkan diri root, jika Anda tahu kata sandinya.

Ini memungkinkan saya untuk berlari susecara langsung alih-alih perlu melakukannya sudo su, tetapi ini bukan ketidaknyamanan.

sudo suagak berlebihan. Tidak perlu menggunakan dua program yang dimaksudkan untuk memungkinkan Anda menjalankan program sebagai pengguna lain, cukup satu saja. Cukup gunakan sudo -iatau sudo -s(atau sudo /bin/bashdll.) Jika Anda ingin menjalankan shell.

Apakah saya mengabaikan sesuatu? Apakah dunia melaksanakan izin su hanya di sana karena alasan historis?

Lihat di atas. Ya, tidak semua sistem memiliki sudoalternatif, saya tidak yakin apakah Anda menganggap itu bersejarah.

Apakah ada kerugian untuk menghapus izin yang belum saya temui?

Tidak juga, tidak sejauh yang saya tahu. Saya pikir beberapa sistem telah suditetapkan sehingga hanya anggota grup tertentu (" wheel") yang dapat menjalankannya. Anda dapat melakukan hal yang sama sudojika Anda suka ( chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo).

Atau Anda bisa menghapus salah satu atau kedua program jika Anda tidak membutuhkannya. Meskipun di Debian, suhadir dengan loginpaket, jadi mungkin bukan ide yang baik untuk menghapus paket secara keseluruhan. (Dan berpasangan logindan subersama seperti itu tampaknya agak bersejarah.)

ilkkachu
sumber
1
Sistem BSD mengharuskan pengguna berada dalam wheelgrup untuk digunakan su. Ada beberapa sistem BSD (saya hanya bisa berbicara untuk OpenBSD) yang tidak disertakan sudosama sekali (ini adalah paket pihak ke-3). OpenBSD memiliki doasyang merupakan implementasi kembali dari dasar-dasar sudo, tetapi dinonaktifkan secara default saat menginstal sistem baru.
Kusalananda
@ Kusalananda Anda hanya perlu masuk wheeljika ingin sumelakukan root. Setiap akun dapat suke akun non-root yang mereka miliki kata sandinya, terlepas dari keanggotaannya dalam wheelgrup.
Jim L.
Saya menjalankan 'sudo su -' untuk memastikan bahwa shell root yang saya dapatkan adalah login root penuh, tanpa lingkungan yang tercemar dari akun pengguna saya. Sudoers default di RHEL mencakup beberapa variabel lingkungan yang dapat dieksekusi (seperti PS1).
jsbillings
@ jsbillings, hmm, ok. Apakah sumembersihkan lingkungan itu? Tampaknya tidak melakukan itu pada Debian ...
ilkkachu
"Su -" tidak di setiap Linux yang saya tahu. Pikirkan dasbor.
jsbillings
7

Anda sudah memiliki jawaban yang bagus, tetapi ada satu bagian dari posting Anda yang tidak mereka jawab.

Sejauh yang saya tahu, dunia mengeksekusi izin pada / usr / bin / su adalah satu-satunya jalan bagi pengguna yang mencoba untuk mendapatkan root di server saya.

Itu asumsi yang berbahaya. Jika Anda telah menetapkan kata sandi yang baik untuk root, maka dalam kebanyakan kasus kemungkinan besar eskalasi hak istimewa yang berhasil akan disebabkan oleh eksploitasi bug di kernel atau binari setuid (Anda tentu saja dapat juga menghapus setuid bit dari itu, tetapi passwdsetuid, dan jika Anda ingin keamanan tinggi Anda juga harus menawarkan itu kepada pengguna Anda, dan menolak mereka pilihan untuk mengubah kata sandi mereka tidak kompatibel dengan itu).

Henrik - berhenti menyakiti Monica
sumber
1

su harus dapat dieksekusi-dunia agar semua orang dapat menjalankannya. Dalam banyak sistem, ini dapat digunakan untuk berubah ke pengguna lain, dengan memberikan kata sandi mereka.

Jika Anda khawatir tentang seseorang yang memaksakan kata sandi root, Anda bisa menonaktifkannya. (jadikan hash tidak valid sehingga tidak ada kata sandi yang cocok)

Saya tidak tahu tentang konsensus, tetapi saya akan mempertimbangkan untuk dapat login sebagai root langsung masalah keamanan dalam dan dari dirinya sendiri.

bobsburner
sumber
-2

Jawaban lainnya benar mengatakan "su" memungkinkan Anda untuk masuk ke akun selain root.

Satu catatan tentang "sudo su". Ini sebenarnya memungkinkan Anda untuk masuk ke akun root tanpa mengetahui kata sandi root. Anda harus mengetahui kata sandi akun yang Anda jalankan dengan sudo dan juga memiliki akun itu di file sudoers.

WindowsNT
sumber
3
Itu sepenuhnya tergantung pada apakah sudoersmemiliki targetpwatau rootpwmengatur.
muru
1
Ini tidak ada hubungannya dengan sudieksekusi oleh semua.
Kusalananda