DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

Ubuntu üzerinde SNMP servisi kurulumu

Ağ izleme seçenekleri arasında en verimli yöntemlerden birisi SNMP protokolü olarak görülebilir. SNMP protokolü 161 ve 162 portlarını kullanır. Protokolün 3 farklı sürümü bulunmakta olup bunlar SNMP v1, SNMP v2c ve SNMP v3'tür. 1 ve 2c sürümleri community adı verilen bir string ile haberleşip, mesajlar tamamen şifrelenmemiş şekilde taşınmaktadır. 3 sürümü ise kullanıcı giriş yöntemleri ve mesajların şifrelenmesi için zorunludur.

SNMP servisi kurulumu

Ubuntu 20.04 depolarında snmp paketi bulunmaktadır. Dolayısıyla direkt olarak kurulum yapılabilmektedir.

sudo apt update
sudo apt install snmpd snmp libsnmp-dev
Enter fullscreen mode Exit fullscreen mode

SNMP servisi yapılandırılması

Paketler yüklendikten sonra öncelikle eski yapılandırma dosyanın yedeklenmesi önerilir:

cp /etc/snmp/snmpd.conf{,.yedek}
Enter fullscreen mode Exit fullscreen mode

Düşük güvenlikli yöntem: v2c yapılandırması

Yapılandırma dosyasında 2 adım bulunmaktadır. Bu iki adım da /etc/snmp/snmpd.conf dosyası içindeki düzenlemelerden oluşmaktadır.

Bu adımlardan ilki servisin çalışacağı ip ve port bilgileridir. İlgili dosya içinde agentaddress 127.0.0.1,[::1] geçen satır bulunup aşağıdaki gibi düzenlenmelidir. İkinci kısımda belirtilen IP adresi servisin hizmet verdiği IP adresidir.

#agentaddress  127.0.0.1,[::1]
agentAddress udp:127.0.0.1:161,udp:192.168.1.67:161
Enter fullscreen mode Exit fullscreen mode

v2c yapılandırmasındaki ikinci adım ise dışarıdan erişilecek IP adresi ve community ismi (bir nevi parola) kısıtlamasıdır. Aşağıdaki satırdan birden fazla ekleyebilir ve bu şekilde yetkilendirme yapabilirsiniz. Fakat unutulmaması gereken en önemli nokta trafiğin şifrelenmediği ve verilen IP adresleri için community ismini bilen herkesin erişebileceği bilgisidir.

rocommunity ornekparola 192.168.1.68
Enter fullscreen mode Exit fullscreen mode

Dosyayı kaydedip kapattıktan sonra servisi yeniden başlatıp servisin ayağa kalkıp kalmadığını kontrol edebilirsiniz.

sudo systemctl restart snmpd
sudo systemctl status snmpd
sudo systemctl enable snmpd
Enter fullscreen mode Exit fullscreen mode

Ve tabi ki eğer ufw güvenlik duvarı açıksa benzer şekilde kural girmeniz gerekmektedir:

ufw allow from 192.168.1.68 to any port 161 proto udp
Enter fullscreen mode Exit fullscreen mode

Yüksek güvenlikli yöntem: v3 yapılandırması

v3 yapılandırması için öncelikle açık bir servis varsa kapatılması gerekmektedir.

sudo systemctl stop snmpd
Enter fullscreen mode Exit fullscreen mode

Daha sonrasında giriş yapacak read-only(sadece okuyabilir) kullanıcı oluşturmak için aşağıdaki gibi bir komut uygulanması gerekmektedir:

net-snmp-create-v3-user -ro -A authparola -a SHA -X privparola -x AES snmpyonetici
Enter fullscreen mode Exit fullscreen mode

Kullanıcı eklendikten sonra iki dosyada da elle ekleme işlemi yapılması gerekmektedir.

İlk olarak /var/lib/snmp/snmpd.conf dosyası içine aşağıdaki satır eklenmeli:

createUser snmpyonetici SHA "authparola" AES "privparola"
Enter fullscreen mode Exit fullscreen mode

Daha sonra /usr/share/snmp/snmpd.conf dosyası içerisinde aşağıdaki satır eklenmeli:

rouser snmpyonetici
Enter fullscreen mode Exit fullscreen mode

Bu iki dosya da düzenlendikten sonra snmpd servisi tekrar başlatılabilir:

sudo systemctl start snmpd
sudo systemctl enable snmpd
Enter fullscreen mode Exit fullscreen mode

SNMP kontrol

İzin verilen IP adreslerinden aşağıdaki komut ile birlikte SNMP sorgusu atılıp atılmadığını v2c sürüm kontrol edebilirsiniz:

snmpwalk -v2c -c ornekparola 192.168.1.67
Enter fullscreen mode Exit fullscreen mode

veya v3 sürüm kullanarak:

snmpwalk -v3 -a SHA -A authparola -x AES -X privparola -l authPriv -u snmpyonetici 192.168.1.67
Enter fullscreen mode Exit fullscreen mode

Çıktı olarak aşağıdaki gibi bir çıktı alıyorsanız erişim sağlanamamakta fakat SNMP OID'leri görmeye başladıysanız erişim sağlanmış demektir.

Timeout: No Response from IPADRESİ
Enter fullscreen mode Exit fullscreen mode
iso.3.6.1.2.1.1.1.0 = STRING: "Linux snmpserver01 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (227298) 0:37:52.98
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@deneme.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "snmpserver01"
...
Enter fullscreen mode Exit fullscreen mode

Top comments (5)

Collapse
 
susamate profile image
Susamate • Edited

İkinci kısımda belirtilen IP adresi servisin hizmet verdiği IP adresidir.

↑Bu ne demek oluyor? Yani Agent'ın ip Adresi mi

v2c yapılandırmasındaki ikinci adım ise dışarıdan erişilecek IP adresi ve community ismi (bir nevi parola) kısıtlamasıdır.

↑Bu da manager'ın ip adresi mi oluyor?

Diyelim ki benim bi Manager'ım bir tane Switch'im bir tane de Router'ım var. IP addresleri de Şöyle:

Manager: 172.16.1.10
Switch: 172.16.1.2
Router: 172.16.1.1

Switch, Router ile Manager arasında bağlantı görevi görüyor. Router ve Switch agent oluyor bu durumda. Hangi ip Addresini nereye yazmalıyım configure ederken. Cevap yazarsanız çok mutlu olurum :)

Collapse
 
aliorhun profile image
Ali Orhun Akkirman

Merhabalar. İlk kısım SNMP sorgusunun atılacağı IP, diğeri de snmp sorgusunu atacak olan makinenin IP'si (manager).

Buradaki yapılan şey aslında normal bir linux sunucu üzerinde SNMP sorgusu atılabilmeyi sağlıyor. Yani sanki ubuntu makinesi switch veya router gibi yapıyor diye düşünebiliriz. Dolayısıyla başka bir manager sunucusundan, burada ayar yaptığınız ubuntu makinesine SNMP üzerinden sorgu atabiliyor oluyorsunuz. Örneğin hostname'ini SNMP üzerinden çekebiliyorsunuz. Bunun dışında bir çok şey çekip, yeni OID'lerle farklı veriler de çekebiliyorsunuz.

Dolayısıyla manager IP'si ve ubuntu IP'si diye iki ip var. Bu yazı kapsamında başka bir yapı ile hiçbir entegrasyonu yok. Umarım açıklayıcı olmuş ve yardımcı olabilmişimdir.

Collapse
 
susamate profile image
Susamate

Wow, çok hızlı dönüş oldu. Çok teşekkür ederim, gayet açıklayıcı :)

Collapse
 
detherminal profile image
Detherminal

Çok iyi olmuş

Collapse
 
aiocat profile image
aiocat

Yararlı bir paylaşım, teşekkürler.