BGP Duyurularını ve Yönlerini Ubuntu 18.04’te BGPalerter ile İzleme
İnternet’in omurgasını oluşturan Sınır Ağ Geçidi Protokolü (BGP), ağlar arasındaki yönlendirme bilgilerinin değiş tokuşunu sağlar. Bu protokolün etkin bir şekilde izlenmesi, ağ güvenliği, performans ve güvenilirlik açısından kritik öneme sahiptir. BGPalerter, BGP duyurularındaki anormal veya şüpheli değişiklikleri tespit etmek için tasarlanmış güçlü bir araçtır. Bu makalede, Ubuntu 18.04 üzerinde BGPalerter’ı kurmayı, yapılandırmayı ve BGP duyurularını izlemek için kullanmayı adım adım açıklayacağız.
BGP ve Önemi
BGP, İnternet’teki özerk sistemler (AS) arasındaki yolları belirleyen bir protokol olarak tanımlanabilir. Her özerk sistem, kendi yönlendirme politikasını belirler ve bu politikalar doğrultusunda diğer özerk sistemlere hangi IP adres bloklarına ulaşabileceğini duyurur. Bu duyurular, BGP tablolarında saklanır ve yönlendirme kararlarının alınmasında kullanılır.
BGP’nin düzgün çalışması, İnternet’in kesintisiz ve verimli bir şekilde işlemesi için hayati önem taşır. Ancak, BGP’nin doğası gereği, yanlış yapılandırmalar, operasyonel hatalar veya kötü niyetli saldırılar sonucunda anormal durumlar ortaya çıkabilir. Bu anormal durumlar arasında şunlar bulunabilir:
* Rota Sızıntıları (Route Leaks): Bir AS’nin, kendi erişim alanının dışındaki yönlendirme bilgilerini yanlışlıkla veya kasıtlı olarak başka bir AS’ye duyurmasıdır. Bu, trafik mühendisliği sorunlarına ve güvenlik açıklarına yol açabilir.
* Yönlendirme Anormallikleri (Routing Anomalies): Beklenmedik veya anormal yönlendirme değişiklikleridir. Örneğin, bir AS’nin aniden çok daha fazla veya az sayıda prefix duyurması, rota süresinin (path length) aşırı uzaması veya kısalması gibi durumlar.
* BGP Kaçakları (BGP Hijacks): Bir AS’nin, aslında kendisine ait olmayan IP adres bloklarını duyurmasıdır. Bu, trafik yönlendirmesini manipüle etmek, veri çalmak veya hizmet kesintisine neden olmak için kullanılabilir.
* AS Yolu Manipülasyonu (AS Path Manipulation): Bir AS’nin, kendi AS numarasını veya diğer AS numaralarını BGP duyurularında manipüle ederek trafiği kendi sistemlerine yönlendirmeye çalışmasıdır.
Bu tür anormal durumların erken tespiti, ağ operatörlerinin hızlı bir şekilde müdahale etmesini ve potansiyel sorunların etkisini en aza indirmesini sağlar. İşte bu noktada BGPalerter gibi araçlar devreye girer.
BGPalerter Nedir?
BGPalerter, BGP duyurularını izlemek ve tanımlanmış kurallara göre anormal durumları tespit etmek için tasarlanmış bir yazılımdır. Çeşitli BGP akışlarından (örneğin, RIPE RIS, RouteViews) gelen verileri işleyebilir ve ağ operatörlerine gerçek zamanlı uyarılar sağlayabilir. BGPalerter’ın temel özellikleri şunlardır:
* Çoklu Veri Kaynağı Desteği: Farklı BGP akış kaynaklarından veri alabilir.
* Kural Tabanlı Tespit: Önceden tanımlanmış veya özelleştirilmiş kurallara göre anormallikleri belirler.
* Uyarı Mekanizmaları: Tespit edilen anormallikler için e-posta, Slack, PagerDuty gibi çeşitli kanallar aracılığıyla uyarılar gönderebilir.
* Esnek Yapılandırma: Kurallar, izleme parametreleri ve uyarı hedefleri kolayca yapılandırılabilir.
* Veri Kaydı ve Analizi: BGP duyurularını ve tespit edilen anormallikleri kaydederek daha sonra analiz için kullanılabilir.
Ubuntu 18.04’te BGPalerter Kurulumu
Bu bölümde, Ubuntu 18.04 LTS (Bionic Beaver) üzerine BGPalerter’ın nasıl kurulacağını adım adım açıklayacağız. Kurulum, BGPalerter’ın kendisini ve bağımlılıklarını içeren bir süreçtir.
1. Sistem Güncellemesi
Kuruluma başlamadan önce sisteminizi güncel tutmak iyi bir uygulamadır. Terminali açın ve aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
2. Gerekli Bağımlılıkların Kurulumu
BGPalerter’ın çalışması için bazı kütüphanelere ve araçlara ihtiyacı vardır. Bunları aşağıdaki komutla kurabilirsiniz:
sudo apt install -y python3-pip python3-dev libpq-dev build-essential curl git
* python3-pip: Python paketlerini kurmak için kullanılır.
* python3-dev: Python geliştirme başlıklarını içerir.
* libpq-dev: PostgreSQL veritabanı bağlayıcısı için gereklidir.
* build-essential: C ve C++ derleyicileri gibi temel derleme araçlarını içerir.
* curl: Ağ üzerinden veri indirmek için kullanılır.
* git: Kaynak kodunu indirmek için kullanılır.
3. PostgreSQL Kurulumu ve Yapılandırması
BGPalerter, BGP verilerini ve yapılandırma bilgilerini depolamak için PostgreSQL veritabanını kullanır.
PostgreSQL Kurulumu:
sudo apt install -y postgresql postgresql-contrib libpq-dev
PostgreSQL Kullanıcısı ve Veritabanı Oluşturma:
BGPalerter için özel bir veritabanı kullanıcısı ve veritabanı oluşturacağız.
sudo su - postgres -c "createuser --interactive"
Bu komut sizden yeni bir kullanıcı adı isteyecektir. bgpalerter adını kullanabilirsiniz. Ardından, süperuser olup olmadığını soracaktır. n (hayır) seçeneğini seçin.
Ardından, veritabanını oluşturun:
sudo su - postgres -c "createdb bgpalerter"
Ve bu veritabanına az önce oluşturduğunuz bgpalerter kullanıcısının sahip olmasını sağlayın:
sudo su - postgres -c "grant all privileges on database bgpalerter to bgpalerter"
Yerel Erişim İçin pg_hba.conf Yapılandırması:
PostgreSQL’in yerel olarak bgpalerter kullanıcısının bgpalerter veritabanına şifresiz bağlanmasına izin vermek için pg_hba.conf dosyasını düzenlemeniz gerekir.
sudo nano /etc/postgresql/9.5/main/pg_hba.conf
Dosyanın sonuna aşağıdaki satırı ekleyin:
local all bgpalerter trust
Dosyayı kaydedip çıkın (Ctrl+X, Y, Enter).
PostgreSQL servisini yeniden başlatın:
sudo systemctl restart postgresql
4. BGPalerter Kurulumu
Şimdi BGPalerter’ı kurabiliriz. Genellikle Python paketleri pip ile kurulur.
sudo pip3 install --upgrade pip
sudo pip3 install --upgrade setuptools
sudo pip3 install --upgrade bgpalerter
Bu komutlar, BGPalerter’ı ve gerekli Python bağımlılıklarını kuracaktır.
5. BGPalerter Yapılandırması
BGPalerter’ın düzgün çalışması için yapılandırılması gerekir. Ana yapılandırma dosyası genellikle /etc/bgpalerter/bgpalerter.conf konumundadır. Ancak, kurulum sırasında bu dosya otomatik olarak oluşturulmayabilir. BGPalerter, varsayılan olarak ~/.config/bgpalerter/bgpalerter.conf veya /etc/bgpalerter/bgpalerter.conf konumlarında yapılandırma dosyası arar.
Öncelikle, yapılandırma dizinini oluşturabiliriz:
sudo mkdir -p /etc/bgpalerter
sudo chown $USER:$USER /etc/bgpalerter
Ardından, varsayılan bir yapılandırma dosyası oluşturabiliriz. BGPalerter’ın kendi belgelerinden veya GitHub deposundan bir örnek yapılandırma dosyası alıp düzenlemek en iyi yöntemdir.
GitHub deposundan varsayılan yapılandırmayı çekelim:
cd /tmp
git clone https://github.com/Jordi-Serrano/bgpalerter.git
sudo cp /tmp/bgpalerter/etc/bgpalerter.conf /etc/bgpalerter/
sudo rm -rf /tmp/bgpalerter
Şimdi /etc/bgpalerter/bgpalerter.conf dosyasını düzenleyelim:
sudo nano /etc/bgpalerter/bgpalerter.conf
Bu dosyada düzenlemeniz gereken bazı temel ayarlar şunlardır:
* database: PostgreSQL bağlantı bilgilerinizi belirtin.
[database]
type = postgresql
host = localhost
port = 5432
user = bgpalerter
password = <parolanızı_buraya_girin> # PostgreSQL kullanıcısı için bir parola ayarlayın.
database = bgpalerter
Not: PostgreSQL kullanıcısı için bir parola ayarlamadıysanız, pg_hba.conf dosyasını düzenleyerek şifresiz erişimi sağlamış olmalısınız. Eğer parola ayarladıysanız, burada doğru parolayı girmeniz gerekecektir.
* bgpstream: Hangi BGP veri kaynaklarını kullanacağınızı belirtin. RouteViews ve RIPE RIS yaygın olarak kullanılır.
[bgpstream]
# RouteViews (rv2.example.com)
# rv2.example.com
# rv3.example.com
# RIPE RIS (ris.ripe.net)
# ris.ripe.net
# ris.ripe.net:5432 (if using a remote RIS collector)
collectors = rv2.example.com, ris.ripe.net
Bu satırı, erişebileceğiniz BGP akış toplayıcılarının adresleriyle güncelleyin.
* rules: Hangi kuralların etkinleştirileceğini ve hangi eşiklerin kullanılacağını belirleyebilirsiniz. Başlangıçta varsayılan kuralları kullanabilirsiniz.
* alerts: Uyarıların nasıl gönderileceğini yapılandırın. E-posta, Slack, vb. için ayarlar burada yapılır. Örneğin, e-posta için:
[alerts]
# E-posta ayarları
# smtp_server = smtp.example.com
# smtp_port = 587
# smtp_user = <kullanici_adi>
# smtp_password = <parola>
# smtp_tls = true
# sender_email = bgpalerter@example.com
# recipient_emails = admin@example.com, sec@example.com
Bu ayarları, e-posta gönderme yeteneğinize göre yapılandırmanız gerekir.
Yapılandırma dosyasını kaydettikten sonra, bgpalerter kullanıcısının bu dosyaya erişebildiğinden emin olun.
sudo chown bgpalerter:bgpalerter /etc/bgpalerter/bgpalerter.conf
Eğer bgpalerter kullanıcısı oluşturmadıysanız, bu adımı atlayabilir ve yapılandırma dosyasının root veya www-data gibi başka bir kullanıcı tarafından okunabildiğinden emin olabilirsiniz. Genellikle, BGPalerter’ı bir servis olarak çalıştıracağınız kullanıcıya izin vermek en iyisidir.
6. BGPalerter Veritabanı Tablolarını Oluşturma
BGPalerter’ın kullanacağı veritabanı tablolarını oluşturmak için bir komut satırı aracı bulunur.
sudo -u bgpalerter bgpalerter --create-tables --config /etc/bgpalerter/bgpalerter.conf
Bu komut, yapılandırma dosyasında belirtilen PostgreSQL veritabanında gerekli tabloları oluşturacaktır.
7. BGPalerter’ı Servis Olarak Çalıştırma
BGPalerter’ı sistem başlangıcında otomatik olarak başlatmak ve yönetmek için systemd servis dosyası kullanmak en iyi yoldur. BGPalerter’ın kurulumuyla birlikte bir servis dosyası gelmiş olabilir veya kendiniz oluşturmanız gerekebilir.
Eğer /lib/systemd/system/bgpalerter.service gibi bir dosya varsa, onu etkinleştirebilirsiniz:
sudo systemctl enable bgpalerter
sudo systemctl start bgpalerter
Eğer bir servis dosyası yoksa, kendiniz oluşturabilirsiniz. Aşağıdaki içeriğiyle /etc/systemd/system/bgpalerter.service dosyasını oluşturun:
[Unit]
Description=BGPalerter - BGP Anomaly Detection
After=network.target postgresql.service
[Service]
User=bgpalerter
Group=bgpalerter
WorkingDirectory=/home/bgpalerter # BGPalerter kullanıcısının home dizini
ExecStart=/usr/local/bin/bgpalerter --config /etc/bgpalerter/bgpalerter.conf
Restart=always
RestartSec=3
[Install]
Section=multi-user.target
Önemli Notlar:
* User ve Group alanlarını, BGPalerter’ı çalıştıracağınız kullanıcı ve gruba göre ayarlayın. Eğer bgpalerter kullanıcısı oluşturmadıysanız, root veya başka bir uygun kullanıcıyı kullanabilirsiniz.
* WorkingDirectory alanını, ilgili kullanıcının home dizinine ayarlayın.
* ExecStart komutundaki bgpalerter yürütülebilir dosyasının yolunu kontrol edin. Genellikle /usr/local/bin/bgpalerter veya /usr/bin/bgpalerter olabilir. which bgpalerter komutu ile bulabilirsiniz.
Servis dosyasını oluşturduktan sonra, systemd’yi yeniden yükleyin ve servisi başlatın:
sudo systemctl daemon-reload
sudo systemctl enable bgpalerter
sudo systemctl start bgpalerter
Servisin durumunu kontrol edin:
sudo systemctl status bgpalerter
Herhangi bir hata varsa, logları inceleyin:
sudo journalctl -u bgpalerter -f
BGP Duyurularını İzleme ve Yapılandırma
BGPalerter kurulup çalıştırıldıktan sonra, BGP duyurularını izlemeye başlayacaktır. Ancak, etkin bir izleme için kuralları ve uyarıları yapılandırmak önemlidir.
1. BGPalerter Kurallarını Anlama
BGPalerter, çeşitli kural modülleri aracılığıyla BGP duyurularını analiz eder. Bazı yaygın kural modülleri şunlardır:
* Announcements: Yeni duyuruları, değişiklikleri ve iptalleri izler.
* Hijacks: IP adres bloklarının kaçırılmasını tespit etmeye çalışır.
* PrefixUpdates: Bir prefix için duyurulan AS yolunda önemli değişiklikleri algılar.
* Routes: Belirli bir AS’ye gelen veya giden rota sayısındaki ani değişiklikleri izler.
* BGPStream: BGPStream veri kaynağındaki anormallikleri tespit eder.
Bu kurallar, bgpalerter.conf dosyasındaki [rules] bölümünde etkinleştirilir ve yapılandırılır.
Örnek bir [rules] bölümü:
[rules]
Announce Rule: Detects new announcements, withdrawals, or changes
Thresholds are in announcements per second
announcements.enabled = true
announcements.threshold = 1000
Prefix Update Rule: Detects significant changes in AS paths for prefixes
prefixupdates.enabled = true
prefixupdates.threshold = 5 # Number of significant AS path changes per minute
Hijack Rule: Attempts to detect IP address hijacks
hijacks.enabled = true
You might need to configure specific ASNs to monitor for hijacks
hijacks.asns_to_monitor = 12345, 67890
Route Count Rule: Monitors the number of routes seen for/from an ASN
routes.enabled = true
routes.threshold = 1000 # Number of route changes per minute
Her kuralın kendi parametreleri ve eşik değerleri vardır. Bu eşik değerlerinin, kendi ağınızın normal BGP trafiğine göre ayarlanması önemlidir. Başlangıçta, varsayılan değerlerle başlayabilir ve zamanla ince ayarlar yapabilirsiniz.
2. Uyarıları Yapılandırma
BGPalerter’ın tespit ettiği anormallikler hakkında sizi bilgilendirmesi için uyarı mekanizmalarını yapılandırmanız gerekir.
E-posta Uyarıları:
Daha önce bahsedildiği gibi, [alerts] bölümünde SMTP sunucu bilgilerinizi, kimlik bilgilerinizi ve alıcı e-posta adreslerini yapılandırabilirsiniz.
[alerts]
E-posta ayarları
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_user = your_email@gmail.com
smtp_password = your_app_password # Gmail için uygulama şifresi kullanın
smtp_tls = true
sender_email = bgpalerter@yourdomain.com
recipient_emails = network_ops@yourdomain.com, security_team@yourdomain.com
Önemli: Gmail kullanıyorsanız, doğrudan şifrenizi kullanmak yerine bir “Uygulama Şifresi” oluşturmanız gerekebilir. Google hesabınızın güvenlik ayarlarından bu şifreyi oluşturabilirsiniz.
Slack Uyarıları:
Slack ile entegrasyon için, bir Slack webhook URL’si almanız ve bunu yapılandırmanız gerekir.
[alerts]
Slack ayarları
slack_webhook_url = https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
BGPalerter’ın bgpalerter.conf dosyasındaki [alerts] bölümünde Slack ile ilgili diğer ayarları da bulabilirsiniz.
3. BGP Veri Kaynaklarını Güncelleme
[bgpstream] bölümündeki collectors ayarını, erişebildiğiniz güvenilir BGP akış toplayıcılarının adresleriyle güncellediğinizden emin olun. Yaygın olarak kullanılan toplayıcılar şunlardır:
* RouteViews: rv2.example.com, rv3.example.com
* RIPE RIS: ris.ripe.net
Bu toplayıcıların adresleri zamanla değişebilir, bu nedenle güncel listeleri BGPalerter’ın veya ilgili projelerin belgelerinden kontrol etmeniz önerilir.
4. Özelleştirilmiş Kurallar Oluşturma
BGPalerter, genellikle Python ile yazılmış modüler kurallara sahiptir. Daha gelişmiş senaryolar için kendi kurallarınızı oluşturabilir veya mevcut kuralları değiştirebilirsiniz. Bu, daha derinlemesine analiz ve özelleştirilmiş uyarılar için güçlü bir özelliktir.
Kendi kurallarınızı oluşturmak için BGPalerter’ın kaynak kodunu incelemeniz ve Python programlama bilgisine sahip olmanız gerekir. Kurallar genellikle /usr/local/lib/python3.6/dist-packages/bgpalerter/rules/ (veya benzer bir yolda) bulunur.
5. Logları ve Veritabanını İzleme
BGPalerter’ın çalışmasını izlemek için sistem loglarını (journalctl -u bgpalerter) ve PostgreSQL veritabanını düzenli olarak kontrol edin. Veritabanında, tespit edilen anormallikler ve ilgili BGP verileri saklanır.
Veritabanını sorgulamak için psql komutunu kullanabilirsiniz:
sudo -u postgres psql bgpalerter
Ardından, \dt komutuyla tabloları listeleyebilir ve SELECT * FROM anomalies; gibi sorgularla anormallikleri görebilirsiniz.
İleri Düzey Kullanım ve Entegrasyonlar
BGPalerter, temel izleme işlevlerinin ötesinde çeşitli ileri düzey kullanım senaryoları sunar:
* API Entegrasyonu: BGPalerter, tespit edilen anormallikleri API aracılığıyla sunabilir. Bu, diğer ağ yönetim araçlarıyla veya güvenlik bilgi ve olay yönetimi (SIEM) sistemleriyle entegrasyonu kolaylaştırır.
* Otomatik Müdahale: Tespit edilen anormalliklere karşı otomatik müdahale mekanizmaları geliştirebilirsiniz. Örneğin, belirli bir BGP kaçırma durumu tespit edildiğinde, otomatik olarak bir ACL (Erişim Kontrol Listesi) kuralı ekleyerek trafiği engelleyebilirsiniz. Ancak bu tür otomatik müdahaleler dikkatli bir şekilde tasarlanmalı ve test edilmelidir.
* Performans Optimizasyonu: Büyük ağlar için, BGPalerter’ın performansını optimize etmek gerekebilir. Bu, daha güçlü bir sunucu kullanmayı, veritabanı indekslerini optimize etmeyi veya daha az sayıda BGP akış toplayıcısını izlemeyi içerebilir.
* Güvenlik Politikaları: Kendi AS’nizin politikalarına uygun olarak, BGPalerter’ın kurallarını ve eşiklerini ayarlayarak güvenlik politikalarınızı güçlendirebilirsiniz.
Sonuç
BGPalerter, Ubuntu 18.04 üzerinde BGP duyurularını ve yönlerini izlemek için güçlü ve esnek bir araçtır. Bu makalede, kurulumdan yapılandırmaya ve temel kullanıma kadar adım adım bir rehber sunduk. BGP’nin karmaşık dünyasında ağ güvenliğini ve istikrarını sağlamak için BGPalerter gibi araçların doğru şekilde kullanılması, ağ operatörleri için vazgeçilmezdir. Düzenli olarak yapılandırmayı gözden geçirmek, kuralları ayarlamak ve uyarıları etkin bir şekilde yönetmek, BGPalerter’dan en iyi şekilde yararlanmanızı sağlayacaktır. İnternet altyapısının güvenliği ve güvenilirliği, bu tür proaktif izleme araçlarıyla önemli ölçüde artırılabilir.