web-dev-qa-db-ja.com

MySQLサーバーの強化

硬化のテーマに従って...

MySQLを保護するためのベストプラクティス、推奨事項、必要な資料は何ですか。

27
Scott Pack
  • サーバーでMySQLのみを実行します-可能であれば、サーバーでMySQLのみを実行し、未使用のサービスを削除します。
  • ファイアウォール-IPアドレスによるアクセスを、アクセスを必要とするサーバー/クライアントのみに制限します。
  • ユーザー権限-ユーザーを作成するときは、常に最小限の権限を与え、必要に応じて拡張します。また、ホストに「%」ワイルドカードを使用しないようにし、代わりにアクセスを必要とするホストに制限してください。
  • Bind Address Appropriately-同じネットワーク内のサーバーへのリモートアクセスのみが必要で、マシンに外部IPアドレスと内部ネットワークアドレスの両方がある場合。内部アドレスのみをリッスンするようにMySQLを設定します。
  • ログを有効にする-データベースが多くのクエリを処理しない場合、ログを有効にします。
  • mysql_secure_installation-mysql_secure_installationユーティリティを使用して、匿名ユーザーアカウントの削除、テストデータベースの削除など、さまざまなことを行います。
  • ローカルのみアクセス可能なルートアカウント-マシンから直接のみアクセスできるようにルートアカウントを制限するのが最善です。 mysql_secure_installationを使用すると、rootアカウントのリモートアクセスを簡単に削除できます。次に、通常はマシンにsshしてmysqlコマンドプロンプトを使用するか、MySQL WorkbenchにSSH経由でトンネルする機能があります。

その他のリソース

25
Mark Davidson

通常のOSメソッド(リモートssh管理が必要な場合はfail2banを含む)を想定し、MySQLポートへのすべての外部アクセスをブロックするか、どうしても必要な場合はホワイトリストに接続を許可します。 mysqladminユーザーのパスワードを設定します。

その後、mysqladminユーザーはlocalhostからの接続のみを許可され、「user」テーブルを介して権限が付与される唯一のユーザーである必要があります。他のすべてのユーザーはデフォルトで(つまり、userテーブルで)アクセスを拒否されましたが、個人に特定の権限が付与されていますデータベース。

MySQLをインターネットで直接公開しないでください。リモートデータアクセスが必要な場合は、VPNを使用してください(例:クライアント検証を行うstunnel)。

7
symcbean