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.
Not
Bu kılavuzda Ubuntu kullanılmaktadır, ancak komutlar diğer sistemler için de benzerdir.
Fail2Ban’ın kullanımı ücretsizdir ve popüler paket yöneticilerinin çoğu aracılığıyla kurulabilir.
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.
Not
Fail2ban jail, sisteminizi veya belirli bir hizmeti koruyan filtreler veya argümanlar içeren bir yapılandırma dosyasıdır
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.
Not
Fail2Ban yapılandırma seçeneklerini ve değerlerini güvenlik gereksinimlerinize göre özelleştirebilirsiniz.
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
Not
Etkin yapılandırmayı false olarak ayarlayarak bir Fail2Ban jailini devre dışı bırakabilirsiniz
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.
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’ı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.
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.