Kendi Bulutu + Fail2Ban
Yalnızca bugün, Owncloud'un kaba kuvvet saldırılarını doğal olarak engellemediğini fark ettim. Ancak görünen o ki geliştiriciler bunun farkında ve bir sonraki sürümde bir captcha sistemi önerecekler. Bu arada, Owncloud örneğimizin Fail2Ban ile çalışmasını sağlamak için bir ev yaması kurmanızı öneririm.
Belirli bir günlük dosyasının oluşturulması
1
2
|
touch /var/log/owncloud–fail.log
chown www–data:www–data /var/log/owncloud–fail.log
|
Bağlantı hatalarını günlüğe kaydetmek için değiştirilmiş kaynak kodu. /owncloud/lib/user/database.php dosyasını düzenleriz.
202 satırında, checkPassword işlevinde, “return false” den hemen önce aşağıdaki kodu ekliyoruz.
1
2
3
4
5
6
|
$today = new DateTime();
date_timezone_set($today, timezone_open(‘Europe/Paris’));
$IPClient= $_SERVER[‘REMOTE_ADDR’];
$logAuth = fopen(‘/var/log/owncloud-fail.log’, ‘a+’);
fputs($logAuth, date_format($today, ‘Y/m/d H:i:s’) . » Password check failed for: t » . $IPClient . « n »);
fclose($logAuth);
|
Bu değişiklik, mevcut veritabanı oturumları için parola hatalarıyla ilgilidir. Ayrıca tüm oturumlar için hataları günlüğe kaydetmek istiyorsanız, işlevin “else” bölümündeki son “return false” dan önce aynı kodu eklemelisiniz. Sadece yorumu değiştiriyoruz.
1
2
3
4
5
6
|
$today = new DateTime();
date_timezone_set($today, timezone_open(‘Europe/Paris’));
$IPClient= $_SERVER[‘REMOTE_ADDR’];
$logAuth = fopen(‘/var/log/owncloud-fail.log’, ‘a+’);
fputs($logAuth, date_format($today, ‘Y/m/d H:i:s’) . » Invalid username: t » . $IPClient . « n »);
fclose($logAuth);
|
Düzenleme: Owncloud'un 6. sürümünden beri, dosya /var/www/owncloud/lib/private/user/database.php konumunda bulunuyor. if ($ satırı) 2 ise bir yerine false döndürür. İkisini de aynı şekilde tamamlayın.
Şimdi /etc/fail2ban/filter.d/owncloud.conf dosyasında Fail2ban hapishanesinin oluşturulmasına geçiyoruz.
1
2
3
|
# Owncloud jail
[Definition]
failregex = <HOST>$
|
Normal ifadenin iyi eşleştiğini test ediyoruz. (Ön arayüzde oturum açma hatası yapın)
1
|
fail2ban–regex /var/log/owncloud–fail.log /etc/fail2ban/filter.d/owncloud.conf
|
Bu hapishaneyi /etc/fail2ban/jail.conf içindeki conf'e ekliyoruz
1
2
3
4
5
6
|
[owncloud]
enabled = true
port = http,https
filter = owncloud
logpath = /var/log/owncloud–fail.log
maxretry = 3
|
Dikkate almak için fail2ban'ın yeniden başlatılması
1
|
/etc/init.d/fail2ban restart
|
Owncloud her güncellendiğinde php'deki satırların yeniden yazılması gerektiğini unutmamalısınız.