Takip et

BGP Duyurularını ve Yönlerini Ubuntu 18.04’te BGPalerter ile İzleme

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.

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.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.