Izin /etc/shadow
adalah 600, yang berarti tidak dapat dibaca oleh siapa pun kecuali root.
Namun, karena semua kata sandi di dalamnya tidak disimpan dalam teks yang jelas tetapi sebagai hash (yang berarti tidak mungkin untuk menghitung kata sandi asli dari hash), mengapa tidak dapat dibaca oleh semua orang?
permissions
files
shadow
Shubhanshu Vishwakarma
sumber
sumber
/etc/shadow
itu600
?Jawaban:
Untuk mencegah serangan brute-force offline.
Meskipun Anda tidak dapat membalik hash, Anda masih dapat mencoba hashing setiap kata sandi yang mungkin sampai Anda menemukan kecocokan, dan Anda dapat melakukan jutaan percobaan per detik dengan perangkat keras yang baik dan akses lokal ke file.
Jika file memiliki
644
izin, maka siapa pun yang masuk ke sistem Anda, bahkan dalam sesi tamu, akan dapat menyalin file ini dari komputer Anda (apakah ke stik USB atau melalui jarak jauhscp
) dan mencoba serangan brute-force offline , tanpa meninggalkan bukti apa pun di komputer Anda .Perhatikan bahwa izin pada Ubuntu sebenarnya
640
, bukan600
:Ini tidak masalah, karena masih belum ada izin untuk orang lain, dan, secara default, tidak ada orang di
shadow
grup.Awalnya, hash disimpan di
/etc/passwd
(itulah sebabnya itu disebutpasswd
), seperti ketika Linux dibuat, cracking hash, bahkan tipe lemah yang digunakan saat itu, praktis tidak mungkin. Namun, pada akhirnya, kekuatan pemrosesan maju ke titik di mana crack hash, setidaknya kata sandi yang relatif lemah, menjadi layak.Mengubah izin
/etc/passwd
untuk640
atau600
tidak berfungsi, karena ada banyak alasan sah untuk dapat membaca/etc/passwd
sebagai pengguna biasa (mengonversi UID menjadi nama pengguna, mendapatkan nama lengkap pengguna, nomor telepon, dll.), Sehingga hash dipindahkan ke/etc/shadow
, yang diberi640
izin. Dix
tempat kata sandi hash untuk pengguna di/etc/passwd
digunakan untuk menunjukkan bahwa hash untuk pengguna yang disimpan/etc/shadow
sebagai gantinya.sumber
ls
tidak perlu setuid root untuk menerjemahkan dari uid ke nama.Sebenarnya, / etc / shadow dibuat untuk memungkinkan perpindahan dari daftar nama pengguna dan kata sandi yang dapat dibaca secara publik.
Bertahanlah, ini akan menjadi sedikit pelajaran sejarah, sebelum kita sampai pada jawaban yang sebenarnya. Jika Anda tidak peduli tentang sejarah, cukup gulirkan sedikit.
Di masa lalu, OS mirip Unix, termasuk Linux, umumnya semua menyimpan kata sandi di / etc / passwd. File itu dapat dibaca dunia, dan masih, karena mengandung informasi yang memungkinkan pemetaan misalnya antara ID pengguna numerik dan nama pengguna. Informasi itu sangat berguna bahkan bagi pengguna biasa untuk tujuan yang sah sepenuhnya, sehingga membuat dunia file dapat dibaca sangat bermanfaat bagi kegunaan.
Bahkan saat itu, orang-orang menyadari bahwa memiliki kata sandi dalam teks biasa dalam file di lokasi terkenal yang bisa dibaca siapa saja yang bisa masuk dengan bebas adalah ide yang buruk. Jadi kata sandi di-hash, dalam arti tertentu. Itulah mekanisme hashing kata sandi "crypt" lama, yang hampir tidak pernah digunakan pada sistem modern, tetapi sering didukung untuk tujuan warisan.
Lihatlah / etc / passwd di sistem Anda. Lihat bidang kedua itu, yang mengatakan di
x
mana-mana? Ini digunakan untuk menyimpan kata sandi hash untuk akun yang bersangkutan.Masalahnya adalah orang-orang dapat mengunduh /etc/ passwd, atau bahkan tidak mengunduhnya, dan berusaha memecahkan kata sandi. Ini bukan masalah besar sementara komputer tidak terlalu kuat (Clifford Stoll, dalam The Cuckoo's Egg , memberikan, seingat saya, waktu untuk hash satu kata sandi pada sistem kelas PC IBM pada pertengahan 1980-an sekitar satu detik) ), tetapi itu menjadi masalah karena kekuatan pemrosesan meningkat. Pada titik tertentu, dengan daftar kata yang baik, meretas kata sandi itu menjadi terlalu mudah. Karena alasan teknis, skema ini juga tidak dapat mendukung kata sandi lebih dari delapan byte.
Dua hal dilakukan untuk mengatasi ini:
File itu adalah / etc / shadow.
Perangkat lunak yang bekerja dengan / etc / shadow umumnya sangat kecil, sangat fokus, dan cenderung menerima beberapa pemeriksaan ekstra dalam ulasan karena potensi masalah. Ini juga berjalan dengan izin khusus, yang memungkinkannya untuk membaca dan memodifikasi / etc / shadow, sambil menjaga pengguna biasa tidak dapat melihat file itu.
Jadi begitulah: Izin pada / etc / shadow bersifat restriktif (meskipun, sebagaimana telah disebutkan, tidak seketat yang Anda sebutkan) karena seluruh tujuan file tersebut adalah untuk membatasi akses ke data sensitif.
Kata sandi hash seharusnya kuat, tetapi jika kata sandi Anda ada di 500 Kata Sandi Top di daftar Internet , siapa pun yang memiliki akses ke hash masih akan dapat menemukan kata sandi dengan cepat. Melindungi hash mencegah serangan sederhana itu dan menaikkan standar serangan sukses dari mengintip sederhana menjadi mengharuskan seseorang untuk menjadi administrator sistem pada host, atau melalui serangan eskalasi hak istimewa terlebih dahulu. Terutama pada sistem multi-pengguna yang dikelola dengan benar, keduanya secara signifikan lebih sulit daripada hanya melihat file yang dapat dibaca dunia.
sumber
/etc/shadow
tidak memiliki "kata sandi bayangan" (karena itu bukan suatu hal). Seluruh file adalah bayangan/etc/passwd
. Lihat cara terminologi digunakan dalam Linux Shadow Password HOWTO : Mengapa membayangi file passwd Anda? . Tidak seperti beberapa penggunaan lain dari istilah "Bayangan" dalam komputasi, itu bukan salinan bayangan , meskipun (seperti membayangi kode BIOS ke dalam RAM daripada menjalankan dari ROM). Field di / etc / passwd adalah placeholder, berisi karakter khusus yang berarti "hash kata sandi asli ada di / etc / shadow".Siapa yang memberitahumu itu?
Jawaban sederhana: izin di Linux dianggap serius. Tidak ada alasan bagi "orang lain" untuk melakukan apa saja dengan
/etc/shadow
. Dan tidak ada alasan untuk grup "bayangan" untuk menulis padanya. Dan eksekusi di luar urutan.Karena tidak ada satu alasan pun untuk melakukannya.
Hash adalah satu arah. Memberi seseorang akses baca memungkinkannya menggunakan skrip untuk menyalahgunakan satu arah ini: cukup daftarkan kata apa saja yang dapat Anda bayangkan dan buat hash. Pada titik tertentu mungkin cocok dengan kata sandi. Mungkin butuh beberapa saat juga.
Ini jawabannya adalah menarik dan memiliki beberapa perkiraan pada kasar memaksa.
sumber
Latar belakang penting:
/etc/shadow
hanya ada untuk tujuan menyembunyikan hash kata sandi. Di Masa Awal Unix, hash kata sandi disimpan di/etc/passwd
. Ketika komputer semakin kuat, koneksi jaringan semakin gigih dan eksploitasi keamanan semakin canggih, orang-orang menyadari bahwa menjaga kata sandi yang mudah dibaca dapat menimbulkan masalah. (Aku tidak akan merinci eksploitasi; sudah ada cukup jawaban bagus tentang itu.)Tetapi
/etc/passwd
tidak dapat dibaca-dilindungi: Digunakan oleh semua jenis program untuk memetakan id angka pengguna ke nama pengguna, dan untuk mencari direktori home, shell default, nama lengkap pengguna (dan nomor kantor dll. - lihatman finger
) . Jadi bagian yang sensitif, kata sandi hash, dipindahkan ke/etc/shadow
, dan sisanya tetap seperti itu. Itu sebabnya/etc/passwd
, abaikan namanya, berisi segalanya kecuali kata sandi (hash).sumber