Fail2ban ile Linux Sunucunuzu Nasıl Güvenli Hale Getirirsiniz?
Yayınlanan: 2022-01-29 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.
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
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.
[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.
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.
Yaklaşık 280. satıra ilerleyin ve [sshd] bölümünü göreceksiniz.
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.
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.
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
Üç 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.
Linux Komutları | ||
Dosyalar | tar · pv · kedi · tac · chmod · grep · diff · sed · ar · adam · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · birleştirme · jq · katlama · uniq · dergictl · kuyruk · stat · ls · fstab · yankı · daha az · chgrp · chown · rev · bak · diziler · tür · yeniden adlandır · zip · unzip · mount · umount · yükle · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · yama · dönüştürmek · rclone · parçalamak · srm | |
süreçler | takma ad · ekran · üst · güzel · renice · ilerleme · strace · systemd · tmux · chsh · geçmiş · at · toplu · ücretsiz · hangi · dmesg · chfn · usermod · ps · chroot · xargs · tty · pembemsi · lsof · vmstat · zaman aşımı · duvar · evet · öldür · uyku · sudo · su · zaman · groupadd · usermod · gruplar · lshw · kapatma · yeniden başlatma · durdurma · güç kapatma · passwd · lscpu · crontab · tarih · bg · fg | |
ağ | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · kazmak · parmak · nmap · ftp · curl · wget · kim · whoami · w · iptables · ssh-keygen · ufw |
İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar