cPanel/WHM: Fail2Ban ile Gelişmiş Güvenlik: Adım Adım Rehber
Günümüzün dijital dünyasında, sunucu güvenliği her web yöneticisi ve barındırma sağlayıcısı için en önemli önceliklerden biridir. cPanel/WHM gibi popüler kontrol panelleri, sunucu yönetimini kolaylaştırsa da, sürekli artan siber tehditlere karşı ek güvenlik önlemleri almak hayati önem taşır. Brute-force saldırıları, kimlik avı girişimleri ve diğer kötü niyetli faaliyetler, sunucunuzun performansını düşürebilir, hizmet kesintilerine yol açabilir ve hatta veri ihlallerine neden olabilir. İşte tam bu noktada Fail2Ban devreye girer. Fail2Ban, sunucu log dosyalarını sürekli izleyerek, kötü niyetli aktivite kalıplarını tespit eden ve bu saldırıları gerçekleştiren IP adreslerini otomatik olarak engelleyen güçlü, proaktif bir güvenlik aracıdır. Bu kapsamlı rehberde, cPanel/WHM ortamınızda Fail2Ban’ı nasıl kuracağınızı, yapılandıracağınızı ve optimize edeceğinizi adım adım inceleyeceğiz.
Fail2Ban Nedir ve Neden Önemlidir?
Fail2Ban, Linux sunucuları için geliştirilmiş, log dosyalarını tarayan ve belirli kural setlerine uyan kötü niyetli IP adreslerini otomatik olarak engelleyen bir intrusion prevention (saldırı önleme) yazılımıdır. SSH, FTP, SMTP, Apache ve diğer birçok hizmetin loglarını analiz ederek, başarısız giriş denemeleri, DDoS saldırısı belirtileri veya diğer şüpheli davranışları tespit eder. Tespit edildiğinde, Fail2Ban, sunucunun güvenlik duvarı (iptables veya firewalld) kurallarını güncelleyerek saldırganın IP adresini belirli bir süre boyunca engeller. Bu, sunucunuzu sürekli gözetleyen ve potansiyel tehditleri daha size ulaşmadan durduran sanal bir bekçi görevi görür.
Teknik Arka Plan: Fail2Ban Nasıl Çalışır?
Fail2Ban’ın çalışma mantığı oldukça basittir ancak etkisi büyüktür:
- Log İzleme: Fail2Ban, yapılandırılmış hizmetlerin (örn. SSH, cPanel, Postfix, Dovecot, Apache) log dosyalarını sürekli olarak izler.
- Filtreleme: Bu log dosyaları, önceden tanımlanmış veya özel olarak oluşturulmuş regex (düzenli ifade) tabanlı filtrelerden geçirilir. Bu filtreler, başarısız giriş denemeleri veya diğer şüpheli desenleri tanır.
- Eşik Değeri: Belirli bir zaman dilimi içinde (
findtime) belirli bir IP adresinden gelen başarısız deneme sayısı (maxretry) eşiği aştığında, Fail2Ban bu IP adresini kötü niyetli olarak işaretler. - Engelleme (Ban): İşaretlenen IP adresi, sunucunun güvenlik duvarı (genellikle iptables veya firewalld) aracılığıyla belirli bir süre boyunca (
bantime) engellenir. Bu, saldırganın sunucuya erişimini engeller. - Engeli Kaldırma (Unban):
bantimesüresi dolduğunda, IP adresi otomatik olarak engelden kaldırılır.
Bu sürekli döngü, sunucunuzu brute-force saldırılarına karşı dirençli hale getirir ve sistem kaynaklarının kötü niyetli trafikle boğulmasını engeller.
Ön Koşullar ve Hazırlık
Fail2Ban kurulumuna başlamadan önce aşağıdaki ön koşulların karşılandığından emin olun:
- Root Erişimi: Sunucunuza SSH üzerinden root erişimi olmalıdır.
- Linux Temelleri: Temel Linux komut satırı bilgisi ve dosya sistemi navigasyonu hakkında bilgi sahibi olmak faydalıdır.
- cPanel/WHM Ortamı: Bu rehber, CentOS, AlmaLinux veya Rocky Linux tabanlı bir cPanel/WHM sunucusu için hazırlanmıştır.
- Yedekleme: Herhangi bir büyük sistem değişikliği yapmadan önce sunucunuzun tam yedeğini almanız şiddetle tavsiye edilir.
Adım Adım Kurulum Rehberi (SSH Üzerinden)
Fail2Ban genellikle cPanel/WHM’in kendisinin bir eklentisi olarak gelmez, ancak kolayca kurulabilir ve entegre edilebilir. Kurulum için SSH üzerinden sunucunuza bağlanmanız gerekmektedir.
1. Fail2Ban Paketini Kurma
Çoğu RHEL tabanlı sistemde (CentOS, AlmaLinux, Rocky Linux), Fail2Ban EPEL (Extra Packages for Enterprise Linux) deposunda bulunur. İlk olarak EPEL deposunu etkinleştirin, ardından Fail2Ban’ı kurun:
sudo yum install epel-release -y
sudo yum install fail2ban fail2ban-systemd -yDebian/Ubuntu tabanlı sistemler için (eğer cPanel/WHM kullanıyorsanız bu pek olası değildir, ancak genel bilgi için):
sudo apt update
sudo apt install fail2ban -y2. Fail2Ban Servisini Başlatma ve Etkinleştirme
Kurulum tamamlandıktan sonra Fail2Ban servisini başlatın ve sunucu her yeniden başlatıldığında otomatik olarak başlaması için etkinleştirin:
sudo systemctl start fail2ban
sudo systemctl enable fail2banServisin durumunu kontrol etmek için:
sudo systemctl status fail2banÇıktıda active (running) ifadesini görmelisiniz.
Yapılandırma Dosyaları ve Mantığı
Fail2Ban’ın temel yapılandırma dosyası /etc/fail2ban/jail.conf‘tur. Ancak, bu dosyayı doğrudan düzenlemek yerine, /etc/fail2ban/jail.local adlı bir kopya oluşturup bu kopyayı düzenlemek en iyi uygulamadır. Bunun nedeni, jail.conf dosyasının Fail2Ban güncellemeleri sırasında üzerine yazılabilmesidir. jail.local dosyası, jail.conf‘taki ayarları geçersiz kılar ve güncellemelerden etkilenmez.
1. jail.local Dosyasını Oluşturma
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local2. Temel Yapılandırma Parametreleri
jail.local dosyasını bir metin düzenleyici ile açın (örn. sudo nano /etc/fail2ban/jail.local). Dosyanın başında [DEFAULT] bölümünü göreceksiniz. Bu bölüm, tüm ‘jail’ler (hapishaneler) için varsayılan ayarları tanımlar:
ignoreip: Engellenmeyecek IP adresleri veya IP aralıkları. Kendi IP adresinizi buraya eklemeniz önemlidir. Birden fazla IP için boşluk bırakarak ayırın. Örn:ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.45bantime: IP adreslerinin kaç saniye boyunca engelleneceği. Varsayılan 10 dakikadır (600 saniye). Güçlü saldırılar için bu süreyi artırabilirsiniz (örn. 1 saat için 3600, 1 gün için 86400, süresiz ban için -1).findtime: Bir IP adresininmaxretryeşiğine ulaşması için gereken zaman aralığı (saniye). Varsayılan 10 dakikadır (600 saniye).maxretry:findtimesüresi içinde bir IP adresinden gelen başarısız deneme sayısı. Bu sayıya ulaşıldığında IP engellenir. Varsayılan 5’tir.destemail: Engelleme olaylarında bildirim gönderilecek e-posta adresi.sendername: Bildirim e-postalarında gönderen adı.mta: E-posta göndermek için kullanılacak posta aktarım aracısı (örn. sendmail, postfix).action: Engelleme yapıldığında hangi eylemin gerçekleştirileceği. Varsayılan olarakaction_parametresi, iptables kullanarak banlama yapar ve e-posta bildirimi gönderir.
cPanel Hizmetleri İçin Fail2Ban Yapılandırması
Şimdi, cPanel/WHM ortamınızdaki çeşitli hizmetler için Fail2Ban ‘jail’lerini yapılandıralım. jail.local dosyasının sonuna veya uygun bir yere ekleyebilirsiniz.
1. SSH (sshd) Koruması
SSH, sunucu yönetiminin ana kapısıdır ve en çok brute-force saldırısına uğrayan hizmetlerden biridir. Fail2Ban’ın varsayılan SSH jail’ini etkinleştirelim:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600enabled = true: Bu jail’i etkinleştirir.port = ssh: SSH servisi için varsayılan portu (22) kullanır. Eğer özel bir SSH portu kullanıyorsanız, buraya port numarasını (örn.port = 2222) yazın.filter = sshd:/etc/fail2ban/filter.d/sshd.confdosyasında tanımlanan filtreyi kullanır.logpath = /var/log/secure: SSH loglarının bulunduğu dosya.maxretryvebantime: Bu jail için özel eşik ve ban süresi.
2. cPanel/WHM Giriş Koruması
cPanel ve WHM girişleri de sıkça hedef alınır. Bu hizmetler için özel bir filtre ve jail oluşturalım:
Özel Filtre Oluşturma: cpanel-auth.conf
/etc/fail2ban/filter.d/ dizininde cpanel-auth.conf adında yeni bir dosya oluşturun:
sudo nano /etc/fail2ban/filter.d/cpanel-auth.confİçeriğini aşağıdaki gibi yapıştırın:
[Definition]
failregex = Authentication failure for .* from <HOST>
authentication failure for .* from <HOST> (via .*?)?
Failed login of '.*?' for service 'cpanel' from host <HOST>
Failed login of '.*?' for service 'whm' from host <HOST>
ignoreregex =Bu filtre, cPanel’in erişim loglarında başarısız giriş denemelerini arar.
jail.local’e cpanel-auth Jail’ini Ekleme
jail.local dosyanıza aşağıdaki jail’i ekleyin:
[cpanel-auth]
enabled = true
port = 2082,2083,2086,2087,2095,2096
filter = cpanel-auth
logpath = /usr/local/cpanel/logs/access_log
maxretry = 5
bantime = 1800port: cPanel/WHM ve Webmail için kullanılan tipik portlar.logpath: cPanel’in ana erişim log dosyası.
3. FTP Koruması (Pure-FTPd veya ProFTPd)
cPanel genellikle Pure-FTPd veya ProFTPd kullanır. Log yolları ve filtreler biraz farklılık gösterebilir.
Pure-FTPd İçin:
[pure-ftpd]
enabled = true
port = ftp,ftp-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3
bantime = 1800ProFTPd İçin:
[proftpd]
enabled = true
port = ftp,ftp-data
filter = proftpd
logpath = /var/log/secure
maxretry = 3
bantime = 18004. E-posta Hizmetleri Koruması (Postfix ve Dovecot)
E-posta sunucuları da sıkça brute-force saldırılarına maruz kalır.
Postfix (SMTP) İçin:
[postfix]
enabled = true
port = smtp,ssmtp,submission
filter = postfix
logpath = /var/log/maillog
maxretry = 3
bantime = 1800
[postfix-sasl]
enabled = true
port = smtp,ssmtp,submission,imap,imaps,pop3,pop3s
filter = postfix-sasl
logpath = /var/log/maillog
maxretry = 5
bantime = 1800Dovecot (POP3/IMAP) İçin:
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/maillog
maxretry = 5
bantime = 18005. HTTP (Apache) Koruması
Apache web sunucunuz için yaygın saldırıları hedefleyen hazır filtreler bulunmaktadır.
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /etc/apache2/logs/error_log
maxretry = 5
bantime = 600
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /etc/apache2/logs/error_log
maxretry = 5
bantime = 600
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /etc/apache2/logs/error_log
maxretry = 2
bantime = 600cPanel’de Apache log yolları genellikle /etc/apache2/logs/error_log veya /usr/local/apache/logs/error_log olabilir. Doğru yolu kontrol ettiğinizden emin olun.
Özel Filtreler Oluşturma ve Regex Kullanımı
Fail2Ban’ın gücü, özel ihtiyaçlarınıza göre filtreler oluşturabilmenizden gelir. Örneğin, WordPress’teki özel bir giriş URL’sini veya belirli bir eklentinin güvenlik açığı denemelerini hedefleyebilirsiniz. Regex (düzenli ifadeler) bilgisi burada kritik öneme sahiptir.
Bir filtre oluşturduktan sonra, fail2ban-regex komutu ile test edebilirsiniz:
sudo fail2ban-regex /path/to/your/log/file /etc/fail2ban/filter.d/your-custom-filter.confBu komut, filtrenizin log dosyasında kaç eşleşme bulduğunu gösterir, böylece filtrenizin doğru çalıştığından emin olabilirsiniz.
Troubleshooting (Olası Hata Çözümleri)
Fail2Ban’ı yapılandırırken veya çalıştırırken bazı sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:
- Fail2Ban Servisi Başlamıyor:
sudo systemctl status fail2bankomutu ile hatayı kontrol edin.sudo journalctl -u fail2banile daha detaylı loglara bakın.- Yapılandırma dosyalarınızda (özellikle
jail.local) sözdizimi hataları olup olmadığını kontrol edin.
- IP’ler Banlanmıyor:
ignoreiplistenizi kontrol edin, engellemek istediğiniz IP orada olmasın.logpath‘lerin doğru olduğundan ve Fail2Ban’ın bu dosyalara okuma izni olduğundan emin olun.- Filtrelerinizin doğru çalıştığından emin olmak için
fail2ban-regexkomutunu kullanın. maxretryvefindtimedeğerlerinin çok yüksek olmadığından emin olun.sudo fail2ban-client status <jailname>komutu ile belirli bir jail’in durumunu kontrol edin.- Güvenlik duvarınızın (iptables/firewalld) doğru çalıştığından ve Fail2Ban’ın kuralları eklemesine izin verdiğinden emin olun.
sudo iptables -L -nile iptables kurallarını kontrol edebilirsiniz.
- Yanlış IP’ler Banlanıyor:
- Filtrelerinizdeki regex ifadelerini gözden geçirin. Çok geniş bir ifade, masum IP’leri de banlayabilir.
ignoreiplistenize kendi IP adresinizi ve güvenilir ağları eklediğinizden emin olun.
- Fail2Ban Loglarını Kontrol Etme:
- Fail2Ban’ın kendi log dosyası
/var/log/fail2ban.log‘dur. Sorun giderme için bu dosyayı düzenli olarak kontrol edin.
- Fail2Ban’ın kendi log dosyası
Güvenlik İpuçları
- ignoreip Listesi: Kendi IP adresinizi, ofis IP’nizi veya güvendiğiniz diğer IP adreslerini
ignoreiplistesine ekleyin. Bu, yanlışlıkla kendinizi engellemenizi önler. - Bildirimler:
destemailvemtaayarlarını yapılandırarak engelleme olaylarından e-posta ile haberdar olun. Bu, sunucunuzdaki şüpheli faaliyetleri hızlı bir şekilde fark etmenizi sağlar. - Uzun Ban Süreleri: Özellikle SSH ve cPanel girişleri için
bantimesürelerini daha uzun tutmayı düşünebilirsiniz (örn. 1 gün veya hatta kalıcı ban için -1). - Güncel Tutma: Fail2Ban’ı ve sunucu işletim sisteminizi düzenli olarak güncelleyin. Güvenlik yamaları ve iyileştirmelerden faydalanın.
- Diğer Güvenlik Önlemleri: Fail2Ban tek başına yeterli değildir. Güçlü parolalar, iki faktörlü kimlik doğrulama, CSF/LFD gibi ek güvenlik duvarları ve düzenli güvenlik denetimleri ile birlikte kullanılmalıdır.
Performans Optimizasyonları
Fail2Ban genellikle hafif bir araçtır, ancak çok yoğun sunucularda veya yanlış yapılandırıldığında kaynak tüketimini artırabilir:
- Yalnızca Gerekli Jail’leri Etkinleştirin: Kullanmadığınız hizmetler için jail’leri etkinleştirmeyin. Her etkin jail, logları taramak için CPU ve bellek kullanır.
- findtime ve bantime Ayarları: Çok kısa
findtimedeğerleri, Fail2Ban’ın log dosyalarını çok sık taramasına neden olabilir. Sunucunuzun yüküne göre bu değerleri optimize edin. Çok uzunbantimedeğerleri, banlanan IP listesinin gereksiz yere büyümesine neden olabilir, ancak genellikle bu performans sorunundan çok yönetimsel bir sorundur. - Log Rotasyonu: Sunucunuzdaki log dosyalarının düzenli olarak döndürüldüğünden (logrotate) emin olun. Çok büyük log dosyaları, Fail2Ban’ın tarama süresini uzatabilir ve performansını düşürebilir. cPanel, logrotasyonunu genellikle otomatik olarak yönetir, ancak kontrol etmekte fayda vardır.
- Kaynak Tüketimini İzleme: Fail2Ban’ın sistem kaynaklarını nasıl kullandığını gözlemlemek için
topveyahtopgibi araçları kullanın. Herhangi bir anormallik fark ederseniz, yapılandırmanızı gözden geçirin.
Fail2Ban, modern siber güvenlik ortamında bir sunucu yöneticisinin araç setinde vazgeçilmez bir araçtır. Sürekli değişen tehdit ortamında sunucularınızı proaktif olarak koruyarak, brute-force saldırılarını ve diğer kötü niyetli girişimleri otomatik olarak engeller. Bu detaylı rehber sayesinde, cPanel/WHM sunucunuzda Fail2Ban’ı başarıyla kurup yapılandırarak, sunucunuzun güvenliğini önemli ölçüde artırabilir ve hizmetlerinizin istikrarını sağlayabilirsiniz. Esnekliği ve güçlü filtreleme yetenekleri sayesinde, Fail2Ban, sunucu güvenliğinizin temel taşlarından biri haline gelerek, sizi sürekli gözetim altında tutmaktan kurtarır ve daha stratejik görevlere odaklanmanıza olanak tanır.

