Saya memiliki skrip Bash yang secara otomatis mengautentikasi dengan layanan menggunakan nama pengguna dan kata sandi saya. Kredensial saat ini disimpan sebagai teks biasa di dalam skrip.
Peringatan apa yang harus saya ambil untuk paling aman menyimpan kredensial ini sambil tetap mengizinkan akses skrip?
Poin klarifikasi:
- Saya mengerti bahwa, jika tersedia, metode otentikasi lain harus digunakan sebagai gantinya. Saya masih ingin tahu apa yang harus dilakukan jika otentikasi kata sandi adalah satu-satunya pilihan.
- Tidak menyimpan kata sandi sama sekali bukanlah jawaban yang dapat diterima di sini. Saya bertanya tentang kasus di mana skrip harus memiliki akses tanpa pengawasan ke kata sandi.
Jawaban:
Layanan apa? Layanan tertentu memiliki metode lain untuk mengotentikasi, misalnya kunci SSH untuk SSH bersama dengan agen SSH.
Saya akan menyimpan kata sandi terpisah dari skrip, dan memastikan bahwa semua komponen jalur memiliki izin yang benar. Misalnya, pastikan bahwa di jalan
/path/to/file
,/
,/path
dan/path/to
dimiliki oleh pengguna Anda percaya (root
) dan bahwa ini tidak ditulis oleh seseorang yang tidak diizinkan untuk melihat file Anda. Akhirnya, izin yang disarankanfile
adalah 600 atau 400.Itu
file
bisa terlihat seperti ini:Dalam skrip Anda, gunakan kode di bawah ini untuk mengimpor variabel:
Mengenai skrip Anda, pastikan skrip itu tidak berisi lubang yang memungkinkan penyerang mengeksekusi kode dalam konteks skrip (mis. Lingkungan yang tidak terkontrol yang mungkin memiliki
$PATH
set variabel yang sewenang-wenang atau penggunaan file lain yang tidak sah (mis. Sumber file yang bisa ditulis dunia) .Sedangkan untuk perlindungan kata sandi Anda yang sebenarnya, Anda tidak bisa. Itu harus tersedia entah bagaimana ke layanan lain. Sebagai alternatif, Anda dapat mengenkripsi file / skrip yang berisi kata sandi menggunakan
openssl
ataugpg
jadi Anda harus memasukkan kata sandi sebelum kredensial dibuka. Ini sangat berguna jika kata sandi layanan Anda sulit diingat.sumber
Alih-alih melakukan hardcoding kata sandi dalam file, simpan kata sandi dalam file terpisah dan lindungi file (
chmod 700
atauchmod 500
) sehingga hanya pengguna yang berwenang yang dapat mengaksesnya.Ambil kata sandi dengan
cat /dir/to/file/with/.password
alih - alih membaca file dan menyimpan kontennya ke dalam variabel.sumber
--passphrase-file
opsi gpg .chmod 400
untuk file (hanya baca). Tentu saja, Anda harus mengamankan direktori terkemuka (700 atau 500, atau bahkan 100 jika Anda paranoid). Perhatikan bahwa 400 (atau 500 untuk direktori) sudah cukup, mode lain (100) dapat dianggap sebagai keamanan melalui ketidakjelasan , seperti menyembunyikan file dengan meletakkan sebuah titik di depan nama.Saya tahu ini adalah pertanyaan lama tetapi saya menghadapi masalah yang sama dan saya menggunakan gantungan kunci Ubuntu untuk menyelesaikannya. Berikut ini solusinya di ubuntu 18.04LTS Buka terminal Tuliskan
keyring set {{service}} {{username}}
misalnya jika Anda menggunakan ini untuk pencatatan kata sandi sekolah:Ini akan mencatat Anda untuk kata sandi, masukkan kata sandi. Sekarang kata sandi yang Anda masukkan disimpan di keyring Ubuntu.
Untuk mendapatkan kata sandi ini, tulis di terminal:
untuk menggunakan ini dalam konteks skrip:
Sekarang kata sandi berisi kata sandi yang Anda masukkan sebelumnya.
sumber