Ağınızda ne olduğunu bilmiyorsanız, güvenlik açısından kör uçuyorsunuz demektir. Hangi cihaz ne kadar bant genişliği tüketiyor, hangi IP adresleri şüpheli trafik üretiyor, protokol dağılımı nasıl görünüyor? Bu soruların cevaplarını gerçek zamanlı olarak vermek için ntopng, sysadminlerin vazgeçilmez araçlarından biri haline geldi. Açık kaynaklı, web tabanlı ve son derece güçlü bu trafik analiz aracını nasıl kurup yapılandıracağınızı, gerçek dünya senaryolarıyla birlikte ele alacağız.
ntopng Nedir ve Neden Kullanmalıyız?
ntopng, ntop projesinin modern nesil ağ trafik analiz ve görselleştirme aracıdır. Eski kardeşi ntop’tan farklı olarak tamamen yeniden yazılmış, web tabanlı arayüzü ve gelişmiş özellikleriyle öne çıkar. Temel olarak ağ arayüzlerinden geçen trafiği yakalar, analiz eder ve anlamlı grafikler ve tablolar halinde sunar.
Neden ntopng tercih etmeliyiz sorusunun birkaç pratik cevabı var:
- Gerçek zamanlı görünürlük: Ağdaki her akışı anlık olarak izleyebilirsiniz
- nFlow/sFlow desteği: Yönlendiricilerden ve switchlerden flow verisi alabilirsiniz
- Davranışsal analiz: Anormal trafik örüntülerini tespit edebilirsiniz
- Tarihsel veri: InfluxDB ve diğer sistemlerle entegre çalışır
- Ücretsiz Community sürüm: Temel ihtiyaçlar için yeterli olan açık kaynak sürümü mevcuttur
- Çapraz platform: Linux ve Windows üzerinde çalışır
Özellikle küçük ve orta ölçekli ağlarda, pahalı ticari çözümlere para harcamadan ciddi bir görünürlük elde etmek isteyenler için ntopng mükemmel bir başlangıç noktasıdır.
Kurulum
Ubuntu/Debian Üzerine Kurulum
ntopng’yi doğrudan ntop’un kendi repolarından kurmanızı tavsiye ederim. Dağıtım repolarındaki sürümler genellikle eski kalır.
# Gerekli bağımlılıkları yükle
sudo apt update
sudo apt install -y wget gnupg2 software-properties-common
# ntop GPG anahtarını ekle
wget -qO- https://packages.ntop.org/apt-stable/ntop.key | sudo apt-key add -
# Ubuntu 22.04 için repo ekle
echo "deb https://packages.ntop.org/apt-stable/22.04/ x64/" |
sudo tee /etc/apt/sources.list.d/ntop.list
# Paketleri güncelle ve ntopng kur
sudo apt update
sudo apt install -y ntopng
CentOS/RHEL/AlmaLinux Üzerine Kurulum
# EPEL reposunu ekle
sudo dnf install -y epel-release
# ntop reposunu ekle
wget https://packages.ntop.org/centos-stable/ntop.repo -O /etc/yum.repos.d/ntop.repo
# ntopng ve bağımlılıklarını kur
sudo dnf install -y ntopng
# Servisi etkinleştir ve başlat
sudo systemctl enable ntopng
sudo systemctl start ntopng
Servisin Çalıştığını Doğrula
# Servis durumunu kontrol et
sudo systemctl status ntopng
# Dinlediği portu kontrol et (varsayılan 3000)
sudo ss -tlnp | grep ntopng
# Log dosyasını takip et
sudo journalctl -u ntopng -f
Kurulum tamamlandıktan sonra tarayıcınızdan http://sunucu-ip:3000 adresine giderek web arayüzüne erişebilirsiniz. Varsayılan kullanıcı adı admin, şifre de admin‘dir. İlk girişte şifrenizi değiştirmenizi şiddetle tavsiye ederim.
Temel Yapılandırma
ntopng’nin yapılandırma dosyası /etc/ntopng/ntopng.conf konumundadır. Bu dosya üzerinden birçok kritik ayarı yapabilirsiniz.
# Yapılandırma dosyasını düzenle
sudo nano /etc/ntopng/ntopng.conf
Tipik bir yapılandırma dosyası şöyle görünür:
# Dinlenecek ağ arayüzü
-i=eth0
# Web arayüzü portu
-w=3000
# Yerel ağ tanımı (önemli!)
-m=192.168.1.0/24,10.0.0.0/8
# Veri saklama dizini
-d=/var/lib/ntopng
# Maksimum akış sayısı
--max-num-flows=200000
# DNS çözümleme aktif
--dns-mode=1
# GeoIP veritabanı yolu
--geoip-db-path=/usr/share/GeoIP
# Loglama seviyesi
--verbose=2
Yapılandırmayı değiştirdikten sonra servisi yeniden başlatmayı unutmayın:
sudo systemctl restart ntopng
Birden Fazla Arayüz Dinleme
Eğer birden fazla ağ arayüzünü aynı anda izlemek istiyorsanız:
# Her arayüz için ayrı -i parametresi ekleyin
-i=eth0
-i=eth1
-i=ens3
nFlow/sFlow Entegrasyonu
ntopng’nin gerçek gücü, doğrudan paket yakalamaktan çok flow verileriyle çalışmasından gelir. Özellikle yönetilen switchler ve routerlardan nFlow veya sFlow verisi alarak tüm ağ altyapınızı tek noktadan izleyebilirsiniz.
Cisco Router’da nFlow Yapılandırması
Cisco IOS üzerinde nFlow’u etkinleştirmek için:
# Bu komutları Cisco router'ınızda çalıştırın
interface GigabitEthernet0/0
ip flow ingress
ip flow egress
!
ip flow-export version 9
ip flow-export destination 192.168.1.100 2055
ip flow-export source GigabitEthernet0/0
ip flow-cache timeout active 1
ip flow-cache timeout inactive 15
ntopng’de nFlow Kolektör Ayarı
nFlow verisi almak için ntopng’yi kolektör modunda çalıştırmanız gerekir:
# ntopng.conf dosyasına ekleyin
-i=nf:0.0.0.0:2055
# Hem fiziksel arayüz hem de nFlow dinlemek için
-i=eth0
-i=nf:0.0.0.0:2055
sFlow Yapılandırması
# sFlow için farklı port kullanılır (varsayılan 6343)
-i=sflow:0.0.0.0:6343
Alarm ve Uyarı Sistemi
ntopng’nin alarm sistemi, anormal durumları tespit ettiğinde sizi haberdar etmesi için kritik öneme sahiptir. Community sürümde temel alarmlar mevcuttur.
Web arayüzünden System > Alerts > Settings menüsüne giderek alarm eşiklerini ayarlayabilirsiniz. Ancak script tabanlı alarm entegrasyonu için aşağıdaki yaklaşımı kullanabilirsiniz.
#!/bin/bash
# /usr/local/bin/ntopng-alert-check.sh
# ntopng REST API'sinden yüksek trafik uyarısı alan script
NTOPNG_HOST="localhost"
NTOPNG_PORT="3000"
ALERT_THRESHOLD_MBPS=900
EMAIL="[email protected]"
# API ile aktif akışları sorgula
RESPONSE=$(curl -s -u admin:sifreniz
"http://${NTOPNG_HOST}:${NTOPNG_PORT}/lua/rest/v2/get/interface/data.lua")
# Toplam bant genişliği kullanımını parse et
CURRENT_BPS=$(echo $RESPONSE | python3 -c "
import json, sys
data = json.load(sys.stdin)
print(data.get('throughput_bps', 0))
")
CURRENT_MBPS=$((CURRENT_BPS / 1000000))
if [ $CURRENT_MBPS -gt $ALERT_THRESHOLD_MBPS ]; then
echo "UYARI: Ağ trafiği ${CURRENT_MBPS} Mbps - Eşik: ${ALERT_THRESHOLD_MBPS} Mbps" |
mail -s "ntopng Yüksek Trafik Alarmı" $EMAIL
fi
Bu scripti crontab ile düzenli çalıştırın:
# Her 5 dakikada bir kontrol et
*/5 * * * * /usr/local/bin/ntopng-alert-check.sh
Gerçek Dünya Senaryosu: Şüpheli Trafik Tespiti
Diyelim ki şirket ağınızda gece yarısı beklenmedik yüksek trafik oluştu. ntopng’nin REST API’sini kullanarak bu tür durumları otomatik olarak raporlayan bir script yazalım.
#!/bin/bash
# /usr/local/bin/suspicious-traffic-report.sh
# Gece saatlerinde yüksek trafik üreten host'ları tespit et
NTOPNG_HOST="localhost"
NTOPNG_PORT="3000"
NTOPNG_USER="admin"
NTOPNG_PASS="guvenli_sifreniz"
REPORT_DIR="/var/log/ntopng-reports"
DATE=$(date +%Y%m%d_%H%M)
mkdir -p $REPORT_DIR
# Top talkers listesini API'den çek
curl -s -u ${NTOPNG_USER}:${NTOPNG_PASS}
"http://${NTOPNG_HOST}:${NTOPNG_PORT}/lua/rest/v2/get/host/active.lua?ifid=0"
-o ${REPORT_DIR}/active_hosts_${DATE}.json
echo "Rapor oluşturuldu: ${REPORT_DIR}/active_hosts_${DATE}.json"
# Yüksek veri transferi yapan host'ları filtrele (1GB üzeri)
python3 << 'EOF'
import json
with open(f"/var/log/ntopng-reports/active_hosts_{DATE}.json") as f:
data = json.load(f)
suspicious = []
for host in data.get('rsp', []):
bytes_sent = host.get('bytes_sent', 0)
if bytes_sent > 1_000_000_000: # 1GB üzeri
suspicious.append({
'ip': host.get('ip'),
'bytes_sent_gb': round(bytes_sent / 1e9, 2),
'country': host.get('country', 'Unknown')
})
if suspicious:
print("ŞÜPHELI YÜKSEK TRAFİK:")
for h in suspicious:
print(f" {h['ip']} -> {h['bytes_sent_gb']} GB ({h['country']})")
EOF
InfluxDB ve Grafana Entegrasyonu
ntopng’nin kendi grafikleri güzel olsa da uzun vadeli veri saklama ve özelleştirilmiş dashboard’lar için Grafana ile entegrasyon çok daha güçlü sonuçlar verir.
ntopng’de InfluxDB Export Ayarı
Web arayüzünden System > Time Series > InfluxDB menüsüne gidin. Alternatif olarak yapılandırma dosyasına ekleyebilirsiniz:
# ntopng.conf'a ekle
--influxdb=http://localhost:8086
--influxdb-db=ntopng
--influxdb-user=ntopnguser
--influxdb-password=influx_sifresi
InfluxDB Veritabanı Oluşturma
# InfluxDB CLI ile bağlan
influx
# Veritabanı oluştur
CREATE DATABASE ntopng
# Retention policy ayarla (30 günlük saklama)
CREATE RETENTION POLICY "30d" ON ntopng DURATION 30d REPLICATION 1 DEFAULT
# Kullanıcı oluştur
CREATE USER ntopnguser WITH PASSWORD 'influx_sifresi'
GRANT ALL ON ntopng TO ntopnguser
Bu entegrasyon sayesinde Grafana üzerinde ağ trafiğinizin günlük, haftalık ve aylık trendlerini görselleştirebilir, anomalileri kolayca fark edebilirsiniz.
Güvenlik Duvarı Kuralları
ntopng’nin web arayüzünü ve flow kolektörünü güvenli hale getirmek için firewall kurallarını doğru ayarlamak gerekir.
# UFW kullanıyorsanız
# Sadece belirli IP'lere web arayüzü erişimi ver
sudo ufw allow from 192.168.1.0/24 to any port 3000
# nFlow verisi için (sadece router'lardan gelecek)
sudo ufw allow from 192.168.1.1 to any port 2055/udp
sudo ufw allow from 10.0.0.1 to any port 2055/udp
# sFlow için
sudo ufw allow from 192.168.1.0/24 to any port 6343/udp
# Dışarıdan erişimi engelle
sudo ufw deny 3000
# Firewalld kullanıyorsanız (RHEL/CentOS)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4"
source address="192.168.1.0/24" port protocol="tcp" port="3000" accept'
sudo firewall-cmd --reload
Nginx Reverse Proxy Arkasında Çalıştırma
Production ortamında ntopng’yi doğrudan dışa açmak yerine Nginx reverse proxy arkasında çalıştırmanızı öneririm. Bu sayede SSL terminasyonu ve erişim kontrolü de sağlayabilirsiniz.
# /etc/nginx/sites-available/ntopng
server {
listen 80;
server_name ntopng.sirketiniz.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name ntopng.sirketiniz.com;
ssl_certificate /etc/letsencrypt/live/ntopng.sirketiniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ntopng.sirketiniz.com/privkey.pem;
# Sadece iç ağdan erişim
allow 192.168.1.0/24;
allow 10.0.0.0/8;
deny all;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 900;
}
}
# Nginx konfigürasyonunu test et ve aktif et
sudo nginx -t
sudo ln -s /etc/nginx/sites-available/ntopng /etc/nginx/sites-enabled/
sudo systemctl reload nginx
Performans Tuning
Yüksek trafik ortamlarında ntopng’nin verimli çalışması için bazı sistem ayarlarını optimize etmek gerekir.
# /etc/sysctl.conf dosyasına ekle
# Ağ tampon boyutlarını artır
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.core.rmem_default=65536
net.core.wmem_default=65536
# NIC tampon boyutunu artır (ethtool ile)
sudo ethtool -G eth0 rx 4096 tx 4096
# Değişiklikleri uygula
sudo sysctl -p
ntopng yapılandırmasında da bellek ve performans ayarlarını optimize edin:
# ntopng.conf'a ekle
# Maksimum host sayısı
--max-num-hosts=500000
# CPU çekirdek sayısını belirt
--core-affinity=0,1,2,3
# Idle timeout (saniye)
--idle-local-host-cache-duration=300
--idle-flow-duration=30
ntopng REST API Kullanımı
ntopng’nin REST API’si otomasyon ve entegrasyon için son derece değerlidir. Birkaç pratik örnek verelim.
# Aktif arayüz listesini al
curl -s -u admin:sifreniz
"http://localhost:3000/lua/rest/v2/get/interface/list.lua" | python3 -m json.tool
# Belirli bir host'un detaylarını sorgula
curl -s -u admin:sifreniz
"http://localhost:3000/lua/rest/v2/get/host/data.lua?ifid=0&host=192.168.1.50"
| python3 -m json.tool
# Top 10 konuşan host'ları listele
curl -s -u admin:sifreniz
"http://localhost:3000/lua/rest/v2/get/host/active.lua?ifid=0&sortColumn=column_bytes&sortOrder=desc&length=10"
| python3 -m json.tool
# Aktif akışları listele
curl -s -u admin:sifreniz
"http://localhost:3000/lua/rest/v2/get/flow/active.lua?ifid=0"
| python3 -m json.tool
Bu API çağrılarını kullanarak kendi izleme scriptlerinizi veya SIEM entegrasyonlarınızı geliştirebilirsiniz.
Pratik Kullanım Önerileri
Yıllarca farklı ağ ortamlarında ntopng kullanan biri olarak birkaç pratik tavsiyem var:
- Yerel ağ tanımını doğru yapın:
-mparametresiyle yerel subnet’leri mutlaka tanımlayın. Aksi halde ntopng hangi trafiğin iç hangi trafiğin dış olduğunu anlayamaz.
- DNS çözümlemesini dikkatli kullanın: Büyük ağlarda DNS çözümleme ciddi gecikmelere yol açabilir.
--dns-mode=0ile kapatabilir veya--dns-mode=2ile sadece yerel host’lar için açabilirsiniz.
- Community sürümün sınırlarını bilin: Community sürümde tarihsel veri saklama süresi ve bazı gelişmiş özellikler kısıtlıdır. Kurumsal ihtiyaçlar için Enterprise sürümünü değerlendirin.
- PCAP yakalama boyutunu sınırlayın: Disk dolmasını önlemek için PCAP dosya boyutu limitlerini ayarlayın.
- Düzenli güncelleme yapın: ntopng sürekli gelişiyor. Güvenlik yamaları ve yeni özellikler için düzenli güncelleme kritik.
# Güncelleme komutu
sudo apt update && sudo apt upgrade ntopng
# Versiyon kontrol
ntopng --version
Sonuç
ntopng, ağ görünürlüğü konusunda güçlü ve erişilebilir bir çözüm sunuyor. Kurulumun basitliğinden REST API’nin esnekliğine, nFlow entegrasyonundan Grafana ile birlikte çalışma kapasitesine kadar her açıdan olgun bir araç. Community sürümüyle bile küçük ve orta ölçekli ağlarda ihtiyaç duyacağınız görünürlüğü elde edebilirsiniz.
Güvenlik perspektifinden bakıldığında, hangi cihazın ne kadar bant genişliği tükettiğini, hangi coğrafi konumlarla iletişim kurulduğunu ve hangi protokollerin kullanıldığını gerçek zamanlı olarak görmek inanılmaz değer taşır. Bir ransomware saldırısı sırasında anormal veri çıkışını, bir cihazın botnet üyesi olduğunu ya da birisinin ağı bant genişliği kötüye kullanıp kullanmadığını ancak bu tür araçlarla erken fark edebilirsiniz.
InfluxDB ve Grafana ile entegrasyon yaparak tarihsel trend analizi ekleyebilir, alarm scriptleriyle otomatik bildirim sistemi kurabilir ve REST API sayesinde mevcut SIEM veya monitoring altyapınıza entegre edebilirsiniz. Tüm bunları ücretsiz bir araçla yapabilmek, ntopng’yi sysadmin araç kutusunun olmazsa olmaz parçalarından biri yapıyor.