Takip et

Ubuntu 14.04 Üzerinde SSH’ı Fail2Ban ile Koruma

Ubuntu 14.04 Üzerinde SSH’ı Fail2Ban ile Koruma Sunucuların güvenliği, günümüzün dijital dünyasında kritik bir öneme sahiptir. Özellikle

Ubuntu 14.04 Üzerinde SSH’ı Fail2Ban ile Koruma

Sunucuların güvenliği, günümüzün dijital dünyasında kritik bir öneme sahiptir. Özellikle internete açık sunucular, sürekli olarak kötü niyetli saldırganların hedefi haline gelmektedir. Bu saldırıların başında, genellikle SSH (Secure Shell) hizmeti üzerinden yapılan kaba kuvvet (brute-force) saldırıları gelir. SSH, uzak sunuculara güvenli bir şekilde erişim sağlamak için kullanılan temel bir protokoldür ve doğru şekilde korunmadığında ciddi güvenlik açıkları yaratabilir. Bu makalede, Ubuntu 14.04 işletim sistemi üzerinde SSH hizmetinizi Fail2Ban ile nasıl koruyacağınızı, kurulumdan gelişmiş yapılandırmalara kadar detaylı bir şekilde inceleyeceğiz.

Giriş

SSH, sunuculara uzaktan erişim, komut çalıştırma ve dosya transferi için şifreli bir kanal sağlar. Bu özelliği sayesinde sistem yöneticileri ve geliştiriciler için vazgeçilmez bir araçtır. Ancak, SSH’ın yaygın kullanımı ve genellikle varsayılan 22 numaralı portu kullanması, onu siber saldırganlar için cazip bir hedef haline getirir. Kaba kuvvet saldırıları, saldırganların bir kullanıcı adı ve şifre kombinasyonunu tekrar tekrar deneyerek sisteme sızmaya çalıştığı bir yöntemdir. Bu tür saldırılar, sadece sunucu kaynaklarını tüketmekle kalmaz, aynı zamanda başarılı olduklarında sunucunun tamamen ele geçirilmesine yol açabilir.

İşte tam bu noktada Fail2Ban devreye girer. Fail2Ban, sunucu log dosyalarını izleyerek belirli bir zaman diliminde başarısız giriş denemeleri gibi kötü niyetli davranışları tespit eden ve bu davranışları sergileyen IP adreslerini geçici veya kalıcı olarak engelleyen bir intrusion prevention (saldırı önleme) yazılımıdır. Bu sayede, sunucunuz kaba kuvvet saldırılarına karşı otomatik olarak korunur ve güvenlik duruşu önemli ölçüde güçlenir. Ubuntu 14.04, uzun süreli destek (LTS) sürümü olmasına rağmen, güvenlik güncellemeleri almasa da birçok eski sistemde hala kullanılmaktadır ve Fail2Ban bu sistemler için hala geçerli ve etkili bir güvenlik katmanı sunar.

Neden Fail2Ban?

Fail2Ban’ın sunucu güvenliğindeki rolü ve sunduğu avantajlar, onu vazgeçilmez bir araç haline getirmektedir. İşte başlıca nedenler:

* Otomatik Koruma: Fail2Ban, manuel müdahaleye gerek kalmadan 7/24 otomatik koruma sağlar. Log dosyalarını sürekli izler ve tehditleri anında tespit ederek harekete geçer. Bu, özellikle yoğun saldırı altında olan sunucular için büyük bir avantajdır.
* Kaba Kuvvet Saldırılarına Karşı Etkililik: SSH, FTP, web sunucuları gibi birçok hizmete yönelik kaba kuvvet saldırılarını etkin bir şekilde engeller. Belirli bir sayıda başarısız denemenin ardından saldırganın IP adresini yasaklayarak, saldırının başarı şansını ortadan kaldırır.
* Kaynak Verimliliği: Fail2Ban, sistem kaynaklarını minimum düzeyde kullanarak çalışır. Log dosyalarını verimli bir şekilde tarar ve sadece gerektiğinde IP adreslerini engellemek için iptables gibi güvenlik duvarı kurallarını günceller. Bu, performans kaygısı olmadan güvenlik sağlamanın anahtarıdır.
* Esnek Yapılandırma: Yazılım, “jail” (hapishane) adı verilen yapılandırma birimleri aracılığıyla son derece esnek bir yapıya sahiptir. Her bir hizmet (SSH, Apache, Nginx vb.) için ayrı ayrı kurallar tanımlanabilir. Yasaklama süreleri, deneme limitleri ve beyaz listeler gibi parametreler kolayca özelleştirilebilir.
* Proaktif Savunma: Fail2Ban, bir saldırı başlamadan önce (veya ilk aşamalarında) devreye girerek potansiyel tehditleri bertaraf eder. Bu proaktif yaklaşım, saldırganların sisteme sızmasını engeller ve sunucunun bütünlüğünü korur.
* Kullanım Kolaylığı: Kurulumu ve temel yapılandırması oldukça basittir. Çoğu Linux dağıtımının paket depolarında bulunur ve birkaç komutla kurulabilir. Varsayılan ayarları bile SSH için etkili bir koruma sağlar.

