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 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 SHA. Minimá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