目次
ステップ 1: 強力なパスワードを設定する
ステップ 2: 匿名ユーザーを削除する
第四步:启用 TLS
第五步:加密数据库密钥
MySQL 加固原则:掌握最小权限原则
ホームページ データベース mysql チュートリアル 【知っておくべき】MySQL を強化するために講じるべき 5 つの重要なセキュリティのヒント

【知っておくべき】MySQL を強化するために講じるべき 5 つの重要なセキュリティのヒント

Sep 20, 2022 am 11:00 AM
mysql

【知っておくべき】MySQL を強化するために講じるべき 5 つの重要なセキュリティのヒント

データベースは長い間バランスのとれたアーキテクチャの重要な部分であり、おそらく最も重要な部分です。現在では、ほとんどが使い捨てでステートレスなインフラストラクチャに圧力がかかっており、他のすべてのサーバーが残りのデータとともに必然的にサーバー上に存在することになるため、データベースの信頼性と安全性の両方に大きな負担がかかっています。データベースに保存されます。

データベースはすべての攻撃者の宝物です。攻撃がより巧妙になり、ネットワークがより敵対的になるにつれて、データベースを強化するための追加の措置を講じることがこれまで以上に重要になっています。

MySQL は、その速度と全体的な使いやすさにより、開発者や管理者の間で最も人気があり、お気に入りのデータベースです。残念ながら、この使いやすさはセキュリティを犠牲にしています。 MySQL は厳密なセキュリティ制御を使用して構成できますが、通常のデフォルトの MySQL 構成ではそれらの制御が使用されない場合があります。この記事では、MySQL データベースを強化するために実行する必要がある 5 つの重要な手順について説明します。

ステップ 1: 強力なパスワードを設定する

すべてのデータベース ユーザーにとって、強力なパスワードを使用することが重要です。ほとんどの人は手動でデータベースに頻繁にログインしないことを考慮して、パスワード マネージャーまたはコマンド ライン ツール pwgen を使用して、データベース アカウント用にランダムな 20 文字のパスワードを作成します。これは、追加の MySQL アクセス制御を使用して、特定のアカウントがログインできる場所を制限する場合でも (アカウントをローカルホストに厳密に制限するなど)、依然として重要です。

パスワードを設定する最も重要な MySQL アカウントは root ユーザーです。デフォルトでは、多くのシステムでは、このユーザーにはパスワードがありません。特に、Red Hat ベースのシステムでは、MySQL のインストール時にパスワードが設定されません。Debian ベースのシステムでは、対話型インストール中にパスワードの入力を求められますが、非対話型インストール (Configuration Manager を使用する場合など) ではパスワードがスキップされます。さらに、対話型インストール中にパスワードの設定をスキップすることもできます。

root ユーザーにパスワードを入力させないことは、大きなセキュリティ リスクではないと考えるかもしれません。結局のところ、ユーザーは「root@localhost」に設定されています。これは、そのユーザーになる前にコンピューターを root 化する必要があることを意味すると思われるかもしれません。残念ながら、これは、localhost から MySQL クライアントをトリガーできるユーザーは、次のコマンドを使用して MySQL root ユーザーとしてログインできることを意味します:

*$ mysql — user root*

したがって、root ユーザーのパスワードを設定しない場合、MySQL マシン上でローカル シェルを取得できる人は誰でもデータベースを完全に制御できるようになります。

この脆弱性を修正するには、mysqladmin コマンドを使用して root ユーザーのパスワードを設定します:

$ sudo mysqladmin password

残念ながら、MySQL は実行されます。 root として ユーザーとしてバックグラウンド タスクを実行します。パスワードを設定すると、/root/.my.cnf ファイルにパスワードをハードコードする追加の手順を実行しない限り、これらのタスクは中断されます。

[mysqladmin]
user = rootpassword = yourpassword
ログイン後にコピー

ただし、これは、パスワードをプレーン テキストで設定する必要があることを意味します。フォームはホスト マシンに保存されます。ただし、少なくとも Unix ファイル権限を使用して、ファイルへのアクセスを root ユーザーのみに制限することはできます。

sudo chown root:root /root/.my.cnf
sudo chmod 0600 /root/.my.cnf
ログイン後にコピー

ステップ 2: 匿名ユーザーを削除する

匿名アカウントは両方ともユーザー名とパスワードのない MySQL アカウント。攻撃者がパスワードなしでデータベースにいかなる種類のアクセスもできないようにするため、このコマンドの出力で、空のユーザー名でログインした MySQL ユーザーを調べます。

> 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)
ログイン後にコピー

がこれらのルートにあります。ユーザーの中の匿名ユーザー ( l​​ocalhost )。「ユーザー」列は空です。次のコマンドを使用して、特定の匿名ユーザーをクリアできます。

> drop user ""@"localhost";
> flush privileges;
ログイン後にコピー

他に匿名ユーザーを見つけた場合は、必ず削除してください。

#ステップ 3: 最小特権の原則に従う

最小特権の原則は、次のように要約できるセキュリティ原則です。

Just for アカウントはジョブの実行に必要なアクセスを提供するだけで、それ以上のアクセスは提供しません。

この原則は、さまざまな方法で MySQL に適用できます。まず、GRANT コマンドを使用して特定のユーザーにデータベース権限を追加するときは、ユーザーがデータベースにアクセスするために必要な権限のみを制限するようにしてください。

> grant all privileges on mydb.* to someuser@"localhost" identified by 'astrongpassword';
> flush privileges;
ログイン後にコピー
ユーザーが特定のテーブルにのみアクセスする必要がある場合 (たとえば、users テーブル)、

mydb.users またはテーブルの任意の名前を mydb.* に置き換えます (すべてのテーブルに権限を付与します)。

多くの人はユーザーにデータベースへのフル アクセスを許可しますが、データベース ユーザーがデータを読み取るだけでデータを変更する必要がない場合は、データベースへの読み取り専用アクセスを許可するという追加の手順を実行する必要があります。 :

> grant select privileges on mydb.* to someuser@"localhost" identified by 'astrongpassword';
> flush privileges;
ログイン後にコピー
最後に、多くのデータベース ユーザーはローカルホストからデータベースにアクセスしません。通常は管理者が次のように作成します:

> grant all privileges on mydb.* to someuser@"%"  identified by 'astrongpassword';
> flush privileges;
ログイン後にコピー
これにより、「someuser」はどこからでもデータベースにアクセスできるようになります。通信網。ただし、明確に定義された内部 IP のセットがある場合、またはすべてのアプリケーション サーバーが他のホストとは異なるサブネット上に存在するように VLAN が設定されている場合は、これを利用して "someuser" を制限できます。アカウントが特定のネットワークからのみデータベースにアクセスできるようにします:

> grant all privileges on mydb.* to someuser@10.0.1.0/255.255.255.0 identified by 'astrongpassword';
> flush privileges;
ログイン後にコピー

第四步:启用 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
ログイン後にコピー

为了额外的安全性,还可以添加 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;
ログイン後にコピー

第五步:加密数据库密钥

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

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

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

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

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

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

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

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

【相关推荐:mysql视频教程

以上が【知っておくべき】MySQL を強化するために講じるべき 5 つの重要なセキュリティのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

Redis ExporterサービスでRedis Dropletを監視します Redis ExporterサービスでRedis Dropletを監視します Apr 10, 2025 pm 01:36 PM

Redisデータベースの効果的な監視は、最適なパフォーマンスを維持し、潜在的なボトルネックを特定し、システム全体の信頼性を確保するために重要です。 Redis Exporter Serviceは、Prometheusを使用してRedisデータベースを監視するために設計された強力なユーティリティです。 このチュートリアルでは、Redis Exporterサービスの完全なセットアップと構成をガイドし、監視ソリューションをシームレスに構築します。このチュートリアルを研究することにより、完全に動作する監視設定を実現します

See all articles