Şimdi yükleniyor

cPanel/WHM: Fail2Ban ile Gelişmiş Güvenlik: Adım Adım Rehber

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): bantime sü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 -y

Debian/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 -y

2. 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 fail2ban

Servisin 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.local

2. 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.45
  • bantime: 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 adresinin maxretry eşiğine ulaşması için gereken zaman aralığı (saniye). Varsayılan 10 dakikadır (600 saniye).
  • maxretry: findtime sü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 olarak action_ 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 = 3600
  • enabled = 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.conf dosyasında tanımlanan filtreyi kullanır.
  • logpath = /var/log/secure: SSH loglarının bulunduğu dosya.
  • maxretry ve bantime: 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 = 1800
  • port: 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 = 1800

ProFTPd İçin:

[proftpd]
enabled = true
port = ftp,ftp-data
filter = proftpd
logpath = /var/log/secure
maxretry = 3
bantime = 1800

4. 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 = 1800

Dovecot (POP3/IMAP) İçin:

[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/maillog
maxretry = 5
bantime = 1800

5. 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 = 600

cPanel’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.conf

Bu 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 fail2ban komutu ile hatayı kontrol edin.
    • sudo journalctl -u fail2ban ile 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:
    • ignoreip listenizi 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-regex komutunu kullanın.
    • maxretry ve findtime değ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 -n ile 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.
    • ignoreip listenize 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.

Güvenlik İpuçları

  • ignoreip Listesi: Kendi IP adresinizi, ofis IP’nizi veya güvendiğiniz diğer IP adreslerini ignoreip listesine ekleyin. Bu, yanlışlıkla kendinizi engellemenizi önler.
  • Bildirimler: destemail ve mta ayarları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 bantime sü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 findtime değ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 uzun bantime değ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 top veya htop gibi 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.

You May Have Missed