SNMP, yöneticiler ve aracılar arasındaki iletişim için bir mesaj formatı sağlayan bir uygulama katmanı protokolüdür.
SNMP sistemi üç unsurdan oluşur:
SNMP manager (yöneticisi)
SNMP agents (managed node)
Management Information Base (MIB)
Bir ağ aygıtında SNMP'yi yapılandırmak için önce yönetici ve aracı arasındaki ilişkiyi tanımlamak gerekir.
SNMP yöneticisi, bir ağ yönetim sisteminin (NMS) parçasıdır. SNMP yöneticisi, SNMP yönetim yazılımını çalıştırır.
Şekilde gösterildiği gibi, SNMP yöneticisi “get” eylemini kullanarak bir SNMP aracısından bilgi toplayabilir. "Set" eylemini kullanarak bir aracıdaki yapılandırmaları değiştirebilir. Ek olarak, SNMP aracıları "trap" kullanarak bilgileri doğrudan bir ağ yöneticisine iletebilir. Problem olup olmadığını trap ile alıyoruz. Node'lar üzerindeki bir değişikliğe bağlı ya da bir tetiklemeye bağlı mesajın gelmesini ifade ediyor.
SNMP manager dediğimiz cihaz SNMP agent'ları yani Node'ları yönetmek için MIB database'i kullanıyor. SNMP manager kullanarak yazılım üzerinden Node'ları yapılandırabiliyorum.
Management Information Base
MIB, değişkenleri hiyerarşik olarak düzenler. MIB değişkenleri, yönetim yazılımının ağ cihazını izlemesini ve kontrol etmesini sağlar
MIB her değişkeni bir nesne kimliği (OID) olarak tanımlar. OID'ler, MIB hiyerarşisindeki yönetilen nesneleri benzersiz şekilde tanımlar. MIB, RFC standartlarına dayalı olarak OID'leri, genellikle bir ağaç olarak gösterilen bir OID hiyerarşisi halinde düzenler.
Biz cihazdan karşıya get ya da set request gönderdiğimizde aslında karşı tarafa bu şekilde bir şayı dizisi göndermiş oluyoruz.
Cisco'ya ait OID'ler şu şekilde numaralandırılmıştır: .iso (1).org (3).dod (6).internet (1).private (4).enterprises (1).cisco (9). Bu nedenle, OID 1.3.6.1.4.1.9'dur.
Bu sayı dizisi doğrultusunda bana bir cevap gelmiş oluyor.
SNMP Versiyonları
SNMPv1 - Bu, RFC 1157'de tanımlanan bir İnternet Standardı olan SNMP protokolüdür.
SNMPv2 - Bu, 1901 ila 1908 arasındaki RFC'lerde tanımlanmıştır. Community-string-based bir Administrative Framework kullanır.
SNMPv3 - Bu, orijinal olarak 2273 ila 2275 RFC'lerinde tanımlanan birlikte çalışabilir standartlara dayalı bir protokoldür. Ağ üzerinden paketleri doğrulayarak ve şifreleyerek cihazlara güvenli erişim sağlar. Mesaj bütünlüğü,Kimlik doğrulama, Şifreleme Acces Control(Belirli IP'ler yapabilsin) sağlar
SNMPv3 Security Konfigurasyonu
Adım 1 . Yetkili SNMP yöneticilerine erişime izin verecek bir ACL yapılandırın.
Adım 2 . SNMP yöneticisinin okuyabileceği MIB OID'lerini belirlemek için snmp-server view komutuyla bir SNMP görünümünü yapılandırın . SNMP mesajlarını salt okunur erişimle sınırlamak için bir görünümün yapılandırılması gerekir
Adım 3 . snmp-server group komutuyla SNMP grup özelliklerini yapılandırın :
•Grup için bir ad yapılandırın.
•v3 anahtar sözcüğü ile SNMP sürümünü 3'e ayarlayın.
•priv anahtar sözcüğüyle kimlik doğrulama ve şifreleme gerektir .
•read komutuyla yalnızca okuma erişimi verin.
Adım 1'de yapılandırılan ACL'yi belirtin
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname R1
R1(config)#int gig0/0/0
R1(config-if)#no shutdown
R1(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#
PC'ye de 192.168.1.2 ip adresini verdik.
PC üzerinden MIB Manager açtık. Bağlanmaki istediğimiz cihazın ip adresini girdik. Community string dedikleri şey aslında parola ve bir parola girdik.
Router üzerinde örnek olarak sysName öğrenmek istediğimizde karşı tarafa OID numarasını get mesajı olarak gönderecek.
Router üzerinde de SNMP yapılandırması yapmamız gerekiyor.
R1(config)#snmp-server community ?
WORD SNMP community string
R1(config)#snmp-server community sefa ?
ro Read-only access with this community string
rw Read-write access with this community string
<cr>
R1(config)#snmp-server community sefa rw
%SNMP-5-WARMSTART: SNMP agent on host R1 is undergoing a warm start
R1(config)#
Burada benim parolam Sefa'dır dedik ve bunu bilen cihazlar Read ve Write yetkisine sahiptir dedik.
systeUpTime için get Mesajı gönderdik ve bize Routerımızın 12 dakikadır açık olduğu mesajını gönderdi. RW dediğimiz için Set de yapabiliyorduk. Örnek olarak cihazımın ismini değiştirelim.
Artık Router'ımızın ismi değişmiş oldu.
Access List kullanarak kimlerin erişebileceğini get ve set yapabileceğini ayarlayabiliriz.
R1(config)#ip access-list standard PERMIT-SNMP
R1(config-std-nacl)#permit 192.168.1.0 0.0.0.255
R1(config-std-nacl)#exit
R1(config)#
// İsmi Permit SNMP olan bir ACL tanımladım. ACL trafik tanımlamamıza yarıyor.
192.168.1.0/24 networkünde olan herkes PERMIT SNMP'dir.
ve sonrasında neye izin vermemiz gerektiğini belirtmemiz gerekiyor.
SNMP View oluşturma süreci şu şekilde.
R1(config)#snmp-server ?
chassis-id String to uniquely identify this chassis
community Enable SNMP; set community string and access privs
contact Text for mib object sysContact
context Create/Delete a context apart from default
drop Silently drop SNMP packets
enable Enable SNMP Traps
engineID Configure a local or remote SNMPv3 engineID
file-transfer File transfer related commands
group Define a User Security Model group
host Specify hosts to receive SNMP notifications
ifindex Enable ifindex persistence
inform Configure SNMP Informs options
ip IP ToS configuration for SNMP traffic
location Text for mib object sysLocation
manager Modify SNMP manager parameters
packetsize Largest SNMP packet size
queue-length Message queue length for each TRAP host
queue-limit Message queue size for different queues
source-interface Assign an source interface
system-shutdown Enable use of the SNMP reload command
tftp-server-list Limit TFTP servers used via SNMP
trap SNMP trap options
trap-source Assign an interface for the source address of all traps
trap-timeout Set timeout for TRAP message retransmissions
user Define a user who can access the SNMP engine
usm user security model
view Define an SNMP MIB view
R1(config)#snmp-server view SNMP-RO
//View oluşturduk ve Readonly anlamına gelen bir RO ismini verdik.
Sonrasında MIB içerisindeki yapıyı ifade etmemiz gerekiyor. (Ağaç içerisindeki yapıyı)
iso included (iso'nun tamamını al ve included (ekle))
R1(config)#snmp-server view SNMP-RO ?
WORD MIB view family name
<cr>
R1(config)#snmp-server view SNMP-RO iso included
Bütün ISO'yu değil ağaç yapısında başka şeyler de include edebiliriz örnek olarak
MIB-2
R1(config)#snmp-server view TEST mib-2 included
// Kısaca İsmi SNMP-RO olan bir view oluşturdum. Bu view içerisinde tüm
ISO var. Ağacın kökten dala kadar hepsi var.
Sonrasında ise Group oluşturuyorum. (ADMIN adında bir grup olacak).
Sonrasında versiyon tipi ardından priv ve sonrasında vermek istediğimiz yetki ve
hangi gruba vereceğimiz ve access listmizi yazıyoruz.
R1(config)#snmp-server group ADMIN ?
v1 group using the v1 security model
v2c group using the v2c security model
v3 group using the User Security Model (SNMPv3)
R1(config)#snmp-server group ADMIN v3 ?
auth group using the authNoPriv Security Level
noauth group using the noAuthNoPriv Security Level
priv group using SNMPv3 authPriv security level
R1(config)#snmp-server group ADMIN 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>
R1(config)#snmp-server group ADMIN v3 priv read ?
WORD read view name
R1(config)#snmp-server group ADMIN v3 priv read SNMP-RO access PERMIT-SNMP
//İsmi ADMIN olan bir group oluşturdum. Versiyon 3 çalışacak. Priv seçerek
İçerisinde Authentication,Encription, Integrity ) sağlayacağım diyorum.
SNMP-RO isimli View'e okuma yetkisi sahip PERMIT-SNMP ile tanımlamış olduğum
ipler.
Sonrasında ise kullanıcı tanımlayıp gruba atacağız.
Örnek olarak Admin grubundan birkaç kullanıcı tanımlayabilirim.
R1(config)#snmp-server user ?
WORD Name of the user
R1(config)#snmp-server user Deneme ?
WORD Group to which the user belongs
R1(config)#snmp-server user Deneme ADMIN ?
remote Specify a remote SNMP entity to which the user belongs
v1 user using the v1 security model
v2c user using the v2c security model
v3 user using the v3 security model
R1(config)#snmp-server user Deneme ADMIN v3 ?
access specify an access-list associated with this group
auth authentication parameters for the user
encrypted specifying passwords as MD5 or SHA digests
<cr>
R1(config)#snmp-server user Deneme ADMIN v3 auth ?
md5 Use HMAC MD5 algorithm for authentication
sha Use HMAC SHA algorithm for authentication
R1(config)#snmp-server user Deneme ADMIN v3 auth sha ?
WORD authentication pasword for user
R1(config)#snmp-server user Deneme ADMIN v3 auth sha Deneme123 ?
access specify an access-list associated with this group
priv encryption parameters for the user
<cr>
R1(config)#snmp-server user Deneme ADMIN v3 auth sha Deneme123 priv ?
3des Use 168 bit 3DES algorithm for encryption
aes Use AES algorithm for encryption
des Use 56 bit DES algorithm for encryption
R1(config)#snmp-server user Deneme ADMIN v3 auth sha Deneme123 priv aes 128 ?
WORD privacy pasword for user
R1(config)#$ user Deneme ADMIN v3 auth sha Deneme123 priv aes 128 Deneme456
R1(config)#
*Apr 12 09:28:22.343: Configuring snmpv3 USM user, persisting snmpEngineBoots. Please Wait...
//Kullanıcı adı Deneme authentication parolası Deneme123 ve encription key ise Deneme456
ADMIN grubu içerisinde. ADMIN grubu view içerisinde sadece okuma yetkisine sahip.
ve Deneme eğer bu verdiğimiz ip bloğunda ise SNMP yapabilecek anlamına geliyor.
Bazı cihazlarda SNMP defaultta açıktır. ve Commnity String'i RW community string' private anahtar kelimesidir. RO community String'i public anahtar kelimesidir. Private kelimesini girersek default olarak o markanın SNMP ile erişip, SNMP'nin izin verdiği her türlü işi yapabiliriz.