SUNUCU GÜVENLİĞİ | SALDIRI ENGELLEME METODU “FAİL2BAN”

Bir çok Linux sunucu uzaktan erişim için varsayılan olarak 22 nolu port üzerinden SSH erişimi hizmeti vermektedir. Bu port oldukça yaygın olarak kullanılması sebebiyle Brute Force saldırılarına sıkça maruz kalmaktadır. Ayrıca sunucuya kısa zamanda bir çok ping atarak sunucunun kullanılamaz hale gelmesini sağlayan DDoS saldırıları da oldukça yaygındır. Bu tür saldırıları önlemek için Linux sunucularda alabileceğiniz en etkili tedbirlerden birisi Fail2Ban kurmaktır.

Fail2Ban Nasıl Çalışır?

Fail2Ban siteye erişim kayıtlarının tutulduğu logları inceleyerek saldırıları tespit etmekte ve ilgili IP adreslerinden gelen istekleri hızlı bir şekilde engellemektedir. Böylece siteniz sağlıklı bir şekilde çalışmaya devam eder, parolaların tahmin edilmesi için tüm olasılıkları denenmesinin önüne geçilir.

Fail2Ban Kurulumu

Ben sunucumda CentOS kullandığım için kurulumu buna göre anlatacağım ancak Fail2Ban’i diğer Linux dağıtımlarında da sorunsuz bir şekilde kullanabilirsiniz.

Fail2Ban için öncelikle EPEL deposunu kurmak gerekir. Ardından da Fail2Ban kurulum komutunu çalıştırabilirsiniz.

Eğer sisteminizde SELinux kurulu ise onu da güncelleştirmeniz gerekir ki aşağıdaki komut bunun için yeterlidir.

Fail2Ban Ayarlarının Yapılması

Fail2Ban kurulduktan sonra jail.local isimli konfigürasyon dosyasını düzenleyerek yazılımın istediğimiz gibi çalışmasını sağlıyoruz. Bunun için aşağıdaki komut ile jail.conf dosyasını jail.local ismiyle değiştirerek mevcut jail.local dosyasının üzerine yazmasını sağlıyoruz.

Ardından bu dosyayı nano ya da vi gibi bir düzenleyici ile açarak düzenliyoruz.

Dosya içeriği şu şekildedir.

Buradaki satırları şu şekilde açıklayabiliriz:
Ignoreip: Yasaklamaya düşmesini istemediğimiz, mesela kendi IP adresimizi (eğer sabit IP ise) buraya ekleyebiliriz. Birden fazla IP girilecekse arada boşluk bırakarak istediğimiz kadar girebiliriz.
Bantime: Yasaklanan IP adresinin ne kadar süre ile sunucumuza erişiminin engellenmesini istediğimizi saniye cinsinden burada belirtiyoruz.
Findtime: Bu parametre ile IP adresinin iki giriş denemesi arasındaki süreyi burada belirliyoruz.
Maxretry: Sunucuya erişmeye çalışanların maksimum giriş denemesi sayısını bu parametrede belirliyoruz.

Fail2Ban’in çalışmasını örnekle anlatmak gerekirse herhangi bir IP’den 30 saniye içinde 10 defadan fazla erişim denendiği anda bu IP’yi 10 dk yasaklayarak buradan gelecek istekleri 10 dk boyunca engelle diyoruz.

SSH’ın Fail2Ban İle Korunması

Sunucumuza bağlanmak için kullandığımız SSH erişimini korumak için öncelikle nano editör ile aşağıdaki komutu kullanarak sshd.local isimli bir dosya oluşturuyoruz.

Dosyamızın içeriğini de şu şekilde düzenliyoruz.

enabled = true ile korumanın aktif olduğunu belirtiyoruz.
port = ssh ile SSH’ın tanım olduğu portu korumak istediğimizi belirtiyoruz. Eğer 22’den farklı bir port kullanılacaksa buraya direk port numarasını yazabilirsiniz.
action = firewallcmd-ipset ile kontrol edilecek IP adreslerinin kaynağı belirtiliyor.
logpath = %(sshd_log)s ile log dosyasının tutulacağı yer belirtiliyor.
maxretry ve bantime parametrelerini zaten yukarıda açıklamıştık.

Fail2Ban Servisinin Aktif Hale Getirilmesi

Öncelikle CentOS firewall çalışır durumda değilse onu çalışır duruma getiriyoruz.

Ardından Fail2Ban servisini aktif hale getirip başlangıçta çalışacak şekilde ayarlıyoruz.

Başarısız Giriş Denemelerinin Takip Edilmesi

Aşağıdaki komut ile SSH portundan başarısız giriş denemesi yapılıp yapılmadığını görebiliriz.

Yukarıdaki komutun çıktısı şuna benzeyecektir.

Aşağıdaki kod ile servisin çalışıp çalışmadığını, çalışıyor ise kaç IP adresini yasakladığını görebilirsiniz.

Bir IP Adresinin Engellenmesinin Kaldırılması

Bir IP adresinin yasağının kaldırılması için aşağıdaki komutu kullanabilirsiniz.

DEVAMINI OKUYUN