+ All Categories
Home > Documents > Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace...

Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace...

Date post: 10-Jul-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
13
Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace v prostředí OS Linux (šifrování, autentizace, pohledy) Filip Bayer (BAY011), Miroslav Boublík (BOU059) Abstrakt: Tento semestrální projekt se zabývá protokolem SNMP ve verzi 3, jeho možnostmi zabezpečení (šifrování, autentizace) a možnostmi konfigurace v systému Linux. Klíčová slova: šifrování, autentizace, SNMP, MIB, SNMP agent, VACM, USM 1 Úvod.............................................................................................................................. 2 2 SNMP – ve zkratce o co se jedná?.................................................................................2 2.1 SNMPv3 - zabezpečení přenosu............................................................................ 2 3 Konfigurace v systému Linux........................................................................................3 3.1 Příprava systému.................................................................................................... 3 3.2 User Security Model – praktická ukázka zabezpečení.......................................... 4 3.3 Pohledy(Views) a jejich využití s USM.................................................................8 3.4 Pohledy(Views) a alternativní konfigurace..........................................................10 4 Závěr a shrnutí............................................................................................................. 12 5 Použitá literatura..........................................................................................................13 Listopad 2011 1/13
Transcript
Page 1: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace v prostředí OS Linux

(šifrování, autentizace, pohledy)

Filip Bayer (BAY011), Miroslav Boublík (BOU059)

Abstrakt: Tento semestrální projekt se zabývá protokolem SNMP ve verzi 3, jeho možnostmi zabezpečení (šifrování, autentizace) a možnostmi konfigurace v systému Linux.

Klíčová slova: šifrování, autentizace, SNMP, MIB, SNMP agent, VACM, USM

1 Úvod..............................................................................................................................2 2 SNMP – ve zkratce o co se jedná?.................................................................................2

2.1 SNMPv3 - zabezpečení přenosu............................................................................2 3 Konfigurace v systému Linux........................................................................................3

3.1 Příprava systému....................................................................................................3 3.2 User Security Model – praktická ukázka zabezpečení..........................................4 3.3 Pohledy(Views) a jejich využití s USM.................................................................8 3.4 Pohledy(Views) a alternativní konfigurace..........................................................10

4 Závěr a shrnutí.............................................................................................................12 5 Použitá literatura..........................................................................................................13

Listopad 2011 1/13

Page 2: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

1 ÚvodTento semestrální projekt se zabývá protokolem SNMP ve verzi 3, který se na rozdíl od jeho předchozích

verzí liší možnostmi zabezpečení, a právě tímto se zde budeme zabývat. Ukážeme si na jednoduchých příkladech možnosti konfigurace zabezpečení v prostředí OS Linux včetně instalace potřebného softwaru. Pro názornost jsme zvolili nejrozšířenější distribuci systému Linux a to Ubuntu. Konfigurace a testování probíhalo na poslední verzi tohoto OS a to 11.10 Oneiric Ocelot. Bylo nutno nainstalovat jak nástroje pro práci se SNMP tak SNMP agenta, neboť testování probíhalo v rámci OS, kdy dotazy byly směřovány na localhost a tudíž přímo na agenta běžícího v systému.

2 SNMP – ve zkratce o co se jedná?Tento široce rozšířený standardizovaný protokol poskytuje jednoduchý soubor funkcí, které umožňují

jednoduše monitorovat a spravovat síťová zařízení. Je široce podporován různými zařízeními jako například tiskárny, síťové prvky (směrovače, přepínače, apod.), ale také servery (zjištění informací o síťových kartách, o systému, apod.), různými čidly, apod.

Získané informace můžou být od standardního sledování provozu na daném rozhraní až po zajímavější věci jako je sledování teploty uvnitř směrovače apod. SNMP využívá protokolu UDP k přenosu dat, což ho činí velmi rychlým. Od verze 2 je podporováno ověřování úspěšného přenosu dat.

Protokol samotný se skládá ze dvou částí, na monitorované straně je spuštěn tzv. agent a na straně monitorovací manager. Manager posílá požadavky na agenta, ten je vyhodnocuje, zpracovává a posílá zpět odpovědi. Může taktéž posílat informace automaticky(například jako reakce na nějakou výjimečnou událost – například přehřívání, překročení limitních údajů apod.).

Nedílnou součástí SNMP je také MIB (Management Information Base), což je databáze, kterou implementují jednotlivá zařízení. Tato databáze má stromovou strukturu a obsahuje identifikační čísla objektů (OID), popis hierarchie objektů na daném zařízení, přístupová práva a syntaxi pro každou jednu proměnnou v MIB stromu. Zařízení může implementovat jednu či několik MIB. Díky této databází je možno zjišťovat námi požadované infomace pomocí protokolu SNMP.[1]

2.1 SNMPv3 - zabezpečení přenosuProtokoly SNMP v1 a v2 zabezpečovaly přenášená data pouze pomocí tzv. Community stringu, což byl v

podstatě řetězec s heslem. Toto zabezpečení ovšem nebylo dostatečné (řetězec nebyl ani nijak šifrován), a tudíž nebylo vhodné používat tento protokol pro vzdálené nastavování hodnot, ale spíše jen pro monitoring.

Protokol SNMP v3 tento problém elegantně řeší. Přidává podporu pro autentizaci a šifrování. K dispozici jsou tyto možnosti zabezpečení:

● noAuthNoPriv – komunikace bude probíhat bez autentizace a šifrování (v podstatě stejně jako v případě SNMPv1 a v2)

● authNoPriv – komunikace bude probíhat s autentizací (heslo bude zabezpečeno) a bez šifrování (obsah nikoliv)

● authPriv – komunikace bude probíhat jak s autentizací tak i se šifrováním

Pro autentizaci jsou použity zabezpečovací algoritmy MD5 nebo SHA, pro šifrování potom šifrovací algoritmy DES nebo AES.[1]

K zabezpečení se standardně používá spojení USM(User Security Model) společně s VACM(View Access Control Model). Jedná se v podstatě o zabezpečení pomocí definování uživatelů s různými možnostmi zabezpečení a různým přístupem k datům v závislosti na tom to zabezpečení. Existují ale také další možnosti zabezpečení a ty jsou následující:

● SNMPv3 s TLS a DTLS● SNMPv3 přes SSH● SNMPv3 přes Kerberos

Tyto způsoby zabezpečení jsou již ovšem využívány méně, neboť nejsou plně podporovány všemi zařízeními.[3]

Listopad 2011 2/13

Page 3: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

3 Konfigurace v systému LinuxJako platformu pro testování jsme zvolili, v době psaní tohoto textu, nejnovější verzi Ubuntu Linuxu a to

verzi 11.10 Oneiric Ocelot. Tento systém v základu neobsahuje software nutný pro konfiguraci a používání SNMP. Využili jsme tedy nejpoužívanější software pro práci se SNMP v prostředí Linuxu a to Net-SNMP v nejnovější verzi. Bylo nutno také doinstalovat MIB, neboť ta se již v novějších verzích Ubuntu standardně neobjevuje kvůli licenční politice, která to nedovoluje.

3.1 Příprava systémuPřed samotnou konfigurací SNMP je nutné doinstalovat potřebný software. Balík, který toto umožňuje, se

jmenuje Net-SNMP. Tento balík podporuje všechny dosud dostupné verze SNMP a taktéž podporuje jak protokol IPv4 tak novější IPv6. Dále je nutno doinstalovat SNMP MIBs downloader, který obsahuje soubory s MIBs a umožňuje jejich aktualizaci a dodatečné stahování MIBs dalších výrobců. Pro instalaci je nutno zadat s právy super-uživatele následující příkazy:

apt-get install snmpdapt-get install snmpapt-get install snmp-mibs-downloader

První dva příkazy nainstalují SNMP agenta a nástroje pro práci se SNMP. Další příkaz nainstaluje SNMP MIBs downloader.

Následně je potřeba upravit soubor snmp.conf ve složce etc/snmp a to zakomentováním řádku mibs: na #mibs což řekne SNMP nástrojům, že mají hledat MIBs soubory ve standardních lokacích.

Jakmile máme nainstalováno a upraveno, můžeme otestovat funkčnost služby starající se o chod démona (agenta) na něhož budeme posílat dotazy. Na to se nám budou hodit tyto příkazy:

service snmpd startservice snmpd stopservice snmpd restartservice snmpd status

Tyto příkazy po řadě spouštějí agenta, zastavují agenta, restartují agenta a zjišťují stav agenta. Je nutné je znát, neboť pokud budeme provádět úpravy v nastavení, budeme často potřebovat agenta restartovat.

V základním nastavení agent naslouchá na všech rozhraních. Pro naši potřebu bude ovšem postačovat naslouchání pouze na localhostu. Vzhledem k tomu, že chceme otestovat také SNMP přes protokol IPv6, nastavíme také localhost IPv6. Nicméně nic nám nebrání naslouchat na jiných IP adresách (jak IPv4 tak IPv6). Ukážeme si tedy jak toho docílit. Musíme editovat soubor snmpd ve složce etc/default, ve kterém vyhledáme tento řádek:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'

a upravíme tak, že na konec řádku přidáme IP adresu rozhraní na kterém chceme naslouchat:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid ::1 127.0.0.1'

Přidali jsme tedy IPv6 adresu localhostu (::1) a také IPv4 adresu localhostu (127.0.0.1). Pokud již byla služba spuštěna, musíme jí nyní restartovat. Poté můžeme zkontrolovat tímto příkazem:

netstat -au | grep snmp

jestli je zapnuto naslouchání na námi definovaném rozhraní. Výpis by měl v našem případě vypadat takto:

udp 0 0 localhost:snmp *:*

Listopad 2011 3/13

Page 4: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

udp6 0 0 ip6-localhost:snmp [::]:*

3.2 User Security Model – praktická ukázka zabezpečeníNyní přejdeme k vytvoření uživatelů, abychom si otestovali možnosti zabezpečení. Předtím, než se

dostaneme k samotné konfiguraci ovšem promažeme obsah souboru snmpd.conf ve složce /etc/snmp. Nás bude zajímat soubor stejného názvu, který se nachází ve složce /usr/share/snmp. Tento soubor bude nyní prázdný, budeme ho ale ještě využívat ke konfiguraci. Nyní se tedy dostáváme k vytváření SNMPv3 uživatelů. Nejprve musíme zastavit službu snmpd. Poté následujícími příkazy vytvoříme dva uživatele a to uživatele tester1 a tester2:

net-snmp-config --create-snmpv3-user -a MD5 -A hesloheslo -x AES -X aesaesheslo tester1

net-snmp-config --create-snmpv3-user -ro -a SHA -A passwordx tester2

První příkaz nám vytvoří uživatele tester1, který bude pro autentizaci používat zabezpečovací algoritmus MD5 s heslem hesloheslo a pro šifrování bude používat algoritmus AES s heslem aesaesheslo. Heslo musí být vždy minimálně 8 znaků dlouhé.

Druhý příkaz nám vytvoří uživatele tester2, který bude pro autentizaci používat zabezpečovací algoritmus SHA s heslem hesloheslo, vzhledem k tomu, že jsme nespecifikovali heslo a algoritmus použitý pro šifrování, bude automaticky použito heslo použité pro autentizaci a jako výchozí šifrovací algoritmus bude použit algoritmus DES. Přepínač -ro znamená, že daný uživatel bude mít pouze readonly práva a tedy nebude moci zapisovat hodnoty.

Jakmile tyto příkazy zadáme, můžeme se podívat do souboru snmpd.conf ve složce /usr/share/snmp, který jsme před chvíli zmiňovali. Přibyli do něj dva řádky:

rwuser tester1rouser tester2

Tyto řádky nám říkají, že máme uživatele tester1, který má právo číst i zapisovat hodnoty a uživatele tester2, který má právo pouze číst hodnoty. Nyní nás bude zajímat ještě jeden soubor taktéž snmpd.conf, ale tentokrát ve složce /var/lib/snmp. Pokud ho otevřeme, najdeme na jeho konci tyto řádky:

createUser tester1 MD5 "hesloheslo" AES aesaesheslocreateUser tester2 SHA "passwordx" DES

Vidíme, že se zde zatím nachází konfigurace uživatelů, včetně viditelných hesel a použitého šifrování a autentizace. Proto nyní zkusíme opět spustit službu agenta. Pokud nyní otevřeme tentýž soubor zjistíme, že poslední dva řádky zmizely a v souboru přibyly nové řádky, které vypadají následovně:

usmUser 1 3 0x80001f888067762c04726bc64e00000000 0x7465737465723100 0x7465737465723100 NULL .1.3.6.1.6.3.10.1.1.2 0xeb5bd0e60c5556fe563bcc6fd410a990 .1.3.6.1.6.3.10.1.2.4 0x0fdd4f8f746a19c42ce9bd8fa9283635 ""

usmUser 1 3 0x80001f888067762c04726bc64e00000000 0x7465737465723200 0x7465737465723200 NULL .1.3.6.1.6.3.10.1.1.3 0xf0df0f294b1c091f4ea25edc868af6c791d7bebe .1.3.6.1.6.3.10.1.2.2 0xf0df0f294b1c091f4ea25edc868af6c7 ""

Jak vidíme, agent si automaticky po startu služby data zašifroval. Nyní přejdeme k otestování funkčnosti. Abychom se mohli agenta dotazovat na námi požadované informace, musíme znát příkazy, které nám toto umožní, ale hlavně na co se máme ptát. Jako ideální pro testování jsme zvolil větev system v MIB. Pro představu co obsahuje se podívejte na následující obrázek č.1, k jehož pořízení jsme využili program MIB Browser ve verzi 1.17.

Listopad 2011 4/13

Page 5: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

Vidíme, že tato větev obsahuje například sysDescr (popis systému) s kompletní cestou, sysUpTime (délka spuštění systému) atd. Taktéž si můžete povšimnout OID, které nám určuje taktéž kompletní cestu sysDescr ve stromu. Pokud si tedy budeme chtít vypsat onu informaci, můžeme použít jak OID tak pro člověka lepší jmennou konvenci.

Nyní zpět k příkazům. Pro testování nastavení jsme použili dva typy příkazů – snmpget a snmpwalk. První příkaz vypíše pouze jednu položku (koncový list stromu). Druhý příkaz vypíše všechny položky daného listu stromu (pokud je položka koncový list, chová se stejně jako první příkaz). Ještě než přistoupíme k zadání příkazů, editujeme soubor ve složce /usr/share/snmp takto:

rwuser tester1 noAuthrouser tester2

Tím jsme umožnili uživateli tester1 přihlašovat se i v režimu bez autentizace a šifrování (standardně je zapnuta alespoň nutnost autentizace), což se hodí pro naše experimenty, nicméně v reálném nasazení doporučuji ponechat výchozí režim nebo použít maximální zabezpečení použitím Priv místo noAuth. Nyní tedy přejdeme k otestování všech 3 možných přístupů – noAuthNoPriv (bez autentizace, bez šifrování), authNoPriv (s autentizací a bez šifrování) a authPriv (s autentizací a šifrováním). Příkazy zde budeme psát vždy jak pro test IPv4 tak pro test IPv6, výstupy jsou pokaždé totožné (stejně tak zobrazení ve Wiresharku). Začneme příkaz bez autentizace a šifrování:

snmpget -v 3 -u tester1 -l noAuthNoPriv 127.0.0.1 sysDescr.0 //IPv4snmpget -v 3 -u tester1 -l noAuthNoPriv udp6:::1 sysDescr.0 //IPv6

Ptáme se na informaci o popisu systému, parametr -v značí verzi SNMP, parametr -u specifikuje uživatelské jméno, parametr -l typ zabezpečení, dále IP adresa(může zde být i hostname) agenta a nakonec

Listopad 2011 5/13

Obrázek 1: Stromová struktura MIB

Page 6: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

jakou informaci chceme. Pokud jsme vše nakonfigurovali správně, měli bychom na výstupu obdržet v závislosti na systému toto:

SNMPv2-MIB::sysDescr.0 = STRING: Linux havoc-VirtualBox 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64

Pro odchytávání paketů jsme využili program Wireshark. Na obrázku č.2 si můžeme prohlédnout jak vypadá přenášená informace.

Všimněme si, že uživatelské jméno (které je zde použito pro ověření) a taktéž obsah zprávy(označen oranžovou barvou) jsou jednoduše čitelné a tudíž i jednoduše zneužitelné. Toto nám krásně ukazuje, jak byly protokoly SNMPv1 a SNMPv2 nevhodné pro zápis informací, neboť používaly právě tento typ zabezpečení (místo uživatelského jména se používal tzv. community string, ale princip byl stejný).

Následující příklad již používá zabezpečení heslem, kdy heslo je zašifrováno:

snmpget -v 3 -u tester1 -a MD5 -A "hesloheslo" -l authNoPriv 127.0.0.1 sysDescr.0 //IPv4

snmpget -v 3 -u tester1 -a MD5 -A "hesloheslo" -l authNoPriv udp6:::1 sysDescr.0 //IPv6

Všimněme si, že jsou zde dva přepínače navíc. Parametr -a specifikuje typ zabezpečovacího algoritmu, zatímco parametr -A specifikuje již samotné heslo. Heslo bude následně daným algoritmem zašifrováno.

Listopad 2011 6/13

Obrázek 2: SNMP packet s noAuthNoPriv odchycené Wiresharkem

Page 7: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

Pokud jsme vše zadali správně, měl by se opět objevit stejný výpis jako v prvním případě. Na následujícím obrázku č.3 si můžeme všimnout, že v zachyceném paketu můžeme vidět obsah zprávy a uživatelské jméno, co už ale nevidíme je heslo, které by se mělo nacházet mezi uživatelským jménem a obsahem zprávy(označen oranžovou barvou), protože je zašifrováno.

Poslední možností zabezpečení je použití jak autentizace, tak šifrování pro ochranu přeneseného obsahu. Následující příkaz nám to umožní:

snmpget -v 3 -u tester1 -a MD5 -A "hesloheslo" -x AES -X "aesaesheslo" -l authPriv 127.0.0.1 sysDescr.0 //IPv4

snmpget -v 3 -u tester1 -a MD5 -A "hesloheslo" -x AES -X "aesaesheslo" -l authPriv udp6:::1 sysDescr.0 //IPv6

Opět zde přibyly další parametry – parametr -x specifikuje typ šifrování (v našem případě AES) a parametr -X specifikuje heslo použité k šifrování. Pokud bylo vše zadáno správně, výpis by se měl opět shodovat s předchozími příklady. Na obrázku č.4 je patrné, že obsah zprávy(označen oranžovou barvou) již taktéž není viditelný a byl zašifrován. Jediná viditelná položka je v tomto případě pouze uživatelské jméno.

Listopad 2011 7/13

Obrázek 3: SNMP packet s AuthNoPriv odchycené Wiresharkem

Page 8: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

Na příkladech jsme si ukázali možnosti zabezpečení, které přineslo SNMPv3, přesněji User Security Model, který patří mezi nejpoužívanější a u zařízení mezi nejpodporovanější.

3.3 Pohledy(Views) a jejich využití s USMZabezpečení pomocí USM, které přináší SNMPv3 je oproti předchozím verzím na o dost vyšší úrovni jak

jsme si ukázali. Může nám ovšem nastat situace, kdy budeme chtít pro určité uživatele přístup pouze k určitým MIB větvím a k ostatním nikoliv. Toto nám ovšem samotné uživatelské účty neřeší. Proto přichází tzv. Views(dále pohledy), které nám toto umožní.

Pohled si lze představit jako určitý „profil“, ke kterému přiřadíme uživatele a tento uživatel poté bude mít pouze přístup k tomu, co daný profil definuje. Otevřeme si nyní opět soubor snmpd.conf ve složce /usr/share/snmp. Soubor obsahuje momentálně dvě informace o uživatelích:

rwuser tester1 noAuthrouser tester2

Nyní si vytvoříme dva pohledy. Jeden pohled s názvem pohled1 bude umožňovat přístup k MIB system(viz. Obr. č.1), ovšem bez možnosti zobrazit sysDescr a sysUpTime. Druhý pohled s názvem pohled2 bude umožňovat zobrazit sysDescr a sysUpTime, ovšem zbývající informace budou zakázány. Následně přiřadíme tyto pohledy k jednotlivým uživatelům. Soubor snmpd.conf bude tedy po úpravě vypadat takto:

rwuser tester1 noauth -V pohled1

Listopad 2011 8/13

Obrázek 4: SNMP packet AuthPriv odchycené Wiresharkem

Page 9: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

rouser tester2 auth -V pohled2

view pohled1 included .iso.org.dod.internet.mgmt.mib-2.systemview pohled1 excluded .iso.org.dod.internet.mgmt.mib-2.system.sysDescrview pohled1 excluded .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime

view pohled2 excluded .iso.org.dod.internet.mgmt.mib-2.systemview pohled2 included .iso.org.dod.internet.mgmt.mib-2.system.sysDescrview pohled2 included .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime

Všimněte si, že parametrem -V jsme přiřadili danému uživateli daný pohled. Dále si všimněte, že jsme připsali minimální požadavek zabezpečení k uživateli tester2. Úroveň zabezpečení se nezměnila, nicméně bez tohoto zásahu nám pohled nefungoval korektně. Příkazem included jsme řekli, že k dané MIB bude povolen přístup, příkazem excluded jsme naopak odebrali přístup pro danou část. Nyní je již vše připraveno pro test. Pro otestování použijeme příkaz snmpwalk, který jsme zde již zmiňovali na začátku:

snmpwalk -v 3 -u tester1 -a MD5 -A "hesloheslo" -x AES -X "aesaesheslo" -l authPriv 127.0.0.1 system //IPv4

snmpwalk -v 3 -u tester1 -a MD5 -A "hesloheslo" -x AES -X "aesaesheslo" -l authPriv udp6:::1 system //IPv6

Funkce veškerých parametrů zde již v předchozích případech byla vysvětlena. Nyní jen dodám, že snmpwalk vypíše všechny listy, které jsou obsaženy v MIB system:

SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10SNMPv2-MIB::sysContact.0 = STRING: rootSNMPv2-MIB::sysName.0 = STRING: havoc-VirtualBoxSNMPv2-MIB::sysLocation.0 = STRING: UnknownSNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01………SNMPv2-MIB::sysORUpTime.8 = No more variables left in this MIB View

(It is past the end of the MIB tree)

Na obrázku č.1 jsme si ukázali obsah MIB system, jak vidíme na výpise tak první(sysDescr) a třetí(sysUpTime) položka schází a to je přesně to čeho jsme chtěli docílit. Nyní vyzkoušíme použít stejný přikaz na uživatele tester2:

snmpwalk -v 3 -u tester2 -a SHA -A "passwordx" -x DES -X "passwordx" -l AuthPriv 127.0.0.1 system //IPv4

snmpwalk -v 3 -u tester2 -a SHA -A "passwordx" -x DES -X "passwordx" -l AuthPriv udp6:::1 system //IPv6

Po provedení následujícího příkazu bude výpis následovný:

SNMPv2-MIB::sysDescr.0 = STRING: Linux havoc-VirtualBox 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (60908) 0:10:09.08DISMAN-EVENT-MIB::sysUpTimeInstance = No more variables left in this

MIB View (It is past the end of the MIB tree)

Vidíme, že nyní se pro změnu vypsala pouze první a třetí položka, zbytek zůstal nepřístupný. To je dáno omezením, které jsme definovali v pohledu.

Tímto jsme si ukázali možnost přiřazení pohledu k určitému uživateli. Mohli jste si povšimnout, že jsme definovali určité minimální zabezpečení pro každého uživatele, což je vlastně minimální zabezpečení, které

Listopad 2011 9/13

Page 10: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

musíme použít aby nám byly dané informace vypsány. Je tedy potom jedno, jestli použijeme v příkazu v případě uživatele tester1 noauth, authNoPriv nebo authPriv, pokaždé nám bude vrácen stejný výsledek. Co kdybychom ale chtěli umožnit uživateli přístup k různým datům v závislosti na jeho úrovni zabezpečení? Existuje proto druhá možnost jak toto provést.

3.4 Pohledy(Views) a alternativní konfiguraceNejprve upravíme soubor snmpd.conf ve složce /usr/share/snmp taky, aby obsah vypadal takto:

rwuser tester1rouser tester2

Poté musíme otevřít soubor soubor snmpd.conf ve složce /etc/snmp, což je ten samý soubor, který jsme na začátku testování smazali a vložíme do něj tyto řádky:

group testovaci usm tester1group testovaci2 usm tester2

view male excluded .1.3.6.1.2.1.1view male included .1.3.6.1.2.1.1.1

view stredni excluded .1.3.6.1.2.1.1view stredni included .1.3.6.1.2.1.1.1view stredni included .1.3.6.1.2.1.1.3view stredni included .1.3.6.1.2.1.1.5

view velke included .1.3.6.1.2.1.1

access testovaci "" usm noauth exact male none noneaccess testovaci "" usm auth exact stredni none noneaccess testovaci "" usm priv exact velke none noneaccess testovaci2 "" usm priv exact male none none

Vytvořili jsme si tedy skupiny(group) testovaci(do které patří uživatel tester1, typ zabezpečení USM) a testovaci2(kam patří uživatel tester2, typ zabezpečení opět USM). Dále jsme si vytvořili 3 pohledy – male, stredni, velke. Všimněte si, že jsme nyní místo jmenné konvence použili OID. Pohled „male“ nám omezuje přístup pouze na list sysDescr, pohled „stredni“ nám umožní přístup na listy sysDescr, sysUpTime a sysName a nakonec pohled „velke“ nám umožní přístup na kompletní obsah system.

Nakonec jsme vytvořili jednotlivé přístupy. Popíšeme si nyní co jednotlivé položky znamenají. Za informací, že se jedná po přístup(access) se nachází jméno přiřazené skupiny, uvozovky obsahují context(výchozí je prázdný), následuje použitý bezpečnostní model(v našem případě USM, protože používáme SNMPv3), dále ke kterému zabezpečení se přístup vztahuje(noauth, auth, priv a opět se zde jedná o minimální zabezpečení), poté jestli se má název contextu úplně shodovat nebo podle prefixu(v našem případě úplně - exact), poté již přichází přiřazení pohledu pro čtení, zápis a notifikaci. V našem případě jsme přiřadili pohledy pouze pro možnosti čtení(tedy v podstatě i když uživatel tester1 je uživatelem rwuser má nyní přístup pouze pro čtení). Nyní můžeme vyzkoušet naše nastavení, nejprve začneme uživatelem tester1 a příkazem pro výpis bez zabezpečení:

snmpwalk -v 3 -u tester1 -l NoAuthNoPriv 127.0.0.1 system

nám vrátí:

SNMPv2-MIB::sysDescr.0 = STRING: Linux havoc-VirtualBox 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64

Listopad 2011 10/13

Page 11: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

SNMPv2-MIB::sysDescr.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

což odpovídá tomu, co jsme specifikovali pro přístup bez zabezpečení. Dále vyzkoušíme přístup s autentizací a bez šifrování:

snmpwalk -v 3 -u tester1 -a MD5 -A "hesloheslo" -l AuthNoPriv 127.0.0.1 system

nám vrátí:

SNMPv2-MIB::sysDescr.0 = STRING: Linux havoc-VirtualBox 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (202984) 0:33:49.84SNMPv2-MIB::sysName.0 = STRING: havoc-VirtualBoxSNMPv2-MIB::sysName.0 = No more variables left in this MIB View (It is

past the end of the MIB tree)

