Sunucunuzu yönetirken en kritik anlardan biri, bir saldırı veya şüpheli aktivite başladığında bunu anında fark etmektir. CSF (ConfigServer Security & Firewall) tam da bu noktada devreye giriyor ve güçlü bir e-posta uyarı sistemiyle sizi her gelişmeden haberdar edebiliyor. Bu yazıda CSF’nin e-posta bildirim altyapısını sıfırdan nasıl kuracağınızı, ince ayarlarını nasıl yapacağınızı ve gerçek dünya senaryolarında nasıl kullanacağınızı adım adım ele alacağız.
CSF E-posta Uyarı Sistemi Neden Önemli?
Bir sabah kalktığınızda sunucunuzun gece boyunca brute force saldırısına maruz kaldığını log dosyalarından öğrenmek ile o saldırı başlar başlamaz telefonunuza bildirim gelmesi arasında dağlar kadar fark var. CSF’nin e-posta uyarı sistemi, güvenlik olaylarını gerçek zamanlı olarak size iletir.
Tipik bir senaryoda şunlar olabilir: Birileri SSH portuna dakikada 50 kez bağlanmaya çalışıyor, birisi phpMyAdmin’e kaba kuvvet saldırısı yapıyor ya da sistemde anormal bir port taraması gerçekleşiyor. Bu olayların hepsini anında öğrenmek, müdahale sürenizi saatlerden dakikalara indirger.
CSF varsayılan kurulumda bile bazı uyarıları gönderiyor, ancak bu uyarıları doğru yapılandırmazsanız ya çok fazla gürültü alırsınız ya da kritik bildirimleri kaçırırsınız. Dengeyi kurmak bu yazının özünde yatıyor.
Ön Gereksinimler
CSF e-posta uyarılarının çalışması için sunucunuzda bir mail transfer agent (MTA) kurulu olması gerekiyor. En yaygın seçenekler Postfix ve Sendmail. cPanel/WHM ortamlarında bu genellikle hazır gelir, bare metal veya VPS kurulumlarında elle yapmanız gerekebilir.
Postfix kurulumu (CentOS/AlmaLinux):
dnf install postfix -y
systemctl enable postfix
systemctl start postfix
Postfix kurulumu (Debian/Ubuntu):
apt-get install postfix mailutils -y
systemctl enable postfix
systemctl start postfix
Postfix’in temel çalışıp çalışmadığını test etmek için:
echo "Test mesaji" | mail -s "CSF Test" [email protected]
Eğer bu mail ulaşmıyorsa önce MTA’yı düzeltmeniz gerekiyor, çünkü CSF de aynı altyapıyı kullanıyor.
CSF Ana Yapılandırma Dosyası
CSF’nin tüm ayarları /etc/csf/csf.conf dosyasında toplanıyor. E-posta ile ilgili parametreler bu dosyanın belirli bölümlerinde kümelenmiş durumda. Dosyayı açıp incelemeye başlayalım:
nano /etc/csf/csf.conf
Temel E-posta Parametreleri
Dosya içinde arama yaparak e-posta ayarlarını bulabilirsiniz. İşte bilmeniz gereken temel parametreler:
LF_ALERT_TO: Uyarıların gönderileceği e-posta adresi. Birden fazla adres için virgülle ayırın.
LF_ALERT_FROM: Gönderen e-posta adresi. Bu adresi spam filtrelerine takılmamak için doğru ayarlamalısınız.
LF_ALERT_SMTP: Eğer harici bir SMTP sunucusu kullanmak istiyorsanız bu adresi belirtin. Boş bırakırsanız yerel MTA kullanılır.
SMTP_BLOCK: Bu ayar aktifken CSF, 25. porta doğrudan giden bağlantıları engeller. E-posta gönderimi için güvenli port kullanımını zorlar.
Örnek temel yapılandırma:
# /etc/csf/csf.conf icindeki e-posta ayarlari
LF_ALERT_TO = "[email protected],[email protected]"
LF_ALERT_FROM = "[email protected]"
LF_ALERT_SMTP = ""
LF_ALERT_SMTP_AUTH = ""
LF_ALERT_SMTP_USERNAME = ""
LF_ALERT_SMTP_PASSWORD = ""
LF_ALERT_SMTP_TLS = "0"
Bu değerleri değiştirdikten sonra CSF’yi yeniden başlatmayı unutmayın:
csf -r
Login Failure (LF) Uyarıları
CSF’nin kalbi sayılan LFD (Login Failure Daemon) çeşitli başarısız giriş denemelerini izler ve bunlar için uyarı gönderir. Bu bölümdeki ayarlar en sık ihtiyaç duyacağınız ayarlar.
# SSH brute force uyarilari
LF_SSHD = "5"
LF_SSHD_ALERT = "1"
# FTP brute force
LF_FTPD = "10"
LF_FTPD_ALERT = "1"
# cPanel/WHM giris denemesi
LF_CPANEL = "5"
LF_CPANEL_ALERT = "1"
# Web server (mod_security gibi)
LF_MODSEC = "5"
LF_MODSEC_ALERT = "1"
# E-posta giris denemesi (IMAP, POP3)
LF_POP3D = "10"
LF_POP3D_ALERT = "1"
LF_IMAPD = "10"
LF_IMAPD_ALERT = "1"
Buradaki sayılar, kaç başarısız girişten sonra IP’nin engelleneceğini gösteriyor. _ALERT ile biten parametreler ise engelleme gerçekleştiğinde e-posta uyarısı gönderilip gönderilmeyeceğini kontrol ediyor. 1 aktif, 0 pasif.
Gerçek dünya deneyiminden bir tavsiye: SSH için 5 denemeyi çok gevşek buluyorsanız 3’e düşürebilirsiniz. Öte yandan POP3 ve IMAP için kullanıcılar zaman zaman şifrelerini yanlış girebildiğinden biraz daha toleranslı olmak mantıklı.
Port Taraması ve Diğer Saldırı Uyarıları
Port taramaları genellikle büyük saldırıların öncüsüdür. Birisi sisteminizi port taramasına tabi tuttuğunda bunu öğrenmek istiyorsunuz:
# Port tarayan IP'ler icin uyari
LF_TRIGGER = "1"
LF_TRIGGER_ALERT = "1"
# Paylasilan IP envanter uyarisi
LF_BLOCKLIST = "1"
LF_BLOCKLIST_ALERT = "1"
# Exploit girisimi uyarilari
LF_EXPLOIT = "1"
PS_INTERVAL: Port tarama kontrol aralığını saniye cinsinden belirler. 0 değeri bu özelliği kapatır.
PS_LIMIT: Kaç farklı porta erişim denemesi yapılırsa port taraması sayılacağını belirler.
PS_INTERVAL = "300"
PS_LIMIT = "10"
PS_BLOCK_TIME = "3600"
PS_ALERT = "1"
Cluster Uyarıları
Birden fazla sunucu yönetiyorsanız CSF Cluster özelliği bir sunucuda engellenen IP’yi otomatik olarak diğer sunuculara da iletir. Bu durumda hangi sunucudan uyarı geldiğini anlamak için cluster bildirimlerini de etkinleştirmeniz gerekir:
CLUSTER_SENDTO = ""
CLUSTER_RECVFROM = ""
CLUSTER_MASTER = "0"
CLUSTER_MASTER_ALERT = "1"
CLUSTER_MASTER_ALERT ayarı, cluster üyelerinden gelen blok bildirimlerinin de e-posta ile iletilmesini sağlar.
Uyarı Şablonlarını Özelleştirme
CSF, e-posta uyarılarını /etc/csf/ dizininde bulunan şablon dosyaları üzerinden oluşturur. Bu şablonları özelleştirerek uyarı içeriklerini kendinize göre ayarlayabilirsiniz.
Mevcut şablon dosyalarını listeleyelim:
ls /etc/csf/*.txt
Çıktıda şu tür dosyalar göreceksiniz:
alert_lfd_block.txt: Engelleme uyarısı şablonualert_lfd_account.txt: Hesap bazlı uyarı şablonualert_lfd_portflood.txt: Port flood uyarı şablonualert_lfd_exploit.txt: Exploit girişimi şablonu
Örneğin engelleme uyarısı şablonunu özelleştirmek için:
nano /etc/csf/alert_lfd_block.txt
Şablon içinde kullanabileceğiniz değişkenler:
- SUBST:IP: Engellenen IP adresi
- SUBST:PORTS: Erişilmeye çalışılan portlar
- SUBST:HOSTNAME: Sunucu hostname’i
- SUBST:TRIGGER: Tetikleyen servis
- SUBST:COUNT: Deneme sayısı
- SUBST:PERIOD: Gözlem süresi
Özelleştirilmiş bir şablon örneği:
Sunucu: SUBST:HOSTNAME
Tarih: SUBST:DATE
DIKKAT: Asagidaki IP sisteminize kotu niyetli erisim denemesinde bulundu.
Engellenen IP : SUBST:IP
Hedef Servis : SUBST:TRIGGER
Deneme Sayisi : SUBST:COUNT
Gozlem Suresi : SUBST:PERIOD saniye
Engelleme Suresi: SUBST:BLOCKTIME saniye
Bu IP blok listesine eklendi. Manuel inceleme icin:
csf -g SUBST:IP
Otomatik CSF Guvenlik Sistemi
Yüksek Yük ve Süreç Uyarıları
CSF sadece ağ saldırılarını değil, sistem kaynakları üzerindeki anormallikleri de izleyebilir. Bu özellik özellikle web hosting ortamlarında çok işe yarıyor:
# Sistem yuku yukseldigi zaman uyari
LF_LOAD = "30"
LF_LOAD_ALERT = "1"
LF_LOAD_NUMIPS = "1"
# Yogun kaynak kullanan surecleri tespit et
LT_POP3D = "60"
LF_LOAD: Kaç üzerine çıkıldığında uyarı verileceğini belirler. Load average değerini 10 ile çarparak hesaplanır. Yani 30 değeri 3.0 load average anlamına gelir. 8 çekirdekli bir sunucu için bu değeri 60-80 arasında ayarlamak mantıklı.
Disk kullanımı uyarıları için de benzer ayarlar mevcut:
# Disk dolulugu uyarisi
LF_DISKSPACE = "90"
LF_DISKSPACE_ALERT = "1"
LF_DISKSPACE: Disk kullanımı bu yüzdeye ulaştığında uyarı gönderilir.
Güvenilir IP’ler ve Whitelist Yönetimi
E-posta uyarı sistemini kurduktan sonra sık karşılaşılan bir sorun, kendi monitoring araçlarınızın veya meşru IP’lerinizin engellenmesi ve sürekli uyarı tetiklemesi. Bunu önlemek için whitelist yapılandırması kritik:
nano /etc/csf/csf.allow
Güvenilir IP’leri şu formatta ekleyin:
# Ofis IP adresi - yoneticiler icin
203.0.113.10 # Ofis statik IP
# Monitoring servisi
198.51.100.5 # Uptimerobot
# Yedekleme sunucusu
192.0.2.20 # Yedek sunucu
CIDR notasyonu da kullanabilirsiniz:
# Sirket VPN blogu
10.0.0.0/24 # Sirket ic ag
Whitelist’e eklediğiniz IP’ler için uyarı oluşturulmaz, bu sayede uyarı kirliliğini azaltmış olursunuz.
SMTP ile Harici Mail Gönderimi
Sunucunuzun e-posta gönderme kabiliyeti kısıtlıysa veya daha güvenilir bir iletim için Sendgrid, Mailgun gibi harici SMTP hizmetlerini kullanabilirsiniz:
# Harici SMTP ayarlari
LF_ALERT_SMTP = "smtp.sendgrid.net:587"
LF_ALERT_SMTP_AUTH = "LOGIN"
LF_ALERT_SMTP_USERNAME = "apikey"
LF_ALERT_SMTP_PASSWORD = "SG.xxxxxxxxxxxxxxxxxxxx"
LF_ALERT_SMTP_TLS = "1"
Bunu test etmek için CSF’nin dahili test komutunu kullanabilirsiniz:
csf --version
lfd -t
Veya doğrudan bir test e-postası göndermek için:
echo "CSF SMTP Test - $(date)" | mail -s "CSF Test Mesaji" -r [email protected] [email protected]
Uyarı Frekansı ve Flood Kontrolü
Her engelleme için ayrı e-posta almak başlangıçta güzel görünse de yoğun saldırı dönemlerinde gelen kutunuz dolup taşabilir. CSF bu durumu yönetmek için birkaç mekanizma sunuyor:
# Ayni IP icin tekrar uyari suresi (saniye)
LF_REPEATBLOCK = "300"
# Bir saatte maksimum kac uyari gonderilsin
LF_ALERT_MAX = "100"
LF_REPEATBLOCK: Aynı IP için bu süre geçmeden tekrar uyarı gönderilmez. 300 saniye yani 5 dakika iyi bir başlangıç noktası.
LF_ALERT_MAX: Saatlik maksimum e-posta sayısı. Büyük saldırılar sırasında gelen kutunuzu koruyan kritik bir parametre. 100 uyarı sonrası o saat için bildirimler duraklatılır.
Bir saldırı dalgasında ne olduğunu daha sonra analiz etmek için log dosyalarına başvurabilirsiniz:
tail -f /var/log/lfd.log
veya:
grep "Blocked" /var/log/lfd.log | tail -50
Gerçek Dünya Senaryosu: cPanel Sunucusu İçin Optimal Ayarlar
Yüzlerce domain barındıran bir cPanel sunucusu işlettiğinizi düşünelim. Bu ortamda e-posta uyarılarını nasıl yapılandırırsınız?
# /etc/csf/csf.conf - cPanel optimizasyonu
# Ana yonetici e-posta
LF_ALERT_TO = "[email protected]"
LF_ALERT_FROM = "[email protected]"
# SSH icin sert politika
LF_SSHD = "3"
LF_SSHD_ALERT = "1"
# FTP icin orta politika
LF_FTPD = "5"
LF_FTPD_ALERT = "1"
# Mail servisleri - kullanicilar sik yanlis sifre giriyor
LF_POP3D = "20"
LF_POP3D_ALERT = "0" # Cok gurultu yaratir, kapat
LF_IMAPD = "20"
LF_IMAPD_ALERT = "0" # Ayni sekilde kapat
# cPanel arayuzu
LF_CPANEL = "5"
LF_CPANEL_ALERT = "1" # Bu onemli, acik kalsin
# Yuk uyarisi - 16 cekirdek icin
LF_LOAD = "120"
LF_LOAD_ALERT = "1"
# Disk uyarisi
LF_DISKSPACE = "85"
LF_DISKSPACE_ALERT = "1"
# Uyari limiti
LF_ALERT_MAX = "50"
LF_REPEATBLOCK = "600"
Bu yapılandırmada POP3/IMAP uyarılarını kapattık çünkü hosting ortamlarında yüzlerce kullanıcı şifresini unutabiliyor ve bunlar için sürekli uyarı almak gerçek tehditleri gömüyor. SSH ve cPanel uyarıları ise açık kaldı çünkü bu servisler üzerindeki başarısız girişler genellikle gerçek saldırı göstergesi.
Günlük Özet Raporları
CSF’nin LFD servisi, günlük istatistik özeti gönderebilir. Bu özellik, anlık uyarıların yanı sıra günlük tablo görünümü sağlar:
# Gunluk ozet raporu
LF_STATS_ALERT = "1"
LF_STATS_ALERT_TIME = "04:30"
LF_STATS_ALERT: Günlük özet aktif/pasif.
LF_STATS_ALERT_TIME: Raporun gönderileceği saat. Genellikle gece 4-5 arası seçilir çünkü trafik en düşük bu saatte.
Bu raporda göreceğiniz bilgiler:
- Son 24 saatte engellenen toplam IP sayısı
- En çok saldıran IP adresleri
- Hedef alınan servisler
- Ülke bazlı dağılım (GeoIP aktifse)
Uyarıları Test Etme
Yapılandırmayı tamamladıktan sonra her şeyin doğru çalışıp çalışmadığını test etmek gerekiyor. Üretim ortamında gerçek saldırı simüle etmek yerine şu yöntemleri kullanabilirsiniz:
Önce LFD servisinin durumunu kontrol edin:
systemctl status lfd
csf -l
Test e-postası göndermek için:
# LFD test komutu
/etc/csf/csftest.pl
Bu script CSF kurulumunuzu baştan aşağı test eder ve e-posta gönderimini de sınar.
Ayrıca log dosyasını izleyerek gerçek zamanlı aktiviteyi görebilirsiniz:
watch -n 5 "tail -20 /var/log/lfd.log"
Yapılandırma değişikliklerinden sonra mutlaka CSF’yi yeniden başlatın:
csf -r && systemctl restart lfd
Yaygın Sorunlar ve Çözümleri
E-posta uyarı sistemini kurarken sıkça karşılaşılan sorunları ve çözümlerini şöyle özetleyebiliriz:
E-postalar gelmiyor:
- MTA servisinin çalışıp çalışmadığını kontrol edin:
systemctl status postfix - Mail log’larına bakın:
tail -f /var/log/maillog - Spam klasörünü kontrol edin, sunucu IP’niz kara listede olabilir
LF_ALERT_TOalanının doğru yazılıp yazılmadığını teyit edin
Çok fazla uyarı geliyor:
LF_ALERT_MAXdeğerini düşürünLF_REPEATBLOCKdeğerini artırın- Çok tetiklenen ama önem taşımayan servisler için
_ALERT = "0"yapın - Meşru IP’leri whitelist’e ekleyin
Uyarılar gecikiyor:
- LFD servisinin aktif olduğunu kontrol edin
LF_TRIGGERve ilgili interval ayarlarına bakınLF_DAEMON_SLEEPdeğerini azaltabilirsiniz (varsayılan 5 saniye)
SMTP kimlik doğrulama hatası:
- Kullanıcı adı ve şifreyi tırnak içine almanız gerekebilir
- TLS/SSL port numarasının doğru olduğunu kontrol edin (587 veya 465)
Sonuç
CSF e-posta uyarı sistemi doğru yapılandırıldığında adeta sunucunuza gömülü bir güvenlik operasyon merkezi işlevi görüyor. Kritik olan nokta, “her şeyi aç, maksimum uyarı al” yaklaşımından kaçınmak. Çok fazla uyarı, aslında hiç uyarı almamak kadar tehlikeli çünkü gerçek tehditleri gürültü içinde gömüp kaybediyorsunuz.
Başlangıç için şu pratiği öneririm: İlk hafta tüm uyarıları açık bırakın ve hangi uyarıların gerçekten önemli olduğunu, hangilerinin gürültü ürettiğini gözlemleyin. Sonra buna göre fine-tune yapın. LF_ALERT_MAX ile de her halükarda gelen kutunuzu koruma altına aldığınızdan emin olun.
Bu yazıda anlattığım yapılandırmaları kendi ortamınıza göre adapte edin. 10 kişilik bir ekibin kullandığı dedicated sunucu ile 1000 kullanıcılı bir hosting ortamı aynı ayarları gerektirmiyor. Sysadmin işinin güzelliği de tam buradan geliyor: Her ortam kendi hikayesini yazıyor.