Bu avantajlar göz önüne alındığında, Fail2Ban’ın herhangi bir internete açık Ubuntu 14.04 sunucusunda SSH güvenliğini sağlamak için olmazsa olmaz bir araç olduğu açıktır.

Ubuntu 14.04 Üzerinde Fail2Ban Kurulumu

Ubuntu 14.04 üzerinde Fail2Ban kurulumu oldukça basittir ve birkaç temel komutla gerçekleştirilebilir. İşte adım adım kurulum süreci:

Sistem Paket Listesini Güncelleme

Kuruluma başlamadan önce, sisteminizdeki paket listesini güncelleyerek en son yazılım sürümlerine ve bağımlılıklara eriştiğinizden emin olun. Bu, herhangi bir potansiyel uyumluluk sorununu önlemeye yardımcı olur.

sudo apt-get update

Bu komut, yerel paket indeksinizi Ubuntu’nun resmi depolarındaki en son bilgilerle senkronize eder.

Fail2Ban Paketini Kurma

Paket listesi güncellendikten sonra, Fail2Ban’ı apt-get komutuyla kolayca kurabilirsiniz:

sudo apt-get install fail2ban

Kurulum sırasında, sistem sizden onay isteyebilir. Y tuşuna basıp Enter’a basarak devam edin. apt-get komutu, Fail2Ban paketini ve gerekli tüm bağımlılıklarını indirip sisteminize yükleyecektir.

Kurulumu Doğrulama ve Servis Durumunu Kontrol Etme

Kurulum tamamlandıktan sonra, Fail2Ban servisinin düzgün bir şekilde çalışıp çalışmadığını kontrol etmek iyi bir uygulamadır.

sudo service fail2ban status

Bu komut, Fail2Ban servisinin durumunu gösterecektir. Çıktıda genellikle “fail2ban is running” veya benzeri bir ifade görmelisiniz. Eğer servis çalışmıyorsa, aşağıdaki komutla başlatabilirsiniz:

sudo service fail2ban start

Ayrıca, Fail2Ban’ın kurulu olduğunu ve temel komutlarının çalıştığını doğrulamak için fail2ban-client komutunu kullanabilirsiniz:

sudo fail2ban-client status

Bu komut, çalışan jail’leri (henüz yapılandırma yapmadığımız için muhtemelen hiçbir jail listelenmeyecektir) ve Fail2Ban’ın genel durumunu gösterecektir.

Bu adımları tamamladıktan sonra, Fail2Ban başarıyla kurulmuş ve varsayılan ayarlarıyla çalışmaya başlamış olacaktır. Ancak, SSH korumasını etkinleştirmek ve ayarları ihtiyaçlarınıza göre özelleştirmek için yapılandırma adımlarına geçmemiz gerekmektedir.

Fail2Ban Yapılandırmasına Giriş

Fail2Ban’ın gücü, esnek yapılandırma yeteneklerinden gelir. Temel olarak, Fail2Ban üç ana bileşen etrafında döner: Jail’ler (Hapishaneler), Filtreler ve Eylemler (Actions).

* Jail’ler: Bir “jail”, belirli bir hizmet (örneğin SSH, Apache, Nginx) için tanımlanmış bir dizi kuralı temsil eder. Her jail, hangi log dosyasının izleneceğini, hangi filtrenin kullanılacağını, bir IP adresinin ne zaman yasaklanacağını ve yasaklandığında hangi eylemin gerçekleştirileceğini belirtir.
* Filtreler: Filtreler, log dosyalarındaki kötü niyetli girişleri tanımlamak için kullanılan düzenli ifadeler (regex) içerir. Örneğin, bir SSH filtresi, başarısız SSH giriş denemelerini gösteren log satırlarını tanımak için tasarlanmıştır. Fail2Ban, birçok popüler hizmet için önceden tanımlanmış filtrelerle gelir.
* Eylemler: Eylemler, bir IP adresi bir jail tarafından yasaklandığında ne yapılacağını tanımlar. En yaygın eylem, saldırganın IP adresini güvenlik duvarı (genellikle iptables) üzerinden engellemektir. Diğer eylemler arasında e-posta bildirimleri gönderme veya özel komut dosyaları çalıştırma yer alabilir.

Fail2Ban’ın yapılandırma dosyaları /etc/fail2ban/ dizininde bulunur. Bu dizindeki en önemli dosyalar jail.conf ve jail.d/.conf ile jail.local ve jail.d/.local dosyalarıdır.

jail.conf ve jail.local Dosyaları

Fail2Ban yapılandırmasının temelini jail.conf dosyası oluşturur. Bu dosya, tüm varsayılan jail’leri, filtreleri ve eylemleri içerir. Ancak, jail.conf dosyasını doğrudan düzenlemek kesinlikle önerilmez. Bunun nedeni, Fail2Ban paketi güncellendiğinde bu dosyanın üzerine yazılabilmesi ve yaptığınız tüm değişikliklerin kaybolabilmesidir.

Doğru yaklaşım, jail.conf dosyasını kopyalayarak veya bir jail.local dosyası oluşturarak değişiklikleri bu dosyada yapmaktır. Fail2Ban, .local uzantılı dosyaları .conf dosyalarından sonra yükler ve .local dosyalarındaki ayarlar, .conf dosyalarındaki aynı adlı ayarları geçersiz kılar. Bu, varsayılan ayarları güvenli bir şekilde özelleştirmenizi sağlar.

jail.local Dosyasını Oluşturma

En iyi uygulama, jail.conf dosyasını jail.local olarak kopyalayarak başlamaktır:

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

Bu komut, jail.conf dosyasının tüm içeriğini jail.local dosyasına kopyalar. Artık tüm değişikliklerinizi jail.local dosyası içinde yapabilirsiniz. Bu, varsayılan ayarları korurken kendi özelleştirmelerinizi yapmanızı sağlar.

Eğer sadece belirli bir jail’i (örneğin sshd) yapılandırmak istiyorsanız, jail.local dosyanızda sadece o jail’e ait bölümü tutabilir veya sadece değiştirmek istediğiniz parametreleri ekleyebilirsiniz. Fail2Ban, jail.local dosyasında bulunmayan ayarlar için jail.conf dosyasındaki varsayılan değerleri kullanmaya devam edecektir.

Örneğin, jail.local dosyasını açıp sadece genel ayarları ve [sshd] jail’ini değiştirmek için kullanabilirsiniz. Bu yaklaşım, yapılandırma dosyanızı daha temiz ve yönetilebilir hale getirir.

SSH Koruması için Temel Yapılandırma

jail.local dosyamızı oluşturduktan sonra, SSH hizmetini korumak için gerekli temel yapılandırmaları yapabiliriz. Bu adımlar, Fail2Ban’ın SSH kaba kuvvet saldırılarını algılamasını ve engellemesini sağlayacaktır.

İlk olarak, jail.local dosyasını bir metin düzenleyici ile açın. nano veya vim kullanabilirsiniz:

sudo nano /etc/fail2ban/jail.local

Dosyayı açtıktan sonra, genel yapılandırma ayarlarını ve özellikle [sshd] bölümünü bulmanız gerekecek.

Genel Ayarlar

Dosyanın başında, tüm jail’ler için geçerli olacak genel ayarlar bulunur. Bunlar genellikle [DEFAULT] bölümünde tanımlanır:

* bantime: Bir IP adresinin yasaklı kalacağı süre saniye cinsinden. Varsayılan genellikle 10 dakika (600 saniye) veya daha fazladır. Örneğin, 1 saat için 3600.
* findtime: Belirtilen sayıda başarısız denemenin gerçekleşmesi için göz önünde bulundurulacak zaman aralığı saniye cinsinden. Varsayılan genellikle 10 dakika (600 saniye) veya daha azdır.
* maxretry: Bir IP adresinin yasaklanmadan önce izin verilen başarısız deneme sayısı. Varsayılan genellikle 5’tir.

Örnek genel ayarlar:

[DEFAULT]

Varsayılan yasaklama süresi (saniye cinsinden). Örneğin 1 saat.

bantime = 3600

Belirtilen sayıda denemenin gerçekleşmesi için zaman aralığı (saniye cinsinden). Örneğin 10 dakika.

findtime = 600

Yasaklanmadan önce izin verilen maksimum başarısız deneme sayısı.

maxretry = 5

ignoreip = 127.0.0.1/8 ::1

Bu ayarlar, varsayılan olarak tüm jail’ler için geçerli olacaktır. Eğer SSH için farklı ayarlar isterseniz, bunları [sshd] bölümünde geçersiz kılabilirsiniz.

[sshd] Jail’ini Etkinleştirme

jail.local dosyasında aşağı kaydırarak [sshd] bölümünü bulun. Bu bölüm genellikle aşağıdaki gibi görünür:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600

Bu bölümde dikkat etmeniz gereken ana ayarlar şunlardır:

* enabled = true: Bu satır, SSH jail’ini etkinleştirir. Varsayılan olarak false olabilir, bu yüzden true olarak değiştirdiğinizden emin olun.
* port = ssh: SSH hizmetinin kullandığı portu belirtir. Varsayılan SSH portu 22’dir. Eğer SSH portunuzu değiştirdiyseniz (örneğin 2222), bu değeri port = 2222 olarak güncellemeyi unutmayın. ssh anahtar kelimesi, /etc/services dosyasından 22 numaralı portu otomatik olarak alır.
* filter = sshd: Bu, Fail2Ban’ın SSH loglarını analiz etmek için kullanacağı filtredir. sshd filtresi, /etc/fail2ban/filter.d/sshd.conf dosyasında tanımlanmıştır ve SSH başarısız giriş denemelerini tanımak için düzenli ifadeler içerir.
* logpath = /var/log/auth.log: SSH loglarının bulunduğu dosyanın yolunu belirtir. Ubuntu sistemlerinde SSH logları genellikle /var/log/auth.log dosyasında tutulur. Eğer sisteminizde farklı bir log yolu kullanılıyorsa, bu değeri güncelleyin.
* maxretry: Bu jail için özel olarak ayarlanmış başarısız deneme sayısı. Eğer genel ayardan farklı bir değer istiyorsanız burada belirtebilirsiniz.
* bantime: Bu jail için özel olarak ayarlanmış yasaklama süresi. Eğer genel ayardan farklı bir değer istiyorsanız burada belirtebilirsiniz.

Yukarıdaki örnek ayarlar, bir IP adresinin 10 dakika içinde 5 kez başarısız SSH denemesi yapması durumunda 1 saat boyunca yasaklanmasını sağlayacaktır.

Değişiklikleri kaydetmek için nano kullanıyorsanız Ctrl+O, Enter ve ardından Ctrl+X tuşlarına basın.

Fail2Ban Servisini Yeniden Başlatma

Yapılandırma dosyasında yaptığınız değişikliklerin etkili olması için Fail2Ban servisini yeniden başlatmanız gerekir:

sudo service fail2ban restart

Servis yeniden başlatıldıktan sonra, Fail2Ban SSH loglarını izlemeye başlayacak ve kötü niyetli denemeleri engellemek için yapılandırılmış kuralları uygulayacaktır.

Fail2Ban Servisinin Yönetimi

Fail2Ban servisini yönetmek, sistem yöneticileri için temel bir beceridir. Servisin durumunu kontrol etmek, durdurmak, başlatmak, yeniden başlatmak veya belirli IP adreslerinin yasaklarını kaldırmak gibi işlemler sıkça gerekebilir.

Servis Durumunu Kontrol Etme

Fail2Ban servisinin çalışıp çalışmadığını ve genel durumunu kontrol etmek için aşağıdaki komutu kullanın:

sudo service fail2ban status

Bu komut, servisin aktif olup olmadığını ve son çıktısını gösterecektir.

Servisi Başlatma, Durdurma ve Yeniden Başlatma

* Başlatma: Eğer Fail2Ban servisi çalışmıyorsa veya manuel olarak durdurulduysa, aşağıdaki komutla başlatabilirsiniz:

sudo service fail2ban start

* Durdurma: Fail2Ban’ı geçici olarak durdurmak isterseniz:

sudo service fail2ban stop

* Yeniden Başlatma: Yapılandırma dosyalarında değişiklik yaptıktan sonra bu değişikliklerin uygulanması için servisi yeniden başlatmanız gerekir:

sudo service fail2ban restart

Fail2Ban İstemcisi ile Yönetim

fail2ban-client komutu, Fail2Ban’ın durumunu daha ayrıntılı bir şekilde sorgulamak ve yönetim işlemleri yapmak için kullanılır.

* Tüm Jail’lerin Durumunu Görüntüleme: Hangi jail’lerin çalıştığını ve kaç IP adresinin yasaklandığını görmek için:

sudo fail2ban-client status

Bu komutun çıktısı, etkin jail’lerin listesini ve her bir jail’in toplam yasaklama sayısını gösterecektir.

* Belirli Bir Jail’in Durumunu Görüntüleme: Örneğin, sshd jail’inin durumunu ve hangi IP adreslerinin yasaklandığını görmek için:

sudo fail2ban-client status sshd

Bu komut, sshd jail’i tarafından yasaklanmış IP adreslerinin bir listesini gösterecektir.

* Bir IP Adresinin Yasağını Kaldırma (Unban): Yanlışlıkla kendinizi veya güvenilir bir IP adresini yasakladıysanız, yasağı kaldırmak için:

sudo fail2ban-client set sshd unbanip IP_ADRESİ

IP_ADRESİ yerine yasaklamasını kaldırmak istediğiniz IP adresini yazın. Örneğin: sudo fail2ban-client set sshd unbanip 192.168.1.100.

* Bir IP Adresini Manuel Olarak Yasaklama (Ban): Gerekirse, belirli bir IP adresini manuel olarak yasaklayabilirsiniz:

sudo fail2ban-client set sshd banip IP_ADRESİ

Bu yönetim komutları, Fail2Ban’ın sunucunuzdaki etkinliğini izlemenize ve gerektiğinde müdahale etmenize olanak tanır.

Gelişmiş Fail2Ban Yapılandırmaları

Fail2Ban’ın temel kurulumu SSH’ı korumak için yeterli olsa da, güvenlik duruşunuzu daha da güçlendirmek ve özel ihtiyaçlarınıza göre ayarlamalar yapmak için gelişmiş yapılandırma seçeneklerini kullanabilirsiniz.

Yasaklama Süresi (bantime) ve Yeniden Deneme Sayısı (maxretry)

Bu parametreler, Fail2Ban’ın agresifliğini doğrudan etkiler.

* bantime (Yasaklama Süresi): Bir IP adresinin ne kadar süreyle yasaklı kalacağını belirler (saniye cinsinden).
* bantime = 600 (10 dakika) varsayılan bir başlangıç noktasıdır.
* Daha ciddi saldırılar için süreyi artırabilirsiniz, örneğin bantime = 3600 (1 saat) veya bantime = 86400 (1 gün).
* Kalıcı yasaklama için bantime = -1 olarak ayarlayabilirsiniz. Ancak, kalıcı yasaklamaları dikkatli kullanın, çünkü yanlışlıkla bir IP adresini kalıcı olarak yasaklamak sorunlara yol açabilir.
* findtime (Bulma Süresi): Belirtilen sayıda başarısız denemenin bu süre içinde gerçekleşmesi gerekir.
* findtime = 600 (10 dakika) varsayılan bir değerdir.
* Bu süreyi kısaltmak (örneğin 300 saniye), daha hızlı tepki vermeyi sağlar ancak yanlış pozitifleri artırabilir.
* maxretry (Maksimum Yeniden Deneme): Bir IP adresinin yasaklanmadan önce kaç kez başarısız deneme yapabileceğini belirler.
* maxretry = 5 varsayılan bir değerdir.
* Daha agresif bir koruma için bu değeri düşürebilirsiniz (örneğin maxretry = 3). Ancak, bu da yanlış pozitif olasılığını artırabilir.

Bu üç parametre arasındaki dengeyi iyi ayarlamak önemlidir. Çok agresif ayarlar meşru kullanıcıları engelleyebilirken, çok gevşek ayarlar saldırganlara daha fazla fırsat tanır.

Örnek olarak, jail.local dosyanızda [DEFAULT] bölümünde veya [sshd] bölümünde bu değerleri ayarlayabilirsiniz:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3

[sshd]

Sadece sshd için farklı bir bantime belirtebilirsiniz.

bantime = 7200

Beyaz Liste (ignoreip)

Güvenilir IP adreslerinin (örneğin kendi ofisinizin IP adresi, VPN sunucunuzun IP adresi) yanlışlıkla yasaklanmasını önlemek için bir beyaz liste oluşturabilirsiniz. Bu IP adresleri, Fail2Ban tarafından hiçbir zaman yasaklanmayacaktır.

jail.local dosyanızdaki [DEFAULT] bölümünde ignoreip parametresini bulun veya ekleyin:

[DEFAULT]

Beyaz listeye alınacak IP adresleri veya IP aralıkları. Birden fazla IP adresi boşlukla ayrılır.

ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42

* 127.0.0.1/8 ve ::1 yerel ana bilgisayarı temsil eder. Bunları genellikle beyaz listede tutmalısınız.
* 192.168.1.0/24 gibi CIDR notasyonunu kullanarak tüm bir IP aralığını beyaz listeye alabilirsiniz.
* 203.0.113.42 gibi belirli bir IP adresini de ekleyebilirsiniz.

ignoreip ayarını [DEFAULT] bölümüne eklediğinizde, bu ayar tüm jail’ler için geçerli olacaktır. Eğer sadece belirli bir jail için beyaz liste oluşturmak isterseniz, ilgili jail’in bölümüne ekleyebilirsiniz.

E-posta Bildirimleri

Fail2Ban, bir IP adresi yasaklandığında size e-posta bildirimleri gönderecek şekilde yapılandırılabilir. Bu, sunucunuzdaki güvenlik olaylarından haberdar olmanızı sağlar.

E-posta bildirimlerini etkinleştirmek için jail.local dosyasındaki [DEFAULT] bölümünde veya ilgili jail bölümünde aşağıdaki parametreleri ayarlayın:

[DEFAULT]

Kime e-posta gönderileceği

destemail = sizin_eposta_adresiniz@example.com

Kimden e-posta gönderileceği

sendername = Fail2Ban

E-posta göndermek için kullanılacak MTA (Mail Transfer Agent)

mta = sendmail # veya postfix, ssmtp vb.

Eylem: IP'yi yasakla ve bana e-posta gönder.

action = %(action_mw)s

Veya daha fazla bilgi içeren bir e-posta için:

action = %(action_mwl)s

* destemail: Bildirimlerin gönderileceği e-posta adresi.
* sendername: Gönderen adı.
* mta: E-posta göndermek için sunucunuzda kurulu olan posta gönderme aracısı (örneğin sendmail, postfix, ssmtp). Sunucunuzda bir MTA’nın kurulu ve yapılandırılmış olması gerekir.
* action: Bu parametre, bir IP adresi yasaklandığında hangi eylemin gerçekleştirileceğini belirler.
* %(action_)s: Sadece IP’yi yasaklar.
* %(action_mw)s: IP’yi yasaklar ve yasaklama hakkında bir e-posta gönderir.
* %(action_mwl)s: IP’yi yasaklar ve yasaklama ile ilgili log satırlarını içeren bir e-posta gönderir. Bu, genellikle daha bilgilendiricidir.

Bu ayarları yaptıktan sonra Fail2Ban servisini yeniden başlatmayı unutmayın.

Özel Log Dosyaları

Eğer SSH loglarınız /var/log/auth.log dışında bir yolda bulunuyorsa (ki Ubuntu 14.04 için varsayılan budur, ancak özel durumlarda değişebilir), logpath parametresini güncelleyebilirsiniz:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /path/to/your/custom/auth.log
maxretry = 5
bantime = 3600

Bu gelişmiş yapılandırmalar, Fail2Ban’ın gücünü tam olarak kullanmanızı ve sunucunuzun güvenliğini özel ihtiyaçlarınıza göre özelleştirmenizi sağlar. Her değişiklikten sonra Fail2Ban servisini yeniden başlatmayı unutmayın.

Fail2Ban’ın Çalışmasını Test Etme

Fail2Ban’ı yapılandırdıktan sonra, düzgün çalışıp çalışmadığını test etmek önemlidir. Bu, ayarlarınızın doğru olduğunu ve sunucunuzun kaba kuvvet saldırılarına karşı korunduğunu doğrular.

Uyarı: Bu testleri yaparken, kendinizi yanlışlıkla sunucunuzdan yasaklamamaya dikkat edin. ignoreip ayarını doğru yaptığınızdan veya farklı bir IP adresinden test ettiğinizden emin olun.

Test Adımları:

1. Başka Bir Makineden SSH Denemesi Yapın:
Sunucunuzdan farklı bir bilgisayardan (veya bir sanal makineden) SSH bağlantısı kurmaya çalışın. Bilerek yanlış kullanıcı adı veya şifre girerek başarısız denemeler yapın. maxretry değerinize ulaşana kadar bu işlemi tekrarlayın. Örneğin, maxretry = 3 ise 3 veya daha fazla yanlış deneme yapın.

ssh kullanıcı_adı@sunucu_ip_adresi

Her denemede yanlış bir şifre girin.

2. Fail2Ban Durumunu Kontrol Edin:
Yanlış denemeleri yaptıktan sonra, sunucunuza (eğer yasaklanmadıysanız veya beyaz listedeyseniz) veya başka bir SSH oturumundan bağlanarak Fail2Ban’ın durumunu kontrol edin:

sudo fail2ban-client status sshd

Bu komutun çıktısında, test ettiğiniz IP adresinin Currently banned: 1 veya daha fazla bir sayı altında listelendiğini görmelisiniz.

Örnek çıktı:

Status for jail sshd:
    |- filter
    |  |- currently failed : 5
    |  |- total failed   : 15
    |  - file list    : /var/log/auth.log
    - actions
       |- currently banned : 1
       |- total banned   : 1
       - banned IP list : 203.0.113.100

Burada 203.0.113.100 test ettiğiniz IP adresi olmalıdır.

3. iptables Kurallarını Kontrol Edin:
Fail2Ban, yasaklama işlemleri için iptables güvenlik duvarı kurallarını kullanır. Yasaklanan IP adresinin iptables kurallarına eklenip eklenmediğini kontrol edebilirsiniz:

sudo iptables -L -n

Çıktıda, fail2ban-SSH (veya kullandığınız jail adına göre) zincirinde test ettiğiniz IP adresinin engellendiğini gösteren bir kural görmelisiniz.

Örnek çıktı (ilgili bölüm):

Chain fail2ban-SSH (1 references)
    target     prot opt source               destination
    DROP       all  --  203.0.113.100        0.0.0.0/0
    RETURN     all  --  0.0.0.0/0            0.0.0.0/0

4. Fail2Ban Loglarını Kontrol Edin:
Fail2Ban'ın kendi log dosyası olan /var/log/fail2ban.log dosyasını kontrol ederek yasaklama olaylarını görebilirsiniz:

sudo tail -f /var/log/fail2ban.log

Bu komutun çıktısında, Fail2Ban'ın test ettiğiniz IP adresini nasıl algıladığını ve yasakladığını gösteren satırları görmelisiniz. Örneğin:

... fail2ban.actions: WARNING [sshd] Ban 203.0.113.100

5. Yasaklanan IP Adresinden Tekrar Bağlanmayı Deneyin:
Test ettiğiniz IP adresinden tekrar SSH bağlantısı kurmaya çalıştığınızda, bağlantının reddedildiğini veya zaman aşımına uğradığını görmelisiniz.

ssh kullanıcı_adı@sunucu_ip_adresi

Bu, Fail2Ban'ın başarıyla çalıştığını ve saldırgan IP adreslerini engellediğini gösterir.

6. Yasağı Kaldırın (Opsiyonel):
Testiniz bittikten sonra, yasaklanan IP adresinin yasağını kaldırmak için:

sudo fail2ban-client set sshd unbanip TEST_IP_ADRESİ

Bu test adımları, Fail2Ban kurulumunuzun ve yapılandırmanızın beklendiği gibi çalıştığından emin olmanızı sağlar.

Fail2Ban ile SSH Güvenliğini Artırma İpuçları

Fail2Ban, SSH güvenliğini önemli ölçüde artıran harika bir araçtır, ancak tek başına yeterli değildir. SSH güvenliğinizi maksimum düzeye çıkarmak için Fail2Ban'ı diğer güvenlik en iyi uygulamalarıyla birlikte kullanmalısınız.

1. Varsayılan SSH Portunu Değiştirin:
SSH'ın varsayılan 22 numaralı portu, kaba kuvvet saldırganları tarafından en çok hedeflenen porttur. Portu daha yüksek, standart dışı bir numaraya (örneğin 2222 veya 50000'lerin üzeri) değiştirmek, otomatik bot taramalarının çoğundan kaçınmanıza yardımcı olur. Bu, saldırı hacmini önemli ölçüde azaltır.
* /etc/ssh/sshd_config dosyasını düzenleyin: Port 22 satırını Port YENİ_PORT_NUMARASI olarak değiştirin.
*
sudo service ssh restart komutuyla SSH servisini yeniden başlatın.
* Fail2Ban
jail.local dosyasındaki port = ssh ayarını port = YENİ_PORT_NUMARASI olarak güncellemeyi unutmayın.

2. Şifre Yerine Anahtar Tabanlı Kimlik Doğrulama Kullanın:
Parola tabanlı kimlik doğrulama, kaba kuvvet saldırılarına karşı her zaman savunmasızdır. SSH anahtar çiftleri (genel ve özel anahtar), şifrelerden çok daha güvenlidir. Özel anahtarınızı asla kimseyle paylaşmayın ve onu bir parola ile koruyun.
* SSH anahtar çifti oluşturun: ssh-keygen.
* Genel anahtarınızı sunucuya kopyalayın:
ssh-copy-id kullanıcı@sunucu_ip_adresi.
* Sunucunuzdaki
/etc/ssh/sshd_config dosyasında PasswordAuthentication no olarak ayarlayarak şifre tabanlı kimlik doğrulamayı tamamen devre dışı bırakın.

3. Root ile SSH Erişimini Devre Dışı Bırakın:
root kullanıcısı, sistemdeki en yetkili kullanıcıdır ve bu hesabın güvenliği kritik öneme sahiptir. root kullanıcısı ile doğrudan SSH erişimini devre dışı bırakmak, saldırganların hedefini daraltır. Bunun yerine, normal bir kullanıcıyla giriş yapın ve gerektiğinde sudo komutunu kullanarak yükseltilmiş ayrıcalıklar elde edin.
*
/etc/ssh/sshd_config dosyasında PermitRootLogin no olarak ayarlayın.

4. Sadece Belirli Kullanıcılar için SSH Erişimi:
Sunucunuza SSH ile bağlanmasına izin verilen kullanıcıları açıkça tanımlayarak güvenlik riskini azaltabilirsiniz.
* /etc/ssh/sshd_config dosyasında AllowUsers kullanıcı1 kullanıcı2 şeklinde bir satır ekleyin. Sadece belirtilen kullanıcılar SSH ile bağlanabilir.

5. Güçlü Şifre Politikaları Uygulayın:
Eğer şifre tabanlı kimlik doğrulamayı tamamen devre dışı bırakamıyorsanız, tüm kullanıcılar için güçlü ve karmaşık şifreler kullanılmasını sağlayın. Şifrelerin düzenli olarak değiştirilmesini teşvik edin.

6. SSH Bağlantılarını Sınırlayın:
Bazı durumlarda, SSH erişimini sadece belirli IP adresleriyle veya IP aralıklarıyla sınırlayabilirsiniz. Bu, güvenlik duvarı (iptables) kurallarıyla veya /etc/ssh/sshd_config dosyasındaki AllowUsers veya AllowGroups ile birleştirilerek yapılabilir.

7. Sisteminizi Güncel Tutun:
Ubuntu 14.04 artık resmi güvenlik güncellemeleri almasa da, mümkünse daha yeni ve desteklenen bir Ubuntu sürümüne geçmeyi düşünmelisiniz. Eğer bu mümkün değilse, kurulu olan tüm paketleri güncel tutmak ve bilinen güvenlik açıklarını yamamak için elinizden geleni yapın.

Bu ipuçlarını Fail2Ban ile birleştirerek, SSH hizmetinizin ve dolayısıyla sunucunuzun genel güvenliğini önemli ölçüde artırabilirsiniz. Güvenlik, katmanlı bir yaklaşımla sağlanır ve her bir katman, saldırganların sisteme sızmasını zorlaştırır.

Sık Karşılaşılan Sorunlar ve Çözümleri

Fail2Ban yapılandırması sırasında veya sonrasında bazı yaygın sorunlarla karşılaşabilirsiniz. İşte bunlardan bazıları ve olası çözümleri:

1. Fail2Ban Başlamıyor veya Yeniden Başlatılamıyor

* Sorun: sudo service fail2ban restart komutu hata veriyor veya servis başlamıyor.
* Çözüm:
* Logları Kontrol Edin: En önemli adım, Fail2Ban'ın kendi log dosyasını (
/var/log/fail2ban.log) ve sistem loglarını (/var/log/syslog veya /var/log/auth.log) kontrol etmektir. Hata mesajları genellikle sorunun kökenini gösterir.
* Yapılandırma Dosyası Sözdizimi:
jail.local veya diğer yapılandırma dosyalarınızda bir sözdizimi hatası (örneğin, yanlış yazılmış bir parametre adı, eksik eşittir işareti) olabilir. Özellikle son yaptığınız değişiklikleri gözden geçirin.
* İzinler: Log dosyalarına veya Fail2Ban yapılandırma dosyalarına erişim izinleri sorunlu olabilir.
ls -l ile izinleri kontrol edin ve gerekirse chmod veya chown ile düzeltin.

2. IP Adresleri Yasaklanmıyor

* Sorun: Kaba kuvvet denemeleri yapmanıza rağmen fail2ban-client status sshd komutunda IP adreslerinin yasaklandığını görmüyorsunuz.
* Çözüm:
*
enabled = true: İlgili jail'in (örneğin [sshd]) jail.local dosyasında enabled = true olarak ayarlandığından emin olun.
*
logpath Doğru mu?: logpath parametresinin SSH loglarınızın doğru yolunu gösterdiğinden emin olun (/var/log/auth.log çoğu Ubuntu sisteminde doğrudur). Log dosyasının içeriğini tail -f /var/log/auth.log ile kontrol ederek başarısız giriş denemelerinin bu dosyaya yazıldığından emin olun.
*
filter Doğru mu?: filter parametresinin doğru filtreyi gösterdiğinden emin olun (örneğin filter = sshd). Filtrenin içeriği (/etc/fail2ban/filter.d/sshd.conf) logdaki hata mesajlarını doğru şekilde eşleştirebiliyor mu kontrol edin.
*
maxretry ve findtime: maxretry değerine ulaştığınızdan ve bu denemelerin findtime içinde gerçekleştiğinden emin olun. Belki de çok yüksek bir maxretry veya çok kısa bir findtime ayarladınız.
*
iptables Çakışmaları: Başka bir güvenlik duvarı (örneğin ufw) kullanıyorsanız, Fail2Ban'ın iptables kurallarıyla çakışıyor olabilir. Fail2Ban, iptables kurallarını doğrudan yönetir. UFW kullanıyorsanız, Fail2Ban'ın UFW'ye entegrasyonu için özel ayarlar gerekebilir (ancak Ubuntu 14.04'te bu genellikle sorunsuz çalışır).

3. Kendimi Yanlışlıkla Yasakladım

* Sorun: Kendi IP adresinizi yanlışlıkla yasakladınız ve sunucuya erişemiyorsunuz.
* Çözüm:
* fail2ban-client unbanip: Eğer başka bir SSH oturumunuz varsa veya sunucuya farklı bir IP adresinden erişebiliyorsanız, sudo fail2ban-client set sshd unbanip SİZİN_IP_ADRESİNİZ komutunu kullanarak yasağı kaldırın.
* Konsol Erişimi: Eğer tamamen kilitlendiyseniz, sunucunun fiziksel konsoluna veya sanal makine sağlayıcınızın yönetim arayüzünden konsol erişimine ihtiyacınız olacaktır. Oradan
fail2ban-client komutunu çalıştırarak yasağı kaldırabilirsiniz.
*
ignoreip Kullanın: Bu sorunu önlemek için, kendi IP adreslerinizi veya güvendiğiniz ağları jail.local dosyasındaki ignoreip parametresine ekleyin.

4. E-posta Bildirimleri Gelmiyor

* Sorun: E-posta bildirimlerini yapılandırdınız ancak yasaklama olaylarında e-posta almıyorsunuz.
* Çözüm:
* destemail ve sendername: Bu parametrelerin doğru ayarlandığından emin olun.
* mta Ayarı: Sunucunuzda yapılandırılmış bir MTA (Mail Transfer Agent) kurulu ve çalışıyor olmalıdır (örneğin sendmail, postfix, ssmtp). mta parametresinin doğru MTA'yı gösterdiğinden emin olun.
* MTA Logları: MTA'nızın loglarını kontrol edin (örneğin
/var/log/mail.log veya /var/log/syslog). E-postanın gönderilmeye çalışılıp çalışılmadığını ve herhangi bir hata olup olmadığını gösterir.
* Spam Klasörü: E-postalarınızın spam klasörüne düşüp düşmediğini kontrol edin.
*
action Ayarı: action parametresinin %(action_mw)s veya %(action_mwl)s` gibi e-posta gönderen bir eylem olarak ayarlandığından emin olun.

Bu sorun giderme ipuçları, Fail2Ban ile karşılaşabileceğiniz çoğu yaygın sorunu çözmenize yardımcı olacaktır. Her zaman log dosyalarını kontrol etmekle başlayın; bunlar genellikle sorunun nedenine dair en iyi ipuçlarını verir.

Sonuç

Bu makalede, Ubuntu 14.04 işletim sistemi üzerinde SSH hizmetinizi Fail2Ban ile nasıl koruyacağınızı adım adım inceledik. Fail2Ban'ın kurulumundan temel yapılandırmasına, gelişmiş ayarlardan servis yönetimine ve sık karşılaşılan sorunlara kadar geniş bir yelpazede bilgi sunduk.

Fail2Ban, sunucularınızı kaba kuvvet saldırılarına karşı otomatik olarak koruyan, esnek ve kaynak dostu bir araçtır. SSH, FTP, web sunucuları gibi birçok hizmet için proaktif bir savunma katmanı sağlayarak sunucunuzun güvenliğini önemli ölçüde artırır. Özellikle Ubuntu 14.04 gibi artık güvenlik güncellemeleri almayan sistemlerde, Fail2Ban gibi ek güvenlik katmanları hayati öneme sahiptir.

Ancak, unutulmamalıdır ki Fail2Ban tek başına mükemmel bir güvenlik çözümü değildir. SSH portunu değiştirmek, anahtar tabanlı kimlik doğrulamayı kullanmak, root ile doğrudan erişimi yasaklamak ve güçlü şifre politikaları uygulamak gibi diğer güvenlik en iyi uygulamalarıyla birleştirildiğinde, sunucunuzun güvenlik duruşu en üst düzeye çıkarılabilir. Güvenlik, sürekli bir süreçtir ve katmanlı bir yaklaşımla ele alınmalıdır.

Bu makaledeki adımları takip ederek, Ubuntu 14.04 sunucunuzdaki SSH hizmetini Fail2Ban ile etkin bir şekilde koruyabilir ve kötü niyetli saldırganların sunucunuza sızma girişimlerini önemli ölçüde azaltabilirsiniz. Sunucunuzun güvenliğini ciddiye almak, verilerinizin ve hizmetlerinizin bütünlüğü için kritik öneme sahiptir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version