Jadi pertama, saya tahu, saya harus menggunakan kunci auth dengan SSH. Tidak perlu menjelaskannya padaku.
Masalahnya di sini adalah bahwa saya memiliki banyak server, dan saya harus memiliki skrip untuk dapat menghubungkan masing-masing.
Saya menggunakan otentikasi kunci kapan pun saya bisa, namun itu tidak mungkin pada setiap server (saya tidak memiliki kendali atas ini). Jadi SSH dengan login, atau terkadang telnet.
Jadi untuk beberapa saya hanya menyimpan kata sandi dalam db, dan skrip saya ambil ketika diperlukan. Masalahnya adalah sepertinya tidak aman untuk melakukannya. Apakah ada cara untuk membuatnya sedikit lebih aman?
Suka cara khusus menyimpannya?
ssh
password
password-management
wokati
sumber
sumber
Jawaban:
Jika skrip Anda dapat terhubung ke salah satu server itu, siapa pun yang memiliki akses ke skrip (atau akses istimewa ke mesin yang menjalankan skrip) dapat terhubung ke salah satu server tersebut.
Jika skrip perlu dijalankan secara mandiri, semua taruhan dibatalkan. Jawabannya di sini adalah tidak, tidak ada cara yang benar-benar aman untuk menyimpan kata sandi di lingkungan seperti itu . Tidak ada cara yang benar-benar aman dan praktis untuk melakukan sesuatu.
Alih-alih mencoba menghindari yang tak terhindarkan, Anda harus fokus pada pertahanan secara mendalam .
Fristly, tentu saja, Anda harus melindungi kata sandi secara memadai . Ini biasanya berarti menyimpannya dalam file yang terpisah dari skrip Anda dan mengonfigurasi izin sistem file yang terbatas . Hanya itu yang dapat Anda lakukan di front ini, dari sudut pandang keamanan.
Langkah-langkah lain pasti dapat menambah ketidakjelasan dalam proses tersebut. Mengenkripsi kata sandi akan membuat penyerang perlu mencari kunci dekripsi. Menggunakan semacam penyimpanan sistem operasi yang dilindungi umumnya melindungi terhadap pengguna lain yang mengakses kunci Anda (sehingga tidak memberikan keuntungan dibandingkan izin sistem file, selain menjadi kompleks untuk diserang - dan digunakan). Langkah-langkah ini akan menunda serangan, tetapi kemungkinan besar tidak mencegahnya terhadap penyerang yang gigih.
Sekarang, mari kita perlakukan kata sandi sebagai publik sejenak. Apa yang dapat Anda lakukan untuk mengurangi kerusakan?
Solusi lama dan teruji adalah membatasi apa yang dapat dilakukan kredensial tersebut. Pada sistem UNIX, cara yang baik untuk melakukan ini adalah mengatur pengguna yang terpisah untuk skrip Anda dan membatasi kemampuan pengguna itu , baik pada mengakses dan server yang diakses. Anda dapat membatasi kemampuan pengguna pada level SSH , pada level shell atau mungkin menggunakan mekanisme Kontrol Akses Wajib seperti SELinux .
Sesuatu yang Anda mungkin juga ingin pertimbangkan adalah memindahkan logika skrip ke server . Dengan begitu, Anda mendapatkan antarmuka yang lebih kecil yang lebih mudah dikendalikan, dan terutama ...
Monitor . Selalu pantau akses ke server. Lebih disukai, otentikasi log dan perintah dijalankan hanya untuk log tambahan . Jangan lupa memantau perubahan file skrip menggunakan
auditd
, misalnya.Tentu saja, banyak dari mekanisme ini tidak berguna jika Anda tidak memiliki kontrol atas server, karena pertanyaan Anda tampaknya menyiratkan. Jika itu masalahnya, saya akan menyarankan Anda untuk menghubungi orang-orang yang mengelola server dan memberi tahu mereka tentang skrip Anda dan potensi jebakan keamanan.
sumber
Jawaban singkatnya adalah: Tidak.
Jawaban panjangnya adalah: Tidak, tidak ada cara yang sepenuhnya aman. (Ini termasuk variabel lingkungan, yang dapat diakses oleh orang lain di server.) Yang paling dekat Anda dapat menyimpannya dalam beberapa format terenkripsi - keepass, file yang dienkripsi GPG, atau sesuatu yang lain di sepanjang baris tersebut. Tetapi pada titik tertentu Anda perlu mendekripsi kata sandi agar skrip Anda dapat menggunakannya, dan pada titik itu Anda akan rentan.
Dengan kata lain, Anda perlu memperhatikan keamanan mendalam secara mendalam, baik pada server tempat skrip dijalankan, pada jaringan dan pada server target.
sumber
Anda dapat mengenkripsi kata sandi dalam db Anda dengan kata sandi kedua dan menyimpan kata sandi ini pada mesin (3) yang terpisah dan memiliki sistem di mana skrip yang perlu kata sandi dari db pertama menghubungkan mesin ke-3 ini untuk mendapatkan kata sandi dekripsi. , mendekripsi kata sandi dalam db dengan kata sandi yang didapatnya dari mesin ke-3 dan berfungsi.
Tentu saja ini tidak benar-benar menambah keamanan ekstra, penyerang dengan hak istimewa yang cukup juga bisa saja meminta kata sandi dari mesin ke-3.
Tetapi intinya adalah bahwa pihak ke-3 dapat mengendalikan mesin ke-3, misalnya bos atau petugas keamanan Anda, atau pihak ke-3 yang mengendalikan server yang tidak Anda kontrol.
Dengan cara ini Anda dapat memberi tahu mereka, jika mereka memiliki masalah, jika Anda keluar dari pekerjaan Anda dan mereka tidak percaya orang itu menggantikan Anda, atau mereka hanya ingin skrip Anda berhenti mengakses mesin mereka, mereka dapat menarik steker pada tanggal 3 mesin, dan skrip Anda tidak akan lagi memiliki akses ke kata sandi.
sumber