Fail2Ban Nasıl Kullanılır?

7 Mart 2024 8 mins to read
Share

Fail2Ban, Linux sistemlerini ve sunucularını brute-force saldırılarından koruyan Python ile yazılmış bir saldırı önleme çerçevesidir. Sunucunuzdaki SSH için kaba kuvvet koruması sağlamak üzere Fail2Ban’ı kurabilirsiniz. Bu, sunucunuzun kaba kuvvet saldırılarına karşı güvende olmasını sağlar. Ayrıca, yapılan kimlik doğrulama girişimlerinin sayısına göre saldırıların gücünü izlemenize de olanak tanır.

Kaba kuvvet saldırıları son derece güçlü olabilir ve günde binlerce başarısız kimlik doğrulama denemesine neden olabilir. Bu nedenle sunucunuzu bu saldırılardan nasıl koruyacağınızı ve IP adreslerini nasıl engelleyeceğinizi anlamak çok önemlidir. Fail2Ban, bir kullanıcının engellenmeden önce yapabileceği başarısız kimlik doğrulama girişimlerinin sayısını sınırlandırarak kaba kuvvet saldırılarını engelleme sürecini otomatikleştirmenize olanak tanır. Bu, SSH anahtar çifti kimlik doğrulaması yerine uzaktan kimlik doğrulaması için parola kullanan kullanıcı hesaplarına sahip sunucular için son derece kullanışlıdır.

Fail2Ban’ın Kurulması ve Yapılandırılması

Fail2Ban’ın kullanımı ücretsizdir ve popüler paket yöneticilerinin çoğu aracılığıyla kurulabilir.

  1. Aşağıdaki komutu çalıştırarak Fail2Ban’ı yükleyin:
sudo apt-get install fail2ban

2. Fail2ban’ın sistem başlangıcında çalıştığından emin olmak için aşağıdaki komutu kullanın:

sudo systemctl enable fail2ban.service

Kurulum tamamlandıktan sonra, SSH sunucunuz için bir jail kurmak üzere Fail2Ban’ı yapılandırmaya başlayabilirsiniz. Fail2Ban yapılandırma dosyaları aşağıdaki çıktıda gösterildiği gibi /etc/fail2ban dizininde bulunur.

/etc/fail2ban$ ls -alps
total 68
 4 drwxr-xr-x  6 root root  4096 Oct 12 18:21 ./
 4 drwxr-xr-x 94 root root  4096 Oct 12 18:21 ../
 4 drwxr-xr-x  2 root root  4096 Oct 12 18:21 action.d/
 4 -rw-r--r--  1 root root  2334 Jan 18  2018 fail2ban.conf
 4 drwxr-xr-x  2 root root  4096 Apr  4  2018 fail2ban.d/
 4 drwxr-xr-x  3 root root  4096 Oct 12 18:21 filter.d/
24 -rw-r--r--  1 root root 22897 Jan 18  2018 jail.conf
 4 drwxr-xr-x  2 root root  4096 Oct 12 18:21 jail.d/
 4 -rw-r--r--  1 root root   645 Jan 18  2018 paths-arch.conf
 4 -rw-r--r--  1 root root  2827 Jan 18  2018 paths-common.conf
 4 -rw-r--r--  1 root root   573 Jan 18  2018 paths-debian.conf
 4 -rw-r--r--  1 root root   738 Jan 18  2018 paths-opensuse.conf

Fail2Ban, jail.conf dosyasındaki varsayılan yapılandırmayı kullanır. Ancak, Fail2Ban paketindeki yeni güncellemeler tarafından üzerine yazılabileceğinden varsayılan yapılandırma dosyalarının kullanılması önerilmez. Belirli bir hizmet için yapılandırma oluşturmak için tercih edilen yaklaşım, /etc/fail2ban dizininde .local uzantılı yeni bir yapılandırma dosyası oluşturmaktır.

Fail2Ban ile SSH Jailleri Oluşturma

  1. Aynı dizin içinde jail.local adında yeni bir dosya oluşturarak başlayın. Daha sonra sshd jail için gerekli güvenlik yapılandırmalarını ekleyebilirsiniz.
sudo nano /etc/fail2ban/jail.local

2. SSH hizmetinin güvenliğini ve engellemesini özelleştirmek için Fail2Ban’ın sağladığı seçenekleri keşfedebilirsiniz.

Fail2Ban Yapılandırma Seçenekleri:

enabled Jail durumu (true/false) – Bu, jaili etkinleştirir veya devre dışı bırakır
port Port özellikleri
filter Özel filtreleme (Log filtresi)
logpath Hangi logları kullanmalı
maxretry Yasaklanmadan önce yapılacak deneme sayısı
findtime Başarısız oturum açma denemeleri arasında geçen süre
bantime Bir IP’nin yasaklandığı süre
ignoreip Yasaklanmayacak IP’ler

3. Yukarıdaki tablodaki bilgilerle OpenSSH sunucusu (sshd) için jail.local yapılandırmasını oluşturabilirsiniz. Yapılandırma seçeneklerini girdikten sonra, bu kılavuz örneğinde kullanılan değerler aşağıdaki örnek dosyada listelenmiştir.

