SNMPv1
_______


SNMP Layer 4 de çalisir.
UDP içinde gelir.
161 ve 162 nolu portlari kullanir.


V1, V2c ve V3 olmak üzere en populer 3 tane versiyonu vardir.


Hemen ayni topolojiyi kullanalim.


R1 ---- Switch ---- Win7.




R1 miz Managed Device dir ve içinde uyuyan bir AGENT var.
Onu birazdan uyandiricaz.


Win7 e bir yazilim yükledim.
Win7 artik NMS oldu ve içinde bir tane MANAGER var.

Agent ve Manager arasinda SNMP Mesajlari gelip gidecektir.

NMS üzerinde yaptigim ayarlari gösteremeyecegim burda.

Sizde herhangi bir SNMP yazilim yükleyerek yapabilirsiniz.

Daha çok R1 üzerindeki SNMP ayarlar hakkinda konusucaz.

Agent ve MANAGER arasinda gelip gidecek

SNMP Mesajlari asagidaki gibidir :



GetRequest - Manager in Agent a bir SORU SORDUGU mesajdir.
GetNextRequest - Buna bir örnek verecegiz birazdan.
GetResponse - Agent in gönderdigi CEVAP bu mesajdadir.
SetRequest - Manager in Agent dan BIR SEY YAPMASINI istemesidir.
Trap - Agent in Manager a KENDILIGINDEN bir bilgi verdigi mesajlardir.





Manager mesajlari gönderirken UDP 161 e gönderir.

Agent ise mesaj gönderirken UDP 162 ye gönderir.



Hemen R1 üzerinde ayarlamalar yapmaya baslayalim.

Önce bir IP verelim.


Kod:
R1

R1#
CONF T
INT G0/0
IP ADD 10.0.0.1 255.0.0.0
NO SH


Bazi SNMP ayarlari R1 üzerinde yapalim.


Kod:
conf t
snmp-server contact buse  
snmp-server location corum
snmp-server chassis-id 4279256517

AGENT ile ilgili küçük bilgileri girelim ki
Manager hangi cihazlar muhatap oldugunu bilsin.


Kontrol edelim.


Kod:
R1#show snmp contact
buse

Kod:
R1#show snmp location
corum

Kod:
R1#show snmp chassis
4279256517


Ilk önemli ayari yapalim :

Kod:
R1#
CONF T
SNMP-SERVER COMMUNITY CISCOTR RW

Öncelikle en sonda yazan RW yerine RO da yazabilirdik.


RO -> R1 cihazina sadece soru sorabiliriz bununla.
RW -> R1 cihazindan birseyi degistirmesini isteyebiliriz bununla.

Kisaca RW seçersek, Manager bu cihaza SetRequest mesajlari gönderebilir.


Peki

SNMP-SERVER COMMUNITY CISCOTR ne demektir ?

Bu kod ile R1 e sunu deriz :

" Sen CISCOTR denilen bir gruba üyesin,
ve sadece o gruptan kisilerle sohbet edebilirsin
" demektir.


Yani her önüne gelen R1 cihazina baglanip bilgi çekemez.

WIn7 içindeki Manager da CISCOTR grubuna üye olmak zorundadir.

Küçük bir not düselim burda :


Bu "Community CISCOTR" nin bir sifre oldugunu düsünen
hatta öyle oldugunu iddia edip yazan kitaplar mevcut piyasada.

Bu "Community CISCOTR" ile sifre falan belirlemeyiz.

Zaten Community = GRUP demektir.

Community CISCOTR ile bu cihazi bir gruba dahil ettik o kadar.

"VTP DOMAIN CISCOTR" ne demekse "Community CISCOTR" ayni anlama gelir .


Hatta bunu kanitlayalim :


Kod:
R1#
show snmp group

groupname: ILMI                             security model:v1
contextname: <no context specified>         storage-type: permanent
readview : *ilmi                            writeview: *ilmi
notifyview: <no notifyview specified>
row status: active

groupname: ILMI                             security model:v2c
contextname: <no context specified>         storage-type: permanent
readview : *ilmi                            writeview: *ilmi
notifyview: <no notifyview specified>
row status: active

