Fail2ban, yöneticilerin Linux sunucularını kötü niyetli oturum açma ve kaba kuvvet saldırılarına karşı korumalarına yardımcı olan ücretsiz ve açık kaynaklı IPS’dir (İzinsiz Giriş Önleme Yazılımı). Fail2ban Python’da yazılmıştır ve Apache2, SSH, FTP vb. gibi çeşitli hizmetler için filtrelerle birlikte gelir. Fail2ban, kaynak saldırıların IP adreslerini bloke ederek kötü niyetli oturum açma girişimlerini azaltır.
Fail2ban, hizmetlerin günlük dosyalarını (e.f /var/log/auth.log) tarayarak ve çok fazla yanlış parola, açıklardan yararlanma, vb. gibi kötü niyetli oturum açma girişimleri gösteren IP adreslerini yasaklayarak çalışır. Fail2ban ayrıca iptables gibi birden çok güvenlik duvarı arka ucunu destekler, ufw ve firewalld. Ayrıca, engellenen her oturum açma girişimi için bir e-posta bildirimi ayarlamanıza olanak tanır.
Bu eğitimde, Ubuntu 22.04 sunucusunun güvenliğini sağlamak için Fail2ban’ın nasıl kurulacağını ve yapılandırılacağını göstereceğiz. Bu kılavuz ayrıca Fail2ban hizmetini ve hapishaneleri yönetmek için fail2ban-client’ın temel komutunu da kapsar.
UFW Güvenlik Duvarı Kurulumu
Fail2ban’ı kurmaya başlamadan önce, Ubuntu sunucunuzda Güvenlik Duvarını kurmanız gerekecektir.
Varsayılan Ubuntu sunucu kurulumu, yönetimi iptables gibi başka bir güvenlik duvarından daha kolay olan UFW Güvenlik Duvarı ile birlikte gelir.
Şimdi aşağıdaki komutu kullanarak UFW güvenlik duvarı durumunu kontrol edin.
sudo ufw status
“Durum: etkin değil” gibi bir çıktı mesajı alırsanız, UFW güvenlik duvarınız henüz başlamamıştır. Ancak “Ufw komutu bulunamadı” gibi bir çıktı mesajı alırsanız, sunucunuzda UFW güvenlik duvarı kurulu değildir. UFW güvenlik duvarı paketini kurmak için aşağıdaki apt komutunu çalıştırın.
sudo apt install ufw -y
UFW kurulumu tamamlandıktan sonra SSH hizmetini UFW güvenlik duvarına eklemek için aşağıdaki komutu çalıştırın.
sudo ufw allow ssh
Ardından, UFW güvenlik duvarını başlatmak ve etkinleştirmek için aşağıdaki komutu çalıştırın.
sudo ufw enable
UFW güvenlik duvarını onaylamak ve başlatmak için y girin. Son olarak, aşağıdaki komutu kullanarak UFW güvenlik duvarını tekrar kontrol edin.
sudo ufw status
Aşağıda, güvenlik duvarı kurallarına eklenen SSH bağlantı noktası 22 ile UFW güvenlik duvarını “Durum: etkin” olarak görebilirsiniz.
Ubuntu 22.04’te Fail2ban Kurulumu
UFW güvenlik duvarını kurup yapılandırdıktan sonra artık sunucunuza Fail2ban paketini kuracaksınız.
Ubuntu deponuzu güncellemek ve yenilemek için aşağıdaki komutu çalıştırın.
sudo apt update
Şimdi aşağıdaki komutu kullanarak Fail2ban paketini kurun.
sudo apt install fail2ban -y
Kurulum başlayacaktır.
Fail2ban kurulumu tamamlandıktan sonra Fail2ban hizmetini etkinleştirin ve aşağıdaki komutu kullanarak hizmeti başlatın.
sudo systemctl enable fail2ban sudo systemctl start fail2ban
Son olarak, aşağıdaki komutu kullanarak Fail2ban hizmet durumunu kontrol edin.
sudo systemctl status fail2ban
Aşağıdaki ekran görüntüsünde Ubuntu 22.04 sunucusunda Fail2ban hizmetinin çalıştığını göreceksiniz.
Fail2ban’ı Yapılandırma
Fail2ban’ı kurduktan sonra, şimdi Fail2ban’ı kurma ve yapılandırma zamanı.
Tüm Fail2ban yapılandırması /etc/fail2ban dizininde saklanır. Aşağıdaki ayrıntılı Fail2ban yapılandırmasını bilmeniz gerekir:
fail2ban.conf yapılandırması, Fail2ban’ın ana yapılandırmasıdır.
jail.conf yapılandırması, Fail2ban hapishane yapılandırmasının bir örneğidir.
action.d dizini, posta ayarları ve güvenlik duvarı ayarları gibi fail2ban eylem ayarlarını içerir.
jail.d dizini fail2ban jail için ek yapılandırma içerir.
Fail2ban’ı yapılandırmaya başlamak için, aşağıdaki komutu kullanarak varsayılan hapishane yapılandırması jail.conf’u jail.local’a kopyalamanız gerekir.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Şimdi nano düzenleyiciyi kullanarak jail.local yapılandırmasını düzenleyin.
sudo nano /etc/fail2ban/jail.local
İlk olarak, yoksayma seçeneğinin yorumunu kaldırın ve IP adresinizi ekleyin. Ignoreip seçeneğindeki tüm IP adresleri Fail2ban tarafından engellenmeyecektir.
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 192.168.10.20
Yasak ayarları için yapılandırmayı ihtiyacınıza göre değiştirebilirsiniz. Bu örnekte, genel yasaklama süresi 1 gün, bulma süresi 10 dakika ve maksimum yeniden deneme süresi 5 kata kadar olacaktır.
Bantime seçeneği, IP adresinin sunucuya erişiminin yasaklanacağı zamandır. Findtime seçeneği, yasaklama işleminden önceki başarısızlık sayısı arasındaki süredir. Ve maxretry seçeneği, IP adreslerinin yasaklanması için başarısızlık sayısıdır.
bantime = 1d findtime = 10m maxretry = 5
Fail2ban için varsayılan eylem yalnızca IP adresini yasaklamaktır. Ancak, bir IP adresi yasaklandığında posta bildirimi de ayarlayabilirsiniz.
Eylem seçeneğini aşağıdaki gibi değiştirin ve varsayılan gönderici ve hedef posta adresini değiştirin.
action = %(action_mw)s destemail = [email protected] sender = [email protected]
Daha sonra UFW firewall entegrasyonu için banaction seçeneğini aşağıdaki gibi ufw olarak değiştirmeniz gerekmektedir.
banaction = ufw
Son olarak, hapishane yapılandırması için. Bu bölüm, hizmetinizi eklediğiniz ve fail2ban kullanarak güvenliğini sağladığınız yerdir.
Bu örnekte, SSH hizmeti için hapishaneyi etkinleştireceğiz, ancak aynı zamanda sshd hapishanesi için genel varsayılan yapılandırmayı da geçersiz kılacağız.
Yasak süresi 1 hafta olacak ve maksimum başarısızlık 3 kez yeniden denenecek ve bulma süresi 10 dakika olacak.
[sshd] enabled = true maxretry = 3 findtime = 1d bantime = 1w port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s
İşiniz bittiğinde dosyayı kaydedin ve kapatın. Şimdi Fail2ban hizmetini yeniden başlatmak ve jail.local yapılandırmasına yeni değişiklikler uygulamak için aşağıdaki komutu çalıştırın.
sudo systemctl restart fail2ban
Artık e-posta bildirimi etkinleştirilmiş ve SSH hizmetinin güvenliğini sağlamak için sshd hapishanesi etkinleştirilmiş olarak Fail2ban yapılandırmasını tamamladınız.
Fail2ban Durumunu Doğrulamak için Fail2ban-client’ı Kullanma
fail2ban, Fail2ban hizmetiyle etkileşim kurmak için bir fail2ban-client komut satırı sağlar.
Bu, Fail2ban’ı komut satırından yönetmenize ve yapılandırmanıza ve ayrıca Fail2ban hapishanelerini yönetmenize izin verir. fail2ban kurulumunu ve yapılandırmasını doğrulamak için aşağıdaki fail2ban-client komutunu çalıştırın.
sudo fail2ban-client ping
“Server replied: pong” gibi bir çıktı mesajı alırsanız, bu, Fail2ban’ın hatasız çalıştığı anlamına gelir. Ardından, sshd jail’in durumunu kontrol etmek için aşağıdaki fail2ban-client komutunu çalıştırın.
sudo fail2ban-client status sshd
Aşağıda sshd jail’in detaylı durumunu görebilirsiniz. Bu, SSH hizmetinin günlük dosyasını ve sshd hapishanesindeki yasaklı IP adreslerinin listesini içerir.
Şimdi sshd jail’in detaylı konfigürasyonunu almak istiyorsanız aşağıdaki gibi fail2ban-client komutunu kullanabilirsiniz.
sshd jail için bantime yapılandırmasını kontrol edin. Bantime’ın çıktısını saniyeler içinde burada alacaksınız.
sudo fail2ban-client get sshd bantime
sshd hapishanesi için maxrtey yapılandırmasını kontrol edin. Burada maksimum değerin 3 olduğunu göreceksiniz, çünkü bu, maksimum 5 kez olan global konfigürasyondan geçersiz kılınmıştır.
sudo fail2ban-client get sshd maxretry
sshd jaildeki banaction için aşağıdaki komutu kullanabilirsiniz. Ve sshd hapishanesi için varsayılan yasaklama olarak ufw çıktısını almalısınız.
sudo fail2ban-client get sshd actions
Buradaki findtime için, sshd jail için geçersiz kılma değerini de göreceksiniz. Buradaki çıktı da saniye formatında olacaktır.
sudo fail2ban-client get sshd findtime
Son olarak, aşağıdaki komutu kullanarak sshd jail için varsayılan görmezden ipi de kontrol edebilirsiniz. Ignoreip’in global Fail2ban konfigürasyonu ile aynı değere sahip olduğunu göreceksiniz.
sudo fail2ban-client get sshd ignoreip
Fail2ban-client kullanarak IP’yi yasaklama ve yasağı kaldırma
Burada Fail2ban ile ilgili bir diğer önemli şey de Fail2ban’da IP adreslerinin nasıl yasaklanacağı ve kaldırılacağıdır. Bunu yapmak için fail2ban-client komutunu da kullanabilirsiniz.
IP adresini sshd hapishanesinde manuel olarak yasaklamak için aşağıdaki fail2ban-client komutunu kullanabilirsiniz. IP adresini yasaklamak istediğiniz IP adresiyle değiştirin.
sudo fail2ban-client set sshd banip IP-ADDRESS
IP adresini sshd jail’den kaldırmak için aşağıdaki fail2ban-client komutunu kullanabilirsiniz. IP adresini, yasağını kaldırmak istediğiniz IP adresiyle değiştirdiğinizden emin olun.
sudo fail2ban-client set sshd unbanip IP-ADDRESS
Artık bir IP adresini manuel olarak yasakladıktan veya bir IP adresinin yasağını kaldırdıktan sonra, aşağıdaki fail2ban-client komutunu kullanarak doğrulama yapabilirsiniz.
sudo fail2ban-client status sshd
Bir IP adresini manuel olarak yasaklarsanız, IP adresinin yasaklanmış IP adresleri listesinde bulunduğundan emin olun. Ancak bir IP adresinin yasağını kaldırırsanız, IP adresinin yasaklı IP adresleri listesinden kaybolduğundan emin olun.
Sonuç olarak;
Tebrikler! Artık Ubuntu 22.04’ün güvenliğini sağlamak için Fail2ban’ı başarıyla yüklediniz ve yapılandırdınız. Ayrıca UFW güvenlik duvarının nasıl etkinleştirileceğini ve Fail2ban’ın UFW güvenlik duvarı ile nasıl entegre edileceğini de öğrendiniz. Son olarak, Fail2ban’dan IP adreslerinin nasıl yasaklanacağını ve yasaklanacağını da içeren fail2ban-client komutunu kullanarak Fail2ban’ı nasıl yöneteceğinizi de öğrendiniz.