NRPEによるroot昇格のチェック

NRPEとは(Nagios Remote Plugin Executer)の略でリモートホスト側でNgiosのPluginを実行させる仕組みとプロトコルを指すようです。Almalinux8 に NRPEをインストールしようとすると、nagios-plugins-all が必要となり、nagios-plugins-all には perl-utf8-all が必要となる。

root昇格チェックについて

  • check_log3を利用する
  • /var/log/secure の ログを /var/log/secure2 にも記録させ、/var/log/secure2 をNRPEが監視する
  • /var/log/secure2 の logrotate を dailyとし、合わせて seekファイルをクリアする
  • NPRE側でコマンドを完成させ、Nagios本体からの変数は受け付けないものとする
  • root昇格の文字列は root by とする
  • コンソール上から root で直接ログインしたときの uid=0 の文字列は監視対象外とする

NRPEのインストール

たまに、nagios-plugins-all も install perl-utf8-all も dnf インストールできないことがあります。

nagios-plugins-all install perl-utf8-all の エラー対策

# dnf -y install nagios-plugins-all
Last metadata expiration check: 0:15:29 ago on Sun 21 Jan 2024 01:44:58 PM JST.
Error:
 Problem: package nagios-plugins-all-2.3.3-6.el8.x86_64 from epel requires nagios-plugins-disk_smb, but none of the providers can be installed
  - package nagios-plugins-disk_smb-2.3.3-6.el8.x86_64 from epel requires perl(utf8::all), but none of the providers can be installed
  - conflicting requests
  - nothing provides perl(Import::Into) needed by perl-utf8-all-0.024-7.el8.noarch from epel
  - nothing provides perl(PerlIO::utf8_strict) needed by perl-utf8-all-0.024-7.el8.noarch from epel
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)


# dnf -y install perl-utf8-all
Last metadata expiration check: 0:16:09 ago on Sun 21 Jan 2024 01:44:58 PM JST.
Error:
 Problem: conflicting requests
  - nothing provides perl(Import::Into) needed by perl-utf8-all-0.024-7.el8.noarch from epel
  - nothing provides perl(PerlIO::utf8_strict) needed by perl-utf8-all-0.024-7.el8.noarch from epel
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

上記のエラーが出たの場合、迷わずおまじないを使おう。

# dnf --enablerepo=powertools install -y perl-utf8-all
# dnf --enablerepo=powertools install -y nagios-plugins-all

/var/log/secure2 ログの監視設定

# mkdir /etc/nagios/seek
# echo 0 > /etc/nagios/seek/secure.seek
# chmod 666 /etc/nagios/seek/*.seek
# mkdir /etc/nagios/key
# echo 'root by' > /etc/nagios/key/secure.key
# echo 'uid=0' >> /etc/nagios/key/secure.exclude
# chmod 644 /etc/nagios/key/*
# vi /etc/nagios/nrpe.cfg
command[check_log3_secure]=/usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
# systemctl restart nrpe.service
# vi /etc/rsyslog.conf
authpriv.*                                              /var/log/secure2 #この行をsecureの下に追加
# systemctl restart rsyslog

# chown root.nagios /var/log/secure2
# chmod 640 /var/log/secure2
# ll /var/log/secure2
-rw-r----- 1 root nagios 760 Jan 21 20:44 /var/log/secure2

NRPEの動作確認

# /usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
OK: Found 0 lines (limit=1/1): No matches found.|lines=0
※SSHログインしてroot昇格してみる
# /usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
CRITICAL: Found 1 lines (limit=1/1): Jan 21 20:39:22 aq3 su[1188353]: pam_unix(su-l:session): session opened for user root by XXXX(uid=1002)|lines=1
# /usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
OK: Found 0 lines (limit=1/1): No matches found.|lines=0

logrotateの設定と確認

# vi /usr/local/bin/seek_reset.sh
#!/bin/bash
dir_path="/etc/nagios/seek/*"
dirs=`find $dir_path -maxdepth 0 -type f -name *.seek`

for dir in $dirs;
do
    echo "0" > $dir
done

# chmod 755 /usr/local/bin/seek_reset.sh
# vi /etc/logrotate.d/nrpe
/var/log/secure2 {
    missingok
    compress
    daily
    rotate 5
    postrotate
        sh /usr/local/bin/seek_reset.sh &>/dev/null
        /usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true
    endscript
}

# logrotate -dv /etc/logrotate.conf
上の方まで見てエラーになっていないか確認する reading config file nrpe があればOK

Nagios本体の設定

# vi /etc/nagios/servers/aquila.cfg
define service{
    use                      generic-service
    host_name                aquila_jp
    service_description      LOG
    normal_check_interval    1
    check_command            check_nrpe!check_log3_secure

}