groupname: ciscotr                          security model:v1
contextname: <no context specified>         storage-type: permanent
readview : v1default                        writeview: v1default
notifyview: <no notifyview specified>
row status: active

groupname: ciscotr                          security model:v2c
contextname: <no context specified>         storage-type: permanent
readview : v1default                        writeview: v1default
notifyview: <no notifyview specified>
row status: active


GROUPNAME : ciscotr

bize ciscotr diye bir gruba üye oldugumuzu gösterir .


Ayrica ILMI diye bir GRUp ismi gördüm.
Oraya da üyeymisiz
Halbuki ben hiç bir ayar yapmadim.
BU Default olarak içinde gelir.
O halde bu bir açiktir. Yani problem olabilir.
Aslinda degil. ÇÜnkü yeni IOS larda bunun bir önemi yoktur.
ATM Interface lerde kullanilan bir protokoldur.
Bununla ilgili yazmanin hiç önemi olmadigini düsündügüm için atliyorum.



Daha ilginç bir sey gördüm.

Bu komut ile SNMPV1 ve SNMPv2c aktif olmus

Demekki aralarinda çokda büyük bir fark yok o halde.

Neyse bu SHOW SNMP GROUP çiktisini

tekrar incelicez zaten SNMPV3 de.



Kisaca

Kod:
R1
CONF T
SNMP-SERVER COMMUNITY CISCOTR RW

Ile Küçük de olsa bir güvenlik saglamis oluruz.
Yani herhangi bir Manager bizim cihaz ile iletisime
geçmek isterse o da CISCOTR grubuna üye olmasi gerekir.
( Yani CISCOTR diye bir grup oldugunu bilmelidir önceden )


Ayrica bir adim ileri gidip güvenlik önlemini artirabiliriz.
Bir ACL yazarak bizimle hangi MANAGER larin
iletisime geçecegine karar verebiliriz.



Kod:
R1#
CONF T
access-list 10 permit 10.0.0.10
snmp-server community ciscotr rw 10
Kod:
sh snmp group | begin ciscotr
groupname: ciscotr                          security model:v1
contextname: <no context specified>         storage-type: permanent
readview : v1default                        writeview: v1default
notifyview: <no notifyview specified>
row status: active      access-list: 10

groupname: ciscotr                          security model:v2c
contextname: <no context specified>         storage-type: permanent
readview : v1default                        writeview: v1default
notifyview: <no notifyview specified>
row status: active      access-list: 10


Simdi bizim R1 imiz hazir.
SNMPv1 enable oldu.
Ciscotr diye bir gruba dahil oldu.
ve 10.0.0.10 ip adresinden gelen SNMP isteklerine cevap vericem dedi sadece.


Win7 de yaptigim ayarlari yazayim :

AG Kartima : 10.0.0.10 verdim.

Win7 deki SNMP yazilimina gidip Ciscotr grubuna üyesin dedim.

Ve 10.0.0.1 ip adresine SNMPv1 mesajlari göndereceksin dedim.

Sizde kendi PC nizde farkli SNMP yazilimlari kullanabilirsiniz.

Bilmemiz gerekenler :

Sizin PC nin de bir IP si olacak.
SNMP yazilimiyla gelen MANAGER a hangi gruba üye oldugunu söylücez.
Ve hangi SNMP version mesajlari gönderecegimizi belirticez.
( Manager ve AGENT In ayni SNMP version kullanmasi gerekir )



Simdi Win7 içindeki SNMP programina gidip :


Kod:
HOST         : 10.0.0.1
Community     : ciscotr
OID          : .1.3.6.1.2.1.1.5.0


Kisimlarini doldurup GETREQUEST tusuna bastim.


GETREQUEST in ne oldugunu yukarda yazdik.

.1.3.6.1.2.1.1.5.0 -> Bu ise Hostname Nedir demektir.

O da bana GET-RESPONSE mesaji ile

Söyle bir deger verdi : R1


.1.3.6.1.2.1.1.5.0 gibi sayilari nasil aklimda tutacagim diye düsünmeyin.

Çünkü kullandigim programda hiyerarsik bir sekilde ingilizceleri var


Mesela .1.3.6.1.2.1.1.4.0 = sysContact.0 demektir.

Bakalim nasil bir cevap verecek bana :


Kod:
HOST         : 10.0.0.1
Community     : ciscotr
OID          : .1.3.6.1.2.1.1.4.0

GETREQUEST Tusuna bastim.


GET-RESPONSE mesaji ile söyle bir deger verdi : buse



Mesela R1 den bisi yapmasini isteyelim :

Mesela ismi R1 degilde buse olsun.




Kod:
HOST         : 10.0.0.1
Community     : ciscotr
SET Value       : buse
OID          : .1.3.6.1.2.1.1.5.0 

SETREQEST tusuna bastim. Bu mesajin ne oldugunu yazdik yukarda.

Bana GET-RESPONSE ile : buse degerini verdi.

Yani istedigini yerine getirdim demektir.


***

OID lerin MIB içinde Hiyerarsik bir sekilde oldugunu söylemistik.


Benim kullandigim SNMP yazilimindada :


sysUpTime
sysContact
sysName
sysLocation

gibi degerler ardisik gelmisler.

Mesela ben simdi SysUpTime ögrenmek istiyorum.


Adindanda anlasilacagi üzere sistem ne kadar zamandir açik demektir.


Yukardaki islemleri yapip GET-REQUEST tusuna bastim

ve bana " 0 hours, 57 minutes, 1 seconds " gibi bir deger verdi.

Simdi her hangi bir sey yapmadan GET-NEXT-REQUEST tusuna basarsam

MIB Içindeki hiyerarsik olan bir sonraki OID yi istedigimi düsünür.

Ki bu durumda sysContact i talep ettim.

Bana : buse degerini verdi.

Iste GET-NEXT-REQUEST mesaji bunun için vardir.


***

Son olarak ,

R1 cihazinin biz talep etmeden

bize önemli durumlari bildirmesini isteyelim.



Agent tarafindan Manager a gelen nu mesajlara TRAP Mesajlari denir.



Önce Cisco cihazimiza gidip bunu ona söylememiz gerekecektir.


Kod:
buse#

CONF T
SNMP-SERVER ENABLE TRAPS

Yeterlidir.

Bu komut ile aslinda

"Önceden tanimlanmis" bazi önemli olaylari

gönder demis olduk.


Örnegin


Kod:
buse# sh run | inc traps
komutunu girerseniz.

neleri GÖNDERECEGINI görebiliriz...


Mesela benim gözüme çarpanlar

snmp-server enable traps eigrp
snmp-server enable traps ospf state-change
snmp-server enable traps syslog

gibi...

Ancak biz kafamiza göre birseyler eklemek istersek :


Kod:
CONF T
snmp-server enable traps BGP
yazabiliriz.


Artik BGP ile ilgili önemli olaylarda TRAP olarak gelecektir.


Yalniz en önemli seyi unuttuk !

TRAP leri nereye gönderecegini söylemedik !!!


Kod:
CONF T
snmp-server host 10.0.0.10 traps ciscotr
KOMUTUNU girmemiz gerekir.



BIr örnek yapalim :


Kod:
buse#
CONF T
snmp-server enable traps 
snmp-server enable traps syslog  
snmp-server host 10.0.0.10 traps ciscotr


Kod:
buse#sh snmp host
Notification host: 10.0.0.10    udp-port: 162   type: trap
user: ciscotr   security model: v1

Ve Win7 ye gidip ilgili SNMP yazilimda TRAP leri GÖSTER tusuna bastim.

Ve SNMP Paketleri içine sarilmis gelen SYSLOG Mesajlarini gördüm.

Bu makalede çok basit uygulamalar yaptik.


SNMPv1 in dezavantajlari sunlardir :

1- Agent ve Manager arasi gelip giden SNMP mesajlari sifrelenmezler.

2- Agent tarafindan gönderilen TRAP mesajlari Manager tarafindan teyid edilmez.
Yani Agent gönderdigi mesajin karsiya ulasip ulasmadigini bilemez.




Siradaki makale SNMPV2c ...