Jaga keamanan database MySQL Anda dengan membuat pengguna dan izin terpisah

Saya selalu menjadi teman praktik yang baik, terlebih jika praktik tersebut membantu kami menjaga keamanan server, layanan, atau informasi kami.

Kebiasaan (kebiasaan buruk) yang dimiliki banyak administrator atau pengguna adalah menggunakan akses akar untuk semua database, yaitu ... mereka menginstal situs menggunakan CMS WordPress, dan sebagai akses data ke database (untuk WP menggunakan server MySQL dan menggunakan DB-nya) mereka menempatkan pengguna administrasi server MySQL: root

Juga, mereka menginstal aplikasi web lain (obrolan, tempel, forum, dll) dan melakukan hal yang sama, mereka selalu menggunakan pengguna root MySQL ...

KESALAHAN!!!

Ini hanyalah kebiasaan yang fatal.

Misalkan kita memiliki layanan berikut di server:

  1. Situs atau portal yang menggunakan WordPress.
  2. Forum dukungan kami, pembicaraan, dll ... seluruh komunitas.
  3. FTP yang menggunakan database MySQL untuk menyimpan pengguna dan kata sandi.
  4. Pengguna email disimpan (pengguna dan kata sandi) dalam database MySQL.
  5. WebChat kecil yang kami pasang untuk mengobrol dengan seseorang yang Anda kenal.

Dan di semuanya, di 5 layanan kami menggunakan pengguna root MySQL sehingga setiap layanan mengakses dan menyimpan data di database yang sesuai.

Suatu hari, salah satu dari sekian banyak troll di luar sana, tetapi ini bukan hanya troll, tetapi juga menguasai beberapa eksploitasi, kerentanan, peretasan, dll ... memutuskan untuk melakukan sesuatu yang berbahaya bagi kami.

Temukan bug di WebChat yang kami gunakan, memanfaatkan bug ini, ia berhasil mengakses file WebChat, termasuk file konfigurasi WebChat, dan… di file ini, jelas, adalah nama pengguna dan kata sandi yang digunakan WebChat untuk mengakses Server MySQL, dan coba tebak? … Tidak lebih dan tidak kurang ROOT USER!

Dengan mendapatkan informasi ini, dengan cara yang sangat sederhana troll dapat:

  1. Hapus kami dan / atau curi semua yang berhubungan dengan situs atau portal yang kami miliki (WordPress).
  2. Anda dapat menghapus dan / atau mencuri informasi dari kami DAN dari pengguna kami yang menggunakan Forum, komunitas yang kami buat.
  3. Anda juga dapat mencuri nama pengguna dan kata sandi SEMUA pengguna yang memiliki akun email di server kami, serta mencuri informasi dari email mereka, meniru identitas, dll.
  4. Dan sekarang akhirnya, Anda dapat menggunakan akun di server FTP kami, dan mengunggah file apa pun yang berisi perangkat lunak jahat, yang akan memungkinkan Anda untuk mendapatkan kendali ABSOLUT dan TOTAL dari server kami.

Nah ... bagaimana menurutmu? … 🙂

Apakah Anda melihat semua yang bisa terjadi hanya dengan tidak membuat pengguna independen untuk setiap database yang kita miliki?

Ini BUKAN berlebihan sobat, ini bisa terjadi dengan sangat mudah ... nah, semua yang dibutuhkan untuk memicu malapetaka hanyalah bug di beberapa aplikasi web yang sudah anda instal.

Sekarang…

Bagaimana cara membuat pengguna MySQL terpisah untuk setiap aplikasi web?

Pertama kita harus masuk ke server MySQL dengan pengguna root, karena dialah yang memiliki hak untuk membuat database, membuat izin, membuat pengguna, dll:

mysql -u root -p

Saat mereka menulis di atas dan menekan [Memasukkan] Mereka akan dimintai kata sandi dari pengguna root MySQL, mereka menulisnya dan menekan [Memasukkan] sekali lagi, Anda akan langsung diperlihatkan sesuatu seperti ini:

Sekarang kita akan membuat database bernama «webchatdb":
CREATE DATABASE webchatdb;

Perhatikan titik koma «;»Di akhir baris.

Siap, Anda sudah membuat database, sekarang mari kita membuat pengguna «pengguna web«Dengan sandi«kata sandidelputowebchat":

CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';

Sekarang keajaiban ... kami akan memberikan semua hak istimewa (membaca dan menulis) kepada pengguna web HANYA di DB webchatdb:

GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;

Dan voila, pengguna sudah memiliki izin di database itu ... sekarang tinggal menyegarkan izin ke MySQL, yaitu, beri tahu MySQL untuk membaca ulang hak istimewa pengguna karena kami baru saja membuat perubahan di dalamnya:

FLUSH PRIVILEGES ;

Saya meninggalkan tangkapan layar:

Dan ini sudah segalanya. Dengan melakukan ini untuk setiap aplikasi web yang kami gunakan, kami menjamin bahwa jika mereka berhasil melanggar salah satu aplikasi web tersebut, yang lain akan aman (setidaknya dari sudut pandang MySQL)

Apakah praktik yang baik itu? 😉

Saya berharap ini berguna bagi Anda seperti juga bagi saya, karena saya mencoba menjelaskannya sesederhana mungkin.

salam


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   Martin dijo

    Baik posting KZKG, jika itu di forum saya akan meminta yang lengket!

    1.    KZKG ^ Gaara dijo

      Terima kasih 😀

      1.    KubaMerah dijo

        Kata sandi yang Anda masukkan untuk webchat itu bagus, hal lain yang berkaitan dengan mysql adalah penggunaan memorinya

  2.   Hyuuga_Neji dijo

    Hehehe, terima kasih telah mengingatkan saya tentang perintah MySQL. Sekarang mari kita lihat apakah "Saya menempatkan beberapa keamanan" pada database server World of Warcraft yang saya miliki di LAN saya.

  3.   sieg84 dijo

    Pengetahuan saya tentang ini nihil, tetapi hampir sama ketika menggunakan MySQL untuk Amarok?
    BUAT DATABASE amarokdb;
    BERIKAN SEMUA HAK ISTIMEWA DI amarokdb. * KE 'amarokuser' DIIDENTIFIKASI DENGAN 'password'; HAK ISTIMEWA FLUSH;

    1.    KZKG ^ Gaara dijo

      Saya sudah lama tidak menggunakan Amarok, tetapi jika Anda menggunakan DB yaitu MySQL, secara teori seharusnya bekerja seperti itu juga.

  4.   Carlos Andres Restrepo dijo

    Halo, alangkah baiknya jika Anda membuat entri untuk keamanan terhadap server web di linux, banyak dari mereka tidak memiliki keamanan yang tepat dan administrator yang sama bukan ahli yang benar, mereka hanya memfasilitasi hal-hal, misalnya penggunaan symlink di server memungkinkan membaca file konfigurasi dari akun lain di server yang sama banyak administrator tidak menyadarinya dan itulah mengapa perusakan situs web berkembang biak

    salam

    1.    KZKG ^ Gaara dijo

      Halo,
      Selamat datang di situs 🙂

      Sejauh ini saya tidak menganggap diri saya ahli dalam masalah ini, tetapi saya akan mencoba menyumbangkan sedikit pengetahuan yang telah saya peroleh selama bertahun-tahun 🙂

      Hal lain yang tidak banyak dilakukan oleh administrator jaringan adalah memberikan hak istimewa ke situs dengan apache secara individual, yaitu, pengguna dan grup www-data (atau serupa), yang berbeda untuk setiap situs, dan pada gilirannya mengurung masing-masing dari ini.

      salam

  5.   peretas775 dijo

    Tip bagus

    salam

    1.    KZKG ^ Gaara dijo

      Terima kasih

  6.   nano dijo

    SAYA BENCI penampilan terminal Anda, huruf latar belakang membawa saya keluar dari konsentrasi saya. Anda benar-benar xD gila

    Di luar itu, menarik karena saya pernah melihat kasus pemadaman layanan yang menyedihkan dari hal-hal itu.

    Sekarang, tidak hanya bergantung pada itu, keamanan terletak pada bagaimana database dibangun, seorang guru menjelaskan kepada saya, tetapi saya belum terlalu tenggelam dalam DB ... kita harus mengacaukan MongoDB = D salah satunya hari

  7.   Carlos Kolonel dijo

    hal itu terjadi pada saya hari ini dengan server sewaan saya

    Saya mengikuti langkah Anda, saya pergi ke cpanel dan mencari database MYSQL dan saya diberitahu bahwa itu rusak.

    Saya tidak tahu cara masuk sekarang di bawah pengguna root
    Saya orang baru dalam hal ini, tetapi membaca di sini Anda belajar banyak, saya harap Anda membimbing saya untuk mengaksesnya

    1.    KZKG ^ Gaara dijo

      Halo 🙂
      Apa yang Anda miliki adalah Hosting (SharedHosting) atau VPS (server virtual)?

      Jika Anda memiliki Hosting dan bukan VPS, maka Anda harus melihat apakah Hosting Anda memiliki akses SSH (hubungi dukungan teknis perusahaan yang menjual hosting kepada Anda dan tanyakan cara mengakses melalui SSH), setelah Anda masuk melalui SSH, pengguna TIDAK akan menjadi root, tetapi Anda harus menggunakan pengguna yang Anda masukkan saat menginstal aplikasi web tersebut.

      Sebenarnya topik anda adalah topik yang ruwet, karena varian dan kemungkinannya sangaaaat banyak, saya anjurkan anda membuka topik baru di forum kami, karena akan lebih nyaman membantu anda - » http://foro.desdelinux.net

      Salam 😀

  8.   bossbrondem.dll dijo

    baik,

    Saya memahami bahwa adalah praktik yang baik untuk tidak memberikan semua hak istimewa kepada pengguna mana pun kecuali root. Namun, sejak saya menginstal phpmyadmin, pengguna baru "phpmyadmin" telah dibuat dengan semua hak istimewa. Tampaknya logis bahwa ini masalahnya, karena ini hanya versi grafis untuk mengelola database di MySQL. Bagaimanapun, saya ingin memastikan apakah baik-baik saja atau haruskah saya melakukan modifikasi pada hak istimewa pengguna "phpmyadmin".

    Salam dan terima kasih!

  9.   Emmanuel dijo

    Luar biasa…
    Saya salah satu dari mereka yang melakukan segalanya dengan root, tetapi Anda telah membuka mata teman ..
    Terima kasih banyak…