CentOS Web Panel (CWP) yüklü sunucularda en sık karşılaşılan sorunlardan biri, sunucuya ddos veya brute-force gibi yoğun saldırılar geldiğinde /var/log/messages dosyasının aniden log yazmayı kesmesidir. Dosyayı kontrol ettiğinizde sadece sistemin ilk açılışına dair “start” mesajlarını görürsünüz, ancak sonrasında hiçbir yeni etkinlik veya CSF/LFD saldırı kaydı dosyaya düşmez.
Pek çok yönetici bu durumun CSF yapılandırmasındaki LF_IPSET = 1 gibi performans ayarlarından kaynaklandığını düşünür. Ancak durum böyle değildir. Bu sorun tamamen Linux’un loglama mimarisi olan rsyslog ve systemd-journald arasındaki senkronizasyonun (köprünün) yoğun saldırı altında kilitlenmesinden kaynaklanır.
Eğer sizin de CWP sunucunuzda ana sistem logları güncellenmiyorsa, aşağıdaki adımları sırasıyla takip ederek bu sorunu kesin olarak çözebilirsiniz.
Sorunun Kaynağı Nedir?
systemctl status rsyslog komutunu çalıştırdığınızda servis çalışıyor görünse bile genellikle şu uyarıyı verir:
imjournal: journal files changed, reloading...
Bu uyarı, systemd-journald servisinin ürettiği logları rsyslog’a aktaran imjournal modülünün, aşırı log yoğunluğu (saldırı anları) nedeniyle kilitlendiğini ve log akışını durdurduğunu gösterir.
/var/log/messages Log Akışını Düzeltme Adımları
SSH üzerinden root olarak sunucunuza bağlanın ve aşağıdaki adımları sırasıyla uygulayın.
Adım 1: rsyslog Konfigürasyonunu Optimize Edin
Rsyslog’un journald çöktüğünde veya sıkıştığında pes etmeden okumaya devam etmesi için limitleri esnetmemiz gerekir.
-
/etc/rsyslog.confdosyasını favori editörünüzle açın:
nano /etc/rsyslog.conf
Dosya içerisinde #### MODULES #### başlığı altına gelin ve şu satırları ekleyin (eğer varsa mevcut olanları bunlarla güncelleyin):
$ModLoad imjournal
$IMJournalStateFile imjournal.state
$IMJournalIgnorePreviousMessages off
$IMJournalRateLimitInterval 0
Dosyayı kaydedip çıkın.
Adım 2: Bozuk Durum Dosyalarını ve Servisleri Temizleyin
Log sisteminin kaldığı yeri unuttuğu ve döngüye girdiği “state” dosyasını silip servisleri tazeleyeceğiz. Sırasıyla şu komutları çalıştırın:
# Log servislerini durdurun
systemctl stop rsyslog
systemctl stop systemd-journald
# Bozuk olma ihtimali yüksek olan eski durum kaydını silin
rm -f /var/lib/rsyslog/imjournal.state
# Servisleri temiz bir şekilde yeniden başlatın
systemctl start systemd-journald
systemctl start rsyslog
(Not: systemd-journald servisini durdururken soket uyarısı alabilirsiniz, bu tamamen normaldir ve hata değildir.)
Adım 3: Sistem Log Akışını Test Edin
Yaptığımız işlemin başarılı olup olmadığını anlamak için sisteme yapay bir log gönderelim ve messages dosyasını kontrol edelim:
Bash
logger -i "CWP Log Akis Testi Basarili"
tail -n 15 /var/log/messages
Komut sonrasında ekranınızın en alt satırında CWP Log Akis Testi Basarili ibaresini görüyorsanız, tebrikler! Sistem log mekanizması başarıyla onarılmış demektir.
CSF ve LFD’yi Yeniden Başlatma
Ana log dosyası düzeldiğine göre, CSF’nin arka planında logları tarayan güvenlik botu lfd (Login Failure Daemon) servisini bir kez yeniden başlatarak logları sıfırdan ve sorunsuz okumasını sağlayalım:
Bash
csf -r
systemctl restart lfd
Saldırıların ve engellemelerin anlık olarak loglara düşüp düşmediğini şu komutla canlı olarak izleyebilirsiniz:
Bash
tail -f /var/log/messages | grep -E "csf|lfd"
LF_IPSET = 1 Ayarı Buna Neden Olur mu?
Hayır. csf.conf dosyasındaki LF_IPSET = 1 ayarı, engellenen IP adreslerini tek tek iptables kuralı olarak eklemek yerine ipset havuzuna atar. Bu ayar sunucu işlemcisini (CPU) rahatlatan, sunucu sağlığı için oldukça faydalı bir ayardır ve logların durmasıyla hiçbir ilgisi yoktur. Sorununuz tamamen işletim sisteminin log modülünün kilitlenmesiyle ilgilidir.
