Fail2Ban Kurulumu ve Yapılandırılması Ubuntu 20.04

Fail2Ban, sunucu üzerinde çalışan çeşitli servislerin log dosyalarını tarayan ve çok fazla parola hatası ya da brute force atağı yapan IP adreslerinin erişimini engelleyen bir log ayrıştırma programıdır. Giriş denemesi tespit edildiğinde Fail2Ban, saldırganın IP adresini geçici veya kalıcı olarak engellemek için iptables’a yeni bir kural ekleyecektir. Yapılacak olan engellemenin tetiklenme sayısını ya da süresini de ilgili yapılandırma dosyasından kolayca ayarlayabiliyoruz. Ek olarak oluşan bu ihlallerle alakalı bildirimleri dilerseniz SMTP üzerinden alabilirsiniz. Bu sayede sistem yöneticisinin ilgili log dosyalarını tek tek kontrol etmesine gerek kalmayacağı gibi gözden kaçan ataklarında otomatik olarak engellenmesi sağlanacaktır. Sunucu güvenliği için tavsiye ettiğim basit ama etkili bir open source uygulamadır.  Ancak unutulmamalıdır ki Fail2Ban zayıf kimlik doğrulamanın neden olduğu riski ortadan kaldırmaz.  Bu yazımda Fail2Ban kurulumu ve yapılandırılması hakkında bilgi veriyor olacağım. Aşağıdaki adımlar Ubuntu 20.04 üzerinde yapılmıştır.

 

Fail2Ban Kurulumu ve Yapılandırılması

Fail2Ban Kurulumu ve Yapılandırılması

 

Fail2ban Kurulumu

Kurulum öncesi isterler:

  • Ubuntu 20.04 işletim sistemi
  • root haklarına sahip bir kullanıcı

 

Bu araç için kurulum süreci basittir çünkü Ubuntu paketleme ekibi varsayılan depolarda Fail2Ban paketini bize sunuyor.

Öncelikle yerel paket dizinimizi güncellememiz gerekiyor ve ardından paketi indirmek ve kurmak için apt  komutunu kullanabiliriz:

sudo apt-get update
sudo apt-get install fail2ban

 

Kurulum tamamlandığında, Fail2Ban servisi otomatik olarak başlayacaktır. Servisin durumunu kontrol ederek doğrulayabilirsiniz:

sudo systemctl status fail2ban

 

Komut çıktısı aşağıdakine benzer olmalı:

[email protected]:~# systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-12-19 16:23:30 +03; 1h 19min ago
       Docs: man:fail2ban(1)
   Main PID: 17865 (f2b/server)
      Tasks: 5 (limit: 4567)
     Memory: 11.4M
     CGroup: /system.slice/fail2ban.service
             └─17865 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 19 16:23:30 ubuntu-4gb-fsn1-1 systemd[1]: Starting Fail2Ban Service...
Dec 19 16:23:30 ubuntu-4gb-fsn1-1 systemd[1]: Started Fail2Ban Service.
Dec 19 16:23:30 ubuntu-4gb-fsn1-1 fail2ban-server[17865]: Server ready

 

Görüldüğü üzere Fail2Ban servisi sistemimizde çalışıyor. Kurulum bu kadar artık yapılandırma ayarlarına geçebiliriz.

 

Fail2Ban Yapılandırması

Fail2Ban kurulum sonrasında 2 adet varsayılan yapılandırma dosyası ile birlikte gelir. Bunlar

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/defaults-debian.conf

dosyalarıdır. Fail2Ban’a ait yeni versiyon upgrade işlemlerinde yukarıdaki iki dosyanın üzerine yazılabileceğinden dolayı yapılandırmanın bu iki dosyada yapılması tavsiye edilmez. Eğer yapılması halinde ilgili ayarlarımızın upgrade sonrası uçması anlamına gelmektedir.

Fail2ban, yapılandırma dosyalarını aşağıdaki sırayla okur. Her .local dosyası, .conf dosyasındaki ayarları geçersiz kılar:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Çoğu kullanıcı için, Fail2Ban’ı yapılandırmanın en kolay yolu, jail.conf’u > jail.local’a kopyalamak ve .local dosyasını değiştirmektir. Daha ileri düzey kullanıcılar sıfırdan bir .local yapılandırma dosyası oluşturabilir.

Biz de bu yüzdendir ki varsayılan jail.conf dosyasından bir .local yapılandırma dosyası oluşturuyoruz:

sudo cp /etc/fail2ban/jail.{conf,local}

 

Fail2ban uygulamasını yapılandırmaya başlamak için, jail.local dosyasını metin düzenleyicinizle açın (ben buradaki adımlarda nano kullanıyor olacağım.):

 

nano /etc/fail2ban/jail.local

Dosya içeriğinde her bir yapılandırma parametresinin ne işe yaradığını açıklayan açıklamalar içerir. Bu örnekte, temel ayarları değiştireceğiz.

 

Whitelist

Ban işleminden hariç tutmak istediğiniz IP adresleri, IP aralıkları veya ana bilgisayarlar ignoreip parametresine eklenebilir. Buraya yerel PC IP adresinizi ve whitelist’e eklemek istediğiniz diğer tüm makineleri eklemelisiniz.

