Nginx Auth_Basic को फिर से कैसे सीमित करें?


14

मैंने Nginx के Auth_Basic मॉड्यूल के साथ एक वेब फ़ोल्डर की रक्षा की है। समस्या यह है, हम कई पासवर्ड आजमा सकते हैं जब तक कि यह काम न करे (brute force attack)। क्या विफल री-ट्राइ की संख्या को सीमित करने का कोई तरीका है?

जवाबों:


29

जहाँ तक मुझे पता है, Auth Basic मॉड्यूल इस सुविधा का समर्थन नहीं करता है, लेकिन आप Fail2ban का उपयोग करके ऐसा कर सकते हैं ।

गैर-मौजूद उपयोगकर्ता के साथ परीक्षण करने पर, आपको त्रुटि लॉग में बेलोज़ जैसा कुछ दिखाई देगा:

2012/08/25 10:07:01 [error] 5866#0: *1 no user/password was provided for basic authentication, client: 127.0.0.1, server: localhost, request: "GET /pma HTTP/1.1", host: "localhost:81" 2012/08/25 10:07:04 [error] 5866#0: *1 user "ajfkla" was not found in "/etc/nginx/htpasswd", client: 127.0.0.1, server: localhost, request: "GET /pma HTTP/1.1", host: "localhost:81"

फिर आवश्यक फ़िल्टर बनाएं:

/etc/fail2ban/filter.d/nginx-auth.conf

[Definition]
failregex = no user/password was provided for basic authentication.*client: <HOST>
              user .* was not found in.*client: <HOST>
              user .* password mismatch.*client: <HOST>
ignoreregex = </host></host></host> 

/etc/fail2ban/jail.conf

[nginx-auth]
enabled = true
filter = nginx-auth
action = iptables[name=NoAuthFailures, port=80, protocol=tcp]
logpath = /var/log/nginx*/*error*.log
bantime = 3600 # 1 hour
maxretry = 3

Fail2Ban नियमों का परीक्षण:

fail2ban-regex /var/log/nginx/localhost.error_log /etc/fail2ban/filter.d/nginx-auth.conf

Failregex
|- Regular expressions:
|  [1] no user/password was provided for basic authentication.*client: <HOST>
|  [2] user .* was not found in.*client: <HOST>
|  [3] user .* password mismatch.*client: <HOST>
|
`- Number of matches:
   [1] 1 match(es)
   [2] 2 match(es)
   [3] 0 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    127.0.0.1 (Sat Aug 25 10:07:01 2012)
[2]
    127.0.0.1 (Sat Aug 25 10:07:04 2012)
    127.0.0.1 (Sat Aug 25 10:07:07 2012)
[3]

पुनश्च: चूंकि Fail2ban प्रतिबंधों के लिए लॉग फाइल करता है, इसलिए सुनिश्चित करें कि logpathआपके कॉन्फ़िगरेशन से मेल खाता है।


5

मुझे आश्चर्य है कि किसी और ने यह समाधान / समाधान नहीं दिया है।

htpasswdएक वैकल्पिक लागत चर के साथ नग्नेक्स बेसिक- कोर और समर्थन bcrypt पासवर्ड एन्क्रिप्शन। Bcrypt को धीमा करने के लिए डिज़ाइन किया गया है, इस प्रकार आप कितनी तेजी से विभिन्न पासवर्ड का प्रयास कर सकते हैं, इस पर एक कठिन सीमा प्रदान करते हैं।

अपना मूल उपयोगकर्ता नाम / पासवर्ड का उपयोग करते समय

htpasswd -B -C 12 path/to/users.db <username>

12 की लागत के साथ आपका सर्वर संभवतः एक सेकंड से कुछ अधिक समय तक पासवर्ड का प्रयास करने में सक्षम नहीं होगा, जो कि 14 को बढ़ाता है और आप शायद प्रति पासवर्ड लगभग 1s देख रहे हैं।

उस कॉन्फ़िगर किए गए किसी भी वाजिब पासवर्ड से ब्रूट फोर्स अटैक के लिए प्रतिरक्षा होगी, भले ही हमलावर ने सालों तक लगातार पासवर्ड की कोशिश की हो।

एक 8 चरित्र अक्षरांकीय पासवर्ड को दूसरी ब्रूट फोर्स हमले में 10 पासवर्ड प्रयासों पर जैसे 692,351 साल लग जाएगा: 62**8 / (10*3600*24*365)

यह कॉन्फ़िगर करने के लिए बहुत आसान है और "बुद्धिमान" अनुरोध सीमा की तुलना में अधिक मूर्ख-सबूत है।


2
यह उपयोगी होगा यदि आप bcryptNginx की मूल स्थिति के साथ एड पासवर्ड का उपयोग कर सकते हैं , लेकिन जाहिर है आप नहीं कर सकते
Keune

मैंने इसे आजमाया है, यह मेरे लिए बिल्कुल ठीक काम करता है। अभी उत्पादन में इसका उपयोग कर रहे हैं।
स्कॉलविन

Ubuntu पर वेनिला ngix पर काम नहीं कर के रूप में @keune कहा
फैबियन Thommen

4
वर्थ उल्लेख करते हुए कि यह पासवर्ड के प्रयासों को सीमित करेगा, लेकिन केवल इसलिए कि आपके सर्वर को महंगी हैश की गणना करने से ओवरलोड किया जाएगा। उत्पादन के माहौल में, यह संभवतः वह नहीं है जो आप चाहते हैं।
टॉमस पी। स्ज़िनल्स्की 20

मजबूत और आसान, हाँ। CPU उपयोग के विरुद्ध DoS के हमलों की अनुमति देता है।
रेनर रिल्के

1

मेरा मानना ​​है कि नगनेक्स के पास ऐसा करने के लिए कोई आंतरिक सुविधा नहीं है। प्रलेखन पेज यह संभव है यह नहीं दर्शाती है।

आप उन IP पतों को ब्लॉक करने के लिए Fail2Ban का उपयोग कर सकते हैं जो बार-बार विफल लॉगिन प्रयास करते हैं।

Fail2Ban विकी में कुछ नगनेक्स-विशिष्ट पैटर्न हैं

Fail2Ban अधिकांश बड़े डिस्ट्रोस पर पैकेज के रूप में उपलब्ध होना चाहिए।


0

Nginx-HTTP-Auth-Digest मॉड्यूल मूल अतिरिक्त मॉड्यूल को कई अतिरिक्त सुविधा के साथ रिट्री और टाइमआउट के रूप में बदल सकता है। अतिरिक्त प्रलेखन यहाँ उपलब्ध है

केवल नकारात्मक पक्ष यह है कि यह संभवतः नगिनक्स के पुनर्निर्माण की आवश्यकता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.