Fail2ban Kurulumu ve Yapilandirmasi
Sunucu guvenligi, modern IT altyapilarinin temel taslarindan birini olusturmaktadir. Ozellikle internet'e acik olan sistemlerde brute-force saldiriari buyuk bir tehdit unsuru olarak karsimiza cikmaktadir. Bu saldirilar, surekli olarak farkli sifre kombinasyonlari deneyerek sisteme yetkisiz erisim saglamaya calismaktadir. Fail2ban, bu tehlikeye karsi etkili bir savunma mekanizmasi sunan, acik kaynakli bir guvenlik aracidir. Bu yazida Fail2ban'in ne oldugunu, nasil kuruldugunu ve en iyi pratiklerle birlikte nasil yapilandirilacagini detayli olarak inceleyecegiz.
Fail2ban Nedir ve Neden Kullanilmali?
Fail2ban, Linux sistemlerinde calisan, log dosyalarini izleyerek sik failsiz denemeleri tespit eden ve engelleyen bir intrusion prevention sistemidir. Temel calisma prensibi su sekildedir: belirli bir sure icinde basarisiz giris denemesi sayisi belirli bir esigi astiginda, ilgili IP adresi otomatik olarak firewall kurallari ile engellenir. Bu sayede saldirganin sisteme erisimi durdurulmus olur ve brute-force saldiriari etkisiz hale getirilir.
Fail2ban'in en buyuk avantajlarindan biri, yaygin servisler icin hazir filtreler sunmasidir. SSH, Nginx, Apache, Postfix, Dovecot gibi bircok servis icin varsayilan filtreler mevcuttur. Ayrica kendi ozellestirilmis filtrelerinizi yazarak neredeyse her turlu servisi koruma altina alabilirsiniz. Bu esneklik, Fail2ban'i hem kucuk hem de buyuk olcekli sistemlerde vazgecilmez kilmaktadir.
Kurulum Sureci
Fail2ban kurulumu, kullandiginiz dagitima gore birkac farkli yontemle yapilabilir. Ubuntu ve Debian sistemlerde en basit yontem apt paket yoneticisini kullanmaktir. Oncelikle sistem paket listesini guncelleyerek baslayalim:
sudo apt update
sudo apt install fail2ban -yCentOS ve RHEL tabanli sistemlerde ise EPEL reposundan kurulum yapilmasi gerekmektedir:
sudo yum install epel-release -y
sudo yum install fail2ban -yKurulum tamamlandiktan sonra servisi etkinlestirip baslatmak icin:
sudo systemctl enable fail2ban
sudo systemctl start fail2banServisin calisip calismadigini kontrol etmek icin:
sudo systemctl status fail2banTemel Yapilandirma
Fail2ban'in yapilandirma dosyalari /etc/fail2ban klasoru altinda yer almaktadir. Onemli bir not olarak, ana yapilandirma dosyasi olan jail.conf dosyasini dogrudan duzenlemek yerine, jail.local dosyasi olusturarak ornek ayarlari burada yapilandirmaniz tavsiye edilir. Boylece Fail2ban guncellendiginde yaptiginiz ayarlar korunmus olur.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localYeni olusturdugunuz jail.local dosyasinda oncelikle varsayilan ayarlari yapilandirmaniz gerekmektedir. Asagidaki parametreler en sik kullanilan yapilandirma secenekleridir:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 10.10.10.0/24Bu ayarlarin anlami su sekildedir: bantime, engellenen IP'nin ne kadar sureyle engelli kalacagini belirtir (burada 1 saat). findtime, maxretry parametresinin kontrol edilecegi zaman dilimini gosterir (burada 10 dakika). maxretry, engelleme tetiklenmeden once izin verilen maksimum basarisiz giris denemesi sayisini ifade eder. ignoreip parametresi ise hicbir sekilde engellenmemesi gereken IP adreslerini belirtir; kendi ofis veya VPN IP adreslerinizi mutlaka buraya eklemelisiniz.
SSH Jail Yapilandirmasi
SSH, en sik hedef alinan servislerden biridir. Varsayilan olarak Fail2ban SSH korumasi aktiftir, ancak port degistirildiyse yapilandirmayi guncellemek gerekmektedir:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 600
bantime = 3600Eger SSH portunuzu 2222 olarak degistirdiyseniz, port parametresini buna gore guncellemelisiniz:
port = 2222Yapilandirmayi kaydedip servisi yeniden baslatmak icin:
sudo systemctl restart fail2banSSH jail'inin durumunu gormek icin:
sudo fail2ban-client status sshdNginx ve Web Servisleri Icin Koruma
Web sununculari da sikca hedef alinmaktadir. Ozellikle admin panellerine yonelik brute-force saldiriari oldukca yaygindir. Nginx icin birkac farkli jail yapilandirmasi kullanilabilir:
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 5Rate limiting ile birlikte kullanmak isterseniz:
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 10Manuel Ban ve Unban Islemleri
Bazi durumlarda elle bir IP adresini banlamak veya banli bir IP'yi serbest birakmak isteyebilirsiniz. Bunun icin fail2ban-client komutunu kullanabilirsiniz:
# IP banlama
sudo fail2ban-client set sshd banip 203.0.113.10
# IP banini kaldirma
sudo fail2ban-client set sshd unbanip 203.0.113.10Guncel banli IP listesini gormek icin:
sudo fail2ban-client status sshd
# veya iptables uzerinden
sudo iptables -L f2b-sshd -nEn Iyi Uygulamalar
Fail2ban'i en etkili sekilde kullanmak icin bircok noktaya dikkat edilmelidir. Oncelikle, kendi IP adreslerinizi mutlaka ignoreip listesine ekleyin; aksi halde yanlislikla kendinizi engelleyebilirsiniz. Ikinci olarak, bantime degerini ortaminiza gore ayarlayin; cok kisa sureler saldirganin tekrar denemesine izin verirken, cok uzun sureler yanlis engellenen kullanicilarin erisimini uzun sure keser.
Log izleme periyodunu da ortaminiza gore ayarlayin. Yuksek trafikli sistemlerde findtime degerini artirmak yanlis pozitif sonuclari azaltabilir. Duzenli olarak Fail2ban loglarini kontrol ederek performans ve etkinlik degerlendirmesi yapmaniz tavsiye edilir.
sudo tail -f /var/log/fail2ban.logSonuc
Fail2ban, sunucu guvenliginde kritik bir rol oynayan, kolay yapilandirilabilir ve etkili bir aracidir. Dogru yapilandirildiginde brute-force saldiriarini yuzde 99 oraninda engelleyebilir ve sisteminizi yetkisiz erisimlerden koruyabilir. Ancak unutulmamalidir ki, Fail2ban tek basina yeterli degildir; kapsamli bir guvenlik stratejisi SSH anahtari kullanimi, guvenlik duvari yapilandirmasi ve duzenli sistem guncellmeleri gibi diger onlemlerle birlikte degerlendirilmelidir. Fail2ban'i mevcut guvenlik altyapiriniza entegre ederek, sunucularinizin guvenlik seviyesini onemli olcuilde artirabilirsiniz.