Ignoreip ile başlayan satırın başındaki diyez (#) işaretini kaldırın ve IP adreslerinizi boşlukla ayırarak ekleyin:

ignoreip = 127.0.0.1/8 111.111.111.111 192.168.1.0/24

 

BAN Ayarları

Bantime, findtime ve maxretry seçeneklerinin değerleri, ban süresini ve ban koşullarını tanımlar.
 bantime , IP’nin yasaklandığı süredir. Hiçbir son ek belirtilmediğinde, varsayılan olarak saniye cinsindendir. Varsayılan olarak, bant zaman değeri 10 dakikaya ayarlanmıştır. Genel olarak, çoğu kullanıcı daha uzun bir yasaklama süresi ayarlamak isteyecektir. Değeri kendi isteğinize göre değiştirebilirsiniz:

bantime  = 10m
 Not: Eğer bir IP’yi süresiz banlamak istiyorsanız bantime parametresi karşısına negatif bir sayı girmeniz yeterli olacaktır. 

 

 findtime , bir ban işlemi olmadan önceki başarısız girişimlerin sayısı arasındaki süredir. Örneğin, Fail2ban beş hatadan sonra bir IP’yi yasaklayacak şekilde ayarlanmışsa (maxretry, aşağıya bakın), bu hatalar ayarlanmış olan findtime süresi içinde gerçekleşmelidir.

findtime  = 10m

 

 maxretry , bir IP banlanmadan önceki toplam başarısız girişimlerin sayısıdır. Varsayılan değer, çoğu kullanıcı için ideal değer olan 5 olarak ayarlanmıştır.

maxretry = 5

 

E-Posta Bildirimleri

Fail2ban, bir IP yasaklandığında size e-posta  olarak uyarıları gönderebilir. E-postaları almak için, sunucunuzda bir SMTP kurulu olması ve aşağıda gösterildiği gibi IP’yi yalnızca %(action_mw)s olarak banlayan varsayılan eylemi değiştirmeniz gerekir:

action = %(action_mw)s

 

%(action_mw)s, atak yapan IP’yi yasaklar ve whois raporu içeren bir e-posta gönderir. E-postaya ilgili günlükleri dahil etmek istiyorsanız, eylemi %(action_mwl)s olarak ayarlamanız gerekmektedir.
Ayrıca alıcı ve gönderici e-posta adreslerini de ayarlayabilirsiniz:

destemail = [email protected]

sender = [email protected]

 

Bu arada unutmadan yapılan her değişikliğin geçerli olması için Fail2Ban servisinin yeniden başlatılması gerekmektedir. Eğer yapılandırma dosyasında bir yanlışlık yapıldıysa yine servis durumuna bakarak anlayabilirsiniz:

sudo systemctl restart fail2ban
sudo systemctl status fail2ban

 

 

 

Fail2Ban Jails

Fail2Ban, jail kavramını kullanır. Fail2Ban bir servisi tanımlar. Arama modeliyle eşleşen log girişleri sayılır ve önceden tanımlanmış bir koşul karşılandığında ilgili eylemler yürütülür.

Fail2Ban, farklı servis için hali hazırda bir dizi jail ile birlikte kurulur. Hazır gelen jail yapılandırmalarının haricinde kendi jail yapılandırma dosyanızı da oluşturabilirsiniz.

Varsayılan olarak, yalnızca ssh jail etkindir. Bir jaili etkinleştirmek için jail başlığından sonra enabled = true eklemeniz gerekir. Aşağıdaki örnek proftpd hapishanesinin nasıl etkinleştirileceğini gösterir:

[proftpd]

port     = ftp,ftp-data,ftps,ftps-data
logpath  = %(proftpd_log)s
backend  = %(proftpd_backend)s

 

Önceki bölümde konuşmuş olduğumuz ayarlar jaile göre ayarlanabilir. Örneğin:

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 4w
ignoreip  = 127.0.0.1/8 111.111.111.111

 

Filtreler  /etc/fail2ban/filter.d  dizininde bulunur ve jail ile aynı ada sahip bir dosyada saklanır. Düzenli ifadelerle (RegEx) ilgili deneyiminiz varsa, filtrelerde ince ayar yapabilirsiniz.

Bir yapılandırma dosyasını her düzenlediğinizde, değişikliklerin etkili olması için Fail2Ban hizmetini yeniden başlatmanız gerekir:

sudo systemctl restart fail2ban

 

 

Fail2Ban Client

Fail2ban servisi etkileşim kurmak için kullanabileceğiniz  fail2ban-client  adlı bir komut satırı aracıyla birlikte gelir.

Mevcut tüm seçenekleri görüntülemek için, -h seçeneğiyle komutu çağırın:

fail2ban-client -h

 

Bu araç, IP adreslerini yasaklamak / yasağını kaldırmak, ayarları değiştirmek, servisi yeniden başlatmak ve daha fazlası için kullanılabilir. İşte birkaç örnek:

 

Jail durumunu kontrol etmek için:

sudo fail2ban-client status sshd

 

Bir IP’nin banını kaldırmak için:

sudo fail2ban-client set sshd unbanip 111.111.111.111

 

Bir IP’yi banlamak için:

sudo fail2ban-client set sshd banip 111.111.111.111

 

Fail2Ban yapılandırmanızın hangi servisler için geçerli olduğunu öğrenmek için:

fail2ban-client status

 

Son olarak Fail2Ban uygulamasının iptables’a eklediği kuralları görmek için aşağıdaki komutu çalıştırabilirsiniz:

sudo iptables -nvL fail2ban-ssh

ya da 

sudo iptables -nvL f2b-sshd

 

Fail2Ban


Abone ol
Bildir
guest
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle