Saya punya server. Server saya adalah aman, tetapi mari kita bayangkan seorang hacker yang baik yang masuk dalam. Dia sekarang dapat melihat ke dalam /etc/passwd
dan /etc/shadow
. Saya ingin mengubah nama file itu /etc/passwd
menjadi sesuatu seperti /etc/xxanoda
.
Saya pikir saya bisa melakukan tautan, tetapi bagi seorang peretas itu akan mudah dilakukan ls -l
.
Dimungkinkan untuk mengganti nama file-file tersebut dan masih memiliki OS yang berjalan, tanpa masalah kompatibilitas, atau sama sekali tidak berguna? Hanya untuk mencari ilmu.
Jawaban:
The Filesystem Hierarchy Standard untuk unix-seperti sistem termasuk
/etc/passwd
di lokasi tetap, dan alat-alat yang akibatnya biasanya hardcoded untuk melihat di sana untuk itu. Sementara secara teori Anda dapat mengkompilasi ulang semua utilitas yang relevan untuk mencari di lokasi baru, penyerang apa pun selalu dapat hanya mencari string dalam biner-biner itu untuk menemukan file baru, atau menggunakan ekspresi reguler untuk menemukan file denganpasswd
konten-suka.The
shadow
file harus dibaca hanya untukroot
(dan mungkin untuk sebuah kelompok yang disebutshadow
). Jika seorang penyerang telah berhasil mendapatkan akses root ke sistem Anda, mereka memiliki kontrol penuh dan apakah mereka dapat membaca file passwd / shadow Anda atau tidak cukup relevan pada saat itu.Mungkin ada beberapa situasi di mana memiliki file yang tidak di tempat yang diharapkan dapat membantu, misalnya jika Anda memiliki server web yang tidak terkonfigurasi yang memungkinkan seseorang meminta
http://myserver/../../etc/passwd
, tetapi secara umum tipuan semacam ini akan memerlukan banyak pekerjaan untuk keuntungan keamanan minimal.sumber
/etc/passwd
, toh ?Hal terbaik yang akan terjadi adalah "sama sekali tidak berguna" seperti yang Anda katakan. (Itu tidak memberikan rintangan tambahan untuk penyusup)
/etc/passwd
memang mengandung nama akun, tetapi siapa pun yang memiliki akses shell ke sistem akan dapat menemukannya./etc/shadow
berisi informasi sensitif (hash kata sandi) tetapi hanya dapat dibaca untuk root. Jika seorang penyusup berhasil mendapatkan hak root - baik bagaimana Anda mengeja bencana ?sumber
Dalam Unices modern (dan Unix-likes, termasuk Ubuntu),
/etc/passwd
tidak mengandung rahasia apa pun. Mengganti nama itu akan lebih banyak masalah daripada nilainya, mengingat berapa banyak utilitas harus dibangun kembali untuk mencarinya di lokasi baru./etc/shadow
adalah masalah lain, karena ada rahasia dalam file itu, tetapi mengubah nama itu tidak akan membantu. Itu hanya dapat dibaca oleh root, jadi bahkan jika seorang hacker masuk ke sistem seperti beberapa pengguna lain, itu tidak cukup untuk sampai ke file. Inilah sebabnya mengapa kata sandi dikeluarkan/etc/passwd
: setiap orang harus dapat membaca/etc/passwd
, tetapi hanya root yang harus bisa mendapatkan kata sandi yang sebenarnya, sehingga kata sandi dipindahkan ke file yang hanya dapat dibaca oleh root.Jika hacker tidak mendapatkan root, kemudian mengubah nama tidak akan menyelamatkan Anda. Rekursif sederhana
grep
dapat memberi hacker daftar file dalam/etc/shadow
format seperti, dan kemudian peretas hanya perlu melihat melalui mereka untuk menemukan data yang dia inginkan. Anda telah menunda dia paling lama beberapa jam, dan mungkin lebih sedikit: sekali lagi, tidak sepadan dengan jumlah waktu yang diperlukan untuk memodifikasi dan mengkompilasi ulang semua utilitas yang bergantung pada/etc/shadow
lokasi.sumber
su
masuk ke akun apa pun yang diinginkannya, atau ia dapat mengubah kata sandi setiap pengguna di sistem. Dan jika ia benar-benar ingin memiliki kata sandi (kalau-kalau pengguna menggunakan kembali kata sandi mereka di tempat lain) ia dapat mengunggahlogin
biner yang dimodifikasi atau menambahkanpam
modul yang memotong upaya otentikasi dan menyampaikan kombinasi nama pengguna / kata sandi kepadanya.Anda tidak bisa hanya mengganti nama file-file ini. Banyak proses dan program akan mencarinya, karena ini adalah standar dalam sistem Linux. Yang dapat Anda lakukan adalah mengamankan server Anda dengan cara yang benar.
sumber
Meskipun mungkin tidak ada gunanya untuk mengubah nama
/etc/passwd
dan/etc/shadow
file, jika Anda ingin menambahkan keamanan, Anda mungkin ingin melihat PAM (modul otentikasi pluggable) dan NSS (Name Service Switch). Seperti di sini.PAM dapat digunakan untuk menambahkan modul otentikasi itu, sebagai gantinya membaca informasi otentikasi mereka dari file standar, membacanya dari sumber lain, seperti dari ldap atau database. Menggunakannya akan berarti
/etc/shadow
hampir bisa dihilangkan.NSS melengkapi PAM dengan membuat beberapa resolusi nama (seperti grup mana yang dimiliki oleh pengguna ini) independen dari file standar (
/etc/passwd
,/etc/groups
). Menggunakannya berarti file passwd Anda berpotensi hanya berisi opsi fallback untuk root, dan tidak lebih. Menggunakan kunci SSH untuk memvalidasi login root juga akan menghilangkan kebutuhan untuk memiliki kata sandi root di dalam file shadow (meskipun mungkin diinginkan jika koneksi SSH rusak).Atau jika Anda tidak ingin mengautentikasi pengguna Anda melalui database atau host ldap yang terpisah, Anda juga dapat membuat modul PAM dan NSS Anda sendiri, yang membaca data mereka dari file yang tidak standar, walaupun saya tidak akan merekomendasikan opsi ini.
Ketika Anda ingin mencoba menggunakannya jangan pernah lupa untuk menyimpan semacam fallback ke lapisan otentikasi yang dikenal, jika tidak, Anda dapat mengunci diri dari sistem, bahkan dengan root.
Perhatikan bahwa tidak semua aplikasi mendukung PAM (banyak yang melakukannya). Namun NSS dapat digunakan untuk mengimplementasikan otentikasi untuk aplikasi yang tidak mendukung PAM, dan beberapa situs yang saya baca tentang NSS sebenarnya menyarankan pendekatan ini. Namun ini berarti bahwa modul NSS akan menyediakan kata sandi (yang berpotensi) di-hash kepada siapa saja yang dapat mengakses lapisan otentikasi NSS, yang hampir selalu merupakan sesuatu yang ingin Anda hindari (pada dasarnya sama dengan memberikan akses baca non-root ke file shadow )! Jadi, jika Anda menggunakan pendekatan ini, pastikan NSS hanya digunakan untuk menyediakan data dasar (seperti konten
/etc/passwd
) kepada pengguna, dan PAM digunakan sebagai lapisan otentikasi.sumber