Apakah saya tetap bisa menonaktifkan keharusan kecil?

39

Saya mencoba mengatur skrip penyebaran menggunakan Capistrano. Pada langkah cap deploy:setupskrip menghubungkan ke server saya dan mencoba menjalankan perintah yang membuat direktori. Lalu saya melihat kesalahan:msudo: sorry, you must have a tty to run sudo

Ada solusi yang disarankan untuk menonaktifkan keharusan kecil di server saya. https://unix.stackexchange.com/a/49078/26271

Saya bertanya-tanya apakah itu aman untuk dilakukan?

dev.e.loper
sumber

Jawaban:

40

Ada keuntungan keamanan yang sangat terbatas dalam memiliki requirettydi server. Jika beberapa kode non-root dieksploitasi (skrip PHP, misalnya), requirettyopsi ini berarti bahwa kode eksploit tidak akan dapat langsung memutakhirkan hak istimewanya dengan menjalankan sudo.

Mungkin ada cara lain bagi penyerang untuk mendapatkan root, dan tentu saja penyerang masih akan dapat merusak situs Anda, tetapi tidak membiarkan penyerang mendapatkan root berarti bahwa layanan lain berjalan karena pengguna yang berbeda akan tetap berjalan normal dan penyerang menang ' t dapat menghapus log sistem. Jika tidak ada sudoaturan Anda yang berbahaya seperti membuat direktori , ini bukan masalah.

Selanjutnya - dan lebih memberatkan bagi requiretty- tidak ada hak istimewa diperlukan untuk membuat tty, misalnya dengan harapan . Jadi, sebaiknya matikan requiretty: sendiri, itu tidak memberikan keuntungan keamanan. Itu memang memberikan keuntungan auditabilitas ringan ketika dieksekusi oleh pengguna (karena log memberikan ide yang lebih baik tentang siapa yang dipanggil sudodan dari mana mereka berasal), tetapi tidak ketika dieksekusi dari pekerjaan latar belakang.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Apakah maksud Anda jika pengguna dapat menjalankan expect(atau screenmisalnya), maka requirettytidak berguna dari sudut pandang keamanan? (Saya tidak begitu mengerti apa yang Anda maksud dengan "mengutuk" dalam kalimat itu)
Georges Dupéron
@ GeorgesDupéron Ya, itu dia. Karena siapa pun dapat membuat tty, requirettyopsi tidak mencegah siapa pun menggunakan sudo.
Gilles 'SO- stop being evil'
3
requirettydapat mencegah pengguna dari membocorkan kata sandi mereka dalam cleartext, jika mereka mengeksekusi perintah sudo yang memerlukan kata sandi melalui ssh. Itu ada di sana untuk memaksa pengguna untuk memanggil ssh -t.
Chris Betti
1
@ Chris Betti - mengapa itu hal yang baik, untuk menegakkan ssh -t ...?
Rop
Pemikiran saya pada saat itu adalah bahwa dalam kasus ini, jika Anda menjalankan perintah sudo jarak jauh yang meminta kata sandi, maka lebih baik untuk memanfaatkan program askpass mesin jarak jauh daripada mengisi kata sandi dalam cleartext melalui konsol. Sejujurnya saya tidak tahu jika hal itu memberikan peningkatan keamanan, selain dari kemungkinan mencegah situasi di mana kata sandi Anda bergema ke layar saat Anda mengetiknya. Saya percaya saya berpikir bahwa program askpass tidak akan dipanggil tanpa tty atau pseudo-tty.
Chris Betti