MuninのWebインターフェースにアクセス制限を掛ける方法

MuninのWebインターフェースにアクセス制限を掛ける方法

小規模サーバー環境のリソース監視に最適なツール「Munin」は、デフォルトではWebインターフェースに制限がかかっていないため、セキュリティ的に弱いところがあります。

ローカルネットワーク上なら、このような点もそれほど気にする必要はないかもしれませんが、インターネットへ公開しているサーバーにMuninサーバーをインストールするような場合は、なにがしかのアクセス制限が必要でしょう。

そこでここでは、Nginx上に構築したMuninサーバーでアクセス制限を行う方法として、Nginxの設定で実装可能な2つの方法(IPアドレスにより制限する方法と、Basic認証を実装する方法)を紹介します。

Muninをよりセキュアに運用したい場合に参考にしてください。

IPアドレスによる制限方法

IPアドレスにより制限する場合は、Nginxの設定ファイルのserverディレクティブや、locationディレクティブに記述するのが一般的です。

以下の例では、serverディレクティブに記述しており、制限内容は次のとおりです。

  • 192.168.10.0/24からのアクセスは許可
  • 127.0.0.1(自分自身)からのアクセスは許可
  • 上記以外はすべて接続拒否
# vi /etc/nginx/conf.d/munin.conf
server {
  listen 80;
  server_name 192.168.10.170;
  root /var/www/html/munin/;
  index index.html index.htm;
  …
  #アクセス制限設定
  allow 192.168.10.0/24;
  allow 127.0.0.1;
  deny all;
  …
}

以上で、許可されていないIPアドレスからアクセスすると、次のようにアクセスが拒否されます。

MuninのWebインターフェースにアクセス制限を掛ける方法

制限の詳しい記述方法は、以下の公式サイトをご覧ください。

nginx.org | http_access_module

Basic認証による制限方法

Basic認証は、Web上で利用できる認証方法の一つで、ログイン情報を利用して認証しないとWebページを表示できないようにできます。

設定する際は、Nginxの設定ファイルのserverディレクティブやlocationディレクティブに記述するのが一般的です。

手順は、次のとおりです。

認証ユーザー情報の作成

まず、以下のツールをインストールして、認証で使用するユーザー情報ファイルを作成します。ここでは例として「user1」「user2」の2つのユーザー情報を作成します。

# yum install httpd-tools
# htpasswd -c /etc/nginx/.htpasswd user1
New password: *****
Re-type new password: *****
Adding password for user user1
# htpasswd /etc/nginx/.htpasswd user2
New password: *****
Re-type new password: *****
Adding password for user user2

Basic認証の実装

次にNginxの設定ファイルにBasic認証の設定を記述します。

# vi /etc/nginx/conf.d/munin.conf
server {
  listen 80;
  server_name 192.168.10.170;
  root /var/www/html/munin/;
  index index.html index.htm;
  …
  auth_basic "Restricted"; #認証時に表示されるメッセージ
  auth_basic_user_file /etc/nginx/.htpasswd; #.htpasswdファイルのパスを指定
  …
}

以上で、Muninサーバーにブラウザでアクセスすると、ユーザー情報を入力するためのポップアップが表示され、上で設定したユーザー名とパスワードで認証をパスしないと、Muninの画面が表示されなくなります。

MuninのWebインターフェースにアクセス制限を掛ける方法

認証ポップアップ

MuninのWebインターフェースにアクセス制限を掛ける方法

認証されなかった時の画面

あとがき

IPアドレスによる制限とBasic認証を両方利用すれば、よりセキュリティを強化できると思います。

ただ、1台のサーバーに複数のサービスを同居させるのは、トラブルが起こった時の原因の切り分けが難しくなるため、個人的には避けたいところです。

VPSとかだと、同居せざるを得ないのかもしれませんが。