آشنایی و پیکربندی SNMP v3 برای روترهای سیسکو

 

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 استفاده کنید که بسیار کارایی بالایی دارد.

بد نیست برای اطلاعات بیشتر به مقاله سیسکو در این رابطه توجه کنید.

http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/20370-snmpsecurity-20370.html