Seberapa pentingkah kata sandi sudo?

25

Saya tahu bahwa kata sandi sudo melindungi komputer saya dari peretasan lokal oleh seseorang yang memiliki akses fisik ke sana ( edit: sebenarnya, tidak ). Kata sandi saya cukup kuat untuk tujuan itu, tetapi saya tahu itu tidak cukup kuat jika seseorang dapat dengan paksa memaksakannya dari jarak jauh.

Can anybody akses komputer saya dalam mode root menggunakan password sudo saya tanpa akses fisik ke komputer, pada instalasi desktop Ubuntu standar?

  1. Jika Anda memiliki akses jaringan, pasti ya (Jawaban singkat)
  2. Jika Anda tidak memperhatikan keamanan, ya (Jawaban panjang)
  3. Jika Anda menjalankan "ssh", dan tidak ada 2FA , ya ( komentar dan jawaban)
  4. Seseorang dapat mengakses komputer Anda sebagai root tanpa sudo / kata sandi pengguna
mxdsp
sumber
secara harfiah "siapa saja", termasuk saya, atau misalnya, beberapa pengelola ppa yang saya percayai, orang lain.
mxdsp
1
mereka dapat mengakses melalui SSH dan sudo untuk melakukan root.
Aizuddin Zali
1
persis. untuk mengeras ini Anda bisa menggunakan 2FA. Ikuti panduan
Aizuddin Zali
1
maka Anda diselamatkan dari serangan SSH. Ada banyak kemungkinan teknik peretasan yang digunakan orang.
Aizuddin Zali
1
Tidak ada yang namanya "sudo password".
hobbs

Jawaban:

34

Saya tahu bahwa kata sandi sudo melindungi komputer saya dari peretasan lokal oleh seseorang yang memiliki akses fisik ke sana.

Saya tidak ingin membuat Anda takut terlalu banyak, tetapi jika seseorang memiliki akses fisik Anda memberikan akses kepada mereka terlepas dari seberapa kuat kata sandi Anda. Diperlukan 1 reboot oleh seseorang agar seseorang dapat mengubah kata sandi root Anda (dapat dilakukan dari "grub rescue" tanpa perlu menyediakan kata sandi Anda saat ini). Ngomong-ngomong: metode ini dianggap valid dan merupakan fitur, dan risiko keamanan yang diterima (jika tidak, Anda tidak akan pernah dapat memperbaiki sistem Anda seandainya kata sandi dikompromikan).

tapi aku tahu itu tidak cukup kuat jika seseorang bisa dengan kasar memaksanya dari jarak jauh.

Di sini ada sesuatu yang lain dalam permainan: ROUTER harus cukup pintar untuk mengunci akses dari luar jika itu adalah permintaan berulang yang meminta informasi yang sama dalam waktu singkat. Pada dasarnya yang Anda miliki di sini adalah serangan DOS (atau DDOS jika 2+ komputer menyerang Anda). Router harus mematikan koneksi itu dan memberlakukan masa tunggu sebelum menerima permintaan baru dari koneksi itu.

Adakah yang bisa mengakses komputer saya dalam mode root menggunakan kata sandi sudo saya tanpa akses fisik ke komputer, pada instalasi desktop Ubuntu standar?

Pertama-tama mereka perlu terhubung, lalu memberikan kata sandi sudo. Mode "root" dinonaktifkan dan Anda tidak bisa langsung masuk ke prompt "#".

Perhatikan bahwa dimungkinkan untuk menyalahgunakan layanan. Jika Anda menjalankan "ssh" di mesin itu dan mereka dapat "ssh" ke sistem Anda, dan mendapatkan nama pengguna dan kata sandi Anda untuk pengguna itu (dan karena ia adalah pengguna admin, kata sandi sudo Anda juga) mereka dapat mengakses mesin Anda dan mengacaukannya. By the way: jika mereka melakukannya seperti itu, mereka harus memiliki pengetahuan tentang sistem Anda terlebih dahulu (seperti kata sandi Anda).

Tapi kemudian ada masalah dengan itu (dan metode lainnya): bagaimana mereka mendapatkan kata sandi Anda? Mereka TIDAK bisa mendapatkannya dari sistem Anda sendiri. Dan menebak secara umum tidak sepadan dengan masalahnya. Jika itu direkayasa secara sosial ... maka masalah Anda ada di sana, bukan dengan model keamanan sistem Anda, Ubuntu atau Linux pada umumnya.

Selama kata sandi sudo milik Anda, Anda akan / harus baik-baik saja. Dan Anda akan lebih baik jika itu adalah kata sandi yang kuat (mungkin mudah diingat untuk Anda tetapi tidak dapat ditebak oleh orang lain). Contoh yang saya gunakan sebelumnya ketika membahas ini: Jika anjing Anda bernama "Abwegwfkwefkwe" menggunakan "Abwegwfkwefkwe" sebagai kata sandi yang BURUK meskipun terlihat bagus (karena seseorang dapat bertanya kepada Anda: 'siapa nama anjing Anda' dan mereka mencobanya sebagai tebakan gratis). Jika Anda tidak memiliki hubungan dengan "Abwegwfkwefkwe" itu adalah kata sandi yang baik.

Saran terbaik yang bisa saya berikan:

  • jangan masukkan kata sandi admin Anda ketika diminta kecuali Anda tahu itu akan diminta. Jika Anda membuka browser dan diberi sembulan yang mirip dengan "meminta kata sandi akun admin" kami ... hentikan ... dan pikirkan terlebih dahulu.

  • jangan biarkan sistem Anda tanpa pengawasan ketika masa tenggang "sudo" aktif. sudo --reset-timestampmenghapus masa tenggang saat ini dan akan meminta kata sandi lagi ketika Anda selanjutnya menggunakan "sudo". Kunci layar Anda saat Anda membuka AFK.

  • jangan menginstal layanan atau perangkat lunak untuk bersenang-senang. Jika Anda tidak perlu sshtidak menginstal ssh, jika Anda tidak menggunakan server web, jangan memasang server web. Dan lihatlah layanan yang sedang berjalan. Jika Anda tidak menggunakan BT pada notebook, nonaktifkan itu. Jika Anda tidak menggunakan webcam nonaktifkan itu (jika aktif). Hapus perangkat lunak yang tidak Anda gunakan lagi.

  • dan untuk yang benar-benar paranoid (dan ya Paranoid Panda, saya melihat Anda): sering-seringlah mengganti kata sandi. Anda bahkan dapat menginstal pemburu rootkit untuk memeriksa akses yang tidak pantas.

  • Cadangkan data penting Anda ke sesuatu yang Anda jaga agar tidak terhubung. Jadi, bahkan jika Anda menemukan seseorang di sistem Anda, Anda dapat memformatnya, dan memulai kembali dengan instalasi baru dan data Anda dipulihkan.

Rinzwind
sumber
2
Anda dapat menyingkat sudo --reset-timestampke sudo -k, atau sudo -Kuntuk benar-benar paranoid (hanya diperlukan jika penyerang dapat mengatur waktu sistem nilai-nilai sewenang-wenang, di mana titik Anda mungkin sudah hilang).
Kevin
Jups. Saya menggunakan versi panjang sehingga jelas apa fungsinya. "-k" memang melakukan hal yang sama.
Rinzwind
1
@ mxdsp: Enkripsi dapat mencegah orang membaca konten dari partisi yang dienkripsi, jika frasa sandi cukup kuat, tetapi dimungkinkan untuk mengeluarkan kunci enkripsi dari komputer yang sedang beroperasi atau komputer yang baru saja dimatikan. Crypto juga merupakan bidang yang bergerak sangat cepat, dan Anda harus mengikuti perkembangan baru, jangan sampai enkripsi Anda menjadi usang dan mudah rusak.
Kevin
1
@ mxdsp ya. Untuk satu: Anda dapat memformat disk dan ketika data hilang ... Anda adalah orang dengan masalah.
Rinzwind
1
Bagian pertama secara implisit mengasumsikan tidak ada enkripsi disk penuh.
otus
6

Ya mereka bisa.

Ada beberapa cara untuk melakukannya, dan memaksa sudokata sandi dengan kasar mungkin bukan yang pertama.

Pertama, sudokata sandi adalah kata sandi pengguna Anda; jadi yang mereka butuhkan adalah kata sandi Anda .

Kedua, memecahkan kata sandi pengguna menggunakan brute-force untuk mengakses sistem mungkin merupakan pilihan terakhir.

Ada cara yang lebih elegan (tapi kebanyakan lebih efektif) untuk masuk ke sistem lain.

