SNMP v3 شبیه SNMP v2 و SNMP v1 می باشد اما مدل امنیتی کاملا متفاوتی دارد. SNMP v1 و SNMP v2 از community-string به عنوان پسورد بدون Authentication و Encryption استفاده می کنند.
SNMP v3 قابلیت استفاده از Authentication و Encryption دارد و مدل امنیتی جدیدی دارد که به Userها ، Groupها و levelهای امنیتی دیگر کار می کند.user ها درون گروه هایی قرار می گیرند که بسته به نوع کاربری آنها می توانید policy هایی را برای آنها تعریف کنید بطور مثال به برخی کاربران دسترسی Read یا Read-write بدهید واینکه چه MIB (Management Information Base) هایی باید قابل دسترسی باشند را مشخص کنید.
Security Levels :
SNMP
سه سطح دسترسی امنیتی را معین می کند:
- noAuthNoPriv
- AuthNoPriv
- AuthPriv
Auth مخفف Authentication و Prv مخفف Privacy (Encryption) است.
- noAuthNoPriv = no authentication and no encryption.
- AuthNoPriv = authentication but no encryption.
- AuthPriv = authentication AND encryption.
SNMP v1 و SNMP v2 فقط از noAuthNoPriv پشتیبانی می کنند از این رو آنها Authentication و Encryption را ارائه نمی نمایند. SNMP v3 هر سه سطح امنیتی بالا را پشتیبانی می کند.
وقتی شما تصمیم میگیرید که از noAuthNoPriv برای SNMP v3 استفاده کنید Username جایگزین Community-string خواهد شد.
در SNMP v1 و SNMP v2 Community-string بصورت clear text و بدون کدگذاری فرستاده می شود.SNMP v3 بسیار امن است به این خاطر که پسورد کاربران را بصورت clear-text ارسال نمی کند و از MD5 یا SHA1 hash-based برای تشخیص هویت و کد گذاری DES ، 3DES یا AES استفاده می نماید.
در ادامه مثالی ساده برای راه اندازی SNMP v3 را شرح خواهیم داد :
پیکربندی :
در ابتدا ما گروه جدیدی خواهیم ساخت و سطح امنیتی آن را تعیین خواهیم کرد :
R1(config)#snmp-server group MYGROUP ?
v1 group using the v1 security model
v2c group using the v2c security model
v3 group using the User Security Model (SNMPv3)
گروه را MYGROUP نامیدیم و برای آن سطح دسترسی را انتخاب خواهیم نمود :
R1(config)#snmp-server group MYGROUP v3 ?
auth group using the authNoPriv Security Level
noauth group using the noAuthNoPriv Security Level
priv group using SNMPv3 authPriv security level
بوسیله پارامتر privما سطح امنیتی Authpriv را انتخاب می کنیم.برای سطح دسترسی تعدادی انتخاب وجود دارد :
R1(config)#snmp-server group MYGROUP v3 priv ?
access specify an access-list associated with this group
context specify a context to associate these views for the group
match context name match criteria
notify specify a notify view for the group
read specify a read view for the group
write specify a write view for the group
<cr>
اولین گزینه access است که شما می توانید ip address ها و subnet هایی که باید برای کاربران permit شوند با استفاده از access list انتخاب کنید. view های معین اختیاری:
- اگر شما Read view تعیین نکنید همه گزینه ها قابل دسترس خواهند بود.شما می توانید از این برای محدود کردن تعدادی از MIB هایی که NMS ( Network Management Software) می تواند مانیتور کند استفاده نمایید.
- بدون write view هیچ چیزی قابل نوشتن نیست، شما یک دسترسی فقط خواندنی خواهید داشت.
- Notify view برای فرستادن اخطار به اعضای یک گروهاستفاده می شود.اگر شما هیچ چیزی تعیین نکنید برای آن بصورت پیش فرض غیرفعال خواهد بود.
برای ساده تر شدن مثال ما از viewها استفاده نخواهیم کرد و به این ترتیب ما دسترسی کامل برای خواند همه MIB ها خواهیم داشت.
R1(config)#snmp-server group MYGROUP v3 priv
در این مرحله یک حساب کاربری خواهیم ساخت :
R1(config)#snmp-server user MYUSER MYGROUP v3 auth md5 MYPASS123 priv aes 128 MYKEY123
Configuring snmpv3 USM user, persisting snmpEngineBoots. Please Wait...
س
پس یک کاربر جدید با نام MYUSER خواهیم ساخت و آن را عضو گروه MYGROUP خواهیم نمود.ما از SNMP v3 با مدل امنیتی وMD5 برای Authentication استفاده خواهیم کرد.
پسورد این نام کاربری MYPASS123 خواهد بود.Encryption آن AES 128-bit است و کلید آن MYKEY123 می باشد.
روی این روتر اکنون SNMP v3 فعال شده استو ما می توانیم آن را مانیتور کنیم از یک SNMP v3 از یک NMS.
بررسی نتیجه :
حساب های کاربری در پیکربندی نمایش داده نمی شوند و شما نمی توانید آنها را با دستور show running مشاهده کنید:
R1#show running-config | incl snmp
snmp-server group MYGROUP v3 priv
اما می توانید با دستورات دیگر آن ها مشاهده کنید :
R1#show snmp user
User name: MYUSER
Engine ID: 800000090300C200128F0000
storage-type: nonvolatile active
Authentication Protocol: MD5
Privacy Protocol: AES128
Group-name: MYGROUP
اینجا شما می توانید نام های کاربری موارد امنیتی و اینکه کاربر عضو چه گروهی است را مشاهده کنید.ما همچینین با دستور زیر می توانیم پیکر بندی گروه ها را نیز ببینیم:
R1#show snmp group
groupname: ILMI security model:v1
readview : *ilmi writeview: *ilmi
notifyview: <no notifyview specified>
row status: active
groupname: ILMI security model:v2c
readview : *ilmi writeview: *ilmi
notifyview: <no notifyview specified>
row status: active
groupname: MYGROUP security model:v3 priv
readview : v1default writeview: <no writeview specified>
notifyview: <no notifyview specified>
row status: active
در بالا شما میتوانید ببینید که ما یک گروه به نام MYGROUP داریم و از read view پیش فرض استفاده می نماییم.اگر شما کاربر لینوکس هستید می توانید از the excellent snmpwalk command-line utility برای تست ها استفاده نمایید اکر روتر شما از طریق SNMP برای آن در دسترس باشد.این روش برای هر سه نسخه SNMP انجام پذیر است.
rene@linux ~ $ snmpwalk -v3 -u MYUSER -l AuthPriv -a md5 -A MYPASS123 -x aes -X MYKEY123 192.168.82.138
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(24)T8, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2012 by Cisco Systems, Inc.
Compiled Sun 09-Sep-12 04:01 by prod_rel_team"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.576
iso.3.6.1.2.1.1.3.0 = Timeticks: (27513) 0:04:35.13
iso.3.6.1.2.1.1.4.0 = ""
iso.3.6.1.2.1.1.5.0 = STRING: "R1.rmcs.local"
iso.3.6.1.2.1.1.6.0 = ""
iso.3.6.1.2.1.1.7.0 = INTEGER: 78
iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.4.1.9.7.129
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.4.1.9.7.115
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.4.1.9.7.265
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.4.1.9.7.112
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.4.1.9.7.106
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.4.1.9.7.47
[output omitted]
شما می توانید ببینید که snmpwalk می تواند اطلاعات را از روتر دریافت نماید.ما روتر را به یک NMS اضافه خواهیم کرد.
من از یک NMS open source رایگان بسیار خوب به نام Observium استفاده می کنم و یا از OPManager استفاده کنید که بسیار کارایی بالایی دارد.
بد نیست برای اطلاعات بیشتر به مقاله سیسکو در این رابطه توجه کنید.