HOME  /Synology
 /SynologyのphpMyAdminのセキュリティ対策
2018年03月24日

SynologyのphpMyAdminのセキュリティ対策

下記ドキュメントで新規管理者の登録、rootのパスワード設定、不要IDの削除を行いました。

 ­MariaDB5とMariaDB10のアクセス権の設定

しかしこれだけではセキュリティ対策としては不十分で下記対策が考えられます。

①phpMyAdminをhttpsアクセス化する事によりIDとパスワードの漏えいを防止する。

②rootではphpMyAdminをアクセスさせない様にする。

③phpMyAdminはローカルIPからしかアクセスできない様にする。

下記にその設定方法を解説します

1.phpMyAdminをhttpsアクセスに限定する方法

SSL証明書の取得は下記ドキュメントを参照してください。

 ­Let’s Encryptの無償のSSL証明書の取得方法

phpMyAdminをhttps接続にリダイレクトさせる為にはSynologyの仮想ホスト機能を利用します。

 

1-1.config.inc.phpを仮想ホスト機能が使える形に変更する

Web→phpMyAdmin」フォルダの中にある「config.inc.php」をEmEditorで開いてください。

現在のDBサーチ設定は下記になっています。

$i = 0;
$servers_json_str = file_get_contents('/var/packages/phpMyAdmin/target/synology_added/etc/servers.json');
foreach (json_decode($servers_json_str, true) as $server) {
	$i++;
	$cfg['Servers'][$i] = $server;
}

上記はMariaDB5とMariaDB10をサーチする機能になっていますが、仮想ホストに登録する為にはこの形式では利用できません。

上記の下記部分をコメントにします。

//$servers_json_str = file_get_contents('/var/packages/phpMyAdmin/target/synology_added/etc/servers.json');
//foreach (json_decode($servers_json_str, true) as $server) {
//	$i++;
//	$cfg['Servers'][$i] = $server;
//}

$i = 0;の下の下記を追加します。

// MariDB10アクセスオンリー設定
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowSynoRoot'] = true;
$cfg['Servers'][$i]['host'] = 'localhost:3307';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysql';

※1.localhost:3307の所が明示的にMariaDB10にアクセスしなさい!という宣言文です。

 

1-2.Web Stationの仮想ホストを定義する。

①Web Stationを起動してください。

②左のメニュから仮想ホストを選択します。

③表示された画面の作成ボタンを挿入します。

④下記画面に必要情報を入力します。

※1.ホスト名:phpMyAdminをアクセスするドメイン名を入力します。

※2.ドキュメントルート:webフォルダを選択します。

※3.HTTPS設定:HSTSにチェック入れます。

※4.HTTPバックエンドサーバとPHPバージョンを選択します。

⑤OKボタンを挿入すると仮想ホストが登録されます。

以上でphpMyAdminはhttps通信を強制する設定が完了しました。

 ­メモ

HSTSとは
HSTS(HTTP Strict Transport Security)は、HTTP の代わりに HTTPS を用いて通信を行うようにWeb サイトからブラウザに要求するセキュリティ機能です。
ブラウザからhttpsで1回アクセスすると2回目以降からはhttps指定しなくてもブラウザ側で自動でhttpsにリダイレクトしてくれる様になります。
HTTP/2とは
HTTP/2は従来のHTTPに「ストリーム」という概念を導入し、1つのコネクション内で同時に並行して複数のリクエスト/レスポンスを処理できるようにしたプロトコルです。
以上でphpMyAdminはHttps通信でしか利用できなくなりました。
 

2.phpMyAdminのrootを使用不可にする方法

rootは誰でも知っているIDなので、これでのアクセスを禁止する設定です。

config.inc.phpの1項で設定したserver設定の後に下記を追加して下さい。

/* セキュリティ対策の為にrootを禁止にする設定 */
$cfg['Servers'][$i]['AllowRoot'] = false;

以上でrootではログインできなくなります。

 

3.ローカルIPからしかアクセスできなくする方法

この設定はローカルLANからしかphpMyAdminにアクセスできない設定です。

これは完璧なセキュリティ対策になりますが、外出先からVPN接続でも接続できなくなる事が難点です。

2項で設定したserver設定の後に下記を追加して下さい。

/* セキュリティ対策の為にphpMyadminはローカルipからのアクセスに限定する。*/
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array('deny % from all','allow % from 192.168.1.0/24');

 

4.注意点(重要)

上記ではphpMyAdminの中にあるconfig.inc.phpをマニュアル変更しました。

この場合SynologyがphpMyAdminをバージョンアップした場合、config.inc.phpもデフォルトに書き直されます。

この様な場合は再度、config.inc.phpを再修正する必要があります。