Jadual Kandungan
Langkah 1: Tetapkan kata laluan yang kukuh
Langkah Kedua: Alih Keluar Pengguna Tanpa Nama
Langkah 3: Ikut prinsip keistimewaan paling sedikit
第四步:启用 TLS
第五步:加密数据库密钥
MySQL 加固原则:掌握最小权限原则
Rumah pangkalan data tutorial mysql 【Mesti Tahu】Lima petua keselamatan penting yang perlu anda ambil untuk mengukuhkan MySQL

【Mesti Tahu】Lima petua keselamatan penting yang perlu anda ambil untuk mengukuhkan MySQL

Sep 20, 2022 am 11:00 AM
mysql

【Mesti Tahu】Lima petua keselamatan penting yang perlu anda ambil untuk mengukuhkan MySQL

Pangkalan data telah lama menjadi bahagian penting dalam seni bina seimbang anda, dan boleh dikatakan bahagian paling penting. Pada masa kini, tekanan adalah terhadap infrastruktur anda yang kebanyakannya boleh guna dan tanpa negara, yang meletakkan beban yang lebih besar pada pangkalan data anda untuk kedua-duanya boleh dipercayai dan selamat kerana semua pelayan lain pasti akan berada di sana bersama-sama dengan maklumat Negeri anda yang lain pangkalan data.

Pangkalan data anda ialah hadiah setiap penyerang. Apabila serangan menjadi lebih canggih dan rangkaian menjadi lebih bermusuhan, mengambil langkah tambahan untuk mengeras pangkalan data anda adalah lebih penting daripada sebelumnya.

MySQL ialah pangkalan data yang paling popular dan kegemaran dalam kalangan pembangun dan pentadbir kerana kelajuan dan kemudahan keseluruhan penggunaannya. Malangnya, kemudahan penggunaan ini datang dengan mengorbankan keselamatan. Walaupun MySQL boleh dikonfigurasikan dengan kawalan keselamatan yang ketat, konfigurasi MySQL lalai biasa anda mungkin tidak menggunakannya. Dalam artikel ini, saya akan membincangkan lima langkah penting yang perlu anda ambil untuk mengeraskan pangkalan data MySQL anda.

Langkah 1: Tetapkan kata laluan yang kukuh

Adalah penting untuk semua pengguna pangkalan data menggunakan kata laluan yang kukuh. Memandangkan kebanyakan orang tidak kerap log masuk ke pangkalan data secara manual, gunakan pengurus kata laluan atau alat baris perintah pwgen untuk mencipta kata laluan rawak 20 aksara untuk akaun pangkalan data anda. Ini masih penting walaupun anda menggunakan kawalan akses MySQL tambahan untuk mengehadkan tempat akaun tertentu boleh log masuk (seperti mengehadkan akaun kepada localhost secara ketat).

Akaun MySQL yang paling penting untuk menetapkan kata laluan ialah pengguna root. Secara lalai, pada banyak sistem, pengguna ini tidak mempunyai kata laluan. Khususnya, sistem berasaskan Red Hat tidak menetapkan kata laluan semasa memasang MySQL manakala sistem berasaskan Debian menggesa anda untuk kata laluan semasa pemasangan interaktif, pemasangan tidak interaktif (seperti yang anda mungkin lakukan menggunakan Pengurus Konfigurasi ) akan melangkaunya. Selain itu, anda masih boleh melangkau menetapkan kata laluan semasa pemasangan interaktif.

Anda mungkin berfikir bahawa membiarkan pengguna root tidak memasukkan kata laluan bukanlah risiko keselamatan yang besar. Lagipun, pengguna ditetapkan kepada "root@localhost", yang mungkin anda fikir bermakna anda perlu mengakar komputer sebelum anda boleh menjadi pengguna itu. Malangnya, ini bermakna bahawa mana-mana pengguna yang boleh mencetuskan klien MySQL daripada localhost boleh log masuk sebagai pengguna root MySQL menggunakan arahan berikut:

*$ mysql — user root*

Jadi jika anda bukan root The pengguna menetapkan kata laluan, dan sesiapa sahaja yang boleh mendapatkan shell tempatan pada mesin MySQL anda kini mempunyai kawalan penuh ke atas pangkalan data anda.

Untuk membetulkan kelemahan ini, gunakan arahan mysqladmin untuk menetapkan kata laluan untuk pengguna root:

$ sudo mysqladmin password

