Apa tujuan dari file / etc / shadow di sistem operasi Linux? Juga, apakah sama untuk klien SUSE? Ada satu file shadow cache yang dipertahankan apa tujuannya itu?
Sejak awal, sistem operasi Unix dan Unix-style (termasuk Linux) selalu menyimpan kata sandi sebagai hash kriptografi (1). Hash ini awalnya disimpan /etc/passwd
, tetapi file ini harus dapat dibaca di seluruh dunia untuk membuat informasi tersedia untuk tujuan lain - bahkan ls -l
kebutuhan sederhana untuk membaca /etc/passwd
untuk mengubah id pengguna numerik setiap pemilik file menjadi nama pengguna mereka untuk ditampilkan. Namun, memiliki kata sandi hash dalam file yang dapat dibaca dunia memungkinkan pengguna jahat untuk dengan mudah mendapatkan hash itu dan berupaya menghasilkan kata sandi yang dapat digunakan (2) untuk akun pengguna lain.
Untuk mencegah hal ini, kata sandi hash pada akhirnya dipindahkan ke file yang hanya dapat dibaca oleh root (dan kadang-kadang sekelompok administrator istimewa) /etc/shadow
,. Ini menyembunyikan hash dari pengguna normal sistem sambil tetap tersedia untuk keperluan otentikasi pengguna.
Catatan :
Pedantic, saya tahu, tetapi kata sandi yang disimpan tidak dienkripsi. Mereka hash menggunakan algoritma hashing kriptografis-aman (setidaknya pada saat itu ditulis). Perbedaan utama yang relevan di sini adalah bahwa hash adalah fixed-length (panjang teks terenkripsi bervariasi berdasarkan pada panjang teks yang dienkripsi) dan non-reversibel (teks terenkripsi dapat didekripsi, teks hash tidak bisa).
Karena hash adalah panjang tetap, ada sejumlah input yang tak terbatas yang akan cocok dengan representasi hash yang diberikan. Oleh karena itu, seorang penyerang dapat menemukan kata sandi yang berfungsi yang tidak selalu sama dengan kata sandi pengguna yang memiliki - meskipun ini sangat tidak mungkin mengingat ukuran hash kripto modern.
The
/etc/shadow
File diciptakan untuk alasan keamanan, dan memegang password terenkripsi masing-masing pengguna.Awalnya, kata sandi terenkripsi disimpan di
/etc/passwd
./etc/passwd
harus dapat dibaca oleh dunia sehingga sistem dapat memetakan userids ke nama pengguna, dan agar pengguna dapat mengetahui informasi tentang satu sama lain, misalnya direktori home pengguna lain, atau nomor telepon mereka, yang secara tradisional disimpan di bidang "gecos" dan ditampilkan oleh utilitas "jari".Tetapi kemudian orang-orang menyadari bahwa ini adalah masalah keamanan. Siapa pun dengan waktu yang cukup dapat melakukan apa yang disebut serangan bruteforce , dengan secara sistematis menghasilkan kata sandi terenkripsi untuk setiap kata sandi yang mungkin. Jika penyerang melakukan itu tanpa benar-benar mencoba masuk melalui
telnet
ataussh
, sistem tidak dapat mengetahui bahwa ia sedang diserang.Jadi kata sandi terenkripsi dipindahkan ke yang baru dibuat
/etc/shadow
, yang hanya dapat dibaca oleh root.Ini juga berisi informasi lain yang
/etc/passwd
file tidak mendukung terkait dengan akun dan kata sandi pengguna, misalnya kapan kata sandi terakhir diubah dan kapan akan kedaluwarsa.Lihat
man 5 shadow
( versi web ) untuk detail lengkap dari format file.Saya tidak bisa mengatakan apakah itu sama untuk SUSE, tanpa mengetahui versi SUSE yang Anda hadapi. Misalnya, sistem SUSE Anda mungkin menggunakan Blowfish daripada MD5.
Anda juga menyiratkan bahwa Anda sedang mencampur
/etc/shadow
file Anda dengan sistem yang menjalankan distribusi Linux yang berbeda, tetapi tidak mengatakan apa itu distribusi lainnya.Lihat Masalah migrasi file shadow dari SuSE 9.3 ke Ubuntu Server x86_64 misalnya.
Untuk mencoba mengetahuinya, buka
/etc/shadow
dan lihat apakah bidang kata sandi terenkripsi dimulai dengan$1$
atau$2$
. Jika mengandung$1$
, maka itu MD5, dan kompatibel dengan sebagian besar distribusi lainnya. Jika mengandung$2$
, maka itu mungkin Blowfish menurut file bayangan Blowfish di Debian .Jika Anda menggunakan Ubuntu, hasil pencarian Google pertama untuk Ubuntu blowfish mungkin merupakan tempat awal yang baik.
sumber
Pengguna terdaftar dalam
/etc/passwd
file. File ini berisi banyak informasi yang digunakan oleh systemm tidak hanya untuk memungkinkan pengguna untuk masuk.Setiap baris sesuai dengan entri pengguna dan bidang yang berbeda dipisahkan oleh titik dua. Yang pertama diajukan adalah login, diikuti oleh kata sandi yang sesuai.
Kata sandi terenkripsi dulu disimpan di bidang ini. Namun,
/etc/passwd
file tersebut harus dapat dibaca oleh semua orang di sistem, sehingga enkripsi tidak mencegah dari serangan brute force, seperti yang telah dikatakan oleh @Mikel. Solusinya adalah untuk memindahkan password terenkripsi di akar-hanya file yang dapat dibaca:/etc/shadow
.Dengan demikian,
/etc/shadow
berisi kata sandi terenkripsi dari pengguna sistem. Sistem tahu itu harus memeriksa kata sandi dalam file ini ketika bidang kata sandi di/etc/passwd
mengandung x saja (yang berarti " menyeberang ke / etc / shadow")sumber
/etc/passwd
/ masih hash dengan cara yang sama persis jika mereka berada di/etc/shadow
. Anda tidak benar-benar mengatakan bahwa kata sandi di dalam/etc/passwd
akan menjadi teks biasa, tetapi akan mudah bagi seseorang yang tidak terbiasa dengan * nix penanganan kata sandi untuk salah menafsirkan jawaban Anda sebagai menyiratkan hal itu.x
sebenarnya berarti apa-apa. Itu ada di sana hanya sebagai hash yang tidak valid (yang tidak cocok dengan kata sandi apa pun). Beberapa sistem menggunakan!
.Mari kita lihat apakah saya bisa mendapatkan semua suara di dunia, karena saya menulis apa yang menjadi Linux Shadow Password Suite di '87;)
File asli
/etc/passwd
berisi hash kata sandi cleartext berbasis DES yang dimodifikasi. Pada saatcrypt()
fungsi itu dibuat, diyakini (dan ini dinyatakan oleh pencipta sistem operasi UNIX) bahwa serangan terhadap hash kata sandi tidak akan mungkin, karena jumlah kata sandi yang mungkin dan penggunaan 12-bit (4,096 nilai yang memungkinkan) "garam". Setiap password cleartext yang mungkin memiliki 4.096 nilai hash yang mungkin, dan dengan 64-bit hasil hash, yang memberikan total 2 ^ 72 kemungkinan hash password.Seperti poster lain yang disebutkan,
/etc/passwd
juga digunakan oleh berbagai utilitas untuk memetakan antara nama pengguna dan nilai-nilai UID (/etc/group
file menyediakan fungsi analog untuk grup) dan yang mengharuskannya dapat dibaca dunia.Pada 1980-an menjadi jelas bahwa serangan kamus terhadap hash kata sandi yang disimpan dalam
/etc/passwd
file menjadi layak dan/etc/shadow
diperkenalkan ke AT&T UNIX dalam rilis awal Sistem V. Saya mendokumentasikan halaman manual yang saya gunakan untuk menulis perpustakaan Shadow asli, dan saya sudah sejak dilupakan, tapi itu pasti rilis System V awal, mungkin SVR3.2.Apa yang dilakukan AT&T, dan apa yang saya terapkan untuk SCO Xenix (SCO Xenix asli, bukan SCen Xenix jahat kemudian) pada tahun '87 yang akhirnya mulai digunakan di Linux, hanya memindahkan kata sandi hash ke
/etc/shadow
. Ini mencegah serangan drive-by, di mana pengguna yang tidak memiliki hak memperoleh salinan/etc/passwd
dan menjalankan serangan terhadapnya. Jika Anda terbiasa dengan mengapa saya menulis Shadow di tempat pertama, saya memiliki pengguna mengunduh/etc/passwd
file saya melalui UUCP di masa ketika kami masih menggunakan UUCP untuk hampir semuanya.Pada saat Linux dibuat dan digunakan secara luas, ada banyak alat untuk menyerang hash kata sandi. Implementasi ulang berkinerja tinggi
crypt()
adalah satu jalan, dan serangan berbasis kamus melalui alat seperti Crack dan libcrack adalah yang lain. Pelabuhan awal dilakukan oleh Nate Holloway dan Floria La Roche (Saya memberi mereka kredit, saya tidak tahu apakah ada yang melakukan pekerjaan sebelum mereka).Akhirnya penggunaan
crypt()
hash berbasis, bahkan dalam file yang dilindungi, tidak lagi aman danMD5
perubahan hash berbasis asli dibuat.MD5
akhirnya dianggap terlalu lemah, dan hash yang lebih baru digunakan.Secara teori, hash yang cukup kuat dapat disimpan
/etc/passwd
. Keamanan operasional yang buruk berarti bahwa banyak sistem memiliki/etc/shadow
file mereka tersedia melalui berbagai vektor serangan - "Saya mencuri file cadangan" mungkin yang paling mudah.sumber