Linux用MySQL/MariaDBセキュリティベストプラクティス12件について
MySQLは世界で最も流行しているオープンソースデータベースシステムであり、MariaDB(MySQLブランチ)は世界で最も成長しているオープンソースデータベースシステムである。MySQLサーバをインストールした後、デフォルトの構成では安全ではありません。データベースのセキュリティを確保することは、通常、汎用データベース管理の基本的なタスクの1つです。
これは、攻撃者がシステムの任意の部分の脆弱性をスキャンし、データベースが過去に重点ターゲット領域だったため、Linuxサーバ全体のセキュリティを強化し、向上させるのに役立ちます。一般的な例はMySQLデータベースのrootパスワードの強制解読です。
このガイドでは、開発者に役立つMySQL/MariaDBのLinuxのベストセキュリティの実践について説明します。
1.MySQLを安全にインストールするMySQLサーバをインストールした後、データベース・サーバを保護するための最初の推奨手順です。このスクリプトを使用すると、MySQLサーバのセキュリティを向上させることができます。
・インストール中にrootアカウントのパスワードを設定していない場合は、すぐに設定します。
・ローカルホスト外部からアクセス可能なrootアカウントを削除することにより、リモートrootユーザーログインを無効にする
・匿名のユーザー・アカウントとテスト・データベースを削除します。デフォルトでは、すべてのユーザー、さらには匿名のユーザーがこれらのアカウントとテスト・データベースにアクセスできます。
# mysql_secure_installation
MySQLの安全なインストール状況インタフェース
2.データベース・サーバをLoopbackアドレスにバインドするこの構成ではリモートマシンからのアクセスが制限され、MySQLサーバはローカルホストからの接続のみを受け入れるように通知されます。プライマリプロファイルで設定できます。
# vi /etc/my.cnf [RHEL/CentOS] # vi /etc/mysql/my.conf [Debian/Ubuntu] OR # vi /etc/mysql/mysql.conf.d/mysqld.cnf [Debian/Ubuntu]
[mysqld]セクションに次の行を追加します。
bind-address = 127.0.0.13.MySQLのLOCAL INFILEを無効にする
セキュリティの強化の一部としてlocal_を無効にする必要があります。Infileは、[mysqld]セクションでMySQLから最下位ファイルシステムにアクセスしないように、次のコマンドを使用します。
local-infile=04.MySQLのデフォルトポートの変更
ポート変数を設定してTCP/IP接続を傍受するMySQLポート番号。デフォルトのポート番号は3306ですが、[mysqld]で変更できます。
Port=50005.MySQLログの有効化
ログは、サービスの実行中に何が起こったかを知る最善の方法の一つであり、攻撃を受けたときにログから侵入に関連する行為を簡単に見ることができます。下の変数をプロファイル[mysqld]セクションに追加することでmysqlログ機能をオンにできます。
log=/var/log/mysql.log6.適切なMySQLファイルへのアクセス権の設定
すべてのmysqlサービスファイルとデータパスに適切なアクセス権が設定されていることを確認します。ファイル/etc/my.confはrootユーザーのみが変更でき、他のユーザーがデータベース・サービスの構成を変更することを阻止できます。
# chmod 644 /etc/my.cnf7.MySQL shell履歴の削除
MySQL shellで実行したすべてのコマンドはmysqlクライアントによって履歴ファイルに保存されます:~/.mysql_history。これは、shellで入力したすべてのユーザー名とパスワードが履歴ファイルに記録されるため、作成したユーザーアカウントに対して危険です。
# cat /dev/null > ~/.mysql_history8.コマンドラインでMySQLコマンドを実行しない
ご存じのように、端末に入力したすべてのコマンドは、使用しているshell(bashのshell履歴ファイルが~/.bash_historyに置かれているなど)に応じて履歴ファイルに格納されます。攻撃者がこの履歴ファイルにアクセスすると、そこに記録されているパスワードが簡単に表示されます。
コマンドラインにパスワードを入力することは非常に推奨されません。以下のようにします。
# mysql -u root -ppassword_
パスワードでMySQLに接続
コマンドライン履歴ファイルの最後の部分を表示すると、前に入力したパスワードが表示されます。
# history
コマンドライン入力履歴の表示
MySQLへの接続を推奨する方法は
# mysql -u root -p Enter password:9.特定のアプリケーションのデータベース・ユーザーの定義
サーバ上で実行されるアプリケーションごとに、アプリケーションに関連するデータベース・ユーザーを1人だけ設定します。たとえば、wordpressのWebサイトがあり、次のようにwordpressのデータベース・ユーザーを作成します。
# mysql -u root -p MariaDB [(none)]> CREATE DATABASE osclass_db; MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit
また、使用されなくなったデータベース・ユーザーについては削除することを覚えておいてください。
10.追加のセキュリティプラグインとライブラリの使用MySQLには、クライアントがMySQLサーバに接続されていることを検証するリクエスト、パスワードチェック、機密情報のセキュリティストレージなど、多くのセキュリティプラグインが含まれています。これらは無料バージョンで提供されています。
詳細はこちら:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html
11.MySQLパスワードを定期的に変更するパスワードの定期的な変更は、一般的な情報/アプリケーション/システムセキュリティの推奨事項です。パスワードをどのくらい変更するかは、あなたの内部のセキュリティポリシーによって決まります。定期的にパスワードを変更すると、長期的にあなたの「覗き見者」を追跡することを阻止し、あなたのパスワードを取得し、MySQLサーバーにログインすることができます。
MariaDB [(none)]> USE mysql;MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';MariaDB [(none)]> FLUSH PRIVILEGES;12.MySQL Serverパッケージを定期的に更新する
mysql/mariadbパッケージを定期的に公式倉庫から更新して、最新のセキュリティ更新とエラー改善を取得することを強くお勧めします。通常、オペレーティングシステムのデフォルトのパッケージは時代遅れです。
# yum update # apt update
mysql/mariadb serverを変更した後、サービスを再起動します。
# systemctl restart mariadb #RHEL/CentOS # systemctl restart mysql #Debian/Ubuntu
以上、Linux用のMySQL/MariaDBセキュリティベストプラクティス12件について、皆さんにお伝えした内容をすべて共有し、お手伝いしたいと思います。興味のある方は引き続き当駅の他の関連テーマを参照することができます。不足点があれば、伝言を歓迎します。友达の本駅に対する支持に感谢します!