Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

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

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
setup-wordpress-with-security-best-practice — WordPress इंस्टॉलेशन को सुरक्षित करने के लिए व्यापक मार्गदर्शिका: इसमें व्यवस्थापक उपयोगकर्ता परिवर्तन, HTTPS अनिवार्यता, प्लगइन सुरक्षा, फ़ाइल अनुमतियाँ, और स्थिर कॉर्पोरेट साइटों के लिए सर्वर कॉन्फ़िगरेशन शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/password123456/setup-wordpress-with-security-best-practice
कॉन्फ़िगरेशन ऑडिटिंगवेब सुरक्षालर्निंग और शिक्षा
GitHubpassword123456/setup-wordpress-with-security-best-practice

setup-wordpress-with-security-best-practice

WordPress इंस्टॉलेशन को सुरक्षित करने के लिए व्यापक मार्गदर्शिका: इसमें व्यवस्थापक उपयोगकर्ता परिवर्तन, HTTPS अनिवार्यता, प्लगइन सुरक्षा, फ़ाइल अनुमतियाँ, और स्थिर कॉर्पोरेट साइटों के लिए सर्वर कॉन्फ़िगरेशन शामिल हैं।

रिपॉजिटरी देखें

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
2942 साल पहलेKitploit द्वारा समीक्षित

सुरक्षा सर्वोत्तम अभ्यास के साथ वर्डप्रेस सेटअप करें

Hits

यह दस्तावेज़ वर्डप्रेस का उपयोग करके विकसित वेब अनुप्रयोगों के लिए उपयुक्त होने के उद्देश्य से लिखा गया है, जो उपयोगकर्ताओं के साथ इंटरैक्ट नहीं करते हैं। यह मुख्य रूप से कॉर्पोरेट ब्रांड पेजों, विभिन्न स्थिर दृश्यों, भर्ती पेजों और समान साइटों के लिए है।

ऐसी वेबसाइटों के लिए जहाँ उपयोगकर्ता पंजीकरण करते हैं और स्वतंत्र रूप से साइट का उपयोग करते हैं, जैसे कि खुले समुदाय, इस दस्तावेज़ के कुछ आइटम लागू नहीं हो सकते हैं। कृपया पढ़ते समय इसे ध्यान में रखें।

इस दस्तावेज़ में वर्डप्रेस को सुरक्षित करने के लिए आवश्यक सभी सामग्री शामिल नहीं है।

हालाँकि, इसमें सामान्य और विस्तृत जानकारी उस स्तर तक शामिल है जो मार्गदर्शन के आधार पर सुरक्षा जोखिम मूल्यांकन और भेद्यता प्रतिक्रिया की अनुमति देता है।

यदि आपको यह सहायक लगता है, तो कृपया आगे के सुधारों का समर्थन करने के लिए "स्टार"🌟 दें।


विषय सूची

  • 1. सुनिश्चित करें कि डिफ़ॉल्ट वर्डप्रेस एडमिन उपयोगकर्ता नाम बदल दिया गया है
  • 2. सुनिश्चित करें कि वर्डप्रेस में उपयोगकर्ता भूमिकाएँ और अनुमतियाँ ठीक से प्रबंधित हैं
  • 3. सुनिश्चित करें कि उपयोगकर्ता पंजीकरण अक्षम है
  • 4. सुनिश्चित करें कि प्लगइन फ़ाइल संपादक अक्षम है
  • 5. सुनिश्चित करें कि अप्रयुक्त, अनावश्यक प्लगइन्स निष्क्रिय हैं
  • 6. सुनिश्चित करें कि वर्डप्रेस केवल HTTPS का उपयोग करने के लिए कॉन्फ़िगर किया गया है, जिसमें वर्डप्रेस एडमिन भी शामिल है
  • 7. सुनिश्चित करें कि IP एक्सेस प्रतिबंध (ACL) लागू हैं
    • 7.1. सुनिश्चित करें कि वर्डप्रेस एडमिन पर IP एक्सेस प्रतिबंध लागू हैं
    • 7.2. IP एक्सेस प्रतिबंधित करें या JSON REST API सुविधा अक्षम करें
    • 7.3. XML-RPC API सुविधा अक्षम करें
    • 7.4. WP-Cron अक्षम करें या सुविधा प्रतिबंधित करें
  • 8. सुरक्षित वर्डप्रेस के लिए सिस्टम कॉन्फ़िगरेशन
    • 8.1. सुनिश्चित करें कि गैर-जीवन-अंत (EOL) वर्डप्रेस और PHP संस्करणों का उपयोग किया जाता है
    • 8.2. सुनिश्चित करें कि वर्डप्रेस के लिए केवल आवश्यक PHP एक्सटेंशन सक्षम हैं
    • 8.3. फ़ाइल अपलोड सुविधाओं वाले प्लगइन्स की सुरक्षा सुनिश्चित करें
    • 8.4. सुनिश्चित करें कि PHP फ़ंक्शन और सेटिंग्स ठीक से कॉन्फ़िगर की गई हैं
    • 8.5. सुनिश्चित करें कि वेब सर्वर एक गैर-रूट उपयोगकर्ता के रूप में चलता है - सर्वर अनुप्रयोग के लिए अद्वितीय, गैर-विशेषाधिकार प्राप्त उपयोगकर्ता और समूह
    • 8.6. सुनिश्चित करें कि PHP-FPM एक गैर-रूट उपयोगकर्ता के रूप में चलता है - सर्वर अनुप्रयोग के लिए अद्वितीय, गैर-विशेषाधिकार प्राप्त उपयोगकर्ता और समूह
    • 8.7. वर्डप्रेस होम निर्देशिका का सुरक्षित कॉन्फ़िगरेशन सुनिश्चित करें
    • 8.8. सुनिश्चित करें कि लिखने योग्य निर्देशिकाओं में PHP निष्पादन अक्षम है
    • 8.9. सुनिश्चित करें कि वेब सर्वर केवल डोमेन-आधारित होस्ट हेडर का जवाब देता है
    • 8.10. पूर्ण वेबसर्वर कॉन्फ़िगरेशन
  • 9. सुनिश्चित करें कि वर्डप्रेस सुरक्षा अपडेट
  • 10. सुनिश्चित करें कि वर्डप्रेस के लिए नियमित सुरक्षा भेद्यता जाँच

1. सुनिश्चित करें कि डिफ़ॉल्ट वर्डप्रेस एडमिन उपयोगकर्ता नाम बदल दिया गया है

जब आप वर्डप्रेस स्थापित करते हैं, तो डिफ़ॉल्ट एडमिन उपयोगकर्ता नाम "admin" होता है, जब तक कि आप सेटअप प्रक्रिया के दौरान इसे नहीं बदलते। "admin" खाता नाम व्यापक रूप से जाना जाता है, इसलिए इसे एक अलग नाम में बदला जाना चाहिए। यदि आप अपने एडमिन उपयोगकर्ता नाम के रूप में "admin" का उपयोग जारी रखते हैं, तो कोई हमलावर आपकी वर्डप्रेस साइट तक पहुँच प्राप्त करने के लिए "admin" का उपयोग करके ब्रूट-फोर्स हमला कर सकता है।

यदि कोई हमलावर वर्डप्रेस एडमिन खाते तक पहुँच प्राप्त करता है, तो उनके पास वेबसाइट पर पूर्ण नियंत्रण होगा। डिफ़ॉल्ट वर्डप्रेस एडमिन उपयोगकर्ता नाम को एक अलग नाम में बदला जाना चाहिए।

ऑडिट:

  • जाँच करें कि क्या डिफ़ॉल्ट वर्डप्रेस एडमिन उपयोगकर्ता नाम अभी भी "admin" पर सेट है।

उपचार:

  • यदि उपयोगकर्ता नाम "admin" है, तो इसे तुरंत कम अनुमानित उपयोगकर्ता नाम में बदलें।
  1. एडमिन खाते का उपयोग करके अपने वर्डप्रेस एडमिन डैशबोर्ड में लॉगिन करें।
  2. अपने डैशबोर्ड पैनल से "उपयोगकर्ता" क्षेत्र पर जाएँ, और "नया उपयोगकर्ता जोड़ें" पर क्लिक करें।
  3. फ़ॉर्म भरें और "भूमिका" ड्रॉप-डाउन मेनू में "व्यवस्थापक" चुनें (एक मजबूत वेब पासवर्ड का उपयोग करना याद रखें और यह सुनिश्चित करने के लिए प्रदान किए गए पासवर्ड शक्ति संकेतक का भी उपयोग करें कि आपका नया पासवर्ड पर्याप्त मजबूत है)।
  4. समाप्त होने पर, "नया उपयोगकर्ता जोड़ें" बटन पर क्लिक करें।
  5. अपने नए वर्डप्रेस एडमिन उपयोगकर्ता नाम का उपयोग करके फिर से लॉगिन करें।
  6. फिर से "उपयोगकर्ता" क्षेत्र पर जाएँ।
  7. उपयोगकर्ता सूची में पिछले "admin" उपयोगकर्ता नाम का चयन करें और ड्रॉप-डाउन मेनू से "हटाएँ" चुनें।
  8. पुराने एडमिन को हटाते समय, आपसे पिछले "admin" उपयोगकर्ता नाम के तहत पोस्ट किए गए लेखों के बारे में पूछा जाएगा।
    • विकल्प "सभी पोस्ट और लिंक का श्रेय दें:" चुनें और अपना नया व्यवस्थापक चुनें।
    • जब सब कुछ सेट हो जाए, तो "हटाने की पुष्टि करें" पर क्लिक करें।

नोट:

  • हमेशा उपयोगकर्ता नाम से अलग "प्रदर्शन नाम" का उपयोग करें। यदि वास्तविक उपयोगकर्ता नाम का उपयोग सामग्री लेखक के प्रदर्शन नाम के रूप में किया जाता है, तो एक हैकर आसानी से उपयोगकर्ता नाम की पहचान करेगा और खाते को लक्षित करेगा।

2. सुनिश्चित करें कि वर्डप्रेस में उपयोगकर्ता भूमिकाएँ और अनुमतियाँ ठीक से प्रबंधित हैं

डिफ़ॉल्ट रूप से, वर्डप्रेस में पाँच उपयोगकर्ता भूमिकाएँ हैं - "व्यवस्थापक", "संपादक", "लेखक", "योगदानकर्ता", "सदस्य"

ये भूमिकाएँ आपको उपयुक्त अनुमतियाँ निर्दिष्ट करके नियंत्रित करने की अनुमति देती हैं कि उपयोगकर्ता आपकी वेबसाइट पर कौन से कार्य कर सकते हैं। यदि उपयोगकर्ता भूमिकाओं और अनुमतियों को ठीक से प्रबंधित नहीं किया जाता है, तो उपयोगकर्ताओं को महत्वपूर्ण कार्यक्षमताओं तक अनावश्यक पहुँच मिल सकती है, जो एक महत्वपूर्ण सुरक्षा जोखिम पैदा करता है।

ऑडिट:

  • जाँच करें कि वर्डप्रेस उपयोगकर्ता भूमिकाएँ और अनुमतियाँ आपकी वेबसाइट की आवश्यकताओं के अनुरूप समायोजित की गई हैं।
  • सुनिश्चित करने के लिए सभी उपयोगकर्ता भूमिकाओं की समीक्षा करें कि वे आपकी वेबसाइट की वर्तमान परिचालन नीतियों के अनुरूप हैं।

उपचार:

  • अपनी वेबसाइट की आवश्यकताओं के अनुसार उपयोगकर्ता भूमिकाएँ निर्दिष्ट करें और प्रबंधित करें।
  • सामान्य तौर पर, वर्डप्रेस को एक व्यवस्थापक, एक संपादक, एक लेखक के साथ संचालित किया जाना चाहिए।
  • जहाँ आवश्यक हो, अनावश्यक एडमिन खातों को हटाएँ या अनुमतियाँ कम करें।
  • नियमित रूप से उपयोगकर्ताओं और उनकी भूमिकाओं की समीक्षा करें ताकि यह सुनिश्चित हो सके कि वे किसी भी बदलाव के साथ अद्यतित हैं।

