Ubuntu üzerinde SNMP servisi kurulumu
Tags: snmp, ubuntu, server
Published: 2021-11-28 08:57:04

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.

```bash
sudo apt update
sudo apt install snmpd snmp libsnmp-dev
```

## SNMP servisi yapılandırılması

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

```bash
cp /etc/snmp/snmpd.conf{,.yedek}
```

### 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
```

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
```

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

```bash
sudo systemctl restart snmpd
sudo systemctl status snmpd
sudo systemctl enable snmpd
```

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

```bash
ufw allow from 192.168.1.68 to any port 161 proto udp
```

### 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.

```bash
sudo systemctl stop snmpd
```

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
```

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"
```

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

```
rouser snmpyonetici
```

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

```bash
sudo systemctl start snmpd
sudo systemctl enable snmpd
```

## 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:

```bash
snmpwalk -v2c -c ornekparola 192.168.1.67
```

veya v3 sürüm kullanarak:

```bash
snmpwalk -v3 -a SHA -A authparola -x AES -X privparola -l authPriv -u snmpyonetici 192.168.1.67
```

Çı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İ
```

```
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"
...
```