Merhaba arkadaşlar, bugün sizlere Fail2ban kullanırken en çok dikkat etmeniz gereken konulardan birini, yani kendi IP'nizin veya güvendiğiniz hizmetlerin yanlışlıkla banlanmasını nasıl engelleyeceğinizi anlatacağım. Benim sunucularda da sıkça başıma gelen bu durum, özellikle yoğun deneme yapılan bir sunucuda sizi bile dışarı atabilir! Bu rehberde, `ignoreip` parametresini doğru şekilde yapılandırarak güvenli ve sorunsuz bir ban yönetimi nasıl yapılır onu göreceğiz.
ignoreip Nedir ve Neden Önemli?
Fail2ban, sunucunuza yapılan başarısız giriş denemelerini tarar ve belirlediğiniz limiti aşan IP adreslerini geçici veya kalıcı olarak engeller. Ancak bazen bu IP'ler, sizin kendi ofis IP'niz, evinizin IP'si, bir monitoring aracı (UptimeRobot, StatusCake gibi) veya bir API servisi olabilir. `ignoreip` parametresi, tam da bu IP veya IP aralıklarının hiçbir zaman banlanmamasını sağlar. Bu ayarı yapmazsanız, kendi sunucunuza SSH bile bağlanamayabilirsiniz, o yüzden ilk kurulumda bu ayarı mutlaka yapın.
ignoreip Yapılandırması Nasıl Yapılır?
Ana konfigürasyon dosyası genellikle `/etc/fail2ban/jail.conf` veya `/etc/fail2ban/jail.local` dosyasıdır. Benim tavsiyem, asıl dosyayı (`jail.conf`) değiştirmek yerine, özelleştirmelerinizi her zaman `jail.local` dosyasında yapmanızdır. Çünkü güncellemelerle `jail.conf` dosyası değişebilir, ayarlarınız kaybolabilir.
Öncelikle, düzenleyeceğimiz dosyayı bir editörle açalım:
Eğer bu dosya yoksa, oluşturabilirsiniz. Dosyanın içinde `[DEFAULT]` bölümünü bulun veya en başa ekleyin. `ignoreip` parametresi bu bölümde tanımlanır.
Şimdi size tipik bir `ignoreip` satırının nasıl görüneceğini göstereyim:
Burada ne yaptık, tek tek açıklayayım:
- `127.0.0.1/8 ::1`: Bu, localhost (sunucunun kendisi) ve IPv6 loopback adresidir. Genelde varsayılan olarak bulunur, korumaya devam edin.
- `88.245.123.45`: Bu, sizin sabit ev/Ofis IP'niz olmalı. Bunu öğrenmek için "what is my ip" diye aratabilirsiniz. AMA DİKKAT! Çoğu ev interneti dinamik IP (DHCP) kullanır. Eğer IP'niz sık değişiyorsa, buraya eklemek çözüm olmaz. Bu durumda dinamik DNS (DDNS) servisi kullanmanızı veya fail2ban'ın ban süresini çok uzun tutmamanızı öneririm.
- `192.168.1.0/24`: Bu bir IP aralığı (CIDR notasyonu). Örneğin, sunucunuza sadece şirket iç ağınızdan (VPN dahil) erişiyorsanız, o ağın tüm IP bloğunu bu şekilde ekleyebilirsiniz.
- `140.82.121.3`: Bu örnekte GitHub'ın bir IP'si. Eğer sunucunuzda GitHub Actions gibi bir CI/CD servisi çalışıyorsa ve sunucunuza bağlanıyorsa, onun IP'lerini de eklemelisiniz. Monitoring araçlarının (UptimeRobot, Pingdom) IP adreslerini de buraya eklemeyi unutmayın. Bu IP listelerini genellikle servis sağlayıcılarının dokümantasyon sayfalarında bulabilirsiniz.
Kritik Uyarılar ve En İyi Uygulamalar
1. Dosya Doğrulama: Değişiklik yaptıktan sonra, Fail2ban konfigürasyonunuzun doğru olup olmadığını mutlaka test edin. Bu komut syntax hatalarını gösterecektir:
2. Servisi Yeniden Başlatma: Değişikliklerin geçerli olması için Fail2ban servisini yeniden başlatmalısınız. Systemd kullanan sistemlerde:
Restart sonrası durumu kontrol edin:
3. Çok Fazla IP Eklemeyin: `ignoreip` listesini güvenmediğiniz IP'lerle doldurmayın. Listenin uzun olması performansı çok etkilemez ama güvenlik zafiyeti oluşturabilir. Sadece gerçekten güvendiğiniz ve ihtiyaç duyduğunuz IP'leri ekleyin.
4. Dinamik IP Problemi: Evinizden sabit IP'niz yoksa ve sık ban yiyorsanız, Fail2ban'ın `bantime` (ban süresi) parametresini çok yüksek (örneğin 1 saat) tutmayın. 10-30 dakika gibi bir süre, sizin yanlışlıkla banlanmanız durumunda bile hızlıca çözüm üretmenizi sağlar.
IP'lerin Gerçekten Beyaz Listede Olduğunu Nasıl Kontrol Ederim?
Aşağıdaki komut, belirli bir hapishane (jail) için yapılandırılmış `ignoreip` listesini görmenizi sağlar. Örneğin SSH jail'i için:
Veya tüm jails için geçerli olan default ignoreip listesini görmek için:
Bu komutlar, yapılandırmanızın doğru bir şekilde uygulandığını teyit etmenin en güvenilir yoludur.
Umarım bu rehber, sunucu güvenliğinizi sağlarken kendinizi kilitlemenizi engellemenize yardımcı olur. `ignoreip` ayarı, set-it-and-forget-it (kur ve unut) tarzında bir ayar değildir. Zaman zaman, özellikle network altyapınız veya kullandığınız dış servisler değiştiğinde bu listeyi gözden geçirmelisiniz.
Peki siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle dinamik IP'li ev kullanıcıları için ek tavsiyeleriniz var mı? Ya da kullandığınız farklı bir monitoring aracının IP listesini nereden buluyorsunuz? Tecrübelerinizi ve sorularınızı aşağıya yazmaktan çekinmeyin.
Fail2ban, sunucunuza yapılan başarısız giriş denemelerini tarar ve belirlediğiniz limiti aşan IP adreslerini geçici veya kalıcı olarak engeller. Ancak bazen bu IP'ler, sizin kendi ofis IP'niz, evinizin IP'si, bir monitoring aracı (UptimeRobot, StatusCake gibi) veya bir API servisi olabilir. `ignoreip` parametresi, tam da bu IP veya IP aralıklarının hiçbir zaman banlanmamasını sağlar. Bu ayarı yapmazsanız, kendi sunucunuza SSH bile bağlanamayabilirsiniz, o yüzden ilk kurulumda bu ayarı mutlaka yapın.
Ana konfigürasyon dosyası genellikle `/etc/fail2ban/jail.conf` veya `/etc/fail2ban/jail.local` dosyasıdır. Benim tavsiyem, asıl dosyayı (`jail.conf`) değiştirmek yerine, özelleştirmelerinizi her zaman `jail.local` dosyasında yapmanızdır. Çünkü güncellemelerle `jail.conf` dosyası değişebilir, ayarlarınız kaybolabilir.
Öncelikle, düzenleyeceğimiz dosyayı bir editörle açalım:
Bash:
sudo nano /etc/fail2ban/jail.local
Eğer bu dosya yoksa, oluşturabilirsiniz. Dosyanın içinde `[DEFAULT]` bölümünü bulun veya en başa ekleyin. `ignoreip` parametresi bu bölümde tanımlanır.
Şimdi size tipik bir `ignoreip` satırının nasıl görüneceğini göstereyim:
NGINX:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 88.245.123.45 192.168.1.0/24 140.82.121.3
Burada ne yaptık, tek tek açıklayayım:
- `127.0.0.1/8 ::1`: Bu, localhost (sunucunun kendisi) ve IPv6 loopback adresidir. Genelde varsayılan olarak bulunur, korumaya devam edin.
- `88.245.123.45`: Bu, sizin sabit ev/Ofis IP'niz olmalı. Bunu öğrenmek için "what is my ip" diye aratabilirsiniz. AMA DİKKAT! Çoğu ev interneti dinamik IP (DHCP) kullanır. Eğer IP'niz sık değişiyorsa, buraya eklemek çözüm olmaz. Bu durumda dinamik DNS (DDNS) servisi kullanmanızı veya fail2ban'ın ban süresini çok uzun tutmamanızı öneririm.
- `192.168.1.0/24`: Bu bir IP aralığı (CIDR notasyonu). Örneğin, sunucunuza sadece şirket iç ağınızdan (VPN dahil) erişiyorsanız, o ağın tüm IP bloğunu bu şekilde ekleyebilirsiniz.
- `140.82.121.3`: Bu örnekte GitHub'ın bir IP'si. Eğer sunucunuzda GitHub Actions gibi bir CI/CD servisi çalışıyorsa ve sunucunuza bağlanıyorsa, onun IP'lerini de eklemelisiniz. Monitoring araçlarının (UptimeRobot, Pingdom) IP adreslerini de buraya eklemeyi unutmayın. Bu IP listelerini genellikle servis sağlayıcılarının dokümantasyon sayfalarında bulabilirsiniz.
1. Dosya Doğrulama: Değişiklik yaptıktan sonra, Fail2ban konfigürasyonunuzun doğru olup olmadığını mutlaka test edin. Bu komut syntax hatalarını gösterecektir:
Bash:
sudo fail2ban-client --test
2. Servisi Yeniden Başlatma: Değişikliklerin geçerli olması için Fail2ban servisini yeniden başlatmalısınız. Systemd kullanan sistemlerde:
Bash:
sudo systemctl restart fail2ban
Restart sonrası durumu kontrol edin:
Bash:
sudo systemctl status fail2ban
sudo fail2ban-client status
3. Çok Fazla IP Eklemeyin: `ignoreip` listesini güvenmediğiniz IP'lerle doldurmayın. Listenin uzun olması performansı çok etkilemez ama güvenlik zafiyeti oluşturabilir. Sadece gerçekten güvendiğiniz ve ihtiyaç duyduğunuz IP'leri ekleyin.
4. Dinamik IP Problemi: Evinizden sabit IP'niz yoksa ve sık ban yiyorsanız, Fail2ban'ın `bantime` (ban süresi) parametresini çok yüksek (örneğin 1 saat) tutmayın. 10-30 dakika gibi bir süre, sizin yanlışlıkla banlanmanız durumunda bile hızlıca çözüm üretmenizi sağlar.
Aşağıdaki komut, belirli bir hapishane (jail) için yapılandırılmış `ignoreip` listesini görmenizi sağlar. Örneğin SSH jail'i için:
Bash:
sudo fail2ban-client get sshd ignoreip
Veya tüm jails için geçerli olan default ignoreip listesini görmek için:
Bash:
sudo fail2ban-client get DEFAULT ignoreip
Bu komutlar, yapılandırmanızın doğru bir şekilde uygulandığını teyit etmenin en güvenilir yoludur.
Umarım bu rehber, sunucu güvenliğinizi sağlarken kendinizi kilitlemenizi engellemenize yardımcı olur. `ignoreip` ayarı, set-it-and-forget-it (kur ve unut) tarzında bir ayar değildir. Zaman zaman, özellikle network altyapınız veya kullandığınız dış servisler değiştiğinde bu listeyi gözden geçirmelisiniz.
Peki siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle dinamik IP'li ev kullanıcıları için ek tavsiyeleriniz var mı? Ya da kullandığınız farklı bir monitoring aracının IP listesini nereden buluyorsunuz? Tecrübelerinizi ve sorularınızı aşağıya yazmaktan çekinmeyin.