Malangnya, MySQL menjalankan tugas latar belakang sebagai pengguna root. Sebaik sahaja anda menetapkan kata laluan, tugasan ini terputus melainkan anda mengambil langkah tambahan pengekodan keras kata laluan ke dalam fail /root/.my.cnf:

[mysqladmin]
user = rootpassword = yourpassword
Salin selepas log masuk

Walau bagaimanapun, ini bermakna anda mesti Disimpan pada hos dalam teks biasa. Tetapi anda sekurang-kurangnya boleh mengehadkan akses kepada fail kepada root hanya menggunakan kebenaran fail Unix:

sudo chown root:root /root/.my.cnf
sudo chmod 0600 /root/.my.cnf
Salin selepas log masuk

Langkah Kedua: Alih Keluar Pengguna Tanpa Nama

Akaun Tanpa Nama ialah MySQL akaun yang tidak mempunyai nama pengguna mahupun kata laluan. Anda tidak mahu penyerang mendapat apa-apa jenis akses kepada pangkalan data anda tanpa kata laluan, jadi lihat dalam output arahan ini untuk mana-mana pengguna MySQL yang dilog dengan nama pengguna kosong:

> SELECT Host, User FROM mysql.user;
+ — — — — — — — — — — — — + — — — -+
| Host | User |
+ — — — — — — — — — — — — + — — — -+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost | root |
+ — — — — — — — — — — — — + — — — -+
4 rows in set (0.00 sec)
Salin selepas log masuk

dalam Antara ini pengguna root ialah pengguna tanpa nama ( localhost ), yang kosong dalam lajur Pengguna. Anda boleh mengosongkan pengguna tanpa nama tertentu menggunakan arahan berikut:

> drop user ""@"localhost";
> flush privileges;
Salin selepas log masuk

Jika anda menemui mana-mana pengguna tanpa nama lain, pastikan anda memadamkannya.

Langkah 3: Ikut prinsip keistimewaan paling sedikit

Prinsip keistimewaan paling sedikit ialah prinsip keselamatan yang boleh diringkaskan seperti berikut:

Hanya untuk Akaun menyediakan akses yang diperlukan untuk melaksanakan tugas dan tidak lebih.

Prinsip ini boleh digunakan pada MySQL dalam beberapa cara. Pertama, apabila menggunakan arahan GRANT untuk menambah kebenaran pangkalan data kepada pengguna tertentu, pastikan anda mengehadkan hanya kebenaran yang pengguna perlukan untuk mengakses pangkalan data:

> grant all privileges on mydb.* to someuser@"localhost" identified by 'astrongpassword';
> flush privileges;
Salin selepas log masuk

Jika pengguna hanya perlu mengakses yang tertentu jadual (contohnya, jadual pengguna), gantikan mydb.users dengan mydb.* atau mana-mana nama jadual anda (berikan kebenaran kepada semua jadual).

Ramai orang akan memberikan pengguna akses penuh kepada pangkalan data tetapi jika pengguna pangkalan data anda hanya perlu membaca data dan tidak mengubah data, anda perlu mengambil langkah tambahan untuk memberikan akses baca sahaja kepada pangkalan data:

> grant select privileges on mydb.* to someuser@"localhost" identified by 'astrongpassword';
> flush privileges;
Salin selepas log masuk

Akhir sekali, ramai pengguna pangkalan data tidak akan mengakses pangkalan data dari localhost, biasanya pentadbir akan menciptanya, seperti ini:

> grant all privileges on mydb.* to someuser@"%"  identified by 'astrongpassword';
> flush privileges;
Salin selepas log masuk

Ini akan membenarkan "someuser" untuk capaian daripada mana-mana pangkalan data rangkaian. Walau bagaimanapun, jika anda mempunyai set IP dalaman yang jelas, atau - lebih baik lagi - menyediakan VLAN supaya semua pelayan aplikasi anda berada pada subnet yang berbeza daripada hos lain, maka anda boleh memanfaatkannya untuk mengehadkan "someuser" , supaya akaun hanya boleh mengakses pangkalan data daripada rangkaian tertentu:

> grant all privileges on mydb.* to someuser@10.0.1.0/255.255.255.0 identified by 'astrongpassword';
> flush privileges;
Salin selepas log masuk

第四步:启用 TLS

设置强密码仅只有攻击者可以在网络上读取你的密码或者其他敏感数据的情况下才能达到此目的。因此,使用 TLS 保护你的所有网络流量比以往任何时候都更加重要。

MySQL 也不例外。

