Konfigurace SNMP na Ubuntu (Configure SNMP Ubuntu)

By | 16/03/2022

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 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

Dobrovolný dar

Pokud Vám tento článek pomohl a rádi byste podpořili tento web a mou tvorbu, můžete tak provést zasláním libovolné částky na číslo účtu 1558701011/3030

Nebo můžete dar poslat kliknutím na tento odkaz Podpořit tento WEB , který Váš přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *