ओनक्लाउड + Fail2Ban
मैं केवल आज ही महसूस करता हूं कि ओनक्लाउड मूल रूप से जानवर-बल के हमलों को नहीं रोकता है। हालांकि, ऐसा लगता है कि डेवलपर्स इसके बारे में जानते हैं और अगली रिलीज में कैप्चा सिस्टम का प्रस्ताव देंगे। इस बीच, मेरा सुझाव है कि आप हमारे ओनक्लाउड इंस्टेंस को Fail2Ban के साथ काम करने के लिए एक होम पैच सेट करें।
एक विशिष्ट लॉग फ़ाइल का निर्माण
1
2
|
touch /var/log/owncloud–fail.log
chown www–data:www–data /var/log/owncloud–fail.log
|
कनेक्शन त्रुटियों को लॉग करने के लिए संशोधित स्रोत कोड। हम /ownercloud/lib/user/database.php संपादित करते हैं।
लाइन 202 में, चेकपासवर्ड फ़ंक्शन में, "झूठी वापसी" से ठीक पहले हम निम्नलिखित कोड जोड़ते हैं
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);
|
यह संशोधन मौजूदा डेटाबेस लॉगिन के लिए पासवर्ड त्रुटियों से संबंधित है। यदि आप भी सभी लॉगिन के लिए त्रुटियों को लॉग करना चाहते हैं, तो आपको फ़ंक्शन के "अन्य" भाग में अंतिम "वापसी झूठी" से पहले एक ही कोड जोड़ना होगा। हम सिर्फ टिप्पणी को संशोधित करते हैं।
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);
|
संपादित करें: ओनक्लाउड के संस्करण 6 के बाद से फ़ाइल /var/www/owncloud/lib/private/user/database.php में स्थित है। अगर ($ पंक्ति) में एक के बजाय 2 रिटर्न झूठा है। दोनों को इसी तरह पूरा करें।
अब हम /etc/fail2ban/filter.d/owncloud.conf में Fail2ban जेल के निर्माण की ओर बढ़ते हैं
1
2
3
|
# Owncloud jail
[Definition]
failregex = <HOST>$
|
हम परीक्षण करते हैं कि रेगेक्स अच्छी तरह मेल खाता है। (फ्रंट इंटरफेस पर लॉगिन एरर करें)
1
|
fail2ban–regex /var/log/owncloud–fail.log /etc/fail2ban/filter.d/owncloud.conf
|
हम इस जेल को /etc/fail2ban/jail.conf में कॉन्फिडेंस में जोड़ते हैं
1
2
3
4
5
6
|
[owncloud]
enabled = true
port = http,https
filter = owncloud
logpath = /var/log/owncloud–fail.log
maxretry = 3
|
खाते में लेने के लिए विफल 2 प्रतिबंध को फिर से शुरू करें
1
|
/etc/init.d/fail2ban restart
|
आपको यह ध्यान रखना होगा कि ओनक्लाउड के अपडेट होने पर हर बार PHP में लाइनों को फिर से लिखना होगा।