Saya akan merekomendasikan bahwa Anda hanya menggunakan akun root di tempat pertama. Jika Anda mengaturnya seperti ini:
- Konfigurasikan Anda
sshd_configpada mesin target untuk PermitRootLogin without-password.
- Gunakan
ssh-keygenpada mesin yang menarik cadangan untuk membuat kunci pribadi SSH (hanya jika Anda belum memiliki kunci SSH). Jangan menetapkan frasa sandi. Google tutorial jika Anda memerlukan detail untuk ini, harus ada banyak.
- Tambahkan konten
/root/.ssh/id_rsa.pubmesin cadangan ke /root/.ssh/authorized_keysmesin target Anda.
- Sekarang mesin cadangan Anda memiliki akses root ke mesin target Anda, tanpa harus menggunakan otentikasi kata sandi.
maka setup yang dihasilkan harus cukup aman.
sudo, terutama dikombinasikan dengan NOPASSWDseperti yang direkomendasikan dalam komentar, tidak memiliki manfaat keamanan hanya dengan menggunakan akun root. Misalnya saran ini:
tambahkan berikut ini ke /etc/sudoersfile Anda :rsyncuser ALL= NOPASSWD:/usr/bin/rsync
pada dasarnya tetap memberikan rsyncuserizin root. Anda bertanya:
@ MartinvonWittich Mudah mendapatkan shell root penuh karena rsyncdijalankan dengan sudo? Silakan berjalan [m] melalui itu.
Yah, sederhana. Dengan konfigurasi yang disarankan, rsyncusersekarang dapat dijalankan rsyncsebagai root tanpa diminta kata sandi. rsyncadalah alat yang sangat kuat untuk memanipulasi file, jadi sekarang rsyncusermemiliki alat yang sangat kuat untuk memanipulasi file dengan izin root. Menemukan cara untuk mengeksploitasi ini hanya membutuhkan waktu beberapa menit (diuji pada Ubuntu 13.04, membutuhkan dash, bashtidak berhasil):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Seperti yang Anda lihat, saya telah membuat sendiri shell root; whoamimengidentifikasi akun saya sebagai root, saya dapat membuat file /etc, dan saya dapat membaca dari /etc/shadow. Eksploitasi saya adalah mengatur bit setuid pada dashbiner; itu menyebabkan Linux untuk selalu menjalankan biner itu dengan izin dari pemiliknya, dalam hal ini root.
Memiliki root sebenarnya tidak [disarankan] untuk alasan yang baik. - redanimalwar 15 jam yang lalu
Tidak, dengan ceroboh bekerja di sekitar akun root dalam situasi di mana sangat tepat untuk menggunakannya bukan untuk alasan yang baik. Ini hanyalah bentuk lain dari pemrograman pemujaan kargo - Anda tidak benar-benar memahami konsep di balik sudo vs root, Anda hanya secara membuta menerapkan keyakinan "root is bad, sudo is good" karena Anda pernah membacanya di suatu tempat.
Di satu sisi, ada situasi di mana sudopasti merupakan alat yang tepat untuk pekerjaan itu. Misalnya, ketika Anda bekerja secara interaktif pada desktop Linux grafis, katakanlah Ubuntu, maka harus digunakan dengan sudobaik dalam kasus-kasus langka di mana Anda kadang-kadang membutuhkan akses root. Ubuntu sengaja memiliki akun root yang dinonaktifkan dan memaksa Anda untuk menggunakan sudosecara default untuk mencegah pengguna dari selalu menggunakan akun root untuk masuk. Ketika pengguna hanya ingin menggunakan misalnya browser web, kemudian masuk sebagai root akan menjadi hal yang berbahaya , dan karena itu tidak memiliki akun root secara default mencegah orang bodoh melakukan ini.
Di sisi lain, ada situasi seperti Anda, di mana skrip otomatis memerlukan izin root untuk sesuatu, misalnya untuk membuat cadangan. Sekarang menggunakan sudountuk bekerja di sekitar akun root tidak hanya tidak ada gunanya, itu juga berbahaya: pada pandangan pertama rsyncusertampak seperti akun biasa yang tidak terjangkau. Tapi seperti yang sudah saya jelaskan, akan sangat mudah bagi penyerang untuk mendapatkan akses root penuh jika dia sudah mendapatkan rsyncuserakses. Jadi pada dasarnya, Anda sekarang memiliki akun root tambahan yang sama sekali tidak terlihat seperti akun root, yang bukan merupakan hal yang baik.
rootakun di tempat pertama.sudo, terutama dikombinasikan denganNOPASSWDseperti yang direkomendasikan dalam komentar, tidak benar-benar meningkatkan keamanan mesin Anda.