Fail2Ban hizmeti, sitenize şifre tahmini yaparak erişmeye çalışan botların IP adreslerini engellemeye yardımcı olur. Bu tür saldırılar, özellikle çok sayıda POST isteği nedeniyle web sunucusunda yüksek yük oluşturabilir. Bu örneklerde, popüler bir CMS olan Wordpress ve SSH hizmeti için IP adreslerini engellemeyi ele alacağız.
1. Fail2Ban Kurulumu
1.1 Epel Deposu Ekleme
yum install epel-release
Sonrasında, /etc/yum.repos.d/epel.repo
dosyasında depoyu etkinleştirin (enabled=1
olarak ayarlayın).
yum install fail2ban
2. Genel Yapılandırma
Fail2ban yapılandırma dosyalarını /etc/fail2ban
dizininde saklar. Varsayılan değerleri içeren dosya jail.conf
olarak adlandırılır. Bu dosya paket güncellemeleri ile üzerine yazılabileceğinden, doğrudan kullanılmamalıdır. Bunun yerine jail.local
adında yeni bir dosya oluşturacağız. jail.local
dosyasında tanımlanan herhangi bir değer jail.conf
dosyasındakilerin üzerine yazar.
jail.conf
dosyasında [DEFAULT] bölümü ve ardından ayrı hizmetler için bölümler bulunur. jail.local
, bu değerlerin herhangi birini geçersiz kılabilir. Ayrıca, /etc/fail2ban/jail.d/
dizinindeki dosyalar da her iki dosyadaki ayarları geçersiz kılmak için kullanılabilir. Dosyalar şu sırada uygulanır:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf (alfabetik sıralama)
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local (alfabetik sıralama)
Varsayılan ayarları /etc/fail2ban/jail.local
dosyasına ekleyin:
[DEFAULT]
# Sunucuları bir saat boyunca yasakla:
bantime = 3600
# /etc/fail2ban/jail.d/00-firewalld.conf dosyasını geçersiz kıl:
banaction = iptables-multiport
[sshd]
enabled = true
Hizmeti yeniden başlatın:
service fail2ban restart
Durumu kontrol etmek için şu komutu kullanın:
fail2ban-client status
3. Wordpress Filtresi
Bir IP adresinden 10 dakika içinde 10’dan fazla kez /wp-login.php
(wordpress admin paneli) adresine istek gönderen IP adreslerini engellemek için bir filtre ve engelleme kuralı (jail) ekleyin.
3.1 Filtre
/etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =
Bu filtre ile IP adreslerini tespit edeceğiz.
3.2 Jail Ekleme
/etc/fail2ban/jail.d/wordpress.conf
[wordpress]
action = iptables-multiport[name="wordpress", port="http,https"]
filter = admin-wordpress
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log
Eğer farklı bir web sunucusu kullanıyorsanız, log formatına göre filtreyi değiştirmeniz ve doğru log dosyasının (access_log) yolunu belirtmeniz gerekir. Değişikliklerden sonra hizmeti yeniden başlatın.