což opět odpovídá tomu, co jsme specifikovali pro přístup s autentizací ale bez šifrování. Nakonec vyzkoušíme přístup s autentizací a šifrováním:

snmpwalk -v 3 -u tester1 -a MD5 -A "hesloheslo" -x AES -X "aesaesheslo" -l AuthPriv 127.0.0.1 system

což nám vrátí:

SNMPv2-MIB::sysDescr.0 = STRING: Linux havoc-VirtualBox 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64

SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (217058) 0:36:10.58SNMPv2-MIB::sysContact.0 = STRING: rootSNMPv2-MIB::sysName.0 = STRING: havoc-VirtualBoxSNMPv2-MIB::sysLocation.0 = STRING: UnknownSNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01………SNMPv2-MIB::sysORUpTime.8 = No more variables left in this MIB View

(It is past the end of the MIB tree)

a máme celý výpis systém, což je specifikováno pro příhlášení s autentizací a šifrováním. Nakonec nám zbývá otestovat uživatele tester2. Ten má specifikován přístup pouze v případě použití nejvyššího zabezpečení a to pouze k položce sysDescr. Pokud bychom chtěli přistupovat například bez použití šifrování:

snmpwalk -v 3 -u tester2 -a SHA -A "passwordx" -l AuthNoPriv 127.0.0.1 system

setkáme se s neúspěchem:

Error in packet.Reason: authorizationError (access denied to that object)

Pokud bychom využili možnosti přihlášení s autentizací i šifrováním:

snmpwalk -v 3 -u tester2 -a SHA -A "passwordx" -x DES -X "passwordx" -l AuthPriv 127.0.0.1 system

Listopad 2011 11/13

Page 12: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

výpis by vypadal následovně:

SNMPv2-MIB::sysDescr.0 = STRING: Linux havoc-VirtualBox 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26 UTC 2011 x86_64

SNMPv2-MIB::sysDescr.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

Vidíme, že v tomto případě máme daleko větší možnosti nastavení, pokud bychom například potřebovali specifikovat velké množství přistupujících uživatelů společně s různými možnostmi čtení/zápisu, je tento způsob nastavení vhodnější.

4 Závěr a shrnutíCílem práce bylo ukázat na možnosti nastavení zabezpečení protokolu SNMPv3 v systému Linux. Na

názorných příkladech jsme si ukázali jednotlivé možnosti zabezpečení, odchytili jsme si pomocí Wiresharku jednotlivé pakety a ukázali si na nich rozdíly použitého zabezpečení. Dále jsme si ukázali možnosti seskupení jednotlivých uživatelů do skupin a přiřazení práv pro přístup k datům v různých MIB. Další komplexnější možnosti nastavení jsou popsány na stránkách projektu Net-SNMP[2]. Taktéž zde nalezneme informace, jak využít a nakonfigurovat další možnosti zabezpečení, které byly zmíněny na začátku tohoto textu a které jsou méně používané kvůli jejich ne úplně 100% podpoře mezi zařízeními.

Listopad 2011 12/13

Page 13: Bezpečnostní možnosti protokolu SNMPv3 a jeho konfigurace ...wh.cs.vsb.cz/sps/images/f/fc/Sec_SNMPv3_Linux.pdf · Jako platformu pro testování jsme zvolili, v době psaní tohoto

5 Použitá literatura[1] MAURO, Douglas, SCHMIDT, Kevin. Essential SNMP, 2nd edition. O'Reilly, 2005. 460 s. ISBN 0-

596-00840-6[2] Net-SNMP – Documentation [online]. 2011. Net-SNMP v5.7. Dostupné z WWW: <http://www.net-

snmp.org/docs/man/>[3] The Net-SNMP Wiki [online]. 2011. The Net-SNMP Wiki. Dostupné z WWW: <http://net-snmp.-

sourceforge.net/wiki/>

Listopad 2011 13/13


Recommended