File: /etc/fail2ban/jail.local

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 300
bantime = 3600
ignoreip = 127.0.0.1

4. Yapılandırma seçeneklerini ve ilgili değerlerini belirledikten sonra dosyayı kaydedin ve aşağıdaki komutla Fail2Ban hizmetini yeniden başlatın:

sudo systemctl restart fail2ban.service

5. OpenSSH sunucu hizmetini yeniden başlattıktan sonra, Fail2Ban bu yeni yapılandırmayı kullanır ve sshd hizmeti için jail etkinleştirilir ve çalışır.

6. Şimdi /etc/ssh/sshd_config içinde bulunan OpenSSH Yapılandırma dosyasında PasswordAuthentication'ı yeniden etkinleştirerek bu işlevi test edebilirsiniz. Bunu, seçtiğiniz metin düzenleyiciyi kullanarak değeri hayırdan evete değiştirerek yapın. Bu satırların yorumlanmamış olduğundan emin olun.

File: /etc/ssh/sshd_config

#To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no

Bu, kullanıcıların SSH anahtar çiftlerine ek olarak kimlik doğrulama için parola kullanmalarına olanak tanır. Fail2Ban SSH üzerindeki kaba kuvvet girişimlerini otomatik olarak algılar ve kullanıcıları otomatik olarak engeller. Bu, hem parola tabanlı kimlik doğrulamanın hem de sunucunun güvenliğini büyük ölçüde artırır ve yönetici ayrıcalıklarına sahip olmayan kullanıcı hesapları için kullanışlıdır.

Fail2Ban’ı Test Edin

  1. Bunu test etmek için yeni bir kullanıcı hesabı oluşturun, buna dev diyelim.
  2. Dev hesabına üç kez yanlış bir parola ile giriş yapmayı deneyin.
  3. Üç başarısız denemeden sonra bir saat boyunca kimlik doğrulamanız engellenir.
ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
[email protected]: Permission denied (publickey,password).
ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Connection closed by 192.168.1.107 port 22
sh [email protected]
ssh: connect to host 192.168.1.107 port 22: Connection refused

Yukarıdaki çıktıda görebileceğiniz gibi, art arda üç başarısız denemeden sonra, Fail2Ban SSH bağlantısını aktif olarak engeller. Art arda üç başarısız denemeden sonra bağlantı zaman aşımına uğrar ve kullanıcı belirtilen süre boyunca engellenir. Engellenen süre içinde tekrar bağlanmayı denerseniz, “Bağlantı reddedildi” hatası alırsınız ve sunucuya SSH bağlantısı kuramazsınız.

Bu, Fail2Ban’ın gücünü ve sağlam doğasını ve SSH gibi hizmetler için zarif ve etkili güvenlik duvarları oluşturmak için nasıl kullanılabileceğini göstermektedir. Hizmet jaillerinizde güvenlik gereksinimlerinizi karşılayacak şekilde özelleştirebilir ve yeni yapılandırma seçeneklerini kolayca uygulayabilirsiniz.

4. Fail2Ban’ı uygulayıp test ettikten sonra, şimdi Fail2Ban-client ile çeşitli başarısız kimlik doğrulama girişimlerini ve engellenen IP’leri nasıl izleyip analiz edeceğinize bir göz atabilirsiniz.

Fail2Ban-Client ile İzleme

Fail2Ban’ın en büyük avantajlarından biri, tüm başarısız kimlik doğrulama girişimlerini ve engellenen çeşitli IP adreslerini aktif olarak izlemenize olanak sağlamasıdır. Bu bilgiler, IP adreslerinin kökenlerini analiz ederek karşılaştığınız saldırıların ölçeğini ve saldırıların coğrafi konumunu anlamanıza yardımcı olur.

  1. Fail2Ban’ın ve aktif jaillerin durumunu kontrol etmek için Fail2Ban-client aracını kullanabilirsiniz. Bu, aşağıdaki komut çalıştırılarak yapılabilir:
sudo fail2ban-client status
Status
|- Number of jail:	1
`- Jail list:	sshd

Yukarıdaki çıktıda gösterildiği gibi, aktif jail listesi ilgili jaillerin adlarıyla birlikte görüntülenir. Yukarıdaki durumda sshd jail’inin aktif olduğunu görebilirsiniz.

2. SSHD gibi belirli bir jail ile ilgili durum ve bilgileri görüntülemek için aşağıdaki komutu kullanabilirsiniz:

sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	4
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	1
   |- Total banned:	1
   `- Banned IP list:	192.168.1.101

Yukarıdaki çıktı size sshd jail ile ilgili durum ve bilgileri gösterir. Toplam dört başarısız kimlik doğrulama girişiminiz ve bir yasaklı IP adresiniz olduğunu görebilirsiniz. Bu, sizi potansiyel hedefli saldırılara karşı uyarabileceği için faydalıdır.

Kaba kuvvet koruması için Fail2Ban’ı başarıyla kurdunuz, uyguladınız, test ettiniz ve analiz ettiniz. Uzaktan kimlik doğrulama güvenliğinizi ayarlamayı tamamladınız.

Leave a comment