नोट:

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

3. सुनिश्चित करें कि उपयोगकर्ता पंजीकरण अक्षम है

वर्डप्रेस में एक अंतर्निहित उपयोगकर्ता पंजीकरण सुविधा शामिल है। यह सुविधा डिफ़ॉल्ट रूप से अक्षम है, लेकिन इसे एक व्यवस्थापक द्वारा सक्रिय किया जा सकता है।

यदि यह सुविधा सक्षम है, तो कोई भी पंजीकरण कर सकता है और संभावित रूप से वर्डप्रेस एडमिन डैशबोर्ड तक पहुँच प्राप्त कर सकता है, जो सुरक्षा समस्याओं का कारण बन सकता है। अधिकांश वेबसाइटों के लिए जो खुले समुदायों के रूप में संचालित होने का इरादा नहीं रखती हैं, उपयोगकर्ता पंजीकरण सुविधा अनावश्यक है और इसे अक्षम रहना चाहिए।

ऑडिट:

  • जाँच करें कि उपयोगकर्ता पंजीकरण अक्षम है। आप उपयोगकर्ता पंजीकरण पृष्ठ तक पहुँचने का प्रयास करके इसकी जाँच कर सकते हैं।
  1. वेब ब्राउज़र का उपयोग करना

    • https://yourwordpress.com/wp-login.php?action=register पर जाएँ
    • यदि उपयोगकर्ता पंजीकरण अक्षम है, तो आपको "उपयोगकर्ता पंजीकरण वर्तमान में अनुमति नहीं है" दिखाई देगा। 3.1!
  2. curl का उपयोग करना

    • यदि उपयोगकर्ता पंजीकरण अक्षम है, तो यह अक्षम पृष्ठ पर रीडायरेक्ट होगा।```

curl -i -k "https://yourwordpress.com/wp-login.php?action=register"

(response) HTTP/1.1 302 Moved Temporarily cache-control: no-cache, no-store, must-revalidate, max-age=0 content-type: text/html; charset=UTF-8 server: Apache content-length: 0 ... location: https://yourwordpress.com/wp-login.php?registration=disabled

root@kitploit:~
**उपचार:**
- यदि उपयोगकर्ता पंजीकरण सक्षम है, तो इसे अक्षम करें।
- "कोई भी पंजीकरण कर सकता है" को अनचेक करें
![3.2!](https://assets.kitploit.com/production/public/readmes/6586/46991061b1bec392d06e00e986f048c6369b8db2c9e5a6b30f4f66dbc9b862d1.png)


## 4. सुनिश्चित करें कि प्लगइन फ़ाइल संपादक अक्षम है
यदि कोई हमलावर WordPress व्यवस्थापक खाते में सेंध लगाता है, तो वे आपकी वेबसाइट का पूर्ण नियंत्रण ले सकते हैं।
वे अंतर्निहित "संपादक" सुविधा के माध्यम से आपकी थीम और प्लगइन्स के कोडिंग को संपादित कर सकते हैं, दुर्भावनापूर्ण स्क्रिप्ट अपलोड कर सकते हैं, आपकी साइट को ख़राब कर सकते हैं, आपके उपयोगकर्ताओं को स्पैम कर सकते हैं, और भी बहुत कुछ।

इन संपादकों के माध्यम से सामान्य हैक में SQL इंजेक्शन, SEO स्पैम हैक, और जापानी SEO स्पैम शामिल हैं।

**ऑडिट:**
- सत्यापित करें कि फ़ाइल संपादक अक्षम है।
- जांचें कि क्या आप स्वरूप > संपादक या प्लगइन्स > प्लगइन संपादक के माध्यम से संपादक तक पहुंच सकते हैं।

**उपचार:**
- यदि फ़ाइल संपादक सक्षम है, तो इन चरणों का पालन करके इसे अक्षम करें:

1. फ़ाइल प्रबंधक या FTP का उपयोग करके अपनी wp-config.php फ़ाइल तक पहुंचें।
2. संपादन के लिए wp-config.php फ़ाइल खोलें।
3. फ़ाइल के नीचे स्क्रॉल करें (यदि डिफ़ॉल्ट wp-config.php का उपयोग कर रहे हैं)।
4. निम्नलिखित पंक्ति ढूंढें:
`
/* बस इतना ही, संपादन बंद करें! प्रकाशन की शुभकामनाएँ। */
`
5. इस पंक्ति के ऊपर, निम्नलिखित कोड जोड़ें:
`
define('DISALLOW_FILE_EDIT', true);
`
6. परिवर्तन सहेजें और संपादक बंद करें।
7. अपने WordPress डैशबोर्ड पर वापस जाएं और पुष्टि करें कि संपादक विकल्प अब उपलब्ध नहीं हैं।


## 5. सुनिश्चित करें कि अप्रयुक्त, अनावश्यक प्लगइन्स निष्क्रिय हैं
WordPress में कई कमजोरियाँ प्लगइन सुरक्षा मुद्दों से उत्पन्न होती हैं।
प्लगइन्स ओपन-सोर्स होते हैं, जिससे हमलावरों के लिए कमजोरियाँ ढूंढना और उनका शोषण करना आसान हो जाता है।
उपयोग किए जाने वाले प्लगइन्स को अद्यतित रखना और किसी भी अप्रयुक्त प्लगइन को संभावित शोषण को रोकने के लिए निष्क्रिय करना महत्वपूर्ण है।

**ऑडिट:**
- जांचें कि अप्रयुक्त, अनावश्यक प्लगइन्स निष्क्रिय हैं।
- सत्यापित करें कि अप्रयुक्त और अनावश्यक प्लगइन्स निष्क्रिय हैं।

**उपचार:**
- इन चरणों का पालन करके किसी भी अप्रयुक्त, अनावश्यक प्लगइन को निष्क्रिय करें:

**प्लगइन जाँच - PCP का उपयोग करें:**
- PCP: https://wordpress.org/plugins/plugin-check
1. प्लगइन जाँच (PCP) स्थापित और सक्रिय करें:
   - अपने WordPress व्यवस्थापक डैशबोर्ड पर जाएँ
   - प्लगइन्स > नया जोड़ें पर जाएँ।
   - "Plugin Check" खोजें और इसे स्थापित, सक्रिय करें।

2. प्लगइन जाँच चलाएँ:
   - WordPress डैशबोर्ड में, प्लगइन जाँच मेनू पर जाएँ।
   - उन प्लगइन्स का चयन करें जिन्हें आप जाँचना चाहते हैं और स्कैन चलाएँ।

3. स्कैन परिणामों का विश्लेषण करें:
   - PCP प्लगइन के कोड का विश्लेषण करेगा और एक रिपोर्ट प्रदान करेगा, जिसमें शामिल हैं:
     - कोड मानक अनुपालन: प्लगइन WordPress कोडिंग मानकों का कितनी अच्छी तरह पालन करता है।
     - सुरक्षा मुद्दे: संभावित कमज़ोरियाँ या दुर्भावनापूर्ण कोड।
     - प्रदर्शन मुद्दे: वेबसाइट प्रदर्शन पर प्रभाव।
     - संगतता मुद्दे: क्या प्लगइन अन्य प्लगइन्स और थीम के साथ संगत है।

4. समस्याग्रस्त प्लगइन्स की पहचान करें:
   - यदि रिपोर्ट महत्वपूर्ण सुरक्षा कमज़ोरियाँ, दुर्भावनापूर्ण कोड, या अनेक कोडिंग मानक उल्लंघनों को उजागर करती है, तो प्लगइन संभवतः "संदिग्ध" है।
   - उन प्लगइन्स से सावधान रहें जो अनावश्यक बाहरी अनुरोध करते हैं या अत्यधिक डेटाबेस क्वेरी चलाते हैं।

5. मुद्दों का समाधान करें:
   - अद्यतन करके या प्लगइन पृष्ठों पर मुद्दों को ढूँढ़कर पहचानी गई समस्याओं को ठीक करें।
   - गंभीर सुरक्षा मुद्दों वाले प्लगइन्स का उपयोग करने से बचें। आवश्यकता पड़ने पर वैकल्पिक प्लगइन्स खोजें।

**प्लगइन प्रबंधन:**
1. प्लगइन चयन:
   - आधिकारिक रिपॉजिटरी का उपयोग करें, समीक्षाएँ और रेटिंग जाँचें, डेवलपर की विश्वसनीयता सत्यापित करें
   - अज्ञात, सत्यापित नहीं किए गए प्लगइन्स का उपयोग न करें

2. नियमित अद्यतन
   - नवीनतम सुरक्षा पैच सुनिश्चित करने के लिए प्लगइन्स को अद्यतित रखें।

3. अप्रयुक्त प्लगइन्स को निष्क्रिय करें और हटाएँ
   - निष्क्रिय प्लगइन भी सुरक्षा जोखिम पैदा कर सकते हैं, इसलिए यदि उपयोग नहीं किए जाते हैं तो उन्हें हटा दें।
   - प्लगइन्स को कम करें: केवल आवश्यक प्लगइन्स का उपयोग करें


## 6. सुनिश्चित करें कि WordPress केवल HTTPS का उपयोग करने के लिए कॉन्फ़िगर किया गया है, जिसमें WordPress व्यवस्थापक भी शामिल है
आज, अधिकांश वेबसाइटें SSL (HTTPS) पर संचालित करने के लिए कॉन्फ़िगर की गई हैं।
हालाँकि, कुछ वेब सर्वर अभी भी गलती से HTTP और HTTPS दोनों कनेक्शनों को संभालने के लिए सेट हो सकते हैं।
यह WordPress तक दोनों प्रोटोकॉल के माध्यम से पहुंच की अनुमति दे सकता है, जो एक सुरक्षा जोखिम है। WordPress, जिसमें WordPress व्यवस्थापक भी शामिल है, को विशेष रूप से HTTPS का उपयोग करने के लिए बाध्य किया जाना चाहिए।

**ऑडिट:**
- सत्यापित करें कि WordPress, जिसमें WordPress व्यवस्थापक भी शामिल है, केवल HTTPS के माध्यम से सुलभ होने के लिए कॉन्फ़िगर किया गया है।
- यह सुनिश्चित करने के लिए वेब सर्वर के VirtualHost कॉन्फ़िगरेशन की जाँच करें कि कोई HTTP VirtualHosts सेट नहीं हैं।

**उपचार:**
- यदि HTTP पहुंच संभव है, तो पहले वेब सर्वर सेटिंग्स की समीक्षा करें और संशोधित करें।
- यदि सर्वर में HTTP VirtualHosts हैं, तो या तो उन्हें HTTPS पर रीडायरेक्ट करें या HTTP VirtualHosts को हटा दें।
- यदि आवश्यक हो, तो WordPress व्यवस्थापक के लिए HTTPS पहुंच लागू करने के लिए "FORCE_SSL_ADMIN" सुविधा सक्षम करें।

**FORCE_SSL_ADMIN सक्षम करने के चरण:**
1. फ़ाइल प्रबंधक या FTP का उपयोग करके अपनी wp-config.php फ़ाइल तक पहुंचें।
2. संपादन के लिए wp-config.php फ़ाइल खोलें।
3. फ़ाइल के नीचे स्क्रॉल करें (यदि डिफ़ॉल्ट wp-config.php का उपयोग कर रहे हैं)।
4. निम्नलिखित पंक्ति ढूंढें:
`
/* बस इतना ही, संपादन बंद करें! प्रकाशन की शुभकामनाएँ। */
`
5. इस पंक्ति के ऊपर, निम्नलिखित कोड जोड़ें:
`
define('FORCE_SSL_ADMIN', true);`
`
6. परिवर्तन सहेजें और संपादक बंद करें।
अपने WordPress डैशबोर्ड पर वापस जाएं और यह सुनिश्चित करने के लिए फिर से लॉग इन करें कि WordPress व्यवस्थापक केवल HTTPS के माध्यम से सुलभ है।

**वेब सर्वर पर HTTP को HTTPS पर रीडायरेक्ट करें:**
1. Apache के लिए:
    ```
    <VirtualHost *:80>
        ServerName yourwordpress.com
    
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </VirtualHost>
    ```
2. Nginx के लिए:
    ```
    server {
        listen 80;
        server_name yourwordpress.com;
    
        location / {
            return 301 https://$host$request_uri;
        }
    }
    ```
यह सुनिश्चित करके कि WordPress और WordPress व्यवस्थापक केवल HTTPS के माध्यम से सुलभ हैं, आप अपनी वेबसाइट की सुरक्षा में काफी सुधार कर सकते हैं, डेटा की रक्षा कर सकते हैं और अनधिकृत पहुंच को रोक सकते हैं।   

## 7. सुनिश्चित करें कि IP पहुंच प्रतिबंध (ACL) लागू हैं
सत्यापित करें कि IP पहुंच प्रतिबंध लागू हैं

WordPress को सुरक्षित रूप से संचालित करने के लिए, WordPress व्यवस्थापक सहित कुछ URL पर IP पहुंच प्रतिबंध लागू करना आवश्यक है, ताकि अवांछित उपयोगकर्ताओं, कंप्यूटरों और बॉट्स को उन तक पहुंचने से रोका जा सके। इसमें केवल अनुमत IP पतों से पहुंच की अनुमति देना शामिल है, जैसे कि व्यवस्थापक IP। इसके अतिरिक्त, आक्रमण की सतहों को कम करने के लिए अप्रयुक्त सुविधाओं को अक्षम करना आवश्यक है।

सुरक्षित किए जाने वाले URL में WordPress व्यवस्थापक, उपयोगकर्ता पंजीकरण (wp-signup.php), JSON REST API, और XML-RPC सुविधा शामिल हैं।

यह सुरक्षा मार्गदर्शिका सेवा-उन्मुख वेबसाइटों जैसे कंपनी ब्लॉग, भर्ती पृष्ठ, ब्रांड साइटें और प्रचार साइटों को लक्षित करती है जहाँ उपयोगकर्ता सहभागिता न्यूनतम है और सामग्री मुख्य रूप से प्रदर्शित की जाती है।

IP पहुंच प्रतिबंध लागू करके, आप अनधिकृत पहुंच के जोखिम को काफी कम कर सकते हैं और अपनी वेबसाइट की समग्र सुरक्षा बढ़ा सकते हैं।


### 7.1. सुनिश्चित करें कि WordPress व्यवस्थापक पर IP पहुंच प्रतिबंध लागू हैं।
WordPress व्यवस्थापक पहुंच पथ wp-login.php या /wp-admin के रूप में निश्चित है, जिससे यह अनधिकृत उपयोगकर्ताओं के लिए आसानी से सुलभ हो जाता है।
सुनिश्चित करें कि व्यवस्थापक पृष्ठ तक अनधिकृत पहुंच को रोकने के लिए IP पहुंच प्रतिबंध लागू किया गया है।

**ऑडिट:**
- सत्यापित करें कि WordPress व्यवस्थापक के लिए IP पहुंच प्रतिबंध लागू हैं।
- अधिकांश मामलों में, यह वेब सर्वर (Apache, Nginx) पर कॉन्फ़िगर किया जाता है।

**उपचार:**
- यदि IP पहुंच प्रतिबंध लागू नहीं हैं, तो उन्हें लागू करें।
- निम्नलिखित Apache और Nginx वेब सर्वर का उपयोग करके IP पहुंच प्रतिबंध लागू करने की विधियाँ हैं।

**WordPress व्यवस्थापक पर IP पहुंच प्रतिबंध लागू करना:**
- /wp-admin, wp-login.php 

1. Apache के लिए:
    ```
   # फ़ाइल निर्देश 
    <Files "wp-login.php">
        Require ip 10.10.77.49  # अपने IP पते से बदलें
    </Files>
    
    # FilesMatch निर्देश
    <FilesMatch "^wp-login\.php$">
        Require all granted
    </FilesMatch>

   # निर्देशिका, फ़ाइल मिश्रण निर्देश
    <Directory /www/vhosts/yourwordpress>
        Require all granted
        AllowOverride None
        <Files "wp-login.php">
            Require ip 10.10.77.49  # अपने IP पते से बदलें
        </Files>
    </Directory>
   
   # स्थान निर्देश
    <Location "/wp-admin">
        Require ip 10.10.77.49  # अपने IP पते से बदलें
    </Location>
    
    <Location "/wp-login.php">
        Require ip 10.10.77.49  # अपने IP पते से बदलें
    </Location>
    ```
2. Nginx के लिए:
    ```
    location /wp-admin {
        allow 10.10.77.49;  # अपने IP पते से बदलें
        deny all;
    }
    
    location ~* \wp-login.php {
        allow 10.10.77.49;  # अपने IP पते से बदलें
        deny all;
    }
    ```


### 7.2. JSON REST API सुविधा के लिए IP पहुंच प्रतिबंधित करें या अक्षम करें
WordPress दो REST कार्यक्षमताएँ (xmlrpc, json rest api) प्रदान करता है और WordPress स्थापना पर डिफ़ॉल्ट रूप से सक्षम होती है।
REST API WordPress डेटा प्रकारों के लिए एंडपॉइंट प्रदान करता है, जो पोस्ट या डेटा को क्वेरी करने, संसाधनों को संशोधित करने, संपादित करने और हटाने जैसे कार्यों के लिए साइट के साथ दूरस्थ इंटरैक्शन की अनुमति देता है।

अधिकांश WordPress के लिए, REST API सुविधा आवश्यक नहीं है।
इसे सक्षम करने से WordPress DDoS हमलों के संपर्क में आ सकता है और इसके परिणामस्वरूप संसाधन खपत और साइट धीमी हो सकती है।

**ऑडिट:**
- सत्यापित करें कि JSON REST API सुविधा सक्षम है। (डिफ़ॉल्ट: सक्षम)```
# curl -i -k https://yourwordpress.com/wp-json

(response)
HTTP/1.1 200 OK
cache-control: no-cache, no-store, must-revalidate, max-age=0
content-type: text/html; charset=UTF-8
...
Server: Apache

{"name":"mywordress","description":"".......................

उपचार:

  • यदि REST API आवश्यक नहीं है, तो इसे निष्क्रिय कर दें। इसे सरल प्लगइन इंस्टॉलेशन के माध्यम से निष्क्रिय करना संभव है।
  • यदि REST API का उपयोग कर रहे हैं, तो केवल अनुमत IP से पहुंच की अनुमति देने के लिए IP पहुंच प्रतिबंध लागू करें।

"Disable REST API" प्लगइन इंस्टॉल करें, सक्रिय करें:

  1. अपने WordPress व्यवस्थापक डैशबोर्ड पर जाएं
  2. प्लगइन्स > नया जोड़ें पर जाएं।
  3. "Disable REST API" खोजें और इसे इंस्टॉल करें, सक्रिय करें।
  4. सक्रिय होने के बाद, प्लगइन आपकी WordPress साइट पर REST API कार्यक्षमता को स्वचालित रूप से निष्क्रिय कर देगा।

JSON REST API के लिए IP पहुंच प्रतिबंध:

  1. Apache के लिए:
    root@kitploit:~
    <Location "/wp-json">
        Require ip 10.10.77.49  # Replace with your IP address
    </Location>
    
  2. Nginx के लिए:
    root@kitploit:~
    location ~ ^/wp-json/ {
        allow 10.10.77.49;   # Replace with your allowed IP address
        deny all;
    }
    

7.3. XML-RPC API सुविधा को निष्क्रिय करें

JSON REST API के समान, XML-RPC API को निष्क्रिय करना उचित है क्योंकि अधिकांश WordPress इंस्टॉलेशन के लिए इसकी आवश्यकता नहीं होती है।

यदि REST API की आवश्यकता है, तो इसके बजाय JSON REST API का उपयोग करने की सिफारिश की जाती है।

XML-RPC के दो मुख्य कमजोरियाँ हैं:

ब्रूट फोर्स हमले:

  • हमलावर xmlrpc.php का उपयोग करके जितने संभव हो सके उपयोगकर्ता नाम/पासवर्ड संयोजनों के साथ WordPress लॉगिन का प्रयास करते हैं।
  • xmlrpc.php के अंदर एक विधि हमलावर को एक ही कमांड (system.multicall) का उपयोग करके सैकड़ों पासवर्ड का अनुमान लगाने की अनुमति देती है।

पिंगबैक के माध्यम से सेवा अस्वीकार (DoS) हमले:

  • 2013 में, हमलावरों ने लगभग 2500 WordPress साइटों के xmlrpc.php के माध्यम से पिंगबैक अनुरोध भेजे थे।
  • यह किसी भी हमलावर को 10 करोड़ से अधिक WordPress साइटों के नेटवर्क पर सेवा अस्वीकार हमले को वितरित करने के लिए आभासी रूप से असीमित IP पतों का सेट देता है, बिना उनसे समझौता किए।

यदि XML-RPC सक्षम है, तो इसका अभी भी ऐसे हमलों के लिए शोषण किया जा सकता है।

ऑडिट:

  • सत्यापित करें कि XML-RPC API सुविधा सक्षम है। (डिफ़ॉल्ट: सक्षम)```

curl -i -k https://yourwordpress.com/xmlrpc.php

(response) HTTP/1.1 405 Method Not Allowed Date: Mon, 25 Jun 2018 08:30:24 GMT Server: Apache Allow: POST Content-Length: 42 Content-Type: text/plain; charset=UTF-8

XML-RPC server accepts POST requests only.

root@kitploit:~
**उपचार:**
- प्लगइन का उपयोग करके XML-RPC सुविधा अक्षम करें

**प्लगइन "Disable XML-RPC-API" स्थापित करें, सक्रिय करें:**
1. अपने WordPress व्यवस्थापक डैशबोर्ड पर जाएं
2. प्लगइन्स > नया जोड़ें पर जाएं।
3. "[Disable XML-RPC-API](https://wordpress.org/plugins/disable-xml-rpc-api/)" खोजें और इसे स्थापित करें, सक्रिय करें।
4. XML-RPC-API अब अक्षम हो गया है।

**XML-RPC pingbacks हमलों के बारे में:**

1. जांचें कि XML-RPC सक्षम है
    ```
    # curl -i -k https://yourwordpress.com/xmlrpc.php
    
    (response)
    HTTP/1.1 405 Method Not Allowed
    Date: Mon, 25 Jun 2018 08:30:24 GMT
    Server: Apache
    Allow: POST
    Content-Length: 42
    Content-Type: text/plain; charset=UTF-8
     
     
    XML-RPC server accepts POST requests only.
    ```
2. उपलब्ध XML-RPC विधियों की खोज करना
    ```
    (request)
    POST /xmlrpc.php HTTP/1.1
    Host: yourwordpress.com
    Content-Length: 135
    
    <?xml version="1.0" encoding="utf-8"?>
    <methodCall>
        <methodName>system.listMethods</methodName>
        <params></params>
    </methodCall>
    
    
    (response)
    HTTP/1.1 200 OK
    cache-control: no-cache, no-store, must-revalidate, max-age=0
    ...
    Server: Apache
    Content-Length: 4272
    Content-Type: text/xml; charset=UTF-8
    
    <?xml version="1.0" encoding="UTF-8"?>
    <methodResponse>
        <params>
            <param>
                <value>
                    <array><data>
                        <value><string>system.multicall</string></value>
                        <value><string>system.listMethods</string></value>
                        <value><string>system.getCapabilities</string></value>
                        <value><string>demo.addTwoNumbers</string></value>
                        <value><string>demo.sayHello</string></value>
                        <value><string>pingback.extensions.getPingbacks</string></value>
                        <value><string>pingback.ping</string></value>
                        <value><string>mt.publishPost</string></value>
                        ...
                        <value><string>wp.getUsersBlogs</string></value>
                    </data></array>
                </value>
            </param>
        </params>
    </methodResponse>
    
    ```
3. pingbacks करें
    - pingback हमले की सफलता और विशिष्ट सत्यापन विधियों का वर्णन नहीं किया गया है।
    ```
    (request)
    POST /xmlrpc.php HTTP/1.1
    Host: yourwordpress.com
    Content-Length: 303
    
    <?xml version="1.0" encoding="UTF-8"?>
        <methodCall>
        <methodName>pingback.ping</methodName>
            <params>
                <param>
                    <value><string>call-back url for pingback result</string></value>
                </param>
                <param>
                    <value><string>https://yourwordpress.com/</string></value>
            </param>
        </params>
    </methodCall>
    
    
    (response)
    HTTP/1.1 200 OK
    ...
    Server: Apache
    Content-Length: 370
    Content-Type: text/xml; charset=UTF-8
    
    <?xml version="1.0" encoding="UTF-8"?>
    <methodResponse>
      <fault>
        <value>
          <struct>
            <member>
              <name>faultCode</name>
              <value><int>0</int></value>
            </member>
            <member>
              <name>faultString</name>
              <value><string></string></value>
            </member>
          </struct>
        </value>
      </fault>
    </methodResponse>
    ```


### 7.4. WP-Cron अक्षम करें या सुविधा प्रतिबंधित करें
WordPress में, WP-Cron (wp-cron.php) का उपयोग कार्यों को स्वचालित करने के लिए किया जाता है, जैसे निर्धारित पोस्ट प्रकाशन, प्लगइन/थीम अपडेट जाँच, और सूचना ईमेल भेजना।

WP-Cron मूल रूप से हर बार पेज लोड होने पर निर्धारित कार्यों की सूची की जाँच करके काम करता है।
समस्या तब उत्पन्न होती है जब भारी पेज लोडिंग होती है।

चूंकि WP-Cron कार्य प्रत्येक पेज लोड के साथ निष्पादित होते हैं, बार-बार की जाने वाली एक्सेस के परिणामस्वरूप संबंधित WP-Cron आह्वान होते हैं। परिणामस्वरूप, सिस्टम संसाधन दुर्लभ हो सकते हैं, जिससे साइट धीमी हो जाती है या रुक भी सकती है।
यह एक वास्तविक घटना है और अक्सर WordPress को लक्षित करने वाले भेद्यता हमलों में इसका शोषण किया जाता है।

यदि WP-Cron आवश्यक नहीं है, तो इसे निष्क्रिय करने की सलाह दी जाती है।
यदि आवश्यक हो, तो केवल स्थानीय होस्ट तक पहुंच को प्रतिबंधित करें।


**ऑडिट:**
- सत्यापित करें कि WP-Cron सक्षम है। (डिफ़ॉल्ट: सक्षम)```
# curl -i -k https://yourwordpress.com/wp-cron.php

(response)
HTTP/1.1 200 ok
Date: Mon, 25 Jun 2018 08:30:24 GMT
Server: Apache
Allow: POST
Content-Length: 42
Content-Type: text/plain; charset=UTF-8

समाधान:

  • यदि उपयोग में न हो तो WP-Cron अक्षम करें।
  • यदि उपयोग में हो, तो निम्नलिखित विकल्पों में से उपयुक्त एक लागू करें:
    1. "ALTERNATE_WP_CRON" सक्रिय करें और wp-cron.php पर IP पहुंच प्रतिबंधित करें।
    2. क्रॉन कार्य निष्पादन के लिए सिस्टम क्रॉन (crontab) या अन्य वैकल्पिक विधियों का उपयोग करें।

WP-Cron अक्षम करने के चरण:

  1. फ़ाइल प्रबंधक या FTP का उपयोग करके अपनी wp-config.php फ़ाइल तक पहुँचें।
  2. संपादन के लिए wp-config.php फ़ाइल खोलें।
  3. फ़ाइल के नीचे तक स्क्रॉल करें (यदि डिफ़ॉल्ट wp-config.php का उपयोग कर रहे हैं)।
  4. निम्नलिखित पंक्ति खोजें: /* That’s all, stop editing! Happy publishing. */
  5. इस पंक्ति के ऊपर, निम्नलिखित कोड जोड़ें: define('DISABLE_WP_CRON', true);
  6. परिवर्तन सहेजें और संपादक बंद करें।
  7. Apache और Nginx वेब सर्वर का उपयोग करके IP पहुंच प्रतिबंध लागू करें।
    1. Apache के लिए:
      root@kitploit:~
      # Files Directive 
      <Files "wp-cron.php">
          Require ip 127.0.0.1  # localhost only
      </Files>
      
      # FilesMatch Directive
      <FilesMatch "^wp-cron\.php$">
          Require ip 127.0.0.1  # localhost only
      </FilesMatch>
      
      # Location Directive
      <Location "/wp-cron.php">
          Require ip 127.0.0.1  # localhost only
      </Location>
      
    2. Nginx के लिए:
      root@kitploit:~
       location = /wp-cron.php {
           allow 127.0.0.1;
           deny all;
           access_log off;
           log_not_found off;
       }
      

"ALTERNATE_WP_CRON" सक्रिय करने के चरण:

  1. फ़ाइल प्रबंधक या FTP का उपयोग करके अपनी wp-config.php फ़ाइल तक पहुँचें।
  2. संपादन के लिए wp-config.php फ़ाइल खोलें।
  3. फ़ाइल के नीचे तक स्क्रॉल करें (यदि डिफ़ॉल्ट wp-config.php का उपयोग कर रहे हैं)।
  4. निम्नलिखित पंक्ति खोजें: /* That’s all, stop editing! Happy publishing. */
  5. इस पंक्ति के ऊपर, निम्नलिखित कोड जोड़ें: define( 'ALTERNATE_WP_CRON', true );
  6. परिवर्तन सहेजें और संपादक बंद करें।
  7. Apache और Nginx वेब सर्वर का उपयोग करके IP पहुंच प्रतिबंध लागू करें।
    1. Apache के लिए:
      root@kitploit:~
      # Files Directive 
      <Files "wp-cron.php">
          Require ip 127.0.0.1  # localhost only
      </Files>
      
      # FilesMatch Directive
      <FilesMatch "^wp-cron\.php$">
          Require ip 127.0.0.1  # localhost only
      </FilesMatch>
      
      # Location Directive
      <Location "/wp-cron.php">
          Require ip 127.0.0.1  # localhost only
      </Location>
      
    2. Nginx के लिए:
      root@kitploit:~
       location = /wp-cron.php {
           allow 127.0.0.1;
           deny all;
           access_log off;
           log_not_found off;
       }
      

उदाहरण: सिस्टम क्रॉन (crontab) का उपयोग करना:

  • लागू करने से पहले, पहले WP-Cron अक्षम करें।```

vim /etc/crontab

.. ... */10 * * * * curl http://yourwordpress.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

*/10 * * * * cd /var/www/yourwordpress.com/htdocs; php /var/www/yourwordpress.com/htdocs/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Also can use WP-Cli

*/10 * * * * cd /var/www/example.com/htdocs; wp cron event run --due-now > /dev/null 2>&1

