Fail2ban ile Linux Sunucunuzu Nasıl Güvenli Hale Getirirsiniz?

Yayınlanan: 2022-01-29
Ubuntu tarzı bir Linux dizüstü bilgisayarda çalışan stilize bir terminal penceresi.
Fatmawati Achmad Zaenuri/Shutterstock

fail2ban ile Linux bilgisayarınız çok fazla bağlantı hatası olan IP adreslerini otomatik olarak engeller. Kendi kendini düzenleyen güvenlik! Size nasıl kullanılacağını göstereceğiz.

Güvenlik Güvenlik Güvenlik

Windsor Düşesi Wallis Simpson, bir zamanlar ünlü bir şekilde “Asla çok zengin veya çok zayıf olamazsınız” demişti. Bunu modern, birbirine bağlı dünyamız için güncelledik: Asla çok dikkatli veya çok güvenli olamazsınız.

Bilgisayarınız Secure Shell (SSH) bağlantıları gibi gelen bağlantı isteklerini kabul ediyorsa veya bir web veya e-posta sunucusu gibi davranıyorsa, onu kaba kuvvet saldırılarından ve parola tahmincilerinden korumanız gerekir.

Bunu yapmak için, bir hesaba giremeyen bağlantı isteklerini izlemeniz gerekir. Kısa bir süre içinde tekrar tekrar kimlik doğrulaması yapamazlarsa, daha fazla girişimde bulunmaları yasaklanmalıdır.

Bunun pratik olarak başarılabilmesinin tek yolu, tüm süreci otomatikleştirmektir. Biraz basit yapılandırma ile fail2ban , sizin için izleme, yasaklama ve yasağı kaldırma işlemlerini yönetecek.

Reklamcılık

fail2ban , Linux güvenlik duvarı iptables ile bütünleşir. Güvenlik duvarına kurallar ekleyerek şüpheli IP adresleri üzerindeki yasakları zorlar. Bu açıklamayı düzenli tutmak için boş bir kural kümesiyle iptables kullanıyoruz.

Elbette, güvenlik konusunda endişeleriniz varsa, muhtemelen iyi doldurulmuş bir kural kümesiyle yapılandırılmış bir güvenlik duvarınız vardır. fail2ban yalnızca kendi kurallarını ekler ve kaldırır; normal güvenlik duvarı işlevlerinize dokunulmaz.

Bu komutu kullanarak boş kural setimizi görebiliriz:

 sudo iptables -L 

İLGİLİ: iptables için Başlangıç ​​Kılavuzu, Linux Güvenlik Duvarı

fail2ban yükleme

Bu makaleyi araştırmak için kullandığımız tüm dağıtımlarda fail2ban yüklemek basittir. Ubuntu 20.04'te komut aşağıdaki gibidir:

 sudo apt-get install fail2ban 

Fedora 32'de şunu yazın:

 sudo dnf yükleme fail2ban 

Manjaro 20.0.1'de pacman kullandık:

 sudo pacman -Sy fail2ban 

fail2ban'ı yapılandırma

fail2ban kurulumu, jail.conf adlı varsayılan bir yapılandırma dosyası içerir. fail2ban yükseltildiğinde bu dosyanın üzerine yazılır, bu nedenle bu dosyada özelleştirmeler yaparsak değişikliklerimizi kaybederiz.

Bunun yerine, jail.conf dosyasını jail.local adlı bir dosyaya kopyalayacağız. Konfigürasyon değişikliklerimizi jail.local'a koyarak, yükseltmeler arasında kalıcı olacaklar. Her iki dosya da fail2ban tarafından otomatik olarak okunur.

Dosyayı şu şekilde kopyalayabilirsiniz:

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 

Şimdi dosyayı favori düzenleyicinizde açın. gedit kullanacağız:

 sudo gedit /etc/fail2ban/jail.local
Reklamcılık

Dosyada iki bölüm arayacağız: [DEFAULT] ve [sshd]. Yine de gerçek bölümleri bulmaya özen gösterin. Bu etiketler ayrıca onları açıklayan bir bölümde en üstte görünür, ancak istediğimiz bu değil.

/etc/fail2ban/jail.local bir gedit penceresinde açıldı.

[DEFAULT] bölümünü 40. satır civarında bulacaksınız. Bu, birçok yorum ve açıklama içeren uzun bir bölümdür.

/etc/fail2ban/jail.local bir gedit penceresinde açıldı ve 89. satıra kaydırıldı.

90. satıra ilerleyin ve bilmeniz gereken aşağıdaki dört ayarı bulacaksınız:

  • ignip: Asla yasaklanmayacak IP adreslerinin beyaz listesi. Kalıcı bir Hapishaneden Ücretsiz Çıkış kartlarına sahipler. Yerel ana bilgisayar IP adresi ( 127.0.0.1 ), IPv6 eşdeğeri ( ::1 ) ile birlikte varsayılan olarak listededir. Asla yasaklanmaması gerektiğini bildiğiniz başka IP adresleri varsa onları da bu listeye ekleyin ve aralarında boşluk bırakın.
  • bantime: Bir IP adresinin yasaklanma süresi ("m" dakika anlamına gelir). "m" veya "h" (saat için) olmadan bir değer yazarsanız, saniye olarak kabul edilecektir. -1 değeri bir IP adresini kalıcı olarak yasaklayacaktır. Kendinizi kalıcı olarak kilitlememeye çok dikkat edin.
  • findtime: Çok sayıda başarısız bağlantı girişiminin bir IP adresinin yasaklanmasıyla sonuçlanacağı süre.
  • maxretry: "çok fazla başarısız deneme" değeri.

Aynı IP adresinden bir bağlantı findtime süresi içinde maxretry başarısız bağlantı denemeleri yaparsa, bantime süresince yasaklanırlar. Tek istisna, ignoreip listesindeki IP adresleridir.

fail2ban , IP adreslerini belirli bir süre için hapse atar. fail2ban birçok farklı hapishaneyi destekler ve her biri, tek bir bağlantı türü için geçerli olan ayarları temsil eder. Bu, çeşitli bağlantı türleri için farklı ayarlara sahip olmanızı sağlar. Veya fail2ban yalnızca seçilen bir dizi bağlantı türünü izlemesini sağlayabilirsiniz.

Bunu [DEFAULT] bölüm adından tahmin etmiş olabilirsiniz, ancak baktığımız ayarlar varsayılanlardır. Şimdi, SSH hapishanesinin ayarlarına bakalım.

İLGİLİ: Gedit ile Linux'ta Metin Dosyaları Grafiksel Olarak Nasıl Düzenlenir

Hapishane Yapılandırma

Hapishaneler, bağlantı türlerini fail2ban's izlemesinin içine ve dışına taşımanıza izin verir. Varsayılan ayarlar hapishaneye uygulanmasını istediğiniz bantime , findtime ve maxretry için belirli değerler belirleyebilirsiniz.

Reklamcılık

Yaklaşık 280. satıra ilerleyin ve [sshd] bölümünü göreceksiniz.

/etc/fail2ban/jail.local bir gedit penceresinde açıldı ve 280. satıra kaydırıldı.

SSH bağlantı hapishanesi için değerleri ayarlayabileceğiniz yer burasıdır. Bu hapishaneyi izleme ve yasaklamaya dahil etmek için aşağıdaki satırı yazmamız gerekiyor:

 etkin = doğru

Bu satırı da yazıyoruz:

 maxretry = 3

Varsayılan ayar beş'ti, ancak SSH bağlantılarında daha dikkatli olmak istiyoruz. Üçe düşürdük ve ardından dosyayı kaydedip kapattık.

Bu hapishaneyi fail2ban's izlenmesine ekledik ve varsayılan ayarlardan birini geçersiz kıldık. Bir hapishane, varsayılan ve hapishaneye özgü ayarların bir kombinasyonunu kullanabilir.

fail2ban etkinleştiriliyor

Şimdiye kadar fail2ban ve yapılandırdık. Şimdi, otomatik başlatma hizmeti olarak çalışmasını sağlamamız gerekiyor. Ardından, beklendiği gibi çalıştığından emin olmak için test etmemiz gerekir.

Reklamcılık

fail2ban hizmet olarak etkinleştirmek için systemctl komutunu kullanıyoruz:

 sudo systemctl fail2ban'ı etkinleştir

Hizmeti başlatmak için de kullanırız:

 sudo systemctl start fail2ban 

Hizmetin durumunu systemctl kullanarak da kontrol edebiliriz:

 sudo systemctl durumu fail2ban.service 

Her şey yolunda görünüyor - yeşil ışık yandı, yani her şey yolunda.

Bakalım fail2ban aynı fikirde mi:

 sudo fail2ban-istemci durumu 

Bu, kurduklarımızı yansıtıyor. [sshd] adlı tek bir hapishaneyi etkinleştirdik. Hapishanenin adını önceki komutumuza eklersek, daha derine inebiliriz:

 sudo fail2ban-client durumu sshd 

Bu, hata sayısını ve yasaklanmış IP adreslerini listeler. Tabii ki, şu anda tüm istatistikler sıfır.

Hapishanemizi Test Etmek

Başka bir bilgisayarda, test makinemize bir SSH bağlantı isteğinde bulunacağız ve parolayı bilerek yanlış yazacağız. Her bağlantı denemesinde parolayı doğru almak için üç deneme hakkınız vardır.

Reklamcılık

maxretry değeri, üç başarısız parola denemesinden değil, üç başarısız bağlantı denemesinden sonra tetiklenir. Bu nedenle, bir bağlantı denemesinde başarısız olmak için üç kez yanlış bir şifre yazmamız gerekiyor.

Daha sonra başka bir bağlantı girişiminde bulunacağız ve şifreyi üç kez daha yanlış yazacağız. Üçüncü bağlantı isteğinin ilk hatalı parola girişimi fail2ban.

Üçüncü bağlantı talebindeki ilk yanlış şifreden sonra uzak makineden yanıt alamıyoruz. Herhangi bir açıklama alamıyoruz; sadece soğuk omuz alıyoruz.

Komut istemine dönmek için Ctrl+C tuşlarına basmalısınız. Bir kez daha denersek, farklı bir yanıt alırız:

 ssh [email protected] 

Önceden, hata mesajı "İzin reddedildi" idi. Bu sefer, bağlantı tamamen reddedildi. Biz istenmeyen kişiyiz. Yasaklandık.

[sshd] hapishanesinin detaylarına tekrar bakalım:

 sudo fail2ban-client durumu sshd 

Reklamcılık

Üç hata oluştu ve bir IP adresi (192.168.4.25) yasaklandı.

Daha önce de belirttiğimiz gibi fail2ban , güvenlik duvarı kural setine kurallar ekleyerek yasakları zorlar. Kural kümesine bir kez daha bakalım (önceden boştu):

 sudo iptables -L 

INPUT ilkesine, f2b-sshd zincirine SSH trafiği gönderen bir kural eklendi. f2b-sshd zincirindeki kural, 192.168.4.25'ten SSH bağlantılarını reddeder. bantime için varsayılan ayarı değiştirmedik, bu nedenle 10 dakika içinde bu IP adresinin yasağı kaldırılacak ve yeni bağlantı istekleri yapılabilecektir.

Daha uzun bir yasaklama süresi belirlerseniz (birkaç saat gibi), ancak bir IP adresinin daha erken başka bir bağlantı isteğinde bulunmasına izin vermek istiyorsanız, onu erken şartlı tahliye edebilirsiniz.

Bunu yapmak için şunu yazıyoruz:

 sudo fail2ban-client set sshd unbanip 192.168.5.25 

Uzak bilgisayarımızda, başka bir SSH bağlantı isteği yaparsak ve doğru şifreyi yazarsak, bağlanmamıza izin verilir:

 ssh [email protected] 

Basit ve Etkili

Daha basit genellikle daha iyidir ve fail2ban , zor bir soruna zarif bir çözümdür. Çok az yapılandırma gerektirir ve size veya bilgisayarınıza neredeyse hiç işletim yükü yüklemez.

İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar