İçeriğe geç
NetDevOps
6 dk okuma Güvenlik

OpenVAS GVM Kurulumu: Zafiyet Tarama ve Güvenlik Analizi

Greenbone Community Edition eski OpenVAS ismiyle biliniyor, bugün ikisi aynı kod tabanına işaret ediyor. Kurumsal sürümüne kıyasla bazı özellikler eksik olsa da öz çekirdek aynı; gvmd, GSA web arayüzü, OpenVAS tarayıcı ve Notus bileşenlerinden oluşan bir yığın. Bu parçalar arasındaki iletişimi anlamadan kurulum yapmaya kalkmak, servislerin neden birbirini göremediğini anlamayı zorlaştırıyor. Bu yüzden önce mimariyi netleştirmek gerekiyor.

Mimari Neden Bu Kadar Dağınık

Sistem üç ana parçadan oluşuyor. gvmd merkezi yönetim servisi; kullanıcı yönetimi, zamanlanmış görevler, PostgreSQL veritabanı bağlantısı ve sonuçların saklanması burada. GSA yani Greenbone Security Assistant, kullanıcının tarayıcıdan gördüğü arayüz; arkasında gsad adında bir web sunucusu çalışıyor ve bu sunucu gvmd ile GMP (Greenbone Management Protocol) üzerinden konuşuyor. OpenVAS Scanner ise asıl zafiyet taramasını yapan motor; NASL (Network Attack Scripting Language) scriptlerini çalıştırıyor.

Tarayıcı ile gvmd arasında bir ara katman var: ospd-openvas. Bu daemon OSP (Open Scanner Protocol) üzerinden gvmd'den gelen istekleri alıyor ve OpenVAS Scanner'a iletiyor. Scan sonuçları da aynı yoldan geri dönüyor. Yani veri akışı şöyle: tarayıcı → gsad → gvmd → ospd-openvas → openvas-scanner → hedef sistem.

Bir de Notus Scanner var. Normalde OpenVAS, local security check (LSC) için her bir NASL scriptini tek tek çalıştırır; bu yavaştır çünkü her script ayrı ayrı yüklenir. Notus, hedef sistemde kurulu yazılımları tek seferde listeliyor ve bunu bilinen zafiyet veritabanıyla doğrudan karşılaştırıyor. NASL LSC'lerine gerek kalmıyor, tarama süresi ciddi şekilde kısalıyor.

Kaynak Derleme ve Paket Kurulumu Arasındaki Fark

Ubuntu 20.04 üzerinde kaynaktan derlemek için build-essential, cmake, pkg-config, libglib2.0-dev, libgpgme-dev, libgnutls28-dev, uuid-dev, libssh-gcrypt-dev, libldap2-dev, libradcli-dev, libhiredis-dev, libpcap-dev, bison, libksba-dev, libsnmp-dev, gcc-mingw-w64, heimdal-dev, libpopt-dev, xmltoman, redis-server, xsltproc, libical-dev gibi bağımlılıklar gerekiyor. Her bileşen ayrı ayrı klonlanıyor: gvm-libs, openvas, gvmd, openvas-smb, gsa, ospd-openvas, ospd. Her biri cmake ile configure edilip make && make install ile kuruluyor.

Kali Linux'da bu iş çok daha basit. apt install gvm tek komutla tüm bileşenleri kuruyor. Ardından gvm-setup veritabanını, servisleri ve admin kullanıcısını oluşturuyor. Kurulumun sağlıklı olup olmadığını gvm-check-setup ile kontrol edebilirsin. Çıktıda "It seems like your GVM-22.5.0 installation is OK" gibi bir satır görmek istiyorsun.

Kaynaktan derleme yolunda Redis yapılandırması kritik. OpenVAS Redis'i kullanıyor ve sudoers secure_path içine /opt/gvm/sbin eklenmeli. Aksi halde servisler Redis'e bağlanamıyor. Ayrıca greenbone-nvt-sync ile NVT feedlerinin düzenli güncellenmesi gerekiyor; bu feed, tarayıcının hangi zafiyetleri test edeceğini belirleyen NASL scriptlerini içeriyor.

Docker ve Sanal Cihaz Seçenekleri

Greenbone resmi olarak OPENVAS OS adında bir sanal cihaz dağıtıyor. OVA formatında geliyor ve VMware ESXi 7.0+ ya da Hyper-V 2016+ üzerinde çalışıyor. Minimum 4 vCPU, 16 GB RAM ve 1000 GB SSD istiyor. Bu cihaz GOS (Greenbone Operating System) üzerine kurulu ve ürün konteyneri içermiyor; önce ağ yapılandırması yapıp sonra ürün konteynerini deploy etmen gerekiyor.

Docker için resmi olmayan topluluk imajları mevcut ama Greenbone bunları resmi olarak desteklemiyor. Kaynaktan derlemek veya Kali paketlerini kullanmak, üretim ortamında daha güvenilir. Docker imajları hızlı test için işe yarasa da feed senkronizasyonu ve servis bağımlılıklarında sorun yaşama olasılığı yüksek.

İlk Tarama ve Feed Senkronizasyonu

