FAIL2BAN İle SSH BruteForce Saldırılarını Önlemek

Home  /  Yazılar

FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME

Bu yazıda SSH protokolüne yapılabilecek olası parola saldırılarına yönelik nasıl bir güvenlik önlemi alabileceğimizden bahsedeceğiz. Bunun için Fail2ban kullanacağız.

Bir SSH sunucusuna bağlanmak istediğinizde bu durum auth.log dosyasına bilgi olarak kaydedilir. /var/log/ dizini altındaki log dosyası içeriği şu şekilde gözüküyor.

Hangi IP adresinden, hangi kullanıcı adı için hangi tarihte parola denemelerinin yapıldığına yönelik kayıtlar mevcut. Peki bu tür denemeleri önlemek için neler yapabiliriz?

  • Port knocking yöntemi ve port taramalarında direkt olarak SSH portunun açık olup olmadığına yönelik tespit engellenebilir.
  • IP bazlı izinler verilebilir ve yalnızca tek sabit IP adresinden gelen paketler kabul edilebilir.
  • SSH parola saldırılarını önlemek için Private Key tabanlı Authentication yapılandırması yapılabilir.
  • SSH sunucusuna gönderilebilecek maximum sayıda istek sınırı belirlenerek “fail2ban” tarzı uygulamalar kullanılabilir.

Bugün, bu örneklerden sonuncusuna yönelik girişimimiz olacak. Fail2ban log dosyasını izleyerek başarısız girişleri takip edeceğiz.

Maximum deneme sayısına ulaşıldığında, saldırgana ait IP adresini alır ve iptables üzerine drop kuralı ekler.

Failban kurulumuna geçebiliriz. Ubuntu tabanlı işletim sistemi kullanan biri “apt-get install fail2ban” komutu ile yüklemeyi gerçekleştirebilir. Eğer arzu edilirse Github repo kullanarak “deb” uzantılı dosya indirilip dpkg –i dosya.deb çalıştırılıp yüklenebilir.

(https://github.com/fail2ban/fail2ban/releases)

Yükleme sonrasında /etc/fail2ban/ dizini altında jail.conf adında yapılandırma dosyası oluşur. Bu dosya içerisine bakıldığında birçok servis üzerine yapılabilecek parola saldırılarını önlemek için kullanılmaktadır.

Bu dosyayı kopyalayıp jail.local adında yeni bir dosya üretip düzenlemelerimizi bunun üzerinde yapacağız.

Dosya içerisinde birçok ayar mevcuttur. Bunlardan bazıları findtime, bantime, maxretry vb ayarlardır.

Bunları tanıyalım.

Maxretry: Bir hostun en fazla ne kadar yanlış deneme yapabileceğini belirtir.

Bantime: Banlanan bir hostun ne kadar süre banlı kalacağını belirtir.

Findtime: Bir hostun kaç dakika içinde başarısız denemeler yaparsa banlanacağını belirtir. Yani 10 dk olarak ayarlanmışsa, “bir host 10 dk içinde üst üste “maxretry” kadar deneme yaparsa” gibi…

SSH servisi hariç diğer servisler disable vaziyette geliyor. Biz SSH bloğunda bir alt satıra geçip “enable = true” yazarak bu kuralı aktif hale getirebiliriz.

Fail2ban-server yazarak uygulamayı hazır hale getiriyoruz ve “sudo fail2ban-client status sshd” komutunu yazarak izlemeye başlayalım.

Saldırgan makinesi ile basit Bruteforce saldırısı başlatalım.

5 den fazla yanlış deneme yapıldığında iptables üzerine kural yazıldığı görülüyor.

Ayrıca sshd status’a bakıldığında kaç defa denemelerin yapıldığı ve o an engellenen IP adresleri görülebilir.

Teşekkürler

Mehmet KELEPÇE