By default, the Nagios XI server will accept inbound SNMP v2 traps from any device. Nagios XI will not accept SNMP v3 traps unless the server specifically configures for SNMP v3 traps.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related Nagios queries.
In this context, we shall look into how to harden the Nagios XI server to only accept SNMP traps from authorized sources.
1. Send Test Trap
In order to send a test trap, we run the below command:
snmptrap -v <snmp_version> -c <community> <destination_host> <uptime> <OID_or_MIB> <object> <value_type> <value>
When the Nagios XI server receives a test trap, it logs in the /var/log/snmptt/snmpttunknown.log file.
2. Default Configuration
The default SNMP Trap configuration is in the /etc/snmp/snmptrapd.conf file and contains just two lines:
disableAuthorization yes
traphandle default /usr/sbin/snmptthandler
The disableAuthorization directive allows SNMP traps from any device to be sent to Nagios XI.
Hence, the first step is to comment out the disableAuthorization directive by adding a # to the beginning of the line:
#disableAuthorization yes
traphandle default /usr/sbin/snmptthandler
There are different authorization methods that we can use.
This will be defined in the config file.
i. Restrict To SNMP v2 Community
A simple hardening method is to accept traps from any devices that supply a specific community string.
For example, this shows how to allow traps for the Sup3rStr0ng community string:
#disableAuthorization yes
authCommunity execute Sup3rStr0ng
traphandle default /usr/sbin/snmptthandler
Once we make the change, we need to restart the snmptrapd service for the settings to become effective.
In addition, we can send a test trap to confirm the settings are correct.
ii. Restrict To SNMP v2 Community AND Network Address
A more advanced hardening method is to accept traps from specific devices that supply a specific community string.
For example, let us see how to allow traps for the M3g@Str0ng community string which come from the 10.25.5.15 network address:
#disableAuthorization yes
authCommunity execute Sup3rStr0ng
authCommunity execute M3g@Str0ng 10.25.5.15
traphandle default /usr/sbin/snmptthandler
Once we make the changes, we restart the snmptrapd service for the settings to become effective.
Eventually, we can send a test trap to confirm the settings are correct.
iii. Restrict To SNMP v2 Community AND Network Subnet
Another hardening method is to accept traps from devices in a network subnet that supply a specific community string.
This example shows how to allow traps for the Ultr@Str0ng community string which come from the 10.25.0.0/16 network subnet:
#disableAuthorization yes
authCommunity execute Sup3rStr0ng
authCommunity execute M3g@Str0ng 10.25.5.15
authCommunity execute Ultr@Str0ng 10.25.0.0/16
traphandle default /usr/sbin/snmptthandler
Once done, we restart the snmptrapd service for the settings to become effective.
Whenever we make a change to the /etc/snmp/snmptrapd.conf file, we have to restart the snmptrapd service with the following command:
RHEL 7+|CentOS 7+|Debian|Ubuntu 16/18/20
$ systemctl restart snmptrapd.service
This article covers how to go about SNMP Trap Hardening in Nagios.
When using the vi editor:
1. To make changes press i on the keyboard first to enter insert mode
2. Press Esc to exit insert mode
3. When you have finished, save the changes in vi by typing :wq and press Enter
How to Send Test Trap ?
When working through this documentation you may want to test the changes by sending a test trap. The following KB article provides examples on how to send a test trap, which can be very helpful:
How To Send A SNMP Test Trap ?
When a test trap is received on the Nagios XI server it should be logged in the /var/log/snmptt/snmpttunknown.log file.
The default SNMP Trap configuration is stored in the /etc/snmp/snmptrapd.conf file and contains just two lines:
disableAuthorization yes
traphandle default /usr/sbin/snmptthandler