Kurulum bittikten sonra servisleri başlatmak için gvm-start kullanılıyor. Durdurmak için gvm-stop. Varsayılan olarak GSA sadece localhost üzerinde dinliyor. Uzaktan erişim için gsad.service dosyasında ExecStart satırını değiştirmen gerekiyor: --listen=127.0.0.1 --port=9392 yerine --listen=internal_ip --port=9392 --mlisten=internal_ip --mport=9390 şeklinde. Aynı şekilde gvmd.service dosyasında --listen=internal_ip --port=9390 eklemek gerekiyor. Değişiklikten sonra systemctl daemon-reload ve servis restart şart.

Web arayüzüne https://ip:9392 üzerinden erişiliyor. İlk girişte admin kullanıcısını ve setup sırasında üretilen parolayı kullanıyorsun. Feed senkronizasyonu henüz tamamlanmadıysa tarama başlatamazsın; Administration → Feed Status ekranından tüm feedlerin "Current" olduğundan emin olmalısın. Bu süreç sistemin performansına göre birkaç dakika ile birkaç saat arasında değişiyor.

Tanımlama edilememiş feed sorunları için manuel senkronizasyon komutları var:

sudo runuser -u _gvm -- greenbone-feed-sync --type GVMD_DATA
sudo runuser -u _gvm -- greenbone-feed-sync --type SCAP
sudo runuser -u _gvm -- greenbone-feed-sync --type CERT

Bu komutları çalıştırdıktan sonra gvm-stop && gvm-start ile servisleri yeniden başlatmak gerekiyor.

Üretim Ortamında Dikkat Edilecekler

Tarama hedeflerini tanımlarken network interface seçimi önemli. OpenVAS, hedefe ulaşmak için sistemdeki bir interface'i kullanıyor. Yanlış interface seçilirse tarama paketleri yanlış subnet'e gönderilir. Ayrıca tarama yoğunluğu yüksek olduğunda hedef sistemlerde servis kesintileri yaşanabilir; bu yüzden tarama takvimini yoğun saatlerin dışına almak akıllıca.

Raporlama tarafında PDF ve XML çıktıları alınabiliyor. Greenbone Enterprise sürümünde compliance raporları da var ama Community Edition'da temel zafiyet raporları mevcut. Raporların otomatik olarak paylaşılması için GMP üzerinden script yazılabilir; gvm-tools paketi Python ile GMP protokolüne erişim sağlıyor.

Sistem kaynakları konusunda ciddi olmak lazım. Minimum 4 GB RAM öneriliyor ama 8 GB ve üzeri taramaların hızını ciddi şekilde etkiliyor. Disk tarafında 50 GB altına inme; feed verileri ve tarama sonuçları zamanla büyüyor. Kaynaktan derleme yapıyorsan /opt/gvm altındaki log ve pid dosyalarını düzenli kontrol et.

Güvenlik açısından GSA arayüzünü dışarıya açarken TLS sertifikası kullanmak şart. Varsayılan self-signed sertifika test için yeterli ama üretimde geçerli bir sertifika kullanmak gerekli. Ayrıca admin parolasını setup sonrası değiştirmeyi unutma; /etc/gvm/pwpolicy.conf dosyasından parola politikasını da özelleştirebilirsin.

ctCertWatch

SSL sertifika yayınlarını gerçek zamanlı takip eden bir izleme servisi. Regex filtreleme, DNS çözümleme ve webhook uyarıları ile phishing domainlerini, marka taklidini ve yetkisiz sertifikaları anında…

Rust

ipReconary

IP aralıkları, alt ağlar ve ASN bilgilerine dayalı olarak host, domain ve servis keşfi yapan bir ağ keşif (recon) aracı. Güvenlik uzmanları ve OSINT araştırmacıları için ağ altyapısını hızlı ve güveni…

Rust

Wireguard-Server-Panel

Web arayüzüne sahip, kendi sunucunuzda barındırılan bir WireGuard VPN servisi. İstemci yönetimi, mobil bağlantı için QR kod desteği, gerçek zamanlı trafik istatistikleri ve bağlantı kayıtları sunar. T…

LoadAlertTracker

Sistem yükünü neredeyse hiç kaynak tüketmeden izleyen, hafif bir servis. Belirlenen eşikler aşıldığında Telegram, Discord ve Mattermost gibi platformlara gerçek zamanlı uyarı gönderir.

Rust

Trustsslroot

Tek komutla eksiksiz bir özel PKI yapısı (Kök CA → Ara CA → sunucu ve istemci sertifikaları) oluşturan araç. Farklı formatlarda (p12/bks/jks) paketler üretir ve kullanıma hazır çıktı klasörleri sunar.

Go

DDNS-FW

Değişken IP adresini DDNS üzerinden gerçek zamanlı takip eden, hafif ve güvenilir bir araç. İzin verilen IP listelerini otomatik güncelleyerek kesintisiz erişim ve güvenlik sağlar. Tek dosyadan çalışı…

Rust

Cloudfiltred

Sunucu üzerinde 80/443 portlarına erişimi yalnızca Cloudflare IP aralıklarıyla sınırlandıran, tek dosyadan çalışan bir Linux servisi. Kendini kurar, sistem servisi olarak çalışır ve IP listelerini düz…

Rust

node_exporter

Linux için geliştirilmiş, hafif ve tek dosyadan çalışan, güvenli erişim kontrollü bir sistem metrikleri servisi.

Rust