SNMPv3

SNMPv3 introducerades redan 1999 men blev accepterad som en full “internet standard” av IETF 2004 med RFC 3411-3418 och innehåller en rad säkerhetsförbättringar mot de mer vanligt använda SNMPv1 & SNMPv2c. Konfigurationen är betydligt mer komplicerad men har fördelen att autentisering nu kan göras på användarnivå istället för endast via community-sträng samt kryptering av snmp-paketen.

I SNMPv1/v2c krävs endast korrekt community-sträng för att få åtkomst till RO/RW-rättigheter, vilket skickas helt i klartext. Så en “hacker” behöver endast avlyssna management-trafiken och vänta tills någon skickar en giltig request, inte helt säkert med andra ord.

CBT har en väldigt bra micronugget som går igenom grunderna i SNMPv3 samt hur vi konfigurerar det i en router/switch:

Tänkte även testa konfigurera upp snmp på en ubuntu-server för lite pollning etc!

Installera SNMP-agenten (daemon), manager & mibs via:

sudo apt-get install snmpd snmp snmp-mibs-downloader

Kommentera sedan bort raden ”mibs :” i filen /etc/snmp/snmp.conf och lägg till följande info i /etc/snmp/snmpd.conf:

rocommunity public
rwcommunity private

Starta sedan om snmp-daemon med “service snmpd restart”.

Vi bör nu kunna göra SNMPv2 pollningar utan problem. Vi börjar med att ange om vi vill hämta (snmpget) eller ändra (snmpset) information, version av snmp, community-sträng, ip-adress och tillsist vilken OID vi vill kontrollera –  i detta fall uptime.

netadm01@netadm01:~$ snmpget -v2c -c public 127.0.0.1 system.sysUpTime.0
Vilket ger föjande svar:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1072) 0:00:10.72

Sweet! Om vi vill kontrollera samtliga OIDs under ett visst träd kan vi använda oss av snmpwalk istället, och utan att specificera något sub-träd så finns det bevisligen en hel del OIDs att polla. 🙂

netadm01@netadm01:~$ snmpwalk -v 2c -c public 127.0.0.1 . | wc –l
4217

Vill vi ändra en parameter använder vi som sagt snmpset istället, som exempelvis:

Plats:
netadm01@netadm01:~$ snmpset -v2c -c private-netadm01 127.0.0.1 sysLocation.0 s "Vasteras, Sweden"
Kontakt:
netadm01@netadm01:~$ snmpset -v2c -c private-netadm01 127.0.0.1 sysContact.0 s "Jonas, www.roadtoccie.se"
Verifiering:
netadm01@netadm01:~$ snmpget -v2c -c public 127.0.0.1 sysLocation.0
SNMPv2-MIB::sysLocation.0 = STRING: Vasteras, Sweden
netadm01@netadm01:~$ snmpget -v2c -c public 127.0.0.1 sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Jonas, www.roadtoccie.se

SNMPv3

För att konfigurera upp använder och grupper till v3 krävs lite ytterligare steg.

Vi skapar användare via antingen “net-snmp-config –create-snmpv3-user” eller genom att manuellt lägga till följande i /var/lib/snmpd.conf:

createUser admin MD5 adminpassword DES adminpasswordx
createUser guest MD5 guestpassword DES guestpasswordx

Vi sätter sedan vilka rättigheter respektive användare har i /usr/share/snmp/snmpd.conf:

rouser admin auth .1.3.6.1.2.1
rwuser admin priv .1.3.6.1.2.1
rouser guest priv .1.3.6.1.2.1

Admin-användaren får endast R/O-rättigheter om den använder sig av auth, men R/W om vi även använder kryptering vid autentisering, guest får endast R/O-rättigheter.

snmpset & snmpget för v3 är lite omständigare att skriva:

snmpset -v 3 -u admin -l authPriv -a MD5 -A adminpassword -x DES -X adminpasswordx localhost .1.3.6.1.2.1.1.6.0 s "MDH, basement"
snmpget -v 3 -u admin -l authPriv -a MD5 -A adminpassword -x DES -X adminpasswordx localhost sysLocation.0

För att göra det enklare kan vi fördefiniera en default-användare med tillhörande lösenord genom att modifiera “~/.snmp/snmp.conf” och lägga till följande:

defSecurityName admin
defAuthType MD5
defSecurityLevel authPriv
defAuthPassphrase adminpassword
defPrivType DES
defPrivPassphrase adminpasswordx
defVersion 3

Vi behöver därefter endast skriva “snmpget localhost sysLocation.0”.

Vackert! Nästa inlägg blir troligtvis om enklare script i python när jag väl lyckats sätta mig in i det lite bättre.

Lämna ett svar

Din e-postadress kommer inte publiceras.