Pastikan pangkalan data MySQL anda selamat dengan membuat pengguna dan kebenaran yang berasingan

Saya selalu menjadi teman amalan baik, lebih-lebih lagi jika mereka membantu kita menjaga keselamatan pelayan, perkhidmatan, atau sekadar maklumat kita.

Kebiasaan (kebiasaan buruk) yang dimiliki oleh pentadbir atau pengguna adalah dengan menggunakan akses akar untuk semua pangkalan data, iaitu ... mereka memasang laman web menggunakan CMS WordPress, dan sebagai data akses ke pangkalan data (untuk WP menggunakan pelayan MySQL dan menggunakan DBnya) mereka meletakkan pengguna pentadbiran pelayan MySQL : akar

Juga, mereka memasang aplikasi web lain (sembang, tampal, forum, dll) dan melakukan perkara yang sama, mereka selalu menggunakan pengguna root MySQL ...

RALAT !!!

Ini hanyalah kebiasaan yang boleh membawa maut.

Katakan kita mempunyai perkhidmatan berikut di pelayan:

  1. Laman web atau portal yang menggunakan WordPress.
  2. Forum sokongan, ceramah, dll ... seluruh komuniti.
  3. FTP yang menggunakan pangkalan data MySQL untuk menyimpan pengguna dan kata laluan.
  4. Pengguna e-mel disimpan (pengguna dan kata laluan) dalam pangkalan data MySQL.
  5. WebChat kecil yang kami pasang untuk berbual dengan orang yang anda kenali.

Dan dalam kesemuanya, dalam 5 perkhidmatan kami menggunakan pengguna root MySQL sehingga setiap perkhidmatan mengakses dan menyimpan data dalam pangkalan data yang sesuai.

Pada suatu hari, ada banyak troll di luar sana, tetapi ini bukan hanya troll, tetapi juga menguasai beberapa eksploitasi, kerentanan, hacking, dll ... memutuskan untuk melakukan sesuatu yang berbahaya bagi kita.

Cari bug di WebChat yang kita gunakan, dengan memanfaatkan bug ini, ia berjaya mengakses fail WebChat, termasuk fail konfigurasi WebChat, dan ... dalam fail ini, jelas, adalah nama pengguna dan kata laluan yang digunakan oleh WebChat mengakses pelayan MySQL, dan meneka apa? ... Ia tidak lebih dan tidak kurang juga PENGGUNA ROOT!

Dengan mendapatkan maklumat ini, dengan cara yang sangat mudah, troll dapat:

  1. Padamkan kami dan / atau curi segala yang berkaitan dengan laman web atau portal yang kami ada (WordPress).
  2. Anda boleh memadam dan / atau mencuri maklumat dari kami DAN dari pengguna kami yang menggunakan Forum, komuniti yang kami buat.
  3. Anda juga boleh mencuri nama pengguna dan kata laluan SEMUA pengguna yang mempunyai akaun e-mel di pelayan kami, serta mencuri maklumat dari e-mel mereka, menyamar, dll.
  4. Dan akhirnya, anda boleh menggunakan akaun di pelayan FTP kami, dan memuat naik fail apa pun yang mengandungi perisian hasad, yang membolehkan anda memperoleh kawalan yang JELAS dan JUMLAH terhadap pelayan kami.

Nah ... apa pendapat anda? ... 🙂

Adakah anda melihat semua yang boleh berlaku hanya dengan tidak membuat pengguna bebas untuk setiap pangkalan data yang kita ada?

Ini BUKAN teman yang berlebihan, ini dapat terjadi dengan sangat senang ... baik, semua yang diperlukan untuk melepaskan bencana hanyalah bug di beberapa aplikasi web yang telah anda pasang.

Sekarang ...

Bagaimana membuat pengguna MySQL yang terpisah untuk setiap aplikasi web?

Mula-mula kita mesti memasukkan pelayan MySQL dengan pengguna root, kerana dialah yang mempunyai hak untuk membuat pangkalan data, membuat kebenaran, membuat pengguna, dan lain-lain:

mysql -u root -p

Semasa mereka menulis perkara di atas dan tekan [Masukkan] Mereka akan diminta kata laluan pengguna root MySQL, mereka menaipnya dan tekan [Masukkan] sekali lagi, anda akan segera ditunjukkan seperti ini:

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

Perhatikan titik koma «;»Di hujung talian.

Bersedia, anda sudah membuat pangkalan data, sekarang mari buat pengguna «webchatuser«Dengan kata laluan«kata laluandelputowebchat":

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

Sekarang keajaiban ... kami akan memberikan semua keistimewaan (membaca dan menulis) kepada webchatuser HANYA di DB webchatdb:

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

Dan voila, pengguna sudah memiliki izin dalam pangkalan data itu ... sekarang hanya tinggal menyegarkan semula kebenaran ke MySQL, iaitu memberitahu MySQL untuk membaca semula hak istimewa pengguna kerana kami baru saja membuat perubahan di dalamnya:

FLUSH PRIVILEGES ;

Saya meninggalkan tangkapan skrin:

Dan ini adalah segalanya. Dengan melakukan ini untuk setiap aplikasi web yang kami gunakan, kami menjamin sekiranya mereka melanggar salah satu aplikasi web tersebut, yang lain akan selamat (sekurang-kurangnya dari sudut pandang MySQL)

Apakah amalan yang baik? 😉

Saya harap ia berguna bagi anda seperti saya, kerana saya cuba menerangkannya semudah yang saya dapat.

