データベースに接続し、いくつかのクエリを実行するシェルスクリプトを作成しました。
#/!bin/bash
...
...
mysql -h remote -u root --password='pw' MatchingDB
some SQL queries
私の質問は、この接続が安全な接続と見なされ、攻撃者が私がリモートデータベースに送信するクエリをスニッフィングしたり、送信したクエリを変更できることです。
答え1
はい、しかし、コマンドラインにパスワードを提供しないでください。コマンドラインスイッチからパスワードを省略すると、パスワードの入力を求められます。
はい
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 227743
Server version: 5.0.95 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
パスワードを安全に処理する
推奨事項については、MySQLのドキュメントを確認してください。ページのタイトルは次のとおりです。6.1.2.1 エンドユーザーパスワードセキュリティガイドラインさまざまな方法を強調し、各方法の長所と短所について説明します。
説明したオプションの中からオプションファイルを使用できます。
抜粋
オプションファイルにパスワードを保存します。たとえば、Unixでは、ホームディレクトリにある.my.cnfファイルの[client]セクションにパスワードを一覧表示できます。
[client] password=your_pass
パスワードを安全に保つために、自分以外の人はファイルにアクセスできません。これを保証するには、ファイルアクセスモードを400または600に設定します。たとえば、
shell> chmod 600 .my.cnf shell> mysql --defaults-file=/home/francis/mysql-opts
議論されているすべての方法はセキュリティの観点からは問題がありますが、これらの方法を実行しているディレクトリがアクセス権を持つ他のディレクトリから隔離されていると仮定すると、リスクは最も低いでしょう。
ボルトを使用
あなたがしたいことが「本番準備」インストールと呼ばれるものである場合は、暗号化ライブラリを使用することが実際には適切なメカニズムです。これについての詳細は、次のタイトルのMySQLの記事で見ることができます。5.3.6 パスワードストア。
Linux、特にGNOMEではGNOMEデーモンを使用しますgnome-keyring
。
引用する
答え2
接続に対してSSLサポートを有効にする必要があるかもしれません。
サーバーでmysqld
サポートされていることを確認するには、SSL
システム変数の値を確認してくださいhave_ssl
。
mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
値はい、サーバーサポートSSLプロトコルつながる値障害を負う、サーバーは有能なSSL接続はサポートされていますが、--ssl-xxx
それを使用するための適切なオプションはまだ提供されていません。
おそらく以下で確認してください。ここSSLをサポートするmysqlサーバーを設定する方法について説明します。