Apakah tidak aman untuk memiliki pengguna yang memungkinkan dengan sudo tanpa kata sandi?

10

Saya baru mengenal Ansible. Sebagian besar panduan penyediaan VPS yang saya lihat sejauh ini melakukan ini:

  1. nonaktifkan root dari login
  2. buat pengguna baru yang hanya bisa masuk dengan ssh(bukan kata sandi)
  3. tambahkan pengguna baru ke wheelgrup, dengan izin sudo tanpa kata sandi

Saya mengerti (1) dan (2), tetapi tidak (3).

Tentunya tanpa kata sandi sudosama seperti masuk sebagai root? Saya mengerti manfaatnya (kenyamanan), tetapi bukankah ini sangat tidak aman?

Saya menyadari bahwa admin menjalankan jaringan mereka dengan berbagai cara, dan ini bisa dikatakan "subyektif", tetapi ini adalah praktik yang SANGAT umum, bahkan ditampilkan dalam berbagai dokumen resmi resmi serta panduan yang diterbitkan oleh perusahaan hosting. Itu bertentangan dengan akal sehat. Apa logika di baliknya?

lonix
sumber
1
Ansible dimaksudkan untuk mengotomatisasi tugas-tugas administratif, sehingga umumnya memerlukan akses tingkat atas (root) karenanya "sudo tanpa kata sandi". Jika Anda hanya perlu menjalankan subset dari perintah yang tersedia di sistem Anda, Anda dapat menguncinya hanya untuk perintah-perintah dengan konfigurasi sudo yang lebih rinci. Sudo tanpa kata sandi tidak selalu berarti akses ke semua hal yang dapat dilakukan root (meskipun ini menjadi sulit untuk ditegakkan ketika Anda menyadari pengguna dapat berpotensi mengubah konfigurasi sudo Anda melalui sudo untuk memberi mereka kontrol yang lebih besar ...).
David Spillett
@ David Spillett Saya bertanya-tanya tentang hal itu - yaitu mendefinisikan perintah sudo mana yang diizinkan dalam file sudoers ... tapi saya membaca di suatu tempat yang memungkinkan melakukan segalanya dengan menafsirkan melalui perintah python kompleks, dan bahwa pendekatan itu akan cepat berantakan.
lonix

Jawaban:

18

Jika akun layanan dapat melakukan sudo tanpa kata sandi, maka Anda harus melindungi akses ke akun itu.

Memiliki akun tidak memiliki kata sandi, dan hanya menggunakan kunci ssh untuk masuk, selesaikan ini, asalkan Anda dapat menjaga kunci pribadi ssh tetap aman.

Michael Hampton
sumber
Jadi saya "semacam" benar dalam merasa terganggu oleh konvensi ini - namun, ini adalah konvensi untuk kemungkinan, karena kebutuhan / pragmatisme.
lonix
Jadi Anda mengatakan bahwa saya pada dasarnya "memindahkan" keamanan inti dari VPS ke sistem lokal saya, yang berisi kunci ssh akun yang mungkin? Dalam hal ini, titik lemah bukanlah VPS itu sendiri, melainkan, ini aku! Dan saya harus ekstra waspada dalam melindungi kunci ssh itu, dengan imbalan kenyamanan yang diberikan oleh otomasi yang memungkinkan kepada saya.
lonix
6
kunci ssh, frasa sandi yang dilindungi dengan ssh-agent, adalah kredensial yang cukup bagus.
John Mahowald
@lonix Semua sistem aman memerlukan kredensial. Sistem yang diamankan paling aman seperti langkah-langkah yang Anda lakukan dalam mengamankan kredensial ini, karena memiliki yang memberikan akses 100% kepada mereka. Jadi ya, Anda tidak dapat berharap untuk mengamankan VPS Anda jika Anda tidak mengamankan kunci SSH Anda dengan benar (atau root password atau apa pun). Fakta bahwa Anda mengonfigurasi sudo tanpa kata sandi tidak berarti apa-apa dari sudut pandang ini, mengaktifkan sudo dengan kata sandi tidak mengubah fakta bahwa Anda harus mengamankan kunci SSH.
Giacomo Alzetta
@GiacomoAlzetta Saya tahu itu, yang saya maksud di atas adalah bahwa tanggung jawab sedang dialihkan dari jarak jauh ke mesin lokal. Karena peningkatan sudo dilakukan tanpa kata sandi, titik lemah menjadi lokal.
lonix
4

Pengguna baru yang dibuat pada (2) hanya dapat masuk dengan kunci SSH, tanpa kata sandi. Kunci SSH memberikan akses root tidak langsung. Jadi ini setara dengan hanya mengizinkan login root dengan kunci.

Karena akun tidak memiliki kata sandi, tidak mungkin sudomeminta kata sandi. Ansible juga harus dapat menjalankan perintah. Memiliki kata sandi tambahan untuk diberikan di tempat yang sama dengan kunci tidak akan meningkatkan keamanan.

RalfFriedl
sumber
2

Masalahnya adalah bahwa ansible adalah untuk administrator dan otomatisasi, jadi jika Anda perlu memasukkan kata sandi untuk menjalankan skrip sebenarnya bukan cara terbaik. Juga tidak aman untuk menyimpan kata sandi untuk sudo dalam file atau database dan bisa mendapatkannya setiap kali menjalankan buku pedoman. Jadi kombinasi sudo tanpa kata sandi dan otentikasi dengan ssh Keys adalah metode terbaik untuk memastikan keamanan dan tidak ada masalah dengan menjalankan playbook. Anda juga seorang administrator dan tahu apa yang Anda pemrograman dalam buku pedoman. Jadi playbook tidak dapat menghancurkan server Anda.

NicoKlaus
sumber
Playbook dapat menghancurkan sistem Anda, tetapi jika Anda hanya menggunakan kunci lingkungan pengujian yang terpisah, itu tidak akan menghancurkan host produksi.
John Mahowald
Tepatnya, ini mudah-mudahan prasyarat ketika bekerja pada sistem produktif.
NicoKlaus
1
Ansible memiliki 'ansible-vault', dan plugins / modules / libraries yang mengizinkan penyimpanan rahasia di banyak sistem penyimpanan rahasia pihak ke-3 seperti bitwarden, hashicorp vault, keepass, dll.
Zoredache