जवाबों:
जहाँ तक मुझे पता है, 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
आपके कॉन्फ़िगरेशन से मेल खाता है।
मुझे आश्चर्य है कि किसी और ने यह समाधान / समाधान नहीं दिया है।
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)
।
यह कॉन्फ़िगर करने के लिए बहुत आसान है और "बुद्धिमान" अनुरोध सीमा की तुलना में अधिक मूर्ख-सबूत है।
मेरा मानना है कि नगनेक्स के पास ऐसा करने के लिए कोई आंतरिक सुविधा नहीं है। प्रलेखन पेज यह संभव है यह नहीं दर्शाती है।
आप उन IP पतों को ब्लॉक करने के लिए Fail2Ban का उपयोग कर सकते हैं जो बार-बार विफल लॉगिन प्रयास करते हैं।
Fail2Ban विकी में कुछ नगनेक्स-विशिष्ट पैटर्न हैं ।
Fail2Ban अधिकांश बड़े डिस्ट्रोस पर पैकेज के रूप में उपलब्ध होना चाहिए।
Nginx-HTTP-Auth-Digest मॉड्यूल मूल अतिरिक्त मॉड्यूल को कई अतिरिक्त सुविधा के साथ रिट्री और टाइमआउट के रूप में बदल सकता है। अतिरिक्त प्रलेखन यहाँ उपलब्ध है
केवल नकारात्मक पक्ष यह है कि यह संभवतः नगिनक्स के पुनर्निर्माण की आवश्यकता है
bcrypt
Nginx की मूल स्थिति के साथ एड पासवर्ड का उपयोग कर सकते हैं , लेकिन जाहिर है आप नहीं कर सकते ।