मुख्य सामग्री पर जाएं

सुरक्षा कॉन्फ़िगरेशन

प्रोडक्शन में duplistatus को सुरक्षित करना परतों में किया जाता है, और हर परत वैकल्पिक है। यहां वर्णित हर सुविधा डिफ़ॉल्ट रूप से बंद होती है, इसलिए जब तक आप इसे सक्षम करना नहीं चुनते, तब तक एक नया इंस्टॉलेशन काम करता रहता है। तीन स्वतंत्र परतें हैं:

  • API कुंजियाँ — बाहरी अपलोड और पढ़ने वाले API के लिए स्कोप युक्त गुप्त संकेत; आमतौर पर एक होमलैब में पहला कदम सबसे आसान होता है
  • IP अनुमति सूची — व्यवस्थापक इंटरफ़ेस, बाहरी API, या दोनों पर CIDR प्रतिबंध
  • HTTPS रिवर्स प्रॉक्सी — एन्क्रिप्टेड ट्रैफ़िक, जिसमें पोर्ट 9666 को सार्वजनिक इंटरनेट से दूर रखा जाता है
  1. पोर्ट 9666 को पब्लिक इंटरनेट से बंद रखें: एप्लिकेशन को localhost या प्राइवेट नेटवर्क से बाइंड करें।
  2. API कुंजियाँ बनाएं और बाहरी API के लिए API कुंजियाँ अनिवार्य करें को सक्षम करें। यह रिवर्स प्रॉक्सी के बिना काम करता है और सबसे आसान पहला कदम है।
  3. HTTPS के साथ रिवर्स प्रॉक्सी के माध्यम से duplistatus सर्व करें।
  4. यदि आप अनुमति सूचियों का उपयोग करना चाहते हैं, तो प्रॉक्सी के कनेक्टिंग पते को विश्वसनीय प्रॉक्सी (या IP_TRUSTED_PROXIES) में जोड़ें।
  5. वैकल्पिक रूप से एडमिन और बाहरी IP अनुमति सूचियों को सक्षम करें, और अपनी स्वयं की एक्सेस को ब्लॉक होने से बचाने के लिए पहचाना गया IP और हाल के IP सुझावों का उपयोग करें।

API कुंजियों और IP अनुमति सूची के साथ पहुंच पर प्रतिबंध लगाएं​

ये दो सेटिंग्स सुविधाएं डैशबोर्ड और बाहरी डेटा API तक पहुंचने वाले लोगों को सीमित करती हैं। वे स्वतंत्र हैं: जब दोनों सक्षम होते हैं, तो एक अनुरोध को दोनों जांच पास करनी होती है।

API कुंजियाँ​

API कुंजियाँ जोड़ने के लिए सबसे सरल सुरक्षा है, खासकर एक होमलैब में। Duplicati अपलोड और होमपेज विजेट के लिए स्कोप युक्त गुप्त संकेत बनाएं, फिर उनकी आवश्यकता रखें — कोई रिवर्स प्रॉक्सी या CIDR योजना नहीं चाहिए।

स्कोपएंडपॉइंट
अपलोड करेंPOST /api/upload
पढ़ेंGET /api/summary, GET /api/lastbackup/:id, GET /api/lastbackups/:id

कम से कम एक अपलोड कुंजी और एक पढ़ने वाली कुंजी बनाएं इससे पहले कि आप बाहरी API के लिए API कुंजियाँ अनिवार्य करें चालू करें। अन्यथा Duplicati अपलोड और होमपेज विजेट काम करना बंद कर देते हैं जैसे ही स्विच सक्षम हो जाता है।

Duplicati अपने अनुरोधों में कस्टम हेडर शामिल नहीं कर सकता, इसलिए आपको अपनी API कुंजी को रिपोर्ट URL में ?api_key=… जोड़कर प्रदान करना होगा। ध्यान दें कि क्वेरी स्ट्रिंग का उपयोग करने से रिवर्स प्रॉक्सी एक्सेस लॉग में API कुंजी उजागर हो जाती है। अन्य क्लाइंट्स के लिए जो कस्टम हेडर का समर्थन करते हैं, अतिरिक्त सुरक्षा के लिए X-Api-Key हेडर या Authorization: Bearer हेडर का उपयोग करना अधिक अनुशंसित है।

अपलोड आकार सीमा और उसी सेटिंग्स पृष्ठ पर प्रति-IP दर सीमाएं तब भी लागू होती हैं जब कुंजियाँ वैकल्पिक होती हैं। API कुंजियाँ केवल बाहरी डेटा API की सुरक्षा करती हैं; वे व्यवस्थापक इंटरफ़ेस को प्रतिबंधित नहीं करती हैं, जिसे लॉगिन और वैकल्पिक रूप से व्यवस्थापक IP अनुमति सूची द्वारा रक्षा की जाती है।

IP अनुमति सूची​

IP अनुमति सूची दो अलग CIDR सूचियाँ प्रदान करती है, दोनों डिफ़ॉल्ट रूप से बंद हैं:

  • एडमिन इंटरफ़ेस — पृष्ठ, लॉगिन, CSRF, और सत्र API
  • बाहरी API — /api/upload, /api/summary, और /api/lastbackup*
  • स्वास्थ्य और पिंग — /api/health और /api/ping तब तक सार्वजनिक रहते हैं जब तक दोनों सूचियाँ बंद हैं। जब कोई भी सूचि चालू होती है, तो वे लूपबैक के साथ-साथ व्यवस्थापक या बाहरी सूची से CIDR स्वीकार करते हैं, और गैर-लूपबैक क्लाइंट्स की दर सीमित हो जाती है। ऐप-स्तर की सीमाएं एक आयामी कनेक्शन बाढ़ को नहीं रोक सकतीं; यदि इंस्टेंस इंटरनेट-फेसिंग है तो रिवर्स प्रॉक्सी पर limit_req / Caddy rate_limit जोड़ें।

किसी भी सूचि को सक्षम करने से पहले, सेटिंग्स → IP अनुमति सूची पर पहचाना गया IP की जांच करें और पीयर IP की तुलना अनुमति सूची IP के साथ करें। खुद को बाहर न करने के लिए वर्तमान IP जोड़ें या हाल के IP सुझावों का उपयोग करें। पुनर्प्राप्ति चरण IP अनुमति सूची द्वारा लॉक किया गया में हैं।

यदि duplistatus एक रिवर्स प्रॉक्सी के पीछे स्थित है, तो पहले विश्वसनीय प्रॉक्सी कॉन्फ़िगर करें (नीचे देखें IP अनुमति सूची के लिए विश्वसनीय प्रॉक्सी)। इसके बिना, अनुमति सूची के निर्णय क्लाइंट के बजाय प्रॉक्सी के पते के खिलाफ लिए जाते हैं।

रिवर्स प्रॉक्सी के साथ HTTPS​

उत्पादन डिप्लॉइमेंट के लिए, रिवर्स प्रॉक्सी के पीछे HTTPS के माध्यम से duplistatus को सर्व करें। नीचे दिए गए उदाहरण दो लोकप्रिय विकल्पों को शामिल करते हैं।

विकल्प 1: सर्टबॉट (लेट्स एन्क्रिप्ट) के साथ एनजीनएक्स​

Nginx एक व्यापक रूप से उपयोग किया जाने वाला वेब सर्वर है जो रिवर्स प्रॉक्सी के रूप में कार्य कर सकता है, और Certbot लेट्स एन्क्रिप्ट से नि: शुल्क टीएलएस प्रमाणपत्र जारी करता है।

पूर्वापेक्षाएँ:

  • एक डोमेन नाम जिसका डीएनएस ए (या एएएए) रिकॉर्ड आपके सर्वर की ओर इंगित करता है
  • आपके सिस्टम पर एनजीनएक्स स्थापित
  • आपके ऑपरेटिंग सिस्टम के लिए सर्टबॉट स्थापित

चरण 1: एनजीनएक्स और सर्टबॉट स्थापित करें

Ubuntu/Debian पर:

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx

चरण 2: एनजीनएक्स कॉन्फ़िगरेशन बनाएं

/etc/nginx/sites-available/duplistatus बनाएं:

server {
listen 80;
server_name your-domain.com;

# Nginx defaults to 1 MB. Keep this at or above database restore (200 MB)
# and the upload limit on Settings → API Keys (5 MB by default).
client_max_body_size 256m;

location / {
proxy_pass http://localhost:9666;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

यह नमूना X-Forwarded-For और X-Real-IP को $remote_addr के साथ अधिलेखित करता है। इसके बजाय $proxy_add_x_forwarded_for का उपयोग न करें: यह जो कुछ भी क्लाइंट ने भेजा है उसमें जोड़ता है, क्लाइंट द्वारा नियंत्रित मानों को एक हेडर में छोड़ देता है जिस पर अनुमति सूची निर्भर करती है।

चरण 3: साइट सक्षम करें और प्रमाणपत्र प्राप्त करें

# Enable the site
sudo ln -s /etc/nginx/sites-available/duplistatus /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# Obtain the TLS certificate
sudo certbot --nginx -d your-domain.com

सर्टबॉट आपके एनजीनएक्स कॉन्फ़िगरेशन में टीएलएस सेटिंग्स जोड़ता है और HTTP को HTTPS पर पुनर्निर्देशित करता है। यह एक नवीनीकरण टाइमर भी स्थापित करता है, जिसकी आप इसके साथ सत्यापना कर सकते हैं:

sudo certbot renew --dry-run

प्रलेखन:

विकल्प 2: कैडी​

Caddy एक आधुनिक वेब सर्वर है जो टीएलएस प्रमाणपत्रों को स्वचालित रूप से प्राप्त करता है और नवीनीकृत करता है, जो प्रमाणपत्र प्रबंधन का अधिकांश काम हटा देता है।

पूर्वापेक्षाएँ:

  • एक डोमेन नाम जिसका डीएनएस ए (या एएएए) रिकॉर्ड आपके सर्वर की ओर इंगित करता है
  • आपके सिस्टम पर कैडी स्थापित

चरण 1: कैडी स्थापित करें

अपने ऑपरेटिंग सिस्टम के लिए आधिकारिक स्थापना मार्गदर्शिका का पालन करें।

चरण 2: Caddyfile बनाएं

पैकेज स्थापना /etc/caddy/Caddyfile को पढ़ती है। इसकी सामग्री को इस प्रकार सेट करें:

your-domain.com {
reverse_proxy localhost:9666
}

Caddy का reverse_proxy निर्देश आपके लिए क्लाइंट IP हेडर सेट करता है। IP अनुमति सूचियों का उपयोग करते समय आपको अभी भी विश्वसनीय प्रॉक्सी के अंतर्गत प्रॉक्सी के कनेक्टिंग पते को सूचीबद्ध करना होगा (नीचे देखें)।

चरण 3: Caddy शुरू करें या पुनः लोड करें

यदि आपने Caddy को पैकेज से स्थापित किया है, तो प्रबंधित सेवा के माध्यम से कॉन्फ़िगरेशन लागू करें:

sudo systemctl reload caddy

Caddy को मैन्युअल रूप से चलाने के लिए - उदाहरण के लिए वर्तमान निर्देशिका में Caddyfile से - पोर्ट 80 और 443 को मुक्त करने के लिए पहले प्रबंधित सेवा को रोकें, फिर चलाएं:

sudo caddy run --config Caddyfile

Caddy पहली बार जब साइट की सेवा करता है तो प्रमाणपत्र प्राप्त करता है और समाप्ति से पहले इसे नवीनीकृत करता है।

प्रलेखन:

IP अनुमति सूची के लिए विश्वसनीय प्रॉक्सी​

duplistatus को लोकलहोस्ट या निजी नेटवर्क से बाइंड करें ताकि रिवर्स प्रॉक्सी केवल सार्वजनिक श्रोता हो। पोर्ट 9666 को कभी भी इंटरनेट से पहुंच योग्य नहीं होना चाहिए।

जब IP अनुमति सूचियाँ सक्षम होती हैं, तो प्रॉक्सी को विश्वसनीय प्रॉक्सी के अंतर्गत सूचीबद्ध करें (या IP_TRUSTED_PROXIES सेट करें)। एप्लिकेशन X-Forwarded-For और X-Real-IP का सम्मान केवल तभी करता है जब कनेक्टिंग पता एक विश्वसनीय प्रॉक्सी हो; अन्यथा यह उन्हें अनदेखा कर देता है।

  • प्रॉक्सी को कनेक्ट हो रहे क्लाइंट के पते के साथ उन हेडर को अधिलेखित करने के लिए कॉन्फ़िगर करें, जैसे ऊपर Nginx नमूने में। जोड़ें नहीं।
  • जब प्रॉक्सी होस्ट पर चल रहा हो और duplistatus कंटेनर में चल रहा हो, तो पीयर IP आमतौर पर Docker ब्रिज गेटवे होता है (उदाहरण के लिए 172.17.0.1)। उस पते या CIDR को विश्वसनीय प्रॉक्सी में डालें, और वास्तविक क्लाइंट CIDR को एडमिन या बाह्य अनुमति सूची में डालें।
  • अनुमति सूची सक्षम करने से पहले, सेटिंग्स → IP अनुमति सूची खोलें और पहचाना गया IP की जांच करें: पीयर IP प्रॉक्सी (या ब्रिज गेटवे) होना चाहिए और अनुमति सूची IP क्लाइंट होना चाहिए। यदि अनुमति सूची IP अभी भी प्रॉक्सी दिखा रहा है, तो विश्वसनीय-प्रॉक्सी कॉन्फ़िगरेशन अभी तक सही नहीं है।

HTTPS सक्षम करने के बाद​

--send-http-json-urls=https://your-domain.com/api/upload
महत्वपूर्ण

अपने Duplicati सर्वर कॉन्फ़िगरेशन को HTTPS URL का उपयोग करने के लिए अद्यतन करें:

यदि API कुंजियाँ आवश्यक हैं तो ?api_key=YOUR_UPLOAD_KEY जोड़ें। Duplicati के 2.0.9.106 संस्करण से पुराने में, --send-http-url=https://your-domain.com/api/upload के साथ --send-http-result-output-format=Json का उपयोग करें। देखें Duplicati सर्वर कॉन्फ़िगरेशन।

सुझाव
  • उदाहरणों में अपने डोमेन के साथ your-domain.com को बदलें।
  • प्रमाणपत्र के अनुरोध से पहले पुष्टि करें कि डोमेन का DNS A (या AAAA) रिकॉर्ड आपके सर्वर पर हल हो जाता है।
  • दोनों विकल्प प्रमाणपत्रों को स्वचालित रूप से नवीनीकृत करते हैं: सर्टबॉट systemd टाइमर के माध्यम से, Caddy अपने अंतर्निहित प्रमाणपत्र प्रबंधक के माध्यम से।
  • होस्ट फ़ायरवॉल को पोर्ट 443 तक सीमित करें, और 80 और 9666 को बाहर के लिए बंद रखें।