Bu yüzden aynı ip adresini birbiri ardına web sunucuları kümeme çarptıktan sonra bunu nasıl yapacağım konusunda bir sürü araştırma yaptım. AWS kullandığımdan beri kolay bir yol olabileceğini ve 5 sunucuyu test ettiğim ilk iki günümde güzel çalıştığını düşündüm.
Tavsiye ettiğim ilk şey SELinux'u geçici olarak devre dışı bırakmak, sonunda bununla ilgileneceğiz. Ben bir SELinux uzmanı değilim ama yaptığım şu ana kadar çalışıyor.
Birincil gereksinim paylaşılan bir dosya kaynağıdır, AWS EFS kullanıyorum. Yeni sürücü sağlandıktan ve bağlandıktan sonra, /etc/fail2ban/fail2ban.conf içindeki günlük hedefini EFS sürücüsünde bir alt klasöre değiştirdim.
logtarget = /efsmount/fail2ban/server1.log
Sonra basit bir filtre yazdım ve /etc/fail2ban/filter.d/fail2ban-log.conf
[Definition]
failregex = .* Ban <HOST>
ignoreregex =
Filtreyi /etc/fail2ban/jail.local dosyasına ekledi
[fail2ban-log]
enabled = true
port = http,https
findtime = 86400 ; 1 day
logpath = /efsmount/fail2ban/server1.log
/efsmount/fail2ban/server2.log
/efsmount/fail2ban/server3.log
/efsmount/fail2ban/server4.log
maxretry = 1
Sonra fail2ban yeniden başlatıldı
sudo fail2ban-client reload
Çok uzak çok iyi! Acı veren kısım SELinux değildir. Fail2ban biraz çalıştırmak için izin sonra filtreler aracılığıyla fail2ban izin verecek bu komutu çalıştırdı.
sudo grep fail2ban /var/log/audit/audit.log | sudo audit2allow -M fail2ban-nfs
Audit2allow size bu komutu çalıştırmanızı söyleyecektir
sudo semodule -i fail2ban-nfs.pp
Hala daha fazla reddi olup olmadığını görmek için SELinux günlüklerimi burada ve orada kontrol ediyorum. Herkes bu net SELinux almak için harika bir başka yöntemle bir ipucu varsa.
sudo cat /var/log/audit/audit.log |grep fail2ban |grep denied
Bu noktada hala fail2ban yeniden başlatılırken hata alıyordum. Jail.local dosyasında action = action_mwl kullanılırken bir hata oluştu. Biraz googling yaptıktan sonra şimdiye kadar çalışan bunu buldum. Ne okuduğumdan, birden fazla dosyaya işaret eden logpath direktifindeki satır kesmeleri nedeniyle. Ben virgül, boşluk, vb denedim action_mwl ile başka hiçbir şey çalıştı.
action_mwm = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-matches[name=%(__name__)s, dest="%(destemail)s", chain="%(chain)s"]
action = %(action_mwm)s
SELinux'u tekrar açmayı unutmayın!