web-dev-qa-db-ja.com

Systemd PrivateTmp = trueセキュリティの影響

Nagios Core[〜#〜] nrpe [〜#〜] および check_disk を使用して、Ubuntuサーバーで利用可能なディスク領域を監視しています。

以前のUbuntuバージョンでは、以前は次のような出力を取得していました。

DISK OK - free space: / 43754 MB (80% inode=86%):

Ubuntu 18.04.1では、代わりに次のようになります。

DISK OK - free space: /var/tmp 43754 MB (80% inode=86%):

ルート/var/tmpパーティションの誤ったマウントポイント/が表示されます。 PrivateTmp=truenagios-nrpe-server.serviceがあることに依存するように、この動作を追跡しました。

  • /var/tmpを調べたところ、systemd-private-c5b5d3d362364af19af640147f2cb844-nagios-nrpe-server.service-4uILRyという名前のディレクトリが見つかりました
  • 次に、サービス定義を調べたところ、PrivateTmp=trueに気づきました(Ubuntu 16.04の NRPE2 などにはありません)。
  • 最後に、行を削除しようとしたところ、ルートマウントポイントが/として検出されました

私は3つのオプションに直面しているように感じます:

  1. 一緒に暮らしてください。

  2. PrivateTmp=trueを削除します。

  3. 適切な回避策を見つけてください。

私はそれだけで生活する傾向がありますが、サービスにプライベートの/tmpがないことの影響をもっと知っていれば、オプション2について十分な情報を得た上で選択できます。

最適な解決策は、回避策を見つけて、この場合でも正しいマウントポイント情報を返すようにcheck_diskに指示することです。システムにアクセスできないことは、/tmpが障害となることを意味しません。

質問:PrivateTmp=trueの意味を図解し、それが推奨される理由と、どのような場合に、どのような警告で削除できるかを説明してください。

2番目の質問:check_diskまたは同等のツールがPrivateTmp=trueを使用してサービスによって実行されている場合でも、正しいルートマウントポイントを表示するための賢明な回避策はありますか?


追加情報:

完全なコマンドは/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/vg-rootです。ローカルで実行すると、nagiosユーザーを使用しても、出力には/が正しく表示されます。 /usr/local/libexec/nagios/check_nrpe2 -H 192.168.1.2 -c check_rootを使用してNagiosサーバーからリモートで実行すると、出力には期待される/var/tmpではなく/が表示されます。

2
simlev

マウントポイントの代わりにcheck_diskにブロックデバイスを提供することで、この動作を再現できます。

例えば:

root@cosmic:~# grep check_root /etc/nagios/nrpe.cfg 
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
root@cosmic:~# /usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_root
DISK OK - free space: /var/tmp 6451 MB (68% inode=78%);| /var/tmp=3033MB;8010;9011;0;10013
root@cosmic:~# /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013

しかし、マウントポイントを使用することで、期待どおりの動作が得られます。

root@cosmic:~# grep check_root /etc/nagios/nrpe.cfg 
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
root@cosmic:~# /usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_root
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
root@cosmic:~# /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013

この動作は、systemdユニットのPrivateTmp=の設定に何らかの形で関連しているようです。これをnagios-nrpe-server.serviceから削除すると、check_diskは、ブロックデバイスを指定した場合にも期待される結果を返します。私は/bin/dfPrivateTmp=trueで実行する簡単なサービスで少し遊んでみましたが、そこに明らかな問題は見つかりませんでした。それも正しい結果を返しました。

マウントポイントではなくブロックデバイスでディスクをチェックできるようにする必要がある場合、最善の方法は、Nagios NRPE開発者に問題を報告して、実際にコードを調べて何でも見つけられるようにすることです。です。

1
Michael Hampton