幸运的是,在 MySQL 中启用 TLS 比较简单。一旦你有了你的主机的有效证书,只需要在你的主 my.cnf 文件的 [mysqld]部分添加以下几行 :

[mysqld]
ssl-ca=/path/to/ca.crt
ssl-cert=/path/to/server.crt
ssl-key=/path/to/server.key
Salin selepas log masuk

为了额外的安全性,还可以添加 ssl-cipher 配置选项,其中包含一个被认可的密码列表,而不是只接受默认的密码列表,这可能包括较弱的 TLS 密码。我推荐使用  Mozilla Security/Server Side TLS page 所推荐的现代或者中级密码套件。

一旦服务器端设置了 TLS ,你可以限制客户端必须采用 TLS 进行连接,通过在 GRANT 语句中添加 REQUIRE SSL :

> grant all privileges on mydb.* to someuser@10.0.1.0/255.255.255.0 identified by 'astrongpassword' REQUIRE SSL;

> flush privileges;
Salin selepas log masuk

第五步:加密数据库密钥

虽然现在很多人都知道使用单向散列(理想情况下是像 bcrypt 这样慢速散列 ),保护用户数据库存储的密码有多重要,但通常没过多考虑使用加密来保护数据库上其他的敏感数据。事实上,许多管理员会告诉你他们的数据库是加密的,因为磁盘本身是加密的。这实际上会影响你的数据库加固,不是因为磁盘加固有缺陷或糟糕的做法,而是因为它会给你一种错误的信任感。

磁盘加密保护你的数据库数据,以防止有人从你的服务器窃取磁盘(或者你买了二手磁盘后忘记擦除磁盘),但是磁盘加密并不能在数据库本身运行时保护你,因为驱动器需要处于解密状态才能被读取。

要保护数据库中的数据,你需要采取额外的措施,在存储敏感字段之前对它们进行加密。这样如果攻击者找到了某种方法来转存完整的数据库,你的敏感字段仍然会受到保护。

有许多加密数据库中字段的方法,而且 MySQL 支持本地加密命令。无论你采取哪种加密方法,我都建议避免你需要将解密密钥存储在数据库本身的加密方法。

理想情况下,你会把解密的密钥存储在应用服务器上,作为本地GPG密钥(如果你使用GPG进行加密)或者将其存储为应用程序服务器上的环境变量。这样即使攻击者可能找到一种方法来破坏应用程序服务器的服务器,他也必须将攻击转换为本地shell访问,以此来获取你的解密密钥。

MySQL 加固原则:掌握最小权限原则

有很多方法来锁定你的MySQL服务器。确切地说,你如何实施这些步骤取决于你如何设置自己的数据库,以及它在网络中的位置。

虽然前面的五个步骤将有助于保护你的数据库,但我认为更需要掌握的最重要的整体步骤是最小权限原则。你的数据库可能存储来一些非常有用的数据,如果你确保用户和应用程序只具有执行其工作的所需的最小访问权限,那么你将限制攻击者能够做什么,如果黑客找到来危害该用户或者应用程序的方法。

【相关推荐:mysql视频教程

Atas ialah kandungan terperinci 【Mesti Tahu】Lima petua keselamatan penting yang perlu anda ambil untuk mengukuhkan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

MySQL dan SQL: Kemahiran Penting untuk Pemaju MySQL dan SQL: Kemahiran Penting untuk Pemaju Apr 10, 2025 am 09:30 AM

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Tempat Mysql: Pangkalan Data dan Pengaturcaraan Tempat Mysql: Pangkalan Data dan Pengaturcaraan Apr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Pantau titisan redis dengan perkhidmatan pengeksport redis Pantau titisan redis dengan perkhidmatan pengeksport redis Apr 10, 2025 pm 01:36 PM

Pemantauan yang berkesan terhadap pangkalan data REDIS adalah penting untuk mengekalkan prestasi yang optimum, mengenal pasti kemungkinan kesesakan, dan memastikan kebolehpercayaan sistem keseluruhan. Perkhidmatan Pengeksport Redis adalah utiliti yang kuat yang direka untuk memantau pangkalan data REDIS menggunakan Prometheus. Tutorial ini akan membimbing anda melalui persediaan lengkap dan konfigurasi perkhidmatan pengeksport REDIS, memastikan anda membina penyelesaian pemantauan dengan lancar. Dengan mengkaji tutorial ini, anda akan mencapai tetapan pemantauan operasi sepenuhnya

See all articles