salam


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   Martin kata

    Pos baik KZKG, jika ada di forum saya akan meminta lekapan!

    1.    KZKG ^ Gaara kata

      Terima kasih 😀

      1.    CubaRed kata

        Kata laluan yang anda tetapkan untuk webchat itu bagus, perkara lain yang berkaitan dengan mysql adalah penggunaan ingatannya

  2.   Hyuuga_Neji kata

    Hehehe, terima kasih kerana mengingatkan saya tentang arahan MySQL sekarang mari kita lihat apakah "Saya meletakkan keselamatan" pada DB pelayan World of Warcraft yang saya ada di LAN saya.

  3.   sieg84 kata

    pengetahuan saya mengenai perkara ini tidak ada, tetapi hampir sama ketika menggunakan MySQL untuk Amarok?
    BUAT DATABASE amarokdb;
    MEMBERIKAN SEMUA KEISTIMEWAAN PADA amarokdb. * KEPADA 'amarokuser' DIKENALI OLEH 'kata laluan'; KEISTIMEWAAN FLUSH;

    1.    KZKG ^ Gaara kata

      Saya sudah lama tidak menggunakan Amarok, tetapi jika anda menggunakan DB yang MySQL, secara teori ia juga boleh berfungsi.

  4.   Carlos Andres Restrepo kata

    Halo, ada baiknya jika anda membuat entri untuk keselamatan terhadap pelayan web di Linux, kebanyakan mereka tidak mempunyai keselamatan yang betul dan pentadbir yang sama bukan pakar, mereka hanya mempermudah mereka, misalnya penggunaan symlink pada pelayan membolehkan membaca fail konfigurasi akaun lain di pelayan yang sama banyak pentadbir tidak menyedari hal ini dan itulah sebabnya kerosakan laman web berkembang

    salam

    1.    KZKG ^ Gaara kata

      Hai bagaimana ia akan berlaku
      Selamat datang ke laman web 🙂

      Sejauh ini saya tidak menganggap diri saya seorang pakar dalam hal ini, tetapi saya akan berusaha menyumbang sedikit pengetahuan yang saya perolehi selama ini 🙂

      Perkara lain yang tidak banyak dilakukan oleh pentadbir rangkaian, adalah memberi keistimewaan kepada laman web dengan apache secara individu, iaitu data pengguna dan kumpulan www (atau yang serupa), yang berbeza untuk setiap laman web, dan seterusnya sangkar masing-masing dari ini.

      salam

  5.   hackloper775 kata

    Petua baik

    salam

    1.    KZKG ^ Gaara kata

      Terima kasih

  6.   nano kata

    Saya Benci rupa terminal anda, huruf latar membawa saya daripada perhatian saya. Anda adalah xD gila

    Di luar itu, ini menarik kerana saya pernah melihat kes-kes gangguan perkhidmatan yang menyedihkan.

    Sekarang, bukan hanya bergantung pada itu, keamanan terletak pada bagaimana pangkalan data dibina, seorang guru menjelaskan kepada saya, tetapi saya masih belum tenggelam di DB ... kita harus main-main dengan MongoDB = D salah satunya hari-hari

  7.   Kolonel Carlos kata

    begitu sahaja yang berlaku pada saya hari ini dengan pelayan yang saya sewa

    Saya mengikuti langkah anda, saya masuk ke cpanel dan mencari pangkalan data MYSQL dan ia memberitahu saya bahawa ia tidak berfungsi.

    Saya tidak tahu bagaimana cara memasukkan sekarang di bawah pengguna root
    Saya adalah orang baru dalam hal ini, tetapi membaca di sini anda banyak belajar, saya harap anda membimbing saya untuk mengakses

    1.    KZKG ^ Gaara kata

      Helo 🙂
      Apa yang anda ada ialah Hosting (SharedHosting) atau VPS (pelayan maya)?

      Sekiranya anda mempunyai Hosting dan bukan VPS, maka anda harus melihat apakah Hosting anda mempunyai akses SSH (hubungi sokongan teknikal syarikat yang menjual hosting kepada anda dan tanyakan kepada mereka bagaimana cara mengakses melalui SSH), setelah anda memasuki SSH, pengguna TIDAK akan menjadi root, tetapi anda mesti menggunakan pengguna yang anda masukkan semasa anda memasang aplikasi web tersebut.

      Sebenarnya topik anda adalah topik yang rumit, kerana varian dan kemungkinannya sangat banyak, saya mengesyorkan agar anda membuka topik baru di forum kami, di sana akan lebih selesa untuk membantu anda - » http://foro.desdelinux.net

      Salam 😀

  8.   bossbrondem kata

    Baik,

    Saya faham bahawa adalah amalan yang baik untuk tidak memberi pengguna apa pun kecuali root semua hak istimewa. Namun, sejak saya memasang phpmyadmin, pengguna baru "phpmyadmin" telah dibuat dengan semua hak istimewa. Nampaknya logik bahawa hal ini berlaku, kerana hanya versi grafik untuk menguruskan pangkalan data di MySQL. Bagaimanapun saya ingin memastikan apakah itu baik-baik saja atau adakah saya perlu membuat beberapa pengubahsuaian dalam hak istimewa pengguna "phpmyadmin".

    Salam dan terima kasih!

  9.   Emmanuel kata

    Hebat ...
    Saya adalah salah seorang yang melakukan segalanya dengan akar, tetapi anda telah membuka mata kawan saya ..
    terima kasih banyak - banyak…