誰でも ZABBIX

Zabbixの使い方、役に立つ情報、等々

2. 監視アイテムの追加 - SSHエージェント

SSH(Secure Shell)は、Linux系OSでほぼ標準でサポートされており、多数のLinuxサーバ・機器を監視する場合に、エージェントレスで監視アイテムを取得できる便利な機能です。

接続には、パスワード方式と公開鍵方式があります。

パスワード方式

これは、他のホストにコマンドラインでログインするケースとほぼ同じ感覚で使うことができます。セキュリティの観点から公開鍵方式が推奨されていますが、まずはこちらの方式で、監視対象のホストからsshでデータが取得できるかどうか確認してみることをおススメします。

f:id:Unam:20180306184956p:plain

デフォルトのホストインターフェースを使う場合、特にキーの引数を指定しなくてもOKです。とりあえず他のキーと重複を避けるためと、ログでエラーを確認する際に認識しやすくするため、任意の文字列を第1引数にしています。

パスワードのフィールドは残念ながら平文のまま表示されます。もちろん、表示だけでなく、通信経路、DB格納もセットで暗号対応していないとリスクのある環境で使うのは厳しいでしょう。ということで、パスワード方式は限られた環境での動確レベルで使うほうが良いかもしれません。

公開鍵方式

公開鍵方式は、実行するまでの手順がちょっと面倒です(Zabbix3.4も2.2も手順は同じでした)。

9 SSH チェック [Zabbix Documentation 2.2]

ただ、Zabbix3.4 Appliance(Ubuntu)でマニュアルどおりに進めようとしても、いろいろエラーになり、別の方法でやらざるを得ない箇所があります。以下手順は、最終的にアプライアンスで実行できた方法です。

Zabbix環境の変更

# zabbixユーザのホームディレクトリの確認
$ sudo cat /etc/passwd | grep zabbix

# SSH設定を有効化するために、zabbix_serverの設定を変更
$ sudo vi /etc/zabbix/zabbix_server.conf
:
SSHKeyLocation=/home/zabbix/.ssh
:

#zabbixユーザのホームディレクトリ変更前にzabbixを停止
$ sudo service zabbix-agent stop
$ sudo service zabbix-server stop

# Zabbixユーザのホームディレクトリを変更
$ sudo usermod -m -d /home/zabbix zabbix

 ※ ”まだ動いているプロセスがある”というエラーが出たら、
 ※そのプロセスは停止してから再度上記のコマンドを実行
 $ sudo kill nnn

# ユーザ属性の変更(ホームディレクトリの変更)
$ sudo usermod -m -d /home/zabbix zabbix

# ディレクトリの作成と属性変更
$ sudo test -d /home/zabbix || sudo mkdir /home/zabbix
$ sudo chown zabbix:zabbix /home/zabbix
$ sudo chmod 700 /home/zabbix
 
# サービス起動
$ sudo service zabbix-agent start
$ sudo service zabbix-server start


公開鍵の設定
接続先の192.168.0.60もZabbixアプライアンスVMUbuntu)です。

# 鍵ペアの作成
$ sudo -u zabbix ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zabbix/.ssh/id_rsa): ※そのままエンター
Enter passphrase (empty for no passphrase):  ※任意のパスワード
Enter same passphrase again: 
Your identification has been saved in /home/zabbix/.ssh/id_rsa_np.
Your public key has been saved in /home/zabbix/.ssh/id_rsa_np.pub.
The key fingerprint is:
SHA256:SICCJV3NsYI452FAli0eH/N7ZUXEPuSavQ15gMQvANQ zabbix@zabbix
The keys randomart image is:
+---[RSA 2048]----+
|==+o+=+.. +o     |
|+Bo= .oE o +     |
|+.O = o o B      |
| * o + . = *     |
|  .   o S = +    |
|     . . o + .   |
|      .     =    |
|           . .   |
|                 |
+----[SHA256]-----+

# 作成したファイルの確認
$ sudo ls -l /home/zabbix/.ssh/
-rw------- 1 zabbix zabbix 1766 Mar  6 19:17 id_rsa
-rw-r--r-- 1 zabbix zabbix  395 Mar  6 19:17 id_rsa.pub
-rw-r--r-- 1 zabbix zabbix  444 Mar  6 19:42 known_hosts

# 公開鍵を接続先に送信し、環境設定をする
# →ssh-copy-idはエラーになりうまくいかない(sudo -uの指定がコマンドの中で無視されている模様)
$ sudo -u zabbix ssh-copy-id appliance@192.168.0.60

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/home/appliance/.pub': No such file
        (to install the contents of '/home/appliance/.pub' anyway, look at the -f option)

# 公開鍵をマニュアルで監視対象にコピー&設定
# sudo -u zabbix ssh-copy-id appliance@192.168.0.60
$ sudo scp /home/zabbix/.ssh/id_rsa.pub appliance@192.168.0.60:/home/appliance/.ssh
$ ssh 192.168.0.60 "cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys"
 ※同じapplianceユーザで実行するのでsudoは付けない

# SSH接続の確認
$ sudo -u zabbix ssh appliance@192.168.0.60
 ※keygenのパスフレーズを入力した場合、それを入力


秘密鍵をpem形式に変更

パスフレーズを入力した場合、pem形式のファイルにしないと、以下のエラーになってしまいました。

error reason for "SSH Test:ssh.run[pubkey]" changed: Public key authentication failed: Callback returned error


以下のコマンドでpemファイルを作成します。

$ sudo openssl rsa -in /home/zabbix/.ssh/id_rsa -outform pem > /tmp/id_rsa.pem
$ sudo mv /tmp/id_rsa.pem /home/zabbix/.ssh


これで準備は終了です。アイテム定義画面は以下の通りです。

パスフレーズを入力していない場合
f:id:Unam:20180306201049p:plain

パスフレーズを入力した場合
f:id:Unam:20180306201949p:plain

まとめ

公開鍵の方式の設定は、アプライアンスでもいろいろマニュアル通りにはいかないので、環境によっては結構躓くかもしれません。うまくいかない場合、一度Zabbixの設定から離れて、sshを公開鍵方式で接続する方法をきちんと確認してみてください。そちらの方は、ネット上で様々な情報を入手可能です。

ZabbixのUIでは、公開鍵方式でもパスフレーズは平文で表示されてしまいます。セキュリティ的にパスフレーズを入れたほうがよいのかどうか、ちょっと悩みどころです。