Debian 8 Üzerine Yerel Bir OSSEC Kurulumu Nasıl Yapılır?
Günümüzün sürekli gelişen siber tehdit ortamında, sistem güvenliğini sağlamak her zamankinden daha kritik hale gelmiştir. Bir sistemin güvenliğini sağlamanın temel taşlarından biri, içeriden ve dışarıdan gelebilecek saldırıları tespit etmek ve bunlara karşı proaktif önlemler almaktır. İşte bu noktada, Host-based Intrusion Detection Systems (HIDS) olarak bilinen ana bilgisayar tabanlı saldırı tespit sistemleri devreye girer. Bu makale, popüler bir açık kaynak HIDS çözümü olan OSSEC’in Debian 8 (Jessie) işletim sistemi üzerine yerel bir kurulumunun nasıl yapılacağını adım adım açıklamaktadır. Debian 8 her ne kadar eski bir sürüm olsa da, birçok eski sistemde hala kullanılmakta olup, OSSEC’in temel kurulum ve konfigürasyon prensiplerini anlamak için iyi bir başlangıç noktası sunar.
OSSEC Nedir ve Neden Önemlidir?
OSSEC (Open Source Security) HIDS, sunucular, iş istasyonları ve ağ cihazları gibi sistemlerde güvenlik olaylarını izlemek, analiz etmek ve raporlamak için tasarlanmış kapsamlı bir güvenlik çözümüdür. Temel işlevleri şunlardır:
* Log Analizi: Sistem loglarını (syslog, auth.log, Apache logları vb.) gerçek zamanlı olarak izler ve önceden tanımlanmış kurallar veya anormallikler temelinde güvenlik olaylarını tespit eder.
* Dosya Bütünlüğü Kontrolü (File Integrity Monitoring – FIM): İşletim sisteminin kritik dosyalarında, konfigürasyon dosyalarında ve kullanıcı dizinlerinde yapılan yetkisiz değişiklikleri izler. Bir dosyanın hash değeri değiştiğinde (örneğin, bir rootkit yüklendiğinde veya bir saldırgan bir konfigürasyon dosyasını değiştirdiğinde) uyarı verir.
* Rootkit Tespiti: Sistemde gizlenmiş rootkit’leri ve diğer kötü amaçlı yazılımları tespit etmek için çeşitli teknikler kullanır.
* Aktif Yanıt (Active Response): Belirli güvenlik olaylarına otomatik olarak yanıt verebilir. Örneğin, başarısız oturum açma girişimlerinin belirli bir sayısına ulaşıldığında IP adresini güvenlik duvarında engelleyebilir.
* Sistem Zayıflık Tespiti: Zayıf konfigürasyonları, açık portları ve diğer potansiyel güvenlik açıklarını tarar.
OSSEC’in yerel bir kurulumu, özellikle tek bir sunucunun veya kritik bir iş istasyonunun derinlemesine izlenmesi gerektiğinde son derece faydalıdır. Bu kurulum, sistemin kendi içindeki güvenlik olaylarını, dışarıdan gelebilecek bir saldırıdan ziyade, sistemin kendisinin davranışlarını ve konfigürasyonlarını hedef alarak izler.
Ön Gereksinimler
Bu rehbere başlamadan önce, aşağıdaki ön koşulların karşılandığından emin olun:
* Debian 8 (Jessie) İşletim Sistemi: Temiz bir Debian 8 kurulumu. Makine güncel ve internet erişimine sahip olmalıdır.
* Root veya Sudo Yetkileri: Kurulum ve konfigürasyon işlemleri için yönetici yetkilerine sahip bir kullanıcı.
* Temel Linux Komut Satırı Bilgisi: Dosya navigasyonu, paket yönetimi ve temel komutları kullanma becerisi.
* İnternet Bağlantısı: OSSEC kaynak kodunu ve gerekli bağımlılıkları indirmek için internet bağlantısı gereklidir.
Not: Debian 8, 2020 yılında yaşam döngüsünün sonuna (End-of-Life – EOL) ulaşmış eski bir işletim sistemidir. Güvenlik ve güncel özellikler açısından, yeni projelerde Debian’ın daha güncel sürümlerini (örneğin, Debian 11 veya 12) kullanmanız şiddetle tavsiye edilir. Ancak, bu rehber, eski sistemlerde OSSEC kurulum prensiplerini anlamak için hala geçerli bir örnektir.
OSSEC Mimarisi ve Bileşenleri
OSSEC, üç ana bileşen etrafında döner:
* OSSEC Manager (Sunucu): Merkezi bir sunucu olarak çalışır ve ağdaki diğer makinelerden (ajanlardan) gelen logları ve güvenlik olaylarını toplar, analiz eder ve depolar. Kuralları ve dekoderleri barındırır.
* OSSEC Agent (Ajan): İzlenecek her bir makineye (iş istasyonu, sunucu) kurulur. Kendi sistem loglarını, dosya bütünlüğü değişikliklerini ve diğer güvenlik olaylarını toplar ve bunları Manager’a iletir.
* OSSEC HIDS (Yerel Kurulum): Bu rehberde odaklandığımız kurulum tipidir. Bu senaryoda, OSSEC Manager ve Agent işlevleri tek bir makine üzerinde birleşir. Makine, kendi loglarını ve güvenlik olaylarını kendisi izler ve analiz eder. Harici bir Manager’a veri göndermez veya ondan veri almaz. Bu, özellikle tek bir sunucunun izlenmesi gerektiğinde veya dağıtık bir yapıya ihtiyaç duyulmadığında idealdir.
Bu makalede, OSSEC HIDS’in yerel kurulumuna odaklanacağız, yani Debian 8 makinemizin hem OSSEC Manager hem de OSSEC Agent işlevlerini tek başına yerine getirmesini sağlayacağız.
OSSEC Kurulumu Adımları
OSSEC’i Debian 8 üzerine kurmak için kaynak koddan derleme yöntemini kullanacağız, zira Debian 8’in varsayılan depolarında OSSEC’in güncel bir sürümü bulunmayabilir veya hiç bulunmayabilir.
1. Sistem Güncellemesi ve Bağımlılıkların Kurulması
Kuruluma başlamadan önce, sisteminizin güncel olduğundan ve OSSEC’i derlemek için gerekli tüm bağımlılıklara sahip olduğundan emin olun.
sudo apt-get update
sudo apt-get upgrade -y
Ardından, OSSEC’i derlemek için gerekli olan paketleri kuralım. Bu paketler genellikle build-essential (derleyici araçları), libssl-dev (SSL/TLS kütüphaneleri), libpcre3-dev (düzenli ifade kütüphanesi) ve libsqlite3-dev (SQLite veritabanı kütüphanesi) içerir.
sudo apt-get install -y build-essential libssl-dev libpcre3-dev libsqlite3-dev
2. OSSEC Kaynak Kodunun İndirilmesi
Şimdi OSSEC’in kaynak kodunu indirelim. OSSEC’in resmi GitHub deposundan en son kararlı sürümü alabilirsiniz. Bu rehber için, Debian 8 döneminde yaygın olan veya hala stabil kabul edilen bir sürümü (örneğin, 2.9.3) kullanacağız. /opt veya /usr/src gibi bir dizine geçmek iyi bir uygulamadır.
cd /opt
sudo wget https://github.com/ossec/ossec-hids/archive/2.9.3.tar.gz
İndirme tamamlandıktan sonra, sıkıştırılmış dosyayı açın:
sudo tar -xvzf 2.9.3.tar.gz
Açılan dizine geçin:
cd ossec-hids-2.9.3
3. OSSEC Derleme ve Kurulumu
OSSEC’in kurulum betiğini çalıştırarak derleme ve kurulum sürecini başlatın.
sudo ./install.sh
Kurulum betiği size bir dizi soru soracaktır. Bu sorulara doğru yanıtları vermek önemlidir:
1. Dil seçimi: en (English) yazıp Enter’a basın.
2. Kurulum tipi: What kind of installation do you want (server, agent, local, help)? sorusuna local yazıp Enter’a basın. Bu, hem Manager hem de Agent işlevlerini tek bir makinede birleştiren yerel bir kurulum yapacağımızı belirtir.
3. Kurulum dizini: Where do you want to install OSSEC HIDS? [/var/ossec] Varsayılan dizini (/var/ossec) kullanmak genellikle en iyi seçenektir. Enter’a basarak onaylayın.
4. E-posta bildirimleri: Do you want to receive email notifications? (y/n) Güvenlik olayları hakkında e-posta almak istiyorsanız y yazın ve e-posta adresinizi girin. Aksi takdirde n yazın. Daha sonra konfigürasyon dosyasında da ayarlanabilir.
5. Syslog desteği: Do you want to enable Syslog output? (y/n) Genellikle n olarak bırakılabilir, zira yerel kurulumda loglar zaten OSSEC tarafından işlenir. Harici bir SIEM’e gönderilecekse y seçeneği değerlendirilebilir.
6. Rootcheck etkinleştirme: Do you want to enable Rootcheck? (y/n) Kesinlikle y seçeneğini seçin. Bu, rootkit tespiti için önemlidir.
7. Aktif yanıt etkinleştirme: Do you want to enable Active Response? (y/n) Potansiyel saldırılara otomatik olarak yanıt vermek istiyorsanız y seçeneğini seçin. SSH denemelerinde IP engelleme gibi özellikler sağlar.
8. Dosya bütünlüğü kontrolü (FIM) etkinleştirme: Do you want to enable the Firewall-drop response? (y/n) Bu soru, önceki “Active Response” sorusuna y dediyseniz gelir. y seçeneğini seçin.
9. Sistem bütünlüğü kontrolü (Integrity Checking) etkinleştirme: Bu soru FIM için belirli dizinleri sormak içindir. /etc, /usr/bin, /usr/sbin, /bin, /sbin gibi kritik dizinler varsayılan olarak izlenir. Eklemek istediğiniz başka dizinler varsa, bunları belirtebilirsiniz. Genellikle varsayılanlar yeterlidir.
Tüm soruları yanıtladıktan sonra, kurulum betiği OSSEC’i derlemeye ve kurmaya başlayacaktır. Bu işlem birkaç dakika sürebilir. Kurulum tamamlandığında, “OSSEC HIDS installation finished” mesajını göreceksiniz.
4. OSSEC Servisinin Başlatılması
Kurulum tamamlandıktan sonra, OSSEC servisini başlatabiliriz.
sudo /var/ossec/bin/ossec-control start
Servisin başarıyla başlatılıp başlatılmadığını kontrol etmek için:
sudo /var/ossec/bin/ossec-control status
Bu komut, OSSEC’in tüm bileşenlerinin (ossec-maild, ossec-execd, ossec-logcollector, ossec-monitord, ossec-analysisd, ossec-syscheckd, ossec-rootcheck) çalıştığını göstermelidir.
OSSEC’in loglarını gerçek zamanlı olarak izlemek için aşağıdaki komutu kullanabilirsiniz:
tail -f /var/ossec/logs/ossec.log
Burada OSSEC’in başlangıçta yaptığı kontrolleri ve herhangi bir hatayı görebilirsiniz. Ayrıca, tespit edilen güvenlik uyarılarını görmek için:
tail -f /var/ossec/logs/alerts/alerts.log
Bu log dosyası, OSSEC’in kurallarını tetikleyen tüm olayları içerir ve güvenlik olaylarını izlemenin ana noktasıdır.
Temel OSSEC Konfigürasyonu
OSSEC’in ana konfigürasyon dosyası /var/ossec/etc/ossec.conf adresindedir. Bu dosyayı düzenleyerek OSSEC’in davranışını özelleştirebilirsiniz. Değişiklik yaptıktan sonra OSSEC servisini yeniden başlatmayı unutmayın: sudo /var/ossec/bin/ossec-control restart.
1. Log İzleme (Log Monitoring)
OSSEC’in en temel işlevlerinden biri log izlemedir. Varsayılan olarak, OSSEC birçok standart Linux log dosyasını izler. Ancak, ek log dosyalarını veya özel uygulama loglarını izlemek isteyebilirsiniz. Bunun için ossec.conf dosyasındaki etiketlerini kullanırız.
Örnek olarak, Apache web sunucusu loglarını izlemek istediğimizi varsayalım (eğer Apache yüklüyse):
...
no
/var/log/auth.log
no
/var/log/syslog
no
/var/log/apache2/access.log
no
/var/log/apache2/error.log
...
no seçeneği, OSSEC’in yalnızca belirli kuralları tetikleyen olayları kaydetmesini sağlar. Eğer tüm logları kaydetmek isterseniz yes yapabilirsiniz, ancak bu çok fazla disk alanı kaplayabilir. Yeni bir log dosyası ekledikten sonra OSSEC’i yeniden başlatın.
2. Dosya Bütünlüğü Kontrolü (File Integrity Monitoring – FIM)
FIM, sistemin kritik dosyalarında yapılan yetkisiz değişiklikleri tespit etmek için hayati öneme sahiptir. etiketleri ile hangi dizinlerin izleneceğini belirleyebilirsiniz.
...
3600
yes
/etc
/usr/bin
/usr/sbin
/bin
/sbin
/etc/mtab
/etc/logrotate.conf
/etc/ssh/ssh_host_*_key
...
* : Kontrollerin ne sıklıkta yapılacağını saniye cinsinden belirtir.
* yes: Dosya değişikliklerinin raporlanmasını sağlar.
* realtime="yes": Bazı dosya sistemlerinde gerçek zamanlı izleme yapmaya çalışır (inotify gibi).
* check_all="yes": Tüm dosya özelliklerini (izinler, sahiplik, içerik) kontrol eder.
3. Rootkit Tespiti (Rootkit Detection)
Rootkit tespiti, varsayılan olarak etkindir ve genellikle ek bir konfigürasyon gerektirmez. OSSEC, bilinen rootkit imzalarını ve davranışlarını arar.
...
3600
yes
yes
yes
yes
yes
yes
yes
yes
yes
...
Bu seçenekler, OSSEC’in rootkit tespiti için hangi tür kontrolleri yapacağını belirler. Genellikle varsayılan ayarlar yeterlidir.
4. Aktif Yanıt (Active Response)
Aktif yanıt, belirli olaylara otomatik olarak tepki vermeyi sağlar. En yaygın kullanılan aktif yanıtlardan biri, çok sayıda başarısız oturum açma girişiminden sonra bir IP adresini güvenlik duvarında engellemektir (firewall-drop).
...
firewall-drop
local
5712
600
host-deny
local
5700,5710
360
...
rules_id değeri, hangi OSSEC kuralı tetiklendiğinde aktif yanıtın devreye gireceğini belirtir. 5712 genellikle SSH başarısız giriş denemelerini izleyen kuraldır. timeout, IP adresinin ne kadar süreyle engelleneceğini saniye cinsinden belirtir. Aktif yanıtları dikkatli kullanın, yanlış konfigürasyonlar sisteminize erişimi engelleyebilir.
5. E-posta Bildirimleri (Email Alerts)
OSSEC, önemli güvenlik olayları hakkında e-posta bildirimleri gönderebilir. Kurulum sırasında e-posta ayarlarını yapmadıysanız veya değiştirmek isterseniz, ossec.conf dosyasının bölümünde düzenleme yapabilirsiniz.
yes
guvenlik_ekibi@example.com
localhost
ossec@localhost
...
E-posta bildirimlerinin çalışması için sisteminizde bir posta aktarım aracısı (MTA) yüklü ve yapılandırılmış olmalıdır (örneğin, Postfix veya Sendmail). Eğer yüklü değilse, Debian’da Postfix’i kurabilirsiniz:
sudo apt-get install -y postfix mailutils
Postfix kurulumu sırasında “Internet Site” seçeneğini seçebilir ve alan adınızı belirtebilirsiniz. Daha sonra /etc/postfix/main.cf dosyasını düzenleyerek detaylı ayarlar yapabilirsiniz.
OSSEC Kurulumunun Test Edilmesi
OSSEC’i kurduktan ve temel konfigürasyonları yaptıktan sonra, her şeyin beklendiği gibi çalıştığından emin olmak için testler yapmak önemlidir.
1. Log İzleme Testi
Yeni bir log dosyası oluşturarak ve bunu ossec.conf‘a ekleyerek test edebilirsiniz.
1. ossec.conf‘a aşağıdaki satırları ekleyin:
yes
/var/log/ossec_test.log
2. OSSEC’i yeniden başlatın: sudo /var/ossec/bin/ossec-control restart
3. Test log dosyasına bir girdi ekleyin: echo "Bu bir OSSEC log izleme testidir." | sudo tee -a /var/log/ossec_test.log
4. alerts.log dosyasını kontrol edin: tail -f /var/ossec/logs/alerts/alerts.log
Belirttiğiniz log girdisini içeren bir uyarı görmelisiniz (ID: 500, “Log file read”).
2. Dosya Bütünlüğü Kontrolü Testi
İzlenen bir dizindeki bir dosyayı değiştirerek FIM’i test edebilirsiniz. Örneğin, /etc/passwd dosyasını değiştirmek.
1. /etc/passwd dosyasının bir yedeğini alın: sudo cp /etc/passwd /etc/passwd.bak
2. /etc/passwd dosyasına geçici bir satır ekleyin: echo "testuser:x:1001:1001::/home/testuser:/bin/bash" | sudo tee -a /etc/passwd
3. OSSEC’in syscheck taramasının çalışmasını bekleyin (veya manuel olarak tetikleyin: sudo /var/ossec/bin/agent_control -r -a yerel kurulumda agent_id 000 olarak geçerlidir). Varsayılan sıklık 1 saat olduğundan, hemen görmek için biraz beklemek veya frekansı düşürmek gerekebilir.
4. alerts.log dosyasını kontrol edin: tail -f /var/ossec/logs/alerts/alerts.log
/etc/passwd dosyasında yapılan değişikliği gösteren bir uyarı (ID: 550, “Integrity checksum changed”) görmelisiniz.
5. Değişikliği geri alın: sudo mv /etc/passwd.bak /etc/passwd
3. Aktif Yanıt Testi
SSH başarısız giriş denemelerine karşı firewall-drop aktif yanıtını test edelim.
1. ossec.conf dosyasında firewall-drop kuralının etkin olduğundan emin olun (yukarıdaki 6.4 bölümüne bakın).
2. OSSEC’i yeniden başlatın: sudo /var/ossec/bin/ossec-control restart
3. Başka bir makineden (veya aynı makineden) yanlış parola kullanarak SSH oturumu açmaya çalışın. Bunu birkaç kez tekrarlayın (varsayılan kural 6 denemeden sonra tetiklenir).
ssh user@your_debian_ip
4. alerts.log dosyasını kontrol edin. Rule: 5712 - SSHD brute force trying to get access to the system. gibi bir uyarı ve ardından Active response: firewall-drop mesajını görmelisiniz.
5. Engellenen IP adresinin iptables kurallarında göründüğünü kontrol edin: sudo iptables -L
Engellenen IP adresini içeren bir kural görmelisiniz. Belirtilen süre sonunda bu kural otomatik olarak kaldırılacaktır.
OSSEC Yönetimi ve Bakımı
OSSEC’in günlük yönetimi ve bakımı, sistemin sürekli olarak düzgün çalışmasını sağlamak için önemlidir.
* Servis Kontrolü:
* Başlat: sudo /var/ossec/bin/ossec-control start
* Durdur: sudo /var/ossec/bin/ossec-control stop
* Yeniden Başlat: sudo /var/ossec/bin/ossec-control restart
* Durum: sudo /var/ossec/bin/ossec-control status
* Log Dosyaları:
* OSSEC sistem logları: /var/ossec/logs/ossec.log
* Güvenlik uyarıları: /var/ossec/logs/alerts/alerts.log
* Arşivlenmiş uyarılar: /var/ossec/logs/alerts/YYYY/MMM/ossec-alerts-DD.log
* Kurallar ve Dekoderler: OSSEC, güvenlik olaylarını yorumlamak ve uyarılar oluşturmak için kurallar ve dekoderler kullanır. Bunlar /var/ossec/rules ve /var/ossec/etc/decoders dizinlerinde bulunur. İhtiyaç duyulursa özel kurallar ve dekoderler oluşturulabilir.
* Güncelleme: OSSEC’i güncellemek için, yeni sürümün kaynak kodunu indirip yukarıdaki adımları takip ederek yeniden derlemeniz ve kurmanız gerekir. Bu işlem mevcut konfigürasyonunuzu koruyacaktır.
* Performans: Büyük sistemlerde veya yüksek trafikli sunucularda OSSEC, CPU ve disk I/O üzerinde ek yük oluşturabilir. Konfigürasyonu optimize ederek (örneğin, gereksiz dizinleri izlemeyerek, tarama sıklığını ayarlayarak) performansı artırabilirsiniz.
Sonuç ve İleri Adımlar
Bu makalede, Debian 8 işletim sistemi üzerine OSSEC HIDS’in yerel bir kurulumunu nasıl yapacağınızı adım adım öğrendiniz. OSSEC’i kurarak, sisteminizin loglarını gerçek zamanlı olarak izleyebilir, kritik dosya değişikliklerini tespit edebilir, rootkit’lere karşı koruma sağlayabilir ve potansiyel saldırılara otomatik olarak yanıt verebilirsiniz. Bu, tek bir sunucunun veya kritik bir iş istasyonunun güvenliğini önemli ölçüde artıracak güçlü bir adımdır.
Ancak, güvenlik sürekli bir süreçtir ve OSSEC kurulumunuzu optimize etmek ve sürdürmek için daha fazla adım atmanız gerekebilir:
* Kural ve Dekoder Optimizasyonu: Varsayılan kurallar iyi bir başlangıç noktası olsa da, uygulamanıza ve sisteminize özel tehditleri tespit etmek için kendi özel kurallarınızı ve dekoderlerinizi oluşturmayı düşünebilirsiniz.
* SIEM Entegrasyonu: Eğer birden fazla sisteminiz varsa, OSSEC uyarılarını merkezi bir Güvenlik Bilgileri ve Olay Yönetimi (SIEM) çözümüne (örneğin, ELK Stack, Splunk, Graylog) göndermek, tüm güvenlik olaylarınızı tek bir yerden izlemenizi sağlar.
* Daha Yeni Bir İşletim Sistemine Geçiş: Debian 8 artık desteklenmediğinden, güvenlik güncellemeleri almamaktadır. Mümkün olan en kısa sürede daha güncel bir Debian sürümüne (Debian 11 veya 12 gibi) yükseltme yapmanız şiddetle tavsiye edilir. OSSEC kurulum adımları yeni sürümlerde de benzer olacaktır.
* Gelişmiş Aktif Yanıtlar: firewall-drop dışında, OSSEC’in daha karmaşık aktif yanıt komut dosyaları vardır veya kendi özel komut dosyalarınızı yazarak belirli olaylara daha özelleştirilmiş tepkiler verebilirsiniz.
* Düzenli İzleme ve Ayarlama: OSSEC’in ürettiği uyarıları düzenli olarak gözden geçirmek, yanlış pozitifleri azaltmak ve gerçek tehditleri kaçırmamak için önemlidir. Konfigürasyonunuzu ve kural setinizi zamanla ayarlamanız gerekebilir.
Unutmayın, hiçbir güvenlik çözümü %100 koruma sağlamaz. OSSEC, çok katmanlı bir güvenlik stratejisinin önemli bir parçasıdır ve diğer güvenlik önlemleriyle (güvenlik duvarları, güçlü parolalar, düzenli yamalar, yedeklemeler) birlikte kullanılmalıdır.