Biasanya penyerang akan pergi dan mencoba untuk mengeksploitasi kerentanan yang paling umum (yang paling dikenal mungkin mendapatkan shell pengguna dengan cara apa pun dan mengeksploitasi ShellShock untuk mendapatkan shell root) atau melakukan pekerjaan terbaik di sepanjang baris:

  • Memindai port terbuka pada sistem untuk mendapatkan informasi seperti:
    • Versi sistem operasi
    • Menjalankan versi layanan
  • Memanfaatkan sistem operasi yang dikenal atau menjalankan bug layanan (buffer overflows, ...) untuk mendapatkan setidaknya shell pengguna dan kemudian mencoba untuk mendapatkan shell root (sekali lagi, mungkin mengeksploitasi ShellShock)

Memaksa sudodengan kasar kata sandi / pengguna mungkin merupakan upaya seandainya root shell tidak dapat diperoleh sebaliknya, tetapi misalnya mengeksploitasi layanan yang berjalan karena root tidak akan meminta penyerang untuk memaksa paksa sudokata sandi / pengguna.

kos
sumber
1
Terima kasih. secara singkat, ini berarti bahwa seorang penyerang tidak memerlukan kata sandi sudo untuk mendapatkan akses root?
mxdsp
2
@ mxdsp Persis. Begini: jika seorang penyerang berhasil mendapatkan shell pengguna sudoer dengan cara apa pun (misalnya, mengeksplor program sudoer yang dijalankan pengguna) ia mungkin menggunakan eksploit yang dikenal (dalam jawaban saya, saya menyebutkan yang paling terkenal) untuk mendapatkan shell root, mem-bypass kebutuhan pengguna / sudokata sandi. Lebih baik lagi, jika dia berhasil mengeksploitasi layanan yang berjalan sebagai root, dia langsung root.
kos
1
@mxdsp Sekarang kami cukup menyamaratakan, tetapi lihat video ini untuk memahami misalnya bagaimana pengguna tanpa sudohak (= ~ pengguna yang penyerang masuk tetapi penyerang tidak mengetahui kata sandi) mungkin mendapatkan root shell hanya dengan mengeksploitasi bug yang dikenal (dalam hal ini ShellShock terkenal).
kos
1
@ mxdsp Di satu sisi bukan maksud saya pengguna sudoers, hanya pengguna. Itu tidak perlu, saya hanya memikirkan terlalu banyak hal pada saat yang bersamaan.
kos
3
  1. Jika saya telah mempelajari sesuatu dalam beberapa tahun terakhir tentang keamanan, maka satu hal: Tidak ada yang mustahil .

  2. Selama Anda memiliki akses ke jaringan, pasti. Setiap layanan yang berjalan pada sistem Anda yang dapat diakses melalui jaringan secara teoritis rentan dan dengan demikian kelemahan potensial.

Dan karena itu, bagi penyerang dengan ide-ide yang cukup itu mungkin. Anda dapat membuat sistem Anda seaman mungkin, tetapi Anda tidak dapat mencapai keamanan 100%.

Karena itu penting untuk menilai apa yang mungkin dengan upaya teknis yang dapat dibenarkan dan apa yang melindungi Anda dengan sangat baik sehingga Anda sendiri tidak dapat lagi bekerja.

AB
sumber
Saya punya akses jaringan. Bisakah lebih spesifik tentang seberapa besar kemungkinan serangan semacam itu?
mxdsp
1
gunakan otentikasi dua faktor. Anda perlu mengedit PAM.D dan sebagainya.
Aizuddin Zali
@Arronical tautannya dari forum ini juga dan panduan yang sangat bagus juga.
Aizuddin Zali
@Arronical saya telah memasukkannya di komentar pertanyaan. Panduan ini
Aizuddin Zali
Maaf @AizuddinZali saya belum me-refresh halaman!
Arronical
2

Saya tahu bahwa kata sandi sudo melindungi komputer saya dari peretasan lokal oleh seseorang yang memiliki akses fisik ke sana (edit: sebenarnya, tidak). Kata sandi saya cukup kuat untuk tujuan itu, tetapi saya tahu itu tidak cukup kuat jika seseorang dapat dengan paksa memaksakannya dari jarak jauh. Adakah yang bisa mengakses komputer saya dalam mode root menggunakan kata sandi sudo saya tanpa akses fisik ke komputer, pada instalasi desktop Ubuntu standar?

sudo password tidak semata-mata untuk perlindungan lokal, itu tujuannya adalah untuk menambahkan lapisan keamanan tambahan untuk menggunakan root privilege. Diskusi yang baik dapat ditemukan di sini /superuser//a/771523/467316

Kata sandi Anda mungkin tidak sekuat yang Anda pikirkan. Saat ini saya sedang meretas 20-40% dari hash Active Directory klien saya untuk orang-orang yang pernah saya lihat sebelumnya, orang-orang yang memiliki aturan kata sandi yang buruk mendapatkan 70% retak. Saya merekomendasikan 16 karakter, kata sandi yang rumit. Kartu grafis oclHashcat dan Radeon dapat menyebabkan banyak kerusakan. Tambahkan semua dump kata sandi dari setiap pelanggaran dalam 5 tahun terakhir dan Anda cenderung mendapatkan kamus yang bagus untuk menggunakannya.

Jika Anda menggunakan SSH, buatlah beberapa penyesuaian di sshd_config

sudo nano /etc/ssh/sshd_config

MUSTS keluar dari gerbang (yang terakhir untuk menonaktifkan server ftp jika Anda tidak menggunakannya).

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Simpan, mulai ulang ssh

sudo service ssh restart

Gunakan enkripsi kunci publik. Mulailah dengan membuat sendiri kunci di mesin jarak jauh Anda (menggunakan puttygen atau rasa apa pun yang tersedia di OS Anda). Salin kunci publik ke mesin Ubuntu Anda di bawah pengguna yang ingin Anda masuk sebagai file yang berwenang (Anda mungkin harus membuatnya)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

salin kunci publik dalam format ini

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

simpan, dan atur sshd_config Anda untuk memungkinkan masuknya kunci publik

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

simpan dan mulai ulang ssh

sudo service ssh restart

Coba SSHing ke host ubuntu Anda dari komputer kunci pribadi Anda menggunakan enkripsi kunci publik. Jika semuanya berjalan dengan baik, kembali ke host ubuntu dan nonaktifkan otentikasi kata sandi.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Simpan dan mulai ulang ssh

sudo service ssh restart

Coba sshing dari komputer kunci pribadi lagi untuk mengonfirmasi.

Ingin menambahkan lebih banyak? setup akun yang tidak diistimewakan, aktifkan PermitRootLogin no, restart ssh, tambahkan kunci publik Anda ke akun yang diotorisasi akun baru, login sebagai akun yang tidak diistimewakan, su ke akun root atau istimewa Anda ketika Anda perlu melakukan root atau hak istimewa cara Anda melalui hal-hal.

sonofapharmacist
sumber
2

Tujuan sudo bukan terkait kata sandi melainkan untuk memberikan pengguna kemampuan root-ish tertentu sementara membatasi orang lain di atas mesin tanpa mengharuskan mereka untuk menampilkan login root (kata sandi / kunci / token keamanan / dll). Misalnya di tempat kerja saya, pekerja sehari-hari hanya dapat memulai / mematikan / menginstal & meningkatkan stasiun mereka (dari repositori perusahaan yang diveto) melalui sudo. Mereka tidak diberi kebebasan root lainnya seperti menghapus / memformat perangkat, menambah dan menghapus pengguna, memutuskan modul kernel mana yang harus di-blacklist atau apa yang berjalan di crontab (dll, dll, dll). Sedangkan di rumah Anda, sudo Anda memungkinkan akses penuh ke mesin. Sehubungan dengan kata sandi, pada kenyataannya itu adalah kata sandi akun pengguna Anda yang diperlukan oleh sudo (yang sama dengan yang akan Anda gunakan untuk masuk, jika autologin tidak diaktifkan.

Tip Buruk : Jika Anda ingin melakukan root akun reguler pada sudo diaktifkan unix (linux / apple osx) jalankan yang berikut

sudo -s
passwd
Enter your unix password:

Pada titik ini root memiliki kata sandi reguler, dan Anda bisa keluar dan masuk sebagai root dengan kata sandi yang disebutkan dalam "cara mode lama".

Berkenaan dengan keamanan, jika satu program (misalnya server web, mysql, php daemon, sshd) berjalan sebagai akun yang ditinggikan .. katakan root dan memiliki exploit yang dikenal di luar sana, maka penyerang mungkin tidak memerlukan kredensial keamanan untuk mendapatkan akses. Mereka dapat memanfaatkan kerentanan program dan hanya menelurkan shell baru dari program ini yang berjalan sebagai root. Namun ini sangat jarang karena manajer distro menyadari masalah seperti dan melakukan pekerjaan luar biasa untuk membangun lingkungan default yang dipikirkan dengan baik dan biasanya aman.

Di sistem operasi lain, operasi yang mirip dengan sudo adalah klik kanan dan dijalankan sebagai Administrator Sistem (atau omelan hak istimewa UAC).

pengguna283885
sumber