root@kitploit:~
**wp-cron.php का उपयोग करके DoS हमला करने के बारे में:**
- wp-cron.php पर अनुरोधों की एक विस्तृत मात्रा भेजें
- इसके परिणामस्वरूप स्क्रिप्ट अत्यधिक संसाधनों का उपभोग करती है, अंततः सर्वर को ओवरलोड कर देती है
![7.4.1!](https://assets.kitploit.com/production/public/readmes/6586/b1647fd6883b8d7b3178e7f042290fada6614e9de11a4e6e256f435902b12633.png)
![7.4.2!](https://assets.kitploit.com/production/public/readmes/6586/07d6a5d1794a3ba03177b78f63631eb5fb8f8f6092d6156965535847636d2769.png)


## 8. सुरक्षित WordPress के लिए सिस्टम कॉन्फ़िगरेशन।
WordPress के सुरक्षित संचालन को सुनिश्चित करने के लिए वेब सर्वर का उचित कॉन्फ़िगरेशन और बैकएंड घटकों को सख्त करना आवश्यक है।
यहाँ कई आवश्यक वस्तुएँ हैं जिन्हें जाँचा और लागू किया जाना चाहिए।

### 8.1. गैर-जीवन-अंत (EOL) WordPress और PHP संस्करणों का उपयोग सुनिश्चित करें
एक सुरक्षित WordPress स्थापना बनाए रखने के लिए, WordPress और PHP के उन संस्करणों का उपयोग करना आवश्यक है जो अपने जीवन-अंत (EOL) पर नहीं हैं।
EOL संस्करण अब समर्थित नहीं हैं और सुरक्षा अद्यतन प्राप्त नहीं करते हैं, जिससे आपकी वेबसाइट अनपैच की गई सुरक्षा समस्याओं के लिए कमजोर रहती है।

समर्थित संस्करणों का उपयोग यह सुनिश्चित करता है कि खोजी गई कोई भी कमजोरी तुरंत संबोधित की जाती है, आपकी साइट को संभावित हमलों से बचाती है।
यहाँ आपको अपने WordPress और PHP संस्करणों को सत्यापित और अद्यतन करने के लिए क्या करने की आवश्यकता है:

**ऑडिट:**
- सत्यापित करें कि आपके वर्तमान WordPress और PHP संस्करण EOL नहीं हैं।

**सुधार:**
- WordPress और PHP के गैर-EOL संस्करणों को स्थापित और चलाएं।
- मई 2024 तक, समर्थित WordPress संस्करण 6.5 और उससे ऊपर है। समर्थित PHP संस्करण 8.1, 8.2 और 8.3 हैं।
- यदि आप वेब होस्टिंग सेवा का उपयोग करते हैं, तो WordPress और PHP दोनों के समर्थित संस्करणों को चलाने के लिए उनके संस्करण-स्विचिंग सुविधाओं का लाभ उठाएं।

**मई 2024 तक EOL स्थिति**
 1. PHP: [supported-versions](https://www.php.net/supported-versions.php)
    - वर्तमान में समर्थित संस्करण: 8.1, 8.2, 8.3
 2. WordPress: [current-releases](https://wordpress.org/download/releases/)
    - वर्तमान में समर्थित संस्करण: 6.5 श्रृंखला

**उदाहरण: RockyLinux 8.5 में PHP**
- RockyLinux 8.5 में, उपलब्ध डिफ़ॉल्ट PHP संस्करण 7.2, 7.3 और 7.4 हैं।
    ```
    # dnf module list php
    Rocky Linux 8 - AppStream
    Name         Stream          Profiles                           Summary                       
    php          7.2 [d]         common [d], devel, minimal         PHP scripting language        
    php          7.3             common [d], devel, minimal         PHP scripting language        
    php          7.4             common [d], devel, minimal         PHP scripting language        
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
    
    # dnf module enable php:7.4
    ==============================================================================================
     Package               Architecture         Version               Repository             Size
    ==============================================================================================
    Enabling module streams:
     httpd                                      2.4                                              
     php                                        7.4                                              
    
    Transaction Summary
    ==============================================================================================
    
    Is this ok [y/N]: y
    Complete!
    ```
- PHP 7 पहले ही जीवन के अंत (EOL) तक पहुँच चुका है; PHP 8 में अपग्रेड करने की सिफारिश की जाती है।
- PHP 8 को REMI रिपॉजिटरी से स्थापित किया जा सकता है।
- REMI का उपयोग करके PHP 8.2 को सक्षम और स्थापित करने का एक उदाहरण यहां दिया गया है:
    ```
    # Rocky Linux 8 में PHP 8.2 स्थापित करें
    
    # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    # dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
    # dnf -y install yum-utils
    # dnf module reset php
    # dnf module install php:remi-8.2
    Last metadata expiration check: 0:00:39 ago on Tue 13 Dec 2022 07:19:26 AM UTC.
    Dependencies resolved.
    =======================================================================================================================================
     Package                       Architecture        Version                                             Repository                 Size
    =======================================================================================================================================
    Installing group/module packages:
     php-cli                       x86_64              8.2.0-1.el8.remi                                    remi-modular              5.4 M
     php-common                    x86_64              8.2.0-1.el8.remi                                    remi-modular              1.3 M
     php-fpm                       x86_64              8.2.0-1.el8.remi                                    remi-modular              1.9 M
     php-mbstring                  x86_64              8.2.0-1.el8.remi                                    remi-modular              574 k
     php-xml                       x86_64              8.2.0-1.el8.remi                                    remi-modular              254 k
    Installing dependencies:
     httpd-filesystem              noarch              2.4.37-51.module+el8.7.0+1059+126e9251              appstream                  41 k
     libxslt                       x86_64              1.1.32-6.el8                                        baseos                    249 k
     oniguruma5php                 x86_64              6.9.8-1.el8.remi                                    remi-safe                 212 k
    Installing weak dependencies:
     nginx-filesystem              noarch              1:1.14.1-9.module+el8.4.0+542+81547229              appstream                  23 k
    Installing module profiles:
     php/common
    Enabling module streams:
     httpd                                             2.4
     nginx                                             1.14
     php                                               remi-8.2
    
    Transaction Summary
    =======================================================================================================================================
    Install  9 Packages
    
    # dnf update
    # dnf install php
    Last metadata expiration check: 0:00:23 ago on Tue 13 Dec 2022 07:29:55 AM UTC.
    Dependencies resolved.
    =======================================================================================================================================
     Package                       Architecture       Version                                               Repository                Size
    =======================================================================================================================================
    Installing:
     php                           x86_64             8.2.0-1.el8.remi                                      remi-modular             1.8 M
    Installing dependencies:
     apr                           x86_64             1.6.3-12.el8                                          appstream                128 k
     apr-util                      x86_64             1.6.1-6.el8.1                                         appstream                104 k
     httpd                         x86_64             2.4.37-51.module+el8.7.0+1059+126e9251                appstream                1.4 M
     httpd-tools                   x86_64             2.4.37-51.module+el8.7.0+1059+126e9251                appstream                108 k
     libsodium                     x86_64             1.0.18-2.el8                                          epel                     162 k
     mailcap                       noarch             2.1.48-3.el8                                          baseos                    38 k
     mod_http2                     x86_64             1.15.7-5.module+el8.6.0+823+f143cee1                  appstream                153 k
     rocky-logos-httpd             noarch             86.3-1.el8                                            baseos                    24 k
    Installing weak dependencies:
     apr-util-bdb                  x86_64             1.6.1-6.el8.1                                         appstream                 23 k
     apr-util-openssl              x86_64             1.6.1-6.el8.1                                         appstream                 26 k
     php-opcache                   x86_64             8.2.0-1.el8.remi                                      remi-modular             633 k
     php-pdo                       x86_64             8.2.0-1.el8.remi                                      remi-modular             166 k
     php-sodium                    x86_64             8.2.0-1.el8.remi                                      remi-modular             105 k
    
    Transaction Summary
    =======================================================================================================================================
    Install  14 Packages
    
    Total download size: 4.8 M
    Installed size: 14 M
    Is this ok [y/N]: y
    
    # php -v
    PHP 8.2.0 (cli) (built: Dec  6 2022 14:26:47) (NTS gcc x86_64)
    Copyright (c) The PHP Group
    Zend Engine v4.2.0, Copyright (c) Zend Technologies
        with Zend OPcache v8.2.0, Copyright (c), by Zend Technologies
    ```
**नोट:**
- REMI रिपॉजिटरी से PHP स्थापित करने के विस्तृत निर्देशों के लिए: [rpms.remirepo.net](https://rpms.remirepo.net/)
- WordPress और PHP संगतता पर दस्तावेज़ीकरण: [php-compatibility-and-wordpress-versions](https://make.wordpress.org/core/handbook/references/php-compatibility-and-wordpress-versions/)


### 8.2. सुनिश्चित करें कि WordPress के लिए केवल आवश्यक PHP एक्सटेंशन सक्षम हैं
सुनिश्चित करें कि आपकी WordPress साइट के लिए केवल आवश्यक PHP एक्सटेंशन सक्षम हैं।
अनावश्यक एक्सटेंशन आपकी वेबसाइट के हमले की सतह को बढ़ा सकते हैं और WordPress को सुरक्षा कमजोरियों के लिए उजागर कर सकते हैं।

केवल आवश्यक एक्सटेंशन को सक्षम करके, आप संभावित जोखिमों को कम कर सकते हैं और समग्र सुरक्षा में सुधार कर सकते हैं।

एक WordPress साइट को ठीक से काम करने के लिए नीचे आवश्यक हैं। **(सुरक्षा सख्तीकरण उद्देश्यों के लिए कोई सूची नहीं)**

| एक्सटेंशन | विवरण                                                                                                                                                                                                                                        |
|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| json      | अन्य सर्वरों के साथ संचार और JSON प्रारूप में डेटा प्रसंस्करण के लिए उपयोग किया जाता है।                                                                                                                                                                     |
| mysqli    | डेटाबेस इंटरैक्शन के लिए MySQL से कनेक्ट करता है।                                                                                                                                                                                                       |
| curl      | दूरस्थ अनुरोध संचालन करता है।                                                                                                                                                                                                                |
| dom       | टेक्स्ट विजेट सामग्री को मान्य करने और IIS7+ को स्वचालित रूप से कॉन्फ़िगर करने के लिए उपयोग किया जाता है।                                                                                                                                                                         |
| exif      | छवियों में संग्रहीत मेटाडेटा के साथ काम करता है।                                                                                                                                                                                                              |
| fileinfo  | फ़ाइल अपलोड के माइम प्रकार का पता लगाने के लिए उपयोग किया जाता है।                                                                                                                                                                                                           |
| hash      | हैशिंग के लिए उपयोग किया जाता है, जिसमें पासवर्ड और अद्यतन पैकेज शामिल हैं।                                                                                                                                                                                         |
| igbinary  | मानक PHP सीरियलाइज़र के लिए ड्रॉप-इन प्रतिस्थापन के रूप में प्रदर्शन बढ़ाता है।                                                                                                                                                                    |
| imagick   | मीडिया अपलोड के लिए बेहतर छवि गुणवत्ता प्रदान करता है। विवरण के लिए WP_Image_Editor देखें। स्मार्टर इमेज रीसाइज़िंग (छोटी छवियों के लिए) और PDF थंबनेल समर्थन, जब Ghost Script भी उपलब्ध हो।                                                      |
| intl      | लोकेल-जागरूक संचालन सक्षम करता है जिसमें फ़ॉर्मेटिंग, लिप्यंतरण, एन्कोडिंग रूपांतरण, कैलेंडर संचालन, अनुरूप कॉलेशन, टेक्स्ट सीमाओं का पता लगाना, और लोकेल पहचानकर्ताओं, टाइमज़ोन और ग्रैफ़ीम के साथ काम करना शामिल है, लेकिन इन्हीं तक सीमित नहीं है। |
| mbstring  | UTF8 टेक्स्ट को ठीक से संभालने के लिए उपयोग किया जाता है।                                                                                                                                                                                                                 |
| openssl   | अन्य होस्ट के लिए SSL-आधारित कनेक्शन।                                                                                                                                                                                                              |
| pcre      | कोड खोजों में पैटर्न मिलान के प्रदर्शन को बढ़ाता है।                                                                                                                                                                                        |
| xml       | XML पार्सिंग के लिए उपयोग किया जाता है, जैसे किसी तृतीय-पक्ष साइट से।                                                                                                                                                                                             |
| zip       | प्लगइन्स, थीम और WordPress अद्यतन पैकेजों को डीकंप्रेस करने के लिए उपयोग किया जाता है।                                                                                                                                                                             |
| bc        | मनमानी सटीकता गणित के लिए, जो किसी भी आकार और 2147483647 दशमलव अंकों तक की सटीकता वाली संख्याओं का समर्थन करता है।                                                                                                                             | 
| filter    | उपयोगकर्ता इनपुट को सुरक्षित रूप से फ़िल्टर करने के लिए उपयोग किया जाता है।                                                                                                                                                                                                            |
| image     | यदि Imagick स्थापित नहीं है, तो GD ग्राफिक्स लाइब्रेरी का उपयोग छवि हेरफेर के लिए कार्यात्मक रूप से सीमित फ़ॉलबैक के रूप में किया जाता है।                                                                                                                             |
| iconv     | कैरेक्टर सेट के बीच कनवर्ट करने के लिए उपयोग किया जाता है।                                                                                                                                                                                                            |
| shmop     | Shmop फ़ंक्शनों का एक आसान-से-उपयोग सेट है जो PHP को यूनिक्स साझा मेमोरी सेगमेंट को पढ़ने, लिखने, बनाने और हटाने की अनुमति देता है।                                                                                                                            |
| simplexml | XML पार्सिंग के लिए उपयोग किया जाता है।                                                                                                                                                                                                                              |
| sodium    | हस्ताक्षरों को मान्य करता है और सुरक्षित रूप से यादृच्छिक बाइट्स प्रदान करता है।                                                                                                                                                                                           |
| xmlreader | XML पार्सिंग के लिए उपयोग किया जाता है।                                                                                                                                                                                                                              |
| zlib      | Gzip संपीड़न और विसंपीड़न।                                                                                                                                                                                                                                |

आवश्यक एक्सटेंशन यहां पाए जा सकते हैं: [WordPress Hosting Handbook: PHP Extensions](https://make.wordpress.org/hosting/handbook/server-environment/#php-extensions)

**ऑडिट:**
- सत्यापित करें कि आपकी WordPress साइट के लिए केवल आवश्यक PHP एक्सटेंशन सक्षम हैं।

**सुधार:**
- किसी भी अनावश्यक एक्सटेंशन को हटाएं। कभी-कभी, प्लगइन्स के साथ एक्सटेंशन स्थापित होते हैं, जो आपकी साइट के लिए आवश्यक नहीं हो सकते हैं।
- वर्तमान में सक्षम PHP एक्सटेंशन की जांच करने के लिए, आप **php.ini** फ़ाइल की समीक्षा कर सकते हैं या सभी सक्रिय एक्सटेंशन को सूचीबद्ध करने के लिए **phpinfo()** फ़ंक्शन का उपयोग कर सकते हैं।

![8.2!](https://assets.kitploit.com/production/public/readmes/6586/1e270a242227b8dc8fa965765c69b7927b170de108acdbe1fad91455e484e615.png)

- कुछ एक्सटेंशन, यदि आवश्यक नहीं हैं, तो संभावित सुरक्षा समस्याओं को रोकने के लिए अक्षम किए जाने चाहिए।
- उदाहरण के लिए, exif, fileinfo, imap, soap, pdo_sqlite और opcache जैसे एक्सटेंशन यदि उचित उपयोग के बिना सक्षम छोड़ दिए जाते हैं तो उनका शोषण किया जा सकता है।
- यदि आप वेब होस्टिंग सेवा का उपयोग कर रहे हैं, तो कई प्रदाता PHP सेटिंग्स को स्विच करने के लिए उपयोग में आसान इंटरफ़ेस प्रदान करते हैं, जिसमें PHP एक्सटेंशन को सक्षम या अक्षम करना शामिल है। इन सुविधाओं का उपयोग करके, आप प्रभावी ढंग से एक्सटेंशन का प्रबंधन कर सकते हैं।


### 8.3. फ़ाइल अपलोड सुविधाओं वाले प्लगइन्स की सुरक्षा सुनिश्चित करें
फ़ाइल अपलोड क्षमताओं वाले प्लगइन्स एक महत्वपूर्ण सुरक्षा जोखिम हो सकते हैं यदि ठीक से सुरक्षित न हों। फ़ाइल अपलोड फ़ंक्शन में कमजोरियां हमलावरों को वेब शेल अपलोड करने की अनुमति दे सकती हैं, जिससे संभावित रूप से पूर्ण सिस्टम से समझौता हो सकता है। इसलिए, यह सुनिश्चित करना महत्वपूर्ण है कि किसी भी फ़ाइल अपलोड कार्यक्षमता में सत्यापन और स्वच्छता तंत्र शामिल हों।

यह क्यों महत्वपूर्ण है?
1. एक्सटेंशन सत्यापन:
   - सर्वर को अनुमत प्रकारों की एक श्वेतसूची के विरुद्ध फ़ाइल एक्सटेंशन को मान्य करना चाहिए ताकि दुर्भावनापूर्ण फ़ाइलों के अपलोड को रोका जा सके।

2. MIME प्रकार जाँच:
   - फ़ाइल के MIME प्रकार की जाँच की जानी चाहिए ताकि यह सुनिश्चित हो सके कि यह अपेक्षित प्रकार से मेल खाता है, सुरक्षा की एक अतिरिक्त परत जोड़ता है।

3. अपलोड पथ प्रतिबंध:
   - सुनिश्चित करें कि कोई उजागर पथ नहीं हैं जो सत्यापन के बिना अपलोड की गई फ़ाइलों तक सीधी पहुंच की अनुमति देते हैं।

फ़ाइल अपलोड कमजोरियां विशेष रूप से खतरनाक हैं क्योंकि वे हमलावरों के लिए निष्पादन योग्य कोड अपलोड करने और मनमानी कमांड चलाने का सीधा रास्ता प्रदान करती हैं। फ़ाइल अपलोड कमजोरियों की पहचान करना और उनका शोषण करना SQL इंजेक्शन जैसी अन्य सुरक्षा खामियों की तुलना में अक्सर आसान होता है।

**ऑडिट:**
- अपनी WordPress साइट पर फ़ाइल अपलोड कार्यक्षमता वाले प्लगइन्स की पहचान करें।
- सत्यापित करें कि ये प्लगइन्स अपलोड की गई फ़ाइलों के लिए उचित सत्यापन जाँच लागू करते हैं, जिसमें एक्सटेंशन और MIME प्रकार सत्यापन शामिल है।

**सुधार:**
- यदि फ़ाइल अपलोड कार्यक्षमता वाले प्लगइन में उचित सत्यापन का अभाव है, तो या तो इसकी सुरक्षा बढ़ाएं या प्लगइन को हटा दें।
- फ़ाइल अपलोड सुविधाओं वाले लोकप्रिय WordPress प्लगइन्स के उदाहरण और वे फ़ाइल सत्यापन को कैसे संभालते हैं, नीचे दिए गए हैं।

**उदाहरण: फ़ाइल अपलोड हैंडलिंग वाले लोकप्रिय WordPress प्लगइन्स**

1. Contact Form 7
   - Contact Form 7 WordPress में सबसे व्यापक रूप से उपयोग किए जाने वाले फ़ॉर्म प्लगइन्स में से एक है। इसमें एक्सटेंशन और MIME प्रकार सत्यापन के साथ बुनियादी फ़ाइल अपलोड कार्यक्षमता शामिल है।**Code for Allowed Extensions and MIME Type Check:**
     ```
      function wpcf7_allowed_file_extensions() {
          // Default allowed file extensions
          $allowed_file_extensions = array(
              'jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx',
              'xls', 'xlsx', 'txt', 'csv', 'rtf', 'html', 'zip'
          );
          return $allowed_file_extensions;
      }
    
      function wpcf7_handle_upload( $file ) {
          $allowed_mime_types = wpcf7_allowed_file_extensions();
          $file_type = wp_check_filetype( $file['name'] );
    
          // Check if the file type is allowed
          if ( ! in_array( $file_type['ext'], $allowed_mime_types ) ) {
              return new WP_Error( 'wpcf7_upload_failed', __( 'File type is not allowed.', 'contact-form-7' ) );
          }
    
          // Handle the file upload
          $upload = wp_handle_upload( $file, array( 'test_form' => false ) );
    
          // Check if the upload was successful
          if ( isset( $upload['error'] ) ) {
              return new WP_Error( 'wpcf7_upload_failed', $upload['error'] );
          }
    
          return $upload;
      }
      ```
      Contact Form 7 में, `wpcf7_allowed_file_extensions()` फ़ंक्शन अनुमत फ़ाइल एक्सटेंशन की एक सूची लौटाता है, और `wpcf7_handle_upload()` फ़ंक्शन अपलोड के साथ आगे बढ़ने से पहले जाँचता है कि फ़ाइल एक्सटेंशन इस सूची में है या नहीं।

2. WPForms
   - WPForms अनुमत फ़ाइल प्रकारों की जाँच करके फ़ाइल अपलोड को संभालता है।

      **Example Code for WPForms:**
       ```
         function wpforms_get_file_types() {
          // Return an array of allowed file types
          return array( 'jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx' );
      }
    
      function wpforms_process_file_upload( $file ) {
          $allowed_file_types = wpforms_get_file_types();
          $file_type = wp_check_filetype( $file['name'] );
    
          if ( ! in_array( $file_type['ext'], $allowed_file_types ) ) {
              return new WP_Error( 'wpforms_upload_failed', __( 'File type is not allowed.', 'wpforms' ) );
          }
    
          $upload = wp_handle_upload( $file, array( 'test_form' => false ) );
    
          if ( isset( $upload['error'] ) ) {
              return new WP_Error( 'wpforms_upload_failed', $upload['error'] );
          }
    
          return $upload;
      }
      ```

3. WooCommerce
   - WooCommerce भी अपने अपलोड हैंडलिंग कोड में सीधे अनुमत फ़ाइल एक्सटेंशन को परिभाषित और जाँचता है।
   
       **Example Code for WooCommerce:**
        ```
        function woocommerce_handle_upload( $file ) {
            $allowed_file_types = array( 'jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx' );
            $file_type = wp_check_filetype( $file['name'] );
        
            if ( ! in_array( $file_type['ext'], $allowed_file_types ) ) {
                return new WP_Error( 'woocommerce_upload_failed', __( 'File type is not allowed.', 'woocommerce' ) );
            }
        
            $upload = wp_handle_upload( $file, array( 'test_form' => false ) );
        
            if ( isset( $upload['error'] ) ) {
                return new WP_Error( 'woocommerce_upload_failed', $upload['error'] );
            }
        
            return $upload;
        }
        ```

**उदाहरण: दुर्भावनापूर्ण फ़ाइल अपलोड प्लगइन**
- एक दुर्भावनापूर्ण प्लगइन शुद्ध दिख सकता है लेकिन सुरक्षा जाँचों को बायपास करने के लिए fileinfo एक्सटेंशन का शोषण करता है:
    ```
    <?php
    /*
    Plugin Name: Simple Malicious Upload
    Description: A plugin with hidden malicious file upload capability.
    Version: 1.0
    */
    
    function simple_file_upload_menu() {
        add_menu_page('File Upload', 'File Upload', 'manage_options', 'file-upload', 'simple_file_upload_page');
    }
    
    add_action('admin_menu', 'simple_file_upload_menu');
    
    function simple_file_upload_page() {
        ?>
        <h1>File Upload</h1>
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="uploaded_file" />
            <input type="submit" name="upload_file" value="Upload" />
        </form>
        <?php
    
        if (isset($_POST['upload_file'])) {
            simple_handle_file_upload();
        }
    }
    
    function simple_handle_file_upload() {
        if (!empty($_FILES['uploaded_file']['tmp_name'])) {
            $file_tmp = $_FILES['uploaded_file']['tmp_name'];
            $file_name = basename($_FILES['uploaded_file']['name']);
    
            // Using fileinfo to check MIME type
            $finfo = finfo_open(FILEINFO_MIME_TYPE);
            $mime_type = finfo_file($finfo, $file_tmp);
            finfo_close($finfo);
    
            // Insecure handling: allows any PHP files to be uploaded
            if ($mime_type === 'text/plain' || $mime_type === 'application/x-php') {
                $upload_dir = wp_upload_dir();
                $upload_file = $upload_dir['path'] . '/' . $file_name;
    
                // Move the uploaded file to the uploads directory
                if (move_uploaded_file($file_tmp, $upload_file)) {
                    echo "File uploaded successfully.";
                } else {
                    echo "File upload failed.";
                }
            } else {
                echo "Invalid file type.";
            }
        }
    }
    ?>
    ```
**शोषण की व्याख्या:**
- दुर्भावनापूर्ण प्लगइन PHP फ़ाइलों को अपलोड करने की अनुमति देता है यदि उनका MIME प्रकार `application/x-php.` है।
- एक हमलावर इस कार्यक्षमता का उपयोग करके PHP वेब शेल अपलोड कर सकता है।
- एक बार अपलोड होने के बाद, हमलावर फ़ाइल के URL तक पहुँचता है और मनमानी कमांड निष्पादित करता है।

**उदाहरण: PHP वेब शेल कोड**```
<?php
if (isset($_GET['cmd'])) {
    echo "<pre>";
    system($_GET['cmd']);
    echo "</pre>";
}
?>

हमले का प्रदर्शन

  1. वेब शेल अपलोड करें:
    • हमलावर प्लगइन के अपलोड फॉर्म के माध्यम से webshell.php अपलोड करता है।
  2. वेब शेल तक पहुँचें और उसका उपयोग करें:
    • हमलावर http://yourwordpress.com/wp-content/uploads/webshell.php पर वेब शेल तक पहुँचता है।
    • http://yourwordpress.com/wp-content/uploads/webshell.php?cmd=ls पर जाकर, हमलावर मनमाने कमांड निष्पादित कर सकता है।

नोट:

  • यह उदाहरण यह समझाने के लिए है कि फ़ाइल अपलोड सुविधाओं वाले प्लगइन का दुरुपयोग कैसे किया जा सकता है।
  • उचित मान्यता और स्वच्छता सुनिश्चित करने से संभावित शोषण को रोका जा सकता है और आपकी WordPress साइट की सुरक्षा बनाए रखी जा सकती है।
  • उपरोक्त प्लगइन कोड केवल शैक्षिक उद्देश्यों के लिए हैं।

8.4. सुनिश्चित करें कि PHP फ़ंक्शन और सेटिंग्स उचित रूप से कॉन्फ़िगर की गई हैं

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

यह क्यों महत्वपूर्ण है?

  1. रिमोट कोड निष्पादन:

    • allow_url_fopen जैसी सेटिंग्स और exec जैसे फ़ंक्शन रिमोट कोड निष्पादन को सक्षम कर सकते हैं, जिससे संभावित सिस्टम से समझौता हो सकता है।
  2. सूचना प्रकटीकरण:

    • display_errors और expose_php जैसे विकल्प आपके सर्वर सेटअप के बारे में संवेदनशील जानकारी लीक कर सकते हैं, जिससे हमलावरों के लिए कमजोरियों को खोजना आसान हो जाता है।
  3. सत्र सुरक्षा:

    • उचित सत्र प्रबंधन सेटिंग्स, जैसे session.cookie_secure और session.cookie_httponly, सत्र कुकीज़ को क्लाइंट-साइड स्क्रिप्ट के माध्यम से एक्सेस होने या असुरक्षित चैनलों पर प्रसारित होने से बचाती हैं।

ऑडिट:

  • सत्यापित करें कि नीचे सूचीबद्ध असुरक्षित PHP फ़ंक्शन और सेटिंग्स उचित रूप से कॉन्फ़िगर और मजबूत की गई हैं।

सुधार:

  • निम्नलिखित PHP सेटिंग्स और फ़ंक्शन की समीक्षा करें, और उन्हें आपकी WordPress साइट के सुरक्षित संचालन और इसकी कार्यक्षमता दोनों को सुनिश्चित करने के लिए समायोजित करें।
  1. allow_url_fopen:

    • फ़ंक्शनों को URLs के माध्यम से फ़ाइलें खोलने और पढ़ने की अनुमति देता है।
    • जब सक्षम होता है, तो file_get_contents(), fopen(), include(), और require() जैसे फ़ंक्शन FTP या HTTP पर दूरस्थ स्थानों से डेटा प्राप्त कर सकते हैं।
    • WordPress और कई WordPress प्लगइन्स को विभिन्न सुविधाओं के लिए allow_url_fopen की आवश्यकता हो सकती है।
    • हालांकि, इस सेटिंग को हर समय सक्षम रखना आवश्यक नहीं है।
    • सुरक्षा कारणों से इसे केवल आवश्यकता होने पर ही सक्षम करना बेहतर है।
      root@kitploit:~
      ; (वैकल्पिक) allow_url_fopen को अक्षम करें, यदि अनावश्यक हो
      
       allow_url_fopen = Off
      
  2. display_errors:

    • निर्धारित करता है कि PHP त्रुटियों को आउटपुट के भाग के रूप में स्क्रीन पर मुद्रित किया जाना चाहिए या नहीं।
    • त्रुटियों को प्रदर्शित करने से आपके सर्वर वातावरण और एप्लिकेशन के बारे में संवेदनशील जानकारी प्रकट हो सकती है, जिसका उपयोग हमलावर कमजोरियों का शोषण करने के लिए कर सकते हैं।
      root@kitploit:~
      ; PHP त्रुटियों को आपकी WordPress वेबसाइट पर प्रदर्शित न करें
      
      display_errors = Off
      
  3. expose_php:

    • नियंत्रित करता है कि क्या PHP HTTP हेडर में अपनी उपस्थिति और संस्करण का विज्ञापन करता है।
    • इस जानकारी को प्रकट करने से हमलावरों को कमजोर PHP संस्करणों की पहचान करने में मदद मिल सकती है।
      root@kitploit:~
      ; HTTP प्रतिक्रिया हेडर में PHP संस्करण को उजागर करने से रोकें
      
      expose_php = Off
      session.cookie_secure
      
  4. session.cookie_secure:

    • सुनिश्चित करता है कि सत्र कुकीज़ केवल सुरक्षित HTTPS कनेक्शन पर प्रसारित की जाती हैं, उन्हें ट्रांसमिशन के दौरान इंटरसेप्ट होने से बचाती हैं।
      root@kitploit:~
      ; सुनिश्चित करें कि सत्र कुकीज़ HTTPS पर भेजी जाएँ
      
      session.cookie_secure = On
      session.cookie_httponly
      

उदाहरण: एक वास्तविक WordPress में अक्षम PHP फ़ंक्शनों की सूची नीचे दी गई है``` system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail

root@kitploit:~
### 8.5. सुनिश्चित करें कि वेब सर्वर एक गैर-रूट उपयोगकर्ता के रूप में चलता है - सर्वर एप्लिकेशन के लिए अद्वितीय, विशेषाधिकार रहित उपयोगकर्ता और समूह

अधिकांश मामलों में, वेब सर्वर "www-data" (डेबियन/उबंटू) या "apache" (RHEL/CentOS) जैसे उपयोगकर्ताओं के रूप में चलते हैं।

ये उपयोगकर्ता समर्पित सेवा खाते हैं जिनके पास सर्वर पर कोई विशेष विशेषाधिकार नहीं होते हैं और इनका उपयोग उस उपयोगकर्ता और समूह को निर्दिष्ट करने के लिए किया जाता है जिसे वेब सर्वर वर्कर प्रक्रियाएं ग्रहण करेंगी।

यदि इन उपयोगकर्ताओं के पास सिस्टम विशेषाधिकार हैं या वे रूट के रूप में चल रहे हैं, तो उन्हें बदला जाना चाहिए।

**ऑडिट:**
- वेब सर्वर प्रक्रिया चलाने वाले उपयोगकर्ता को सत्यापित करें। (विशेष रूप से, यह वेब सर्वर वर्कर प्रक्रिया है।)

1. Apache के लिए:
    ```
    # ps -ef | grep httpd
    root     2257     1  0 Apr08 ?        00:00:01 /usr/local/apache/bin/httpd -k start
    apache   5678  1234  0 Apr08 ?        00:00:00 /usr/sbin/httpd -k start
    apache   5679  1234  0 Apr08 ?        00:00:00 /usr/sbin/httpd -k start
    apache   5680  1234  0 Apr08 ?        00:00:00 /usr/sbin/httpd -k start
    apache   5681  1234  0 Apr08 ?        00:00:00 /usr/sbin/httpd -k start
    ```

2. Nginx के लिए:
    ```
    # ps -ef | grep nginx
    root      626653       1  0 Apr08 ?        00:00:00 nginx: master process /usr/sbin/nginx
    nginx     626654  626653  0 Apr08 ?        00:00:00 nginx: worker process
    nginx     626655  626653  0 Apr08 ?        00:00:00 nginx: worker process
    nginx     626656  626653  0 Apr08 ?        00:00:00 nginx: worker process
    nginx     626657  626653  0 Apr08 ?        00:00:00 nginx: worker process
    ```

**उपचार:**
- वेब सर्वर को एक गैर-विशेषाधिकार प्राप्त, समर्पित खाते के रूप में चलना चाहिए।
- अधिकांश मामलों में, इन सामान्यतः उपयोग किए जाने वाले खातों में से एक जैसे "www-data", "apache", "nginx", "nobody", या "daemon" का उपयोग किया जाता है।

1. Apache के लिए:
    ```
    # vim /etc/httpd/httpd.conf
    ..
    ...
    User www-data
    Group www-data
    ..
    ...
    ```

2. Nginx के लिए:
    ```
    # vim /etc/nginx/nginx.conf
    ..
    ...
    user daemon;
    ```

**नोट:**
- वेब सर्वर के लिए प्रक्रिया उपयोगकर्ताओं के पास शेल लॉगिन विशेषाधिकार नहीं होने चाहिए।  ```
  # cat /etc/passwd | grep -i www-data
  www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

8.6. सुनिश्चित करें कि PHP-FPM एक गैर-रूट उपयोगकर्ता के रूप में चलता है - सर्वर एप्लिकेशन के लिए अद्वितीय, अनधिकृत उपयोगकर्ता और समूह

WordPress को PHP के साथ बनाया गया है, इसलिए PHP कोड को सही ढंग से निष्पादित करने के लिए एक सही सिस्टम कॉन्फ़िगरेशन आवश्यक है।

WordPress में PHP कोड निष्पादन PHP-FPM, एक FastCGI प्रक्रिया प्रबंधक द्वारा प्रबंधित किया जाता है। PHP-FPM के सुरक्षित संचालन को सुनिश्चित करने के लिए, इसे एक अनधिकृत, समर्पित सेवा खाते के अंतर्गत चलना चाहिए।

आम तौर पर, वेब सर्वर प्रक्रिया खाता और PHP-FPM खाता एक ही खाता पर सेट किए जाते हैं। हालांकि, बेहतर सुरक्षा के लिए, उन्हें अलग-अलग खातों के अंतर्गत चलाना बेहतर है।

यहाँ दो कारण हैं:

  1. प्रक्रियाओं का अलगाव:

    • वेब सर्वर और PHP-FPM को अलग-अलग खातों के अंतर्गत चलाने से प्रक्रियाएं अलग हो जाती हैं।
    • इससे यह जोखिम कम होता है कि एक सेवा में समझौता दूसरे को प्रभावित करेगा।
    • यदि कोई हमलावर वेब सर्वर प्रक्रिया तक पहुंच प्राप्त करता है, तो उनके पास आवश्यक रूप से PHP-FPM तक पहुंच नहीं होगी, और इसके विपरीत।
  2. न्यूनतम विशेषाधिकार सिद्धांत:

    • प्रत्येक सेवा के लिए समर्पित, अनधिकृत खातों का उपयोग करके, आप न्यूनतम विशेषाधिकार के सिद्धांत का पालन करते हैं।
    • यह प्रत्येक सेवा के पास अनुमतियों और पहुंच को सीमित करता है, सुरक्षा कमजोरियों या उल्लंघनों से संभावित क्षति को कम करता है।

ऑडिट:

  • PHP-FPM प्रक्रिया चलाने वाले खाते की पुष्टि करें।```

ps -ef | grep php-fpm

root 1234 1 0 12:00 ? 00:00:01 php-fpm: master process (/etc/php-fpm.conf) php-fpm 5678 1234 0 12:00 ? 00:00:00 php-fpm: pool www php-fpm 5679 1234 0 12:00 ? 00:00:00 php-fpm: pool www php-fpm 5680 1234 0 12:00 ? 00:00:00 php-fpm: pool www php-fpm 5681 1234 0 12:00 ? 00:00:00 php-fpm: pool www

root@kitploit:~
**उपचार:**
- PHP-FPM को एक गैर-विशेषाधिकार प्राप्त, समर्पित खाते के रूप में चलना चाहिए।
- अधिकांश मामलों में, उपयोग किया गया खाता "php-fpm" होता है।

**PHP-FPM के लिए प्रक्रिया खाता बदलना:**```
# vim /etc/php-fpm.d/www.conf # Adjust the path based on your PHP version
...
user = php-fpm
group = php-fpm
listen.owner = php-fpm 
listen.group = php-fpm 

PHP-FPM प्रक्रिया खाते में शेल लॉगिन विशेषाधिकार नहीं होने चाहिए।```

cat /etc/passwd | grep php-fpm

php-fpm❌999:999:PHP-FPM:/run/php:/usr/sbin/nologin

root@kitploit:~
**नोट:**
- PHP-FPM प्रक्रियाओं और वेब सर्वर प्रक्रियाओं के लिए अलग-अलग उपयोगकर्ता खातों का उपयोग करना सुरक्षा की दृष्टि से बेहतर है।
- जब पूछा जाए कि सुरक्षा के लिए कौन सा बेहतर है, तो वे अलग-अलग होने चाहिए। इस संदर्भ में एक ही निष्पादन खाते का उपयोग करने से बचें।

### 8.7. WordPress होम निर्देशिका की सुरक्षित कॉन्फ़िगरेशन सुनिश्चित करें

वेब सर्वर को सुरक्षित रूप से संचालित करने के लिए, WordPress होम निर्देशिका के स्वामित्व और अनुमतियों को उचित रूप से कॉन्फ़िगर करना महत्वपूर्ण है।

अधिकांश मामलों में, WordPress फ़ाइलों और निर्देशिकाओं का स्वामित्व और अनुमतियाँ वेब सर्वर की प्रक्रिया खाते से मेल खाने के लिए सेट की जाती हैं।
यह कॉन्फ़िगरेशन वेब सर्वर को वेबरूट में फ़ाइलों तक पहुँचने और त्रुटियों के बिना संचालित करने की अनुमति देता है।

हालाँकि, यह कॉन्फ़िगरेशन असुरक्षित है।

उदाहरण के लिए, यदि वेब सर्वर प्रक्रिया 'apache' है और वेबरूट निर्देशिका और फ़ाइलें दोनों 'apache' के स्वामित्व में हैं, तो यह गंभीर कमजोरियों का कारण बन सकता है।
हमलावर WordPress होम निर्देशिका में महत्वपूर्ण फ़ाइलों और निर्देशिकाओं तक अनधिकृत पहुँच प्राप्त करने के लिए इन कमजोरियों का शोषण कर सकते हैं।

**सामान्य कमजोरी का उदाहरण:**
- यदि वेब सर्वर प्रक्रिया खाता और होम निर्देशिका (वेबरूट) और फ़ाइलें दोनों 'apache' के स्वामित्व में हैं:
- वेबसाइट में कमजोरियों और सिस्टम तक बाहरी पहुँच (जैसे वेबशेल) के मामले में, हमलावर वेबरूट के भीतर विभिन्न कार्य कर सकते हैं:
  1. वेबरूट के भीतर फ़ाइलें या निर्देशिकाएँ बनाना, संशोधित करना या हटाना।
  2. वेब एक्सेस लॉग में हेरफेर करना, जिसमें संशोधन, विलोपन या निर्माण शामिल है। (कुछ वातावरणों को छोड़कर)
  3. लॉग-इन उपयोगकर्ताओं के सक्रिय सत्र कुकीज़ तक पहुँच प्राप्त कर सकता है। (विशेष रूप से कमजोर वातावरणों में)

इन जोखिमों को कम करने के लिए, WordPress होम निर्देशिका के स्वामित्व और अनुमतियों को ठीक से समायोजित करना महत्वपूर्ण है।

**सुधार:**
- होम निर्देशिका (वेबरूट) और फ़ाइलों के स्वामी को 'root:root' पर सेट करें। (इसे वेब सर्वर प्रक्रिया खाते के समान सेट करने से बचें)
- निर्देशिकाओं और फ़ाइलों के लिए डिफ़ॉल्ट UMASK 022 है। (निर्देशिकाएँ: 755, फ़ाइलें: 644)
- वेब सेवा द्वारा फ़ाइल अपलोड जैसी लेखन पहुँच की आवश्यकता वाली निर्देशिकाओं के लिए, उन निर्देशिकाओं के स्वामी को वेब सर्वर प्रक्रिया खाते पर सेट करें।

**WordPress में सामान्यतः आवश्यक लेखन अनुमतियाँ निर्देशिकाएँ:**```
/wp-content/uploads
/wp-content/cache
/wp-content/wflogs (when using security plugins like Wordfence)
/wp-content/upgrade (used during the WordPress upgrade process)

उपरोक्त सुधारात्मक उपायों के अनुसार होम डायरेक्ट्री के स्वामित्व और अनुमतियों को कॉन्फ़िगर करने के बाद, WordPress होम डायरेक्ट्री का आउटपुट इस प्रकार है:

उदाहरण: WordPress होम डायरेक्ट्री``` drwxr-xr-x 5 root root 4096 May 27 2024 . drwxr-xr-x 3 root root 4096 May 27 2024 .. -rw-r--r-- 1 root root 418 May 27 2024 index.php -rw-r--r-- 1 root root 19935 May 27 2024 license.txt -rw-r--r-- 1 root root 7346 May 27 2024 readme.html -rw-r--r-- 1 root root 7106 May 27 2024 wp-activate.php drwxr-xr-x 9 root root 4096 May 27 2024 wp-admin -rw-r--r-- 1 root root 351 May 27 2024 wp-blog-header.php -rw-r--r-- 1 root root 2328 May 27 2024 wp-comments-post.php -rw-r--r-- 1 root root 4973 May 27 2024 wp-config-sample.php -rw-r--r-- 1 root root 2755 May 27 2024 wp-config.php drwxr-xr-x 8 root root 4096 May 27 2024 wp-content -rw-r--r-- 1 root root 3940 May 27 2024 wp-cron.php drwxr-xr-x 25 root root 12288 May 27 2024 wp-includes -rw-r--r-- 1 root root 2496 May 27 2024 wp-links-opml.php -rw-r--r-- 1 root root 3300 May 27 2024 wp-load.php -rw-r--r-- 1 root root 51556 May 27 2024 wp-login.php -rw-r--r-- 1 root root 8403 May 27 2024 wp-mail.php -rw-r--r-- 1 root root 24568 May 27 2024 wp-settings.php -rw-r--r-- 1 root root 30869 May 27 2024 wp-signup.php -rw-r--r-- 1 root root 4620 May 27 2024 wp-trackback.php -rw-r--r-- 1 root root 3065 May 27 2024 xmlrpc.php

root@kitploit:~
**यदि php-fpm और वेब सर्वर प्रक्रिया खाते अलग-अलग हैं (पृथक अनुमतियाँ)**

यदि वेब सर्वर प्रक्रिया खाता "apache" है और php-fpm प्रक्रिया खाता "php-fpm" है।

WordPress में लिखने की पहुंच की आवश्यकता वाले निर्देशिकाओं की अनुमतियाँ बदलें (जैसे, /wp-content/uploads)।
- स्वामी: php-fpm
- समूह: apache
- निर्देशिका अनुमतियाँ: 775 (यदि आवश्यक हो तो 755)

**फ़ाइल और निर्देशिका संरचना**

आवश्यक निर्देशिकाओं के लिए लिखने की अनुमतियाँ सेट करें ताकि "php-fpm" और "apache" दोनों खाते लिख सकें।```
ex) /service/wordpress/www
├── index.php             (root:root, 644)
├── license.txt           (root:root, 644)
├── readme.html           (root:root, 644)
├── wp-activate.php       (root:root, 644)
├── wp-admin/             (root:root, 755)
├── wp-blog-header.php    (root:root, 644)
├── wp-comments-post.php  (root:root, 644)
├── wp-config-sample.php  (root:root, 644)
├── wp-config.php         (root:root, 644)
├── wp-content/           (root:root, 755)
│   ├── plugins/          (root:root, 755)
│   ├── themes/           (root:root, 755)
│   ├── uploads/          (php-fpm:apache, 775)
│   │   ├── 2024/         (php-fpm:apache, 775)
│   │   └── ...           (php-fpm:apache, 775)
│   └── ...               (root:root, 755)
├── wp-cron.php           (root:root, 644)
├── wp-includes/          (root:root, 755)
├── wp-links-opml.php     (root:root, 644)
├── wp-load.php           (root:root, 644)
├── wp-login.php          (root:root, 644)
├── wp-mail.php           (root:root, 644)
├── wp-settings.php       (root:root, 644)
├── wp-signup.php         (root:root, 644)
├── wp-trackback.php      (root:root, 644)
└── xmlrpc.php            (root:root, 644)

सारांश

  1. वेब सर्वर वर्कर प्रक्रिया खाता: "www-data" या "apache" या "nginx"
  2. PHP-FPM प्रक्रिया खाता: "php-fpm"
  3. वर्डप्रेस निर्देशिका सेटिंग्स:
    • होम निर्देशिका:
      • स्वामित्व root:root
      • निर्देशिका अनुमतियाँ 755
      • फ़ाइल अनुमतियाँ 644
    • लिखने-आवश्यक निर्देशिकाएँ
      • स्वामित्व "php-fpm:www-data"
      • निर्देशिका अनुमतियाँ 775 (या आवश्यकतानुसार 755)

Read more

टूल डाउनलोड करें
noभूमिकाविवरणप्रशासनिक कर्मचारी
1व्यवस्थापकसभी वर्डप्रेस सुविधाओं तक पूर्ण पहुँच है और साइट पर सभी सामग्री का प्रबंधन कर सकता है।सिस्टम एडमिन
2संपादकअन्य उपयोगकर्ताओं की पोस्ट का प्रबंधन और प्रकाशन कर सकता है, साथ ही सामग्री को संपादित और प्रकाशित कर सकता है।परिचालन सेवा प्रबंधक, आंतरिक सामग्री योगदानकर्ता
3लेखकअपनी स्वयं की पोस्ट लिख और प्रकाशित कर सकता है, और अपनी स्वयं की पोस्ट को संपादित करने की अनुमति है।आंतरिक सामग्री योगदानकर्ता
4योगदानकर्तासामग्री लिख सकता है लेकिन इसे प्रकाशित नहीं कर सकता। पोस्ट की समीक्षा की जाती है और एक व्यवस्थापक द्वारा प्रकाशित किया जाता है।आंतरिक सामग्री योगदानकर्ता
5सदस्यसाइट में लॉग इन कर सकता है और अपनी व्यक्तिगत प्रोफ़ाइल प्रबंधित कर सकता है, लेकिन सामग्री नहीं लिख या संपादित नहीं कर सकता।आंतरिक सामग्री योगदानकर्ता
  • session.cookie_httponly:

    • सत्र कुकीज़ को JavaScript के लिए दुर्गम बनाता है, क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों के जोखिम को कम करता है।
      root@kitploit:~
      ; सत्र कुकीज़ को JavaScript के लिए दुर्गम बनाएँ
      
      session.cookie_httponly = On
      
  • open_basedir:

    • PHP की निर्दिष्ट निर्देशिकाओं के भीतर फ़ाइलों तक पहुँचने की क्षमता को प्रतिबंधित करता है।
    • यह हमलावरों को सर्वर पर संवेदनशील फ़ाइलों तक पहुँचने से रोक सकता है।
      root@kitploit:~
      ; PHP फ़ाइल एक्सेस को निर्दिष्ट निर्देशिका तक सीमित करें
      open_basedir = "/path/to/your/web/root"
      

    उदाहरण:

    • यदि आपकी वेब रूट /var/www/html है, तो open_basedir को इस प्रकार सेट करें:
      root@kitploit:~
      open_basedir = "/var/www/html:/tmp"
      
      यह कॉन्फ़िगरेशन PHP को केवल /var/www/html निर्देशिका और अस्थायी निर्देशिका /tmp के भीतर फ़ाइलों तक पहुँचने की अनुमति देता है।
      
  • disable_functions:

    • PHP फ़ंक्शन जो आमतौर पर हमलों में शोषित किए जाते हैं।
    • इन फ़ंक्शनों को अक्षम करने से विभिन्न प्रकार के हमलों के जोखिम को कम किया जा सकता है, जिसमें कमांड इंजेक्शन और रिमोट कोड निष्पादन शामिल हैं।
      root@kitploit:~
      ; संभावित खतरनाक PHP फ़ंक्शन अक्षम करें
      
      disable_functions = "system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail"
      

    अक्षम किए गए फ़ंक्शनों की व्याख्या:

    • system, exec, shell_exec, passthru:

      • सिस्टम कमांड के निष्पादन की अनुमति देते हैं, जिसका कमांड इंजेक्शन हमलों के लिए शोषण किया जा सकता है।
    • mysql_list_dbs:

      • MySQL सर्वर से डेटाबेस की सूची प्राप्त करता है, जिसका उपयोग आगे के हमलों के लिए जानकारी एकत्र करने के लिए किया जा सकता है।
    • ini_alter:

      • रनटाइम पर PHP के कॉन्फ़िगरेशन को बदलता है, संभावित रूप से सुरक्षा सेटिंग्स को बदलता है।
    • dl:

      • गतिशील रूप से PHP एक्सटेंशन लोड करता है, जिसका उपयोग दुर्भावनापूर्ण कोड पेश करने के लिए किया जा सकता है।
    • symlink, link:

      • प्रतीकात्मक या हार्ड लिंक बनाते हैं, जिसका फ़ाइलों और निर्देशिकाओं में अनुचित रूप से हेरफेर करने के लिए शोषण किया जा सकता है।
    • chgrp:

      • फ़ाइल के समूह स्वामित्व को बदलता है, संभावित रूप से एक्सेस अनुमतियों को बदलता है।
    • leak:

      • मेमोरी लीक के परीक्षण के लिए उपयोग किया जाता है, लेकिन सर्वर संसाधनों का उपभोग करने के लिए शोषित किया जा सकता है।
    • popen:

      • एक प्रक्रिया के लिए एक पाइप खोलता है, जिसका कमांड निष्पादन के लिए शोषण किया जा सकता है।
    • apache_child_terminate:

      • एक Apache प्रक्रिया को समाप्त करता है, संभावित रूप से सेवा को बाधित करता है।
    • virtual:

      • Apache के लिए विशिष्ट है और इसका उपयोग अन्य URLs को शामिल करने के लिए किया जा सकता है, जो सुरक्षा जोखिम पैदा करता है।
    • mb_send_mail:

      • एक ईमेल भेजता है, जिसका स्पैमिंग के लिए शोषण किया जा सकता है।