Konfigurace SNMP na Ubuntu (Configure SNMP Ubuntu)

By | 16/03/2022

Last Updated on 04/08/2024 by administrator

Konfigurace SNMP na Ubuntu (Configure SNMP Ubuntu)

Konfigurace SNMP

Motivace:

SNMP je protokol, který se běžně používá pro průběžný sběr nejrůznějších dat ze síťových zařízeních pro potřeby správy sítě. Na tomto protokolu je dnes založena většina prostředků a nástrojů pro správu sítě.

Existují tři verze protokolu, a to SNMPv1 i SNMPv2c, které využívají autentizaci pomocí community string a komunikace mezi SNMP agentem a SNMP managerem není šifrována. SNMPv3 podporuje user authentication (ověřování uživatele) a message encryption (šifrování zpráv), proto je bezpečnější.

OS:

Implementace byla prakticky prováděna na Ubuntu 24.04 LTS Ubuntu 22.04 LTS Ubuntu 20.04 LTS a Ubuntu 18.04 LTS.

Instalace SNMP:

Příkazem apt update se provede aktualizace seznamu balíčků z repozitářů:

apt update

Instalace služby snmpd, snmp a libsnmp-dev. Služba snmpd slouží k tomu, aby odpovídala na SNMP žádosti, či zasílala SNMP trapy (SNMP agent). Knihovna libsnmp-dev bude sloužit později ke konfiguraci SNMPv3:

apt install snmpd snmp libsnmp-dev

Konfigurace SNMP:

Defaultní konfigurační soubor se nachází v /etc/snmp/snmpd.conf a před samotnou konfiguraci je dobré provést zálohu původního souboru snmpd.conf:

cp /etc/snmp/snmpd.conf{,.bak}

Topologie:

Bude předpokládáno, že SNMP agent běží na IP adrese 192.168.0.8 (Ubuntu server) a SNMP manager běží na IP adrese 192.168.0.7 (Ubuntu server).

Konfigurace SNMP

Konfigurace SNMPv2c:

Konfigurace SNMP agenta (192.168.0.8):

Otevřít konfigurační soubor snmpd.conf

vi /etc/snmp/snmpd.conf

Zakomentovat původní řádek agentaddress:

#agentaddress  127.0.0.1,[::1]

a přidat nový řádek agentaddress, kde služba SNMP bude naslouchat na IP adrese localhostu 127.0.0.1 a IP adrese 192.168.0.8 na standardním portu UDP/161:

agentaddress    udp:127.0.0.1:161,udp:192.168.0.8:161

Zakomentovat řádky pro příkaz rocommunity:

#rocommunity public default -V systemonly
#rocommunity6 public default -V systemonly

Řádek rocommunity definuje přístup pomocí protokolu IPv4, rocommunity6 zase z IPv6. Níže bude přidán přístup z obou protokolů. Řetězec mysecret123 definuje community string:

rocommunity mysecret123
rocommunity6 mysecret123

Volitelně je možné pro větší zabezpečení definovat IP adresu, která se bude dotazovat tohoto SNMP agenta. V tomto bude povolen přístup z IP adresy 192.168.0.7:

rocommunity mysecret123 192.168.0.7

Nakonec provést restart snmpd služby:

systemctl restart snmpd

Aby se snmpd služba rozjela po rebootu, aplikovat příkaz níže:

systemctl enable snmpd

Ověření, že služba snmpd naslouchá:

lsof -P -i -n | grep snmpd

Výstup příkazu lsof -P -i -n | grep snmpd ukazuje, že SNMP agent běží pod portem UDP/161 a definovanými IP adresami 127.0.0.1 a 192.168.0.8:

snmpd 451532 Debian-snmp 6u IPv4 3748510 0t0 UDP 127.0.0.1:161
snmpd 451532 Debian-snmp 7u IPv4 3748511 0t0 UDP 192.168.0.8:161

Pokud pod Ubuntu běží firewall, je nutné povolit FW pravidlo na tomto Ubuntu serveru přístup. Ten bude povolen z SNMP manageru běžící na IP adrese 192.168.0.7 a pro cílový port UDP/161:

ufw allow from 192.168.0.7 to any port 161 proto udp

Ověření funkce SNMPv2c:

Z SNMP manageru (192.168.0.7) bude pomocí služby snmpwalk ověřená funkce na SNMP agenta (192.168.0.8):

snmpwalk -v2c -c mysecret123 192.168.0.8

Částečný výpis příkazu snmpwalk by měl vypadat podobně:

iso.3.6.1.2.1.1.1.0 = STRING: "Linux krtek 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (79) 0:00:00.79
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "krtek"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1

Konfigurace SNMPv3:

Nejdříve je nutné stopnout snmpd službu:

systemctl stop snmpd

Pokud je nutné deaktivovat protokol SNMPv1/SNMPv2c, stačí zakomentovat rocommunity řádky, pokud byly předtím odkomentované, ve výše uvedeném případu to bylo:

#rocommunity mysecret123
#rocommunity6 mysecret123
Vytvoření SNMPv3 uživatele:

Pomocí příkazu net-snmp-create-v3-user bude vytvořen SNMPv3 uživatel. SNMPv3 používá uživatelské jméno (username), autentizaci (authpass), šifrovací heslo (privpass). Základní syntaxe pro konfiguraci je uvedena níže:

net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]

Bude vytvořen uživatel snmpmartin s autentizaci 4uth1234 a šifrovacím heslem 5ecretP455 s právy read only a využití nejsilnějších dostupných algoritmů AES a SHAMinimální délka řetezce pro autentizaci či hesla by měla mít 8 a více znaků.

net-snmp-create-v3-user -ro -A 4uth1234 -a SHA -X 5ecretP455 -x AES snmpmartin

Pozn: Po vytvoření je uživatel přidán do následujících konfiguračních souborů /etc/snmp/snmpd.conf a /var/lib/net-snmp/snmpd.conf.

Provést restart snmpd služby:

systemctl restart snmpd

Aby se snmpd služba rozjela po rebootu, aplikovat příkaz níže:

systemctl enable snmpd

Ověření funkce SNMPv3:

Ověření ze stejného Ubuntu serveru (SNMP agenta):

snmpwalk -v3 -a SHA -A 4uth1234 -x AES -X 5ecretP455 -l authPriv -u snmpmartin localhost | head

Výpis příkazu snmpwalk by měl vypadat podobně:

iso.3.6.1.2.1.1.1.0 = STRING: "Linux krtek 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (135) 0:00:01.35
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "krtek"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (11) 0:00:00.11
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1

Ověření z SNMP manageru (192.168.0.7) bude pomocí služby snmpwalk ověřená funkce na SNMP agenta (192.168.0.8):

snmpwalk -v3 -a SHA -A 4uth1234 -x AES -X 5ecretP455 -l authPriv -u snmpmartin 192.168.0.8 | head

Výpis příkazu snmpwalk by měl vypadat podobně:

iso.3.6.1.2.1.1.1.0 = STRING: "Linux krtek 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (135) 0:00:01.35
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "krtek"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (11) 0:00:00.11
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1
Vymazání SNMPv3 uživatele:

Zastavit snmpd službu:

systemctl stop snmpd

Z obou souborů snmpd.conf níže vyhledat vytvořeného SNMPv3 uživatele (v příkladu výše byl nakonfigurován uživatel snmpmartin) a vymazat každý řádek obsahující SNMPv3 uživatele:

vi /usr/share/snmp/snmpd.conf
vi /var/lib/snmp/snmpd.conf

Provést restart snmpd služby:

systemctl restart snmpd

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *