MySQLとMariaDBのセキュリティに関するベストヒント
公開: 2022-01-08セキュリティは多くの人にとって大きな関心事です。 この投稿では、データベースをハッカーから保護するためにMySQLとMariaDBのセキュリティを実現するための10のヒントを紹介します。 これらのヒントには、データのバックアップ、強力なパスワードの使用、およびアクセス権限の制限が含まれます。
MySQLとMariaDBのセキュリティに関するベストヒント
MySQLとMariaDBのセキュリティを実現するための最良のヒントは次のとおりです。
パスワードなしでユーザーを削除する
データベースにパスワードのないユーザーがいる場合は、それらを削除することをお勧めします。 これにより、誰かがデータベースをハッキングできる可能性を減らすことができます。 次のクエリを使用して、これらのユーザーを削除できます。
ユーザーがローカルホストからのみアクセスできるかどうかに関係なく、否定的なコマンドの実行を停止するには、ユーザーを削除する必要があります。 また、弱いパスワードはそれ自体がセキュリティリスクです。
データベースにユーザーを作成するときは、常に強力なパスワードを使用する必要があります。 弱いパスワードはハッカーによって解読されやすく、ハッカーがこれを管理していると、データベースにアクセスして大混乱を引き起こす可能性があります。 自動パスワードジェネレータを使用すると、解読がより困難な強力なパスワードを作成するのに役立ちます。
また、ユーザーに2要素認証を使用することも検討する必要があります。 これには、データベースにログインするために、通常は電話に送信される追加のコードが必要になります。 これにより、ユーザー名とパスワードしか持っていない場合、誰かがアクセスするのがはるかに困難になります。
リモートアクセスを制限する
データベースへのリモートアクセスを許可する必要がない場合は、データベースを制限することをお勧めします。 これにより、誰かがリモートの場所からデータベースにハッキングできる可能性を減らすことができます。
幸い、MySQLとMariaDBの最新バージョンは、特に指定がない限り、データベースへのリモートアクセスを自動的に制限します。 ただし、セキュリティ設定をチェックして、これが当てはまるかどうかを確認する必要があります。
また、すべてのユーザーが希望する正確なホストのみでMySQLに接続するようにすることもお勧めします。 たとえば、これは([電子メール保護])を使用して実行できます。
テストデータベースを削除します
MySQLまたはMariaDBをインストールすると、テストデータベースが自動的に作成されます。 このデータベースには、悪意のあるユーザーの手に渡った場合に実際のデータベースをハッキングするために使用できるデータが含まれています。 このデータベースを削除して、悪意のある目的で使用できないようにすることをお勧めします。
このテストデータベースは、データベースサーバーに不要な負担をかけます。 これは、データベーステスターがクエリをテストするためにのみ使用するため、データベースの機能に影響を与えることなく削除できます。
MySQLへのアクセスを難読化する
データベースが存在することを他の人に知られたくない場合は、そのアクセスをわかりにくくすることができます。 これにより、誰かがあなたのデータベースを見つけてハッキングするのが難しくなります。
アクセスを難読化すると、トラフィックを監視している人が、MySQLまたはMariaDBで使用されているポートを特定するのがより困難になります。
MySQLがポート3306で実行されることはよく知られていますが、「root」はスーパーユーザーの名前です。 my.cnfを編集し、「port」変数を変更することで、これを修正できます。
構成ファイルを保護する
他のアプリケーションと同様に、MySQLまたはMariaDBの構成ファイルを保護することが重要です。 これらのファイルには、パスワードやユーザーデータなどの機密情報が含まれています。 これらのファイルを保護すると、サーバーにアクセスした場合に、だれもがこの情報にアクセスできないようにするのに役立ちます。
ネットワークセキュリティー
サーバー自体だけでなく、ネットワークも保護することも重要です。 これにより、誰かがリモートの場所からデータベースをハッキングして、データベースに対して不正なコマンドを実行する可能性を減らすことができます。
最初に確認する必要があるのは、MySQLがネットワークではなくローカル接続を介してのみアクセスされることです。 これは、Unixソケットを介して行うことができます。 my.cnfに「skip-networking」と入力します。 すべてのTCP/IP通信を停止します。

ファイアウォールを使用して、特定のIPアドレスまたは範囲からのMySQLへのアクセスをブロックすることもできます。 これにより、誰かがリモートの場所からデータベースをハッキングする可能性を減らすことができます。
監査プラグインを使用する
監査プラグインを使用して、データベースで何が起こっているかを追跡することもできます。 これらは、誰かがデータベースをハッキングしたかどうか、またはこれを示唆する可能性のある疑わしいことが起こっているかどうかを判断するのに役立ちます。
今日オンラインで利用できるこれらのプラグインには、無料と有料のオプションがたくさんあります。 MySQL Enterpriseが組織ですでに使用されている場合は、MySQLEnterpriseAuditが適切なオプションです。 MariaDBには独自の監査プラグインもあります。
これらのプラグインはすべて、疑わしいアクティビティがないかデータベースを監視するのに最適です。 異常が検出された場合はアラートを送信することもできるため、毎回手動でログを確認する必要はありません。
LOAD DATALOCALINFILEを無効にする
誰かがデータベースにアクセスするのを防ぐ別の方法は、MySQLとMariaDBのLOCAL機能を無効にすることです。 このコマンドを使用すると、ローカルファイルからデータファイルをロードできますが、特に暗号化されていない場合は、セキュリティ上のリスクもあります。 この機能を無効にするには、my.cnfでlocal-infile=0を設定します。
ファイル権限
MySQLおよびMariaDBファイルに正しいファイル権限を設定することも重要です。 これにより、許可されたユーザーのみがアクセスできるようになります。 これらのファイルに適切な権限を設定することで、これを行うことができます。
たとえば、すべてのMySQLファイルの所有者を「mysql」に設定し、グループを「mysql」に設定して、他のすべてのユーザーがアクセスを拒否されるようにすることができます。 これにより、正しい権限を持つユーザーのみがMySQLファイルにアクセスできるようになります。
転送中のデータのSSLと暗号化
SSLを有効にしてMySQLまたはMariaDBを実行している場合は、サーバーに必要な証明書をインストールしておくことが重要です。 これを行わないと、データベースとそのクライアント間で送信される情報をだれでも傍受できます。
また、SSHを使用してパブリックネットワークを介して送信される機密データの保護を強化するために、転送中のすべてのデータを暗号化する必要があります。
データベースサーバーと他のデバイス間で送信されるデータを暗号化することもできます。 これにより、ネットワーク上のトラフィックを監視している人は、これらのシステムの1つにハッキングしたとしても、送信または受信しているデータにアクセスできなくなります。
SSLはすでにプロトコルに組み込まれているため、MySQLユーザーにとってこれを実現するための優れた方法です。 MariaDBユーザーは、stunnelを使用して同様の効果を実現できます。
保存データの暗号化
最後に、保存データの暗号化も検討する必要があります。 これは、データが送信されていないときでもデータが暗号化されることを意味します。
これは、MySQLEnterpriseEncryptionやMariaDBColumnEncryptionなどのツールを使用して実行できます。
これらのツールはどちらも、誰かがデータベースサーバーに侵入した場合に、データがアクセスされないように保護するための優れた方法を提供します。 また、非常に使いやすいため、これらのツールを利用するために暗号化の専門家である必要はありません。
結論
ここに記載されているすべてのオプションは、MySQLおよびMariaDBのセキュリティを実現するのに役立ちますが、すべての状況に完全に対応しているわけではありません。 可能な限り最良のものを選択できるように、それらを見るときは特定のニーズを考慮する必要があります。 ただし、これらのヒントは、自分に適したオプションを選択する方法についての良いアイデアを提供するはずです。
うまくいけば、この記事が、組織でMySQLとMariaDBのセキュリティを実現する方法についていくつかの良いアイデアを提供し、データベースが他の防御を突破した場合にデータベースをハッキングできないようにすることを願っています。