Mengapa buruk memiliki kata sandi pengguna mysql yang lemah?

23

Saya dihadapkan dengan argumen untuk nada "Anda tidak perlu kata sandi pengguna mysql yang kuat karena untuk menggunakannya, mereka sudah memiliki akses ke server Anda." Kita berbicara tentang kata sandi 4 digit yang merupakan kata standar kamus bahasa Inggris di situs web bisnis langsung.

Tanpa memengaruhi jawaban dengan pengetahuan dan pengalaman saya sendiri, saya ingin menunjukkan kepada mereka beberapa tanggapan dari sumber pihak ke-3 yang tidak tertarik. Adakah yang mau mencoba yang ini? Pemrograman / jawaban praktis akan dihargai.

Warganegara
sumber
7
Terdengar seperti salah satu dari root:rootlogin ini .
3
Kata sandi empat digit? Suka 1337?
Gumbo

Jawaban:

39

Siapa pun yang membuat argumen ini sepertinya mengatakan "Begitu seseorang memiliki kaki di pintu, Anda mungkin juga memberi mereka akses penuh". Dengan logika itu, firewall meniadakan kebutuhan untuk semua kata sandi di jaringan internal Anda.

Kata sandi yang kuat adalah satu langkah menuju membatasi kerusakan yang dilakukan oleh intrusi jaringan. Tidak ada alasan untuk mengangkat tangan Anda dalam kekalahan hanya karena satu bagian kecil dari jaringan Anda terganggu.

meagar
sumber
13
'Defense in Depth' adalah moto hari ini.
Scott Pack
3
Perhatikan bahwa begitu mereka memiliki akses ke sistem file Anda, mereka akan memiliki akses ke file PHP atau file konfigurasi tempat kata sandi Anda disimpan, kecuali jika Anda sudah menyiapkan beberapa keamanan tambahan untuk ini, yang biasanya sulit atau tidak mungkin pada host bersama .
Lotus Notes
2
@ Lotus Mengasumsikan server PHP dan MySQL adalah mesin yang sama.
meagar
2
@ Catatan Lotus, Anda tidak boleh menggunakan pengguna root dalam suatu aplikasi. Aplikasi yang dirancang dengan baik hanya memungkinkan akses yang diperlukan. Sebagian besar waktu, ini termasuk akses ke data, tetapi tidak selalu semua data, dan dalam beberapa kasus, bahkan mungkin hanya-baca.
bradlis7
1
@Lotus Catatan: Banyak host bersama menggunakan suPHP yang memberikan 660 file PHP sensitif.
webbiedave
14

Ini benar-benar kembali ke gagasan ' Pertahanan dalam Kedalaman ' sehingga setidaknya kata sandi yang kuat dapat memperlambatnya sehingga Anda dapat menemukan dan memblokirnya. Saya suka analogi memiliki satu kunci untuk komunitas yang terjaga keamanannya dengan kunci di pintu setiap rumah.

Power-coder
sumber
Saya sedang menunggu seseorang untuk membuat analogi kunci / pintu: |
meagar
Tetapi kunci yang berbeda untuk setiap pintu di rumah Anda mungkin berlebihan. Di mana Anda menggambar garis?
Dan
4
@Dan: tetapi dalam fasilitas yang aman, Anda akan mengharapkan kunci yang berbeda untuk setiap pintu, bukan? Di rumah keluarga tunggal no — Anda mengharapkan semua kunci menggunakan kunci yang sama. Tetapi di rumah bersama (seperti dengan teman sekamar), itu akan tergantung pada filosofi rumah tangga: baik pintu tidak terkunci (mungkin semua pintu menggunakan kunci yang sama), atau kunci berbeda per teman sekamar.
wallyk
5
Kunci dan perangkat keselamatan lainnya terutama digunakan untuk pencuri amatir atau hanya untuk menghalangi profesional. Pencegah lain adalah penerangan yang memadai di sekitar rumah dan untuk menghindari rutinitas teratur yang membuatnya jelas di mana dan apa yang Anda lakukan sepanjang hari. Jangan pernah mengobrol dengan orang asing tentang rencana liburan dan beri tahu polisi setempat jika Anda pergi untuk jangka waktu yang lama. Usahakan selalu membuatnya tampak seolah-olah seseorang ada di rumah. Juga, untuk ... tunggu, apa pertanyaannya lagi?
Stephen Watkins
6

Tergantung pada bagaimana pengaturan server MySQL Anda. Jika itu hanya menerima permintaan dari ip rumah (127.0.0.1), itu membuatnya lebih aman.

Diberikan skenario di mana Anda mengizinkan IP jarak jauh, itu menjadi kesepakatan yang jauh lebih besar.

Selain itu, selalu baik untuk memiliki keamanan yang kuat dalam hal intrusi - lebih baik mereka pergi dengan sesedikit mungkin.

DivinusVox
sumber
6

Apakah ada kunci pada kotak Kas Kecil di Akuntansi? Jika demikian, mengapa? Bukankah bangunan itu memiliki keamanan fisik?

JohnFx
sumber
5

Anda tidak memerlukan kata sandi pengguna mysql yang kuat karena untuk menggunakannya, mereka sudah memiliki akses ke server Anda

Ini tidak benar, karena mysql juga dapat digunakan di lingkungan klien-server lintas jaringan, dan secara default satu-satunya yang Anda butuhkan adalah pengguna / pass untuk mendapatkan akses ke database (offcourse, dengan 3306 port dibuka dan server terlihat publik ).

Denis Biondic
sumber
5

Memang bisa dengan cara lain: jika mereka memiliki akses ke mysql, mereka bisa dapat mengakses OS server itu sendiri.

  1. MySQL LOAD_FILE dan SELECT ... INTO OUTFILE query memungkinkan pengguna mysql untuk membaca dan menulis file pada sistem file yang mendasarinya. File apa pun yang juga dapat diakses oleh pengguna mysql (apakah MySQL Anda berjalan sebagai root?). Jika di bawah linux / UNIX hanya permintaan SELECT LOAD_FILE ('/ etc / passwd') dan lihat mereka menyeringai. Jika mysqld berjalan sebagai root, Anda dapat mencoba SELECT LOAD_FILE ('/ etc / shadow') dan perhatikan sysadmin Anda menangis.
  2. Banyak kali di linux pengguna mysql "root" memiliki kata sandi yang sama dengan pengguna "mysql" server (yang menjalankan mysqld). Kemudian jika kata sandi ini sepele (atau dapat ditemukan oleh alat otomatis seperti medusa / hydra) maka Anda bisa langsung menggunakan SSH / telnet ke server database dan bermain-main.
Renik
sumber
4

Jika seseorang mendapatkan akses root ke server Anda, maka mereka tidak akan memerlukan kata sandi MySQL. Tetapi jika mereka hanya dapat menjalankan aplikasi di server Anda sebagai pengguna non-root dan non-web, maka kata sandi MySQL yang kuat masih dapat menyimpan data Anda. Tapi ya, kebanyakan peretasan berasal dari web, itu artinya peretas akan mendapatkan akses ke akun web Anda dan karenanya dapat mengekstrak kata sandi DB dari file PHP.

Semua ini dengan asumsi server MySQL Anda tidak menerima koneksi dari mana pun kecuali localhost. Jika tidak maka Anda membutuhkan PW yang kuat.

rustyx
sumber
4

Sesuatu yang tampaknya telah diabaikan di sini adalah, apakah Anda mempercayai pengguna Anda di jaringan tepercaya?

Terus terang, saya tidak tahu, karena saya tahu seperti apa saya ketika saya memulai di IT. Saya akan menyodok dan mendorong bagian-bagian yang saya tidak punya haknya, dan terus terang kata sandi MySQL yang lemah akan menyenangkan bagi saya karena saya akan mengambil kesempatan keberuntungan dan masuk dan saya bisa membuat havock (kebetulan, tentu saja).

Bagaimana jika seseorang menggunakan rekayasa sosial untuk masuk ke jaringan tepercaya Anda? Lalu apa yang Anda lakukan? Jika mereka berada di mesin di belakang firewall mereka blammo, keamanan firewall rock-solid Anda hancur dan mereka langsung ke mesin.

Kata sandi yang kuat sangat sederhana untuk dilakukan dan ada banyak alat manajemen kata sandi untuk membuat menjaga kata sandi mudah, jadi tidak ada alasan untuk tidak melakukannya.

Mark Henderson
sumber
Masalahnya, Anda seharusnya tidak mengizinkan koneksi jarak jauh di MySQL, atau jika Anda perlu, kemudian tentukan localhost/ 127.0.0.1sebagai tuan rumah. Dengan cara ini, tidak ada yang dapat mengakses database di luar (bahkan yang ada di jaringan yang sama).
Chazy Chaz
2

Eh. Jika server Anda terkunci IP, dan pengguna Anda dibatasi untuk SELECT pada seperangkat tabel di mana Anda tidak peduli dengan informasi itu, itu bukan masalah besar.

Di sisi lain, saya mengatur kata sandi MySQL saya dengan menekan keyboard selama satu menit, dan menyalin menempelkan omong kosong yang dihasilkan ke dalam file yang dilindungi, yang saya referensi dalam kode saya setiap kali saya perlu login. Ini adalah cara kerjanya.

Mengapa membuatnya mudah? Jika kata sandi dilampirkan ke akun lokal terbatas (seperti seharusnya), lalu mengapa Anda mengetiknya? Jika tidak, harus memiliki kata sandi yang kekuatannya relatif terhadap nilai data yang Anda lindungi.

Satanicpuppy
sumber
2

Informasi akun / akses mySQL disimpan dalam file terpisah dari database aktual. Dengan demikian Anda cukup menarik dan melepas file yang berbeda ke tempatnya. Dengan mySQL jika mereka memiliki akses tulis ke bagian yang relevan dari sistem file Anda, permainan telah berakhir.

John Robertson
sumber
2

Karena persyaratan berubah ...

Jadi server hari ini yang terbatas untuk menerima koneksi MySQL hanya dengan mesin lokal, besok dapat dibuka sehingga alat eksternal dapat digunakan untuk mengelola database. Orang yang melakukan pengaturan ini mungkin tidak tahu bahwa ada kata sandi yang sangat lemah digunakan.

Jika pengguna Anda merasa tidak nyaman karena harus mengingat kata sandi yang baik, kuat (misalnya: panjang, acak), pertimbangkan membuatnya sangat kuat dan kemudian menyimpannya di .my.cnf- bahkan lebih nyaman daripada memiliki kata sandi yang lemah yang harus mereka ketikkan. Tentu saja, ada implikasi keamanan untuk ini juga, tetapi Anda harus menyimpan kata sandi di suatu tempat, misalnya aplikasi yang mengaksesnya, sehingga Anda sudah mengamankan salinan kata sandi.

Tapi baca juga apa yang dikatakan @meagar.

Sean Reifschneider
sumber
1

Premis bahwa mereka sudah memiliki akses tidak benar. Namun, jika mereka memiliki akses, dan mereka memiliki akun tidak istimewa, mereka masih dapat dengan mudah meretas kata sandi mysql.

Juga, Jika server adalah server produksi langsung, daripada Anda mengiklankan diri Anda ke internet. itu berarti bahwa pada titik tertentu, seseorang AKAN mencoba serangan brute force pada server itu, termasuk mysql, baik port dan akun pengguna.

jika Anda peduli dengan data, langkah-langkah dasar untuk memiliki kata sandi root berbeda untuk database daripada untuk pengguna root. yang lain telah menyatakan bahwa Anda juga harus memiliki izin serendah mungkin untuk pengguna dan program.

kata sandi 4 karakter dapat diretas dalam hitungan menit, di komputer yang cukup murah.

Saya mungkin hanya mengulangi apa yang dikatakan orang lain, tetapi semakin banyak amunisi yang Anda miliki untuk manajer Anda, semakin baik.

weismanm
sumber
1

Banyak alasan skenario kehidupan nyata diliput oleh posting sebelumnya jadi saya akan menambahkan satu "filosofi". Menggunakan kata sandi yang kuat dan mengambil tindakan pencegahan untuk memperketat keamanan Anda adalah filosofi kerja. Cara berpikir.

Menggunakan kata sandi yang lemah sekarang karena mysql hanya berjalan pada 127.0.0.1 dan hanya pengguna root yang memiliki akses yang menunjukkan bahwa Anda tidak berpikir ke depan. Apa yang terjadi jika suatu hari nanti Anda perlu memberikan akses over-jaringan ke mysql Anda. Apakah Anda ingat untuk menutupi semua keamanan yang Anda tinggalkan?

Admin yang baik menempatkan skenario terburuk terlebih dahulu ke titik paranoia.

Cristian Vrabie
sumber
1

Tergantung pada hak apa yang dimiliki pengguna, Anda harus selalu mengunci hal-hal pada berbagai tingkatan. Juga tergantung pada data yang Anda simpan di database Anda. Juga katakan secara hipotetis ada kerentanan di MySQL yang memungkinkan mereka mengambil alih seluruh basis data tetapi mereka hanya perlu masuk ke akun pengguna apa pun. Jika kata sandi Anda kuat, ini akan membuat kerentanan ini menjadi bisu. Tapi ini benar-benar tergantung pada kasus spesifik Anda.

ddcruver
sumber
Jika server MySQL dikompromikan, pengguna dan kata sandi tidak berguna. File database tidak dienkripsi. Pengguna MySQL untuk aplikasi harus memiliki localhost / 127.0.0.1 sebagai tuan rumah sehingga mereka tidak dapat digunakan dari jarak jauh atau menonaktifkan koneksi jarak jauh.
Chazy Chaz
1

Sangat mudah untuk menyamar sebagai orang lain di mysql. Diberi id pengguna tanpa kata sandi (keamanan terlemah) gunakan saja mysql -u userid. Jika memiliki kata sandi, ini sedikit lebih sulit, tetapi kata sandi yang lemah membuatnya mudah. Jika root tidak memiliki kata sandi, saya dapat mengakses root sebagai mysql -u root. Saya kemudian dapat melakukan apa saja di dalam database yang dapat di-root.

Penggunaan spesifikasi host dalam keamanan juga merupakan ide yang baik, terutama jika akses jarak jauh tersedia atau mungkin.

Kata sandi dalam file dapat dan harus diamankan dengan izin. Akses oleh root, atau pemilik file kata sandi itu sepele. Jika memungkinkan enkripsi kata sandi pada disk harus digunakan. Ini membuatnya sedikit lebih sulit untuk diakses, tetapi masih rentan.

BillThor
sumber
0

Nah, jika Anda tidak meng-hosting MySQL db sendiri, tetapi menggunakan layanan hosting dan seseorang mendapatkan akses ke alamat IP Server Anda, nama pengguna dan kata sandi adalah garis pertahanan terakhir Anda. Itu selalu baik untuk memiliki nama pengguna / kata sandi yang aman.

John
sumber
Ah! Jika seseorang mendapatkan akses ke server maka mereka dapat membaca pengguna / kata sandi dari file PHP ... Silakan, perbarui atau hapus jawaban ini.
Chazy Chaz