Opsview Monitor has the capability of a more secure method of communication between the Opsview Agent and its Unix clients. Previous versions were limited to using relatively weak ADH-based ciphers, but now it's possible to use SSL certificates. These offer not only a stronger encryption method, but also authentication, so both the client and server know that they are indeed talking to each other, and not a man-in-the-middle. Please take a moment to read the PKI documentation before continuing with the below.
Whatever method of communication you choose, both the Opsview Agent server and clients (check_nrpe) must be told to use the same method: ciphers directly, or SSL certificates. The Opsview Agent server configuration is in
/opt/opsview/agent/etc/nrpe.cfg (on Windows in
C:/Program Files/Opsview Agent/opsview.ini), and the clients are configured by command line parameters.
We have added default parameters to every Service Check that comes with Opsview Monitor. If you check their definitions, you'll see two new Host variables -
NRPE_CERTIFICATES - discussed below. Note that you'll have to add these variables yourself if you're upgrading from an older version of Opsview Monitor. To do this add these two variables:
- Label Arg1: Cipher list
- Default Arg1: ADH-AES256-SHA:ADH-AES128-SHA
- Label Arg1: Path to certificate
- Label Arg2: Path to private key
- Label Arg3: Path to CA certificate
For each check_nrpe based service check that is to be used with the new feature, add these parameters:
-C '%NRPE_CERTIFICATES:1%' -k '%NRPE_CERTIFICATES:2%' -r '%NRPE_CERTIFICATES:3%' -y '%NRPE_CIPHERS:1%'
ciphers (on Windows in opsview.ini it is
allowed_ciphers) indicates the cipher list to use. Because there is no authentication involved in using a cipher directly like this, only ADH ciphers can be used here. The list follows the standard OpenSSL convention of colon-separated names, where the program attempts to use each cipher starting from the left, and falls back to the next one if unsuccessful. Similarly, the
-y parameter to check_nrpe lists ciphers that the client should attempt to use, which, of course, must contain at least one of the ciphers that the server is using.
Each check_nrpe based Service Check is configured to accept the NRPE_CIPHERS host variable. Make sure the value of this variable is the same or contains at least one of the ciphers configured in nrpe.cfg.
cacert_file (opsview.ini uses
ca) are file paths to a certificate PEM file. The first value, Arg1, is the path to the certificate on the Collector, Arg2 is the path to the private key and Arg3 is the CA certificate. These parameters correspond to the
-r parameters of the check_nrpe plugin.
The generation and use of the actual certificates is the User's responsibility - please refer to the PKI documentation. The automated installer should create the required certificates for the Orchestrator. In a single server system (assuming the FQDN of the orchestrator is
opsview.example.com), the following settings should be used:
- Arg 1: /opt/opsview/etc/ssl/[email protected]
- Arg 2: /opt/opsview/pki/ssl/private/[email protected]
- Arg 3: /opt/opsview/etc/ssl/ca.pem
- Arg 1: HIGH:!3DES:!CAMELLIA:!AES128:!aNULL:!eNULL:!ADH:!EXP:!LOW:!DES:!MD5:!PSK:!SRP:!DSS (note: to match configuration of the Opsview agent)
pki to create a
/opt/opsview/pki/bin/pki server-cert agent-machine.example.com
and transfer the following files to that server (NOTE:
agent-machine.example.com should match exactly the
Primary Hostname/IP configured in Opsview Monitor for the server)
agent-machine.example.com host, edit nrpe.cfg (or
custom.ini on Windows), uncomment and change
ciphers to match the definition used within
cacert_file options to point to their respective pem files. Then, restart the agent.
On Collectors that will be doing the monitoring, each check_nrpe based service check is configured to accept the NRPE_CERTIFICATES variable. The values for this variable refer to the certificate files for the Collector, and not the Host being monitored, as is the case usually with Host variables.
To enable TLSv1.2 only and disable older versions of TLS change the Linux Opsview Agent
nrpe.cfg file. By default only TLSv1.2 is enabled for the Opsview Windows Agent.
Opsview take security very seriously so all recent versions of Opsview Monitor default to using TLSv1.2 for all inter-process communication only. Consequently, agents for older versions of Opsview Monitor are unlikely to work without additional configuration to downgrade encryption to use TLSv1.0 or TLSv1.1. We recommend that you upgrade to later versions of Opsview Agents that support TLSv1.2 however if you have an operational need to run older Opsview Agents then a workaround is available to downgrade to use TLSv1.0 or TLSv1.2 for those specific Opsview Agents only.
Please see https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.0 for more information on the issues with using TLSv1.0.
The following Opsview Agents support TLSv1.2 and it is recommended that you upgrade to at least these versions:
- Opsview Windows Agent (NSClient++) - 0.3.9.509 2017-11-21 or 0.3.9.504 2017-07-04
- CentOS 6 - 22.214.171.124811091647
- CentOS 7 - 126.96.36.199811091647
- Debian 7 - 188.8.131.52811091647
- Debian 8 - 184.108.40.206811091647
- Oracle Enterprise Linux 7 - 220.127.116.11811091647
- RHEL 6 - 18.104.22.168811091647
- RHEL 7 - 22.214.171.124811091647
- Ubuntu 14.04 - 126.96.36.199811091647
- Ubuntu 16.04 - 188.8.131.52811091647
Agents or operating systems that do not support TLSV1.2 will need the following workaround to be applied to downgrade to TLSv1.0:
- As root user, run the following:
curl -L https://install.opsview.com/hotfixes/20180905_enable_check_nrpe_tlsv1 | sudo -iu opsview bash
NOTE: if you do not have access to the root user, run the following command as the nagios user
curl -L https://install.opsview.com/hotfixes/20180905_enable_check_nrpe_tlsv1 | bash
- Go to Configuration > Apply Changes to apply the changes.
This will modify the Opsview Monitor database to do the following:
- Create a new Variable called NRPE_PROTOCOL and sets the default value to be ''\!SSLv2:\!SSLv3" (which allows TLSv1)
- Adds the argument "-P %NRPE_PROTOCOL%" to the args list of every check_nrpe service check (replacing any other "-P ...." setting)
- Makes the Apply Changes Icon change to indicate that Apply Changes is necessary
- To change the configuration for a limited number of hosts instead of all of them, amend the NRPE_PROTOCOL variable (menu => settings -> variables) to exclude TLSv1 (by using: "\!TLSv1:\!SSLv2:\!SSLv3") and then amend the configuration on an individual host by adding the NRPE_PROTOCOL variable to override arg1 using 'TLSv1'.
Running the workaround steps again will result in a prompt to revert the changes done by the script. This can be done once all agents have been updated to the latest version and all old Linux OS distributions have been upgraded to support the latest TLS versions.
curl -L https://install.opsview.com/hotfixes/20180905_enable_check_nrpe_tlsv1 | sudo -iu nagios bash
- Remove the argument -P TLSv1 from the arguments list of every check_nrpe service check
NOTE: Apply Changes will have to be performed again after running the command above.
Updated about 1 year ago