अपाचे (httpd) में 'लॉगजम' भेद्यता को कैसे ठीक करें


56

हाल ही में, डिफी-हेलमैन में एक नई भेद्यता, जिसे अनौपचारिक रूप से 'लोगजम' के रूप में संदर्भित किया गया है, जिसके लिए इस पृष्ठ को एक साथ रखा गया है जिसमें बताया गया है कि भेद्यता का मुकाबला कैसे करें:

टीएलएस के लिए डिफी-हेलमैन को सही ढंग से तैनात करने के लिए हमारे पास तीन सिफारिशें हैं:

  1. निर्यात सिफर सूट को अक्षम करें। भले ही आधुनिक ब्राउज़र अब निर्यात सूट का समर्थन नहीं करते हैं, फिर भी FREAK और लोगजाम हमले एक मानव-मध्य हमलावर को निर्यात-ग्रेड क्रिप्टोग्राफी का उपयोग करने में ब्राउज़र को धोखा देने की अनुमति देते हैं, जिसके बाद टीएलएस कनेक्शन को डिक्रिप्ट किया जा सकता है। निर्यात सिफर 1990 के दशक की नीति के अवशेष हैं जिन्होंने मजबूत क्रिप्टोग्राफिक प्रोटोकॉल को संयुक्त राज्य अमेरिका से निर्यात करने से रोक दिया था। कोई भी आधुनिक ग्राहक निर्यात सूट पर भरोसा नहीं करता है और उन्हें अक्षम करने में बहुत कम नकारात्मक है।
  2. डिप्लॉय (एपेमेरल) एलिप्टिक-कर्व डिफी-हेलमैन (ईसीडीएचई)। एलिप्टिक-कर्व डिफी-हेलमैन (ईसीडीएच) प्रमुख एक्सचेंज सभी ज्ञात व्यवहार्य क्रिप्टोकरेंसी हमलों से बचता है, और आधुनिक वेब ब्राउज़र अब मूल, परिमित क्षेत्र, डिफी-हेलमैन पर ईसीडीएचई को पसंद करते हैं। असतत लॉग एल्गोरिदम हम मानक डिफी-हेलमैन समूहों पर हमला करने के लिए इस्तेमाल करते थे, प्रीकम्प्यूटेशन से एक लाभ के रूप में मजबूत नहीं होते हैं, और व्यक्तिगत सर्वरों को अद्वितीय अण्डाकार घुमाव उत्पन्न करने की आवश्यकता नहीं होती है।
  3. एक मजबूत, अद्वितीय डिफी हेलमैन ग्रुप बनाएं । कुछ निश्चित समूहों का उपयोग लाखों सर्वरों द्वारा किया जाता है, जो उन्हें प्री-कॉम्पटिशन, और संभावित ईवेर्सड्रॉपिंग के लिए एक इष्टतम लक्ष्य बनाता है। प्रशासकों को प्रत्येक वेबसाइट या सर्वर के लिए "सुरक्षित" प्राइम्स का उपयोग करके अद्वितीय, 2048-बिट या मजबूत डिफी-हेलमैन समूह उत्पन्न करने चाहिए।

उपरोक्त अनुशंसाओं के अनुसार अपने सर्वर को सुरक्षित करने के लिए सबसे अच्छा अभ्यास चरण क्या हैं?


जवाबों:


82

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

  1. निर्यात सिफर सूट को अक्षम करें

2. हम नीचे किए गए कॉन्फ़िगरेशन परिवर्तनों से निपटेंगे। नीचे ( पंक्ति !EXPORTके अंत के पास SSLCipherSuiteहम निर्यात सिफर सुइट्स को कैसे अक्षम करेंगे)

  1. डिप्लॉय (एपेमेरल) एलिप्टिक-कर्व डिफी-हेलमैन (ईसीडीएचई)

इस के लिए, आप अपने अपाचे config फाइल में कुछ सेटिंग संपादित करने की जरूरत - अर्थात् SSLProtocol, SSLCipherSuite, SSLHonorCipherOrderएक "सर्वोत्तम प्रथाओं" सेटअप है। निम्नलिखित की तरह कुछ पर्याप्त होगा:

SSLProtocol             all -SSLv2 -SSLv3

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on

नोट: जैसे कि किस SSLCipherSuiteसेटिंग का उपयोग करना है, यह हमेशा बदलता रहता है, और नवीनतम सुझाए गए कॉन्फ़िगरेशन की जांच करने के लिए इस तरह के संसाधनों से परामर्श करना एक अच्छा विचार है ।

3. एक मजबूत, अद्वितीय डिफी हेलमैन ग्रुप बनाएं

ऐसा करने के लिए, आप चला सकते हैं

openssl dhparam -out dhparams.pem 2048

ध्यान दें कि यह सर्वर पर महत्वपूर्ण भार डाल देगा, जबकि परमेस उत्पन्न होते हैं - आप हमेशा इस संभावित मुद्दे को किसी अन्य मशीन पर परमेस उत्पन्न करके और उपयोग scpके लिए प्रश्न में सर्वर पर उन्हें स्थानांतरित करने के लिए या इसी तरह का उपयोग करके प्राप्त कर सकते हैं।

अपाचे दस्तावेज़ीकरणdhparams से अपाचे में इन नव-निर्मित का उपयोग करने के लिए :

कस्टम डीएच पैरामीटर उत्पन्न करने के लिए, खुलता है dhparam कमांड का उपयोग करें। वैकल्पिक रूप से, आप निम्न मानक 1024-बिट डीएच मापदंडों को आरएफसी 2409, खंड 6.2 से संबंधित एसएसएलसी सर्टिफिकेट फाइल में जोड़ सकते हैं :

(जोर मेरा)

उसके बाद एक मानक 1024-बिट डीएच पैरामीटर होता है। इससे हम अनुमान लगा सकते हैं कि कस्टम-जेनरेट किए गए डीएच पैरामीटर को केवल संबंधित SSLCertificateFileप्रश्न में जोड़ा जा सकता है ।

ऐसा करने के लिए, निम्न के समान कुछ चलाएँ:

cat /path/to/custom/dhparam >> /path/to/sslcertfile

वैकल्पिक रूप से, आपके द्वारा मूल रूप से लिंक किए गए लेख के अपाचे उप-भाग के अनुसार, आप अपने द्वारा बनाई गई कस्टम dhparams फ़ाइल को भी निर्दिष्ट कर सकते हैं यदि आप प्रमाणपत्र फ़ाइल को स्वयं बदलना नहीं चाहते हैं, तो इस प्रकार:

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

जो भी अपाचे कॉन्फिग्रेशन में होता है, वह आपके विशेष एसएसएल / टीएलएस कार्यान्वयन के लिए प्रासंगिक होता है - आम तौर पर conf.d/ssl.confया conf.d/vhosts.confलेकिन यह इस बात पर निर्भर करता है कि आपने अपाचे को कैसे कॉन्फ़िगर किया है।

यह ध्यान देने योग्य है कि, इस लिंक के अनुसार ,

अपाचे 2.4.7 से पहले, डीएच पैरामीटर हमेशा 1024 बिट्स पर सेट होता है और उपयोगकर्ता कॉन्फ़िगर करने योग्य नहीं होता है। यह mod_ssl 2.4.7 में तय किया गया है कि Red Hat ने अपने RHEL 6 Apache 2.2 वितरण में httpd-2.2.15-32.el6 के साथ बैकपोर्ट किया है

डेबियन व्हीजी अपाचे 2 को 2.2.22-13 + डिबेट 74 या बाद में अपग्रेड करता है और एसवाईई -2 + डेब्यू 17 तक खुलता है। उपरोक्त SSLCipherSuite पूरी तरह से काम नहीं करता है, इसके बजाय इस ब्लॉग के अनुसार निम्नलिखित का उपयोग करें :

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

आपको जांचना चाहिए कि आपका अपाचे संस्करण आपके वितरण के आधार पर इन संस्करण संख्याओं से बाद में है, और यदि नहीं - यदि संभव हो तो इसे अपडेट करें।

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


1
के रूप में params उत्पन्न करके सर्वर पर डाला लोड के लिए, आप हमेशा उन्हें एक और मशीन पर उत्पन्न कर सकते हैं और बस स्कैन या यहाँ तक कि लक्ष्य सर्वर के लिए फ़ाइल कॉपी-पेस्ट। उत्पादन सर्वर में परमेस उत्पन्न करने की कोई आवश्यकता नहीं है।
एराथिएल

2
अपने कॉन्फ़िगरेशन को बदलने के बाद, आप SSLLabs.com पर एक चेक चलाना चाहते हैं और साथ ही साथ सुनिश्चित भी कर सकते हैं।
user2428118

2
क्या Apache / 2.2.22 (Ubuntu 12.04) में इस भेद्यता को ठीक करने का कोई तरीका है? मैंने dhparams.pem को प्रमाण पत्र में जोड़ा है। फिर भी दुर्बलता है। http://dysadmin.html अभी भी शिकायत करता है
20:59

2
@tersmitten यह एक पूरी तरह से अलग सवाल है।
माइकल हैम्पटन

3
आप 'अच्छा' कमांड द्वारा कुंजी निर्माण को चला सकते हैं। इसलिए, आप इसे इस प्रकार रख सकते हैं: अच्छा 19 खुलता है dhparam -out dhparams.pem 2048। यह लंबे समय तक काम करेगा, लेकिन केवल अप्रयुक्त सीपीयू समय का उपभोग करेगा।
ज़नीक

1

विनी नेसेन के एक पैच के आधार पर मैंने अपाचे / 2.2.22 (डेबियन व्हीज़ी, शायद उबंटू पर भी प्रयोग करने योग्य) के लिए एक फिक्स प्रकाशित किया है: https://flo.sh/debian-wheezy-apache2-logenam-fix/ - thx । आपके के लिए।


3
यह एक समाधान की तुलना में अधिक हैक हैक है। रिवर्स-प्रॉक्सी के रूप में अपनी अपाचे के हाल के नगनेक्स को सामने रखना कहीं अधिक आसान होगा, और एक 3-पार्टी-अपाचे पर भरोसा नहीं करेगा।
वह आदमी वहाँ से

6
हमें इन बायनेरिज़ पर भरोसा क्यों करना चाहिए?
एक सीवीएन

2
आपको बायनेरिज़ पर भरोसा करने की ज़रूरत नहीं है; यदि आप समय निकालते हैं तो आप अपने आप को apache2.2.x को बहुत आसानी से समझा सकते हैं। यह आपकी सुरक्षा को और बढ़ा देगा, क्योंकि तब आपके सेटअप में अद्वितीय प्राथमिक कुंजी होती हैं।
फ़्लो

यह सुझाव देगा कि लोग किसी ओपनसोर्स सॉफ़्टवेयर में समस्या को ठीक करने वाले पैच के बारे में शिकायत न करें।
फ्लोरियन हीगल

@FlorianHeigl मुझे यकीन भी नहीं है कि उस टिप्पणी का क्या करना है ...
BE77Y

-7

उपरोक्त 'हैक्स' के जटिल मार्ग पर जाने के बजाय, nginx को अपने मुख्य वेबसर्वर-सॉफ़्टवेयर (केवल कैशिंग या प्रॉक्सी नहीं) के रूप में स्विच करने पर विचार करें। यह स्पष्ट रूप से पुराने अपाचे-इंजनों की तुलना में वर्तमान मानकों, सुरक्षा-वार तक अधिक लगता है। Nginx रिपॉजिटरी का उपयोग करके यह आपको अपाचे की तुलना में स्थिर वेबसर्वर-इंजन को अद्यतित करने का एक तरीका दे रहा है।

मैं पूरी तरह से खत्म हो गया। मुझे टीएलएस के संबंध में बहुत समय लेने वाली समस्या-समाधान की बचत हुई, और - हमारे विन्यास के लिए - इसने एक ही बार में बहुत सारी रैम को मुक्त कर दिया। वास्तव में, मुझे नग्नेक्स का रोजगार मिला है जो सरल और सीधा है, httpd / अपाचे की विन्यास जटिलताओं के असंख्य की तुलना में मैं आदी हो गया था। स्वाद की बात हो सकती है, मैं मुड़ने से पहले httpd / apache rewrite / config / रखरखाव में काफी धाराप्रवाह हो गया था, और मुझे जितना डर ​​था, उससे कहीं ज्यादा आसान था। ऑनलाइन उपलब्ध nginx कॉन्फिगरेशन पर उपयुक्त हालिया जानकारी है, और इसका उपयोगकर्ता-आधार बहुत बड़ा है, बहुत सक्रिय और समर्थन-अनुकूल है। https://news.netcraft.com/wp-content/uploads/2018/11/wpid-wss-top-1m-share.png


3
निर्यात ciphers के लिए अनुमति देने के लिए सेट किया गया nginx , Logjam हमले के लिए निर्यात Apiphers के लिए अनुमति देने के लिए सेट अपाचे सर्वर के रूप में बिल्कुल असुरक्षित होगा । इसके अलावा, सवाल अपाचे में समाधान के लिए पूछता है।
बजे एक CVn

2
दरअसल, समाधान: या तो वितरण के लिए स्विच करें जो सॉफ़्टवेयर के लिए अधिक अप-टू-डेट पैकेज प्रदान करता है, जहां आपको बिल्कुल एक नए संस्करण की आवश्यकता होती है (न कि केवल बैकपैक बग फिक्स, उदाहरण के लिए डेबियन या सेंटो के साथ मामला), या खुद पैकेज का निर्माण करें। स्रोत से (यह कठिन नहीं है) और उन्हें पैकेज प्रबंधक का उपयोग करके स्थापित करें, या स्रोत कोड से सादे पुराने स्थापित करें (यह भी मुश्किल नहीं है, लेकिन प्रबंधन करने के लिए थोड़ा और काम लगता है)। एक प्रश्न के लिए जो पूछता है कि "मैं वाई सॉफ़्टवेयर के भीतर भेद्यता एक्स को कम कैसे करूं?", एक उत्तर जो बताता है कि "जेड सॉफ़्टवेयर के साथ वाई सॉफ़्टवेयर को बदलें" अक्सर एक उपयोगी उत्तर नहीं होता है।
बजे एक CVn

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

1
एक सॉफ्टवेयर को ठीक से कॉन्फ़िगर करना ज्ञात हमलों के खिलाफ सुरक्षित होने के लिए "हैक्स का एक जटिल मार्ग" है? मुझे एक + अपाचे विन्यास के साथ ssllabs.com पर ए + मिलता है, आपको बस अपना समय निकालना है और यह समझने के लिए कुछ शोध करना है कि आपके द्वारा उपयोग किए जा रहे सॉफ़्टवेयर को कैसे ठीक से कॉन्फ़िगर किया जाए, यहां कोई हैक नहीं ...
Chazy Chaz

1
@ जूलियस - किसी भी छिपे "एजेंडा" की तुलना में पूछे गए प्रश्न के संबंध में आपके उत्तर में मूल्य की कमी के साथ डाउनवोट्स अधिक होने की संभावना है, जाहिर तौर पर लोग नगनेक्स बनाम अपाचे के खिलाफ हो सकते हैं। जैसा कि ऐसा होता है, मैं विशेष रूप से अपनी पसंद के कारण नग्नेक्स का उपयोग करता हूं - लेकिन यह मैं था जिसने इस प्रश्न का उत्तर दिया। "अन्य सॉफ़्टवेयर पर स्विच करें" "किसी भी समस्या को कैसे ठीक करें" के लिए एक स्वीकार्य उत्तर नहीं है। उल्लेख नहीं करने के लिए, आप पूरी तरह से वास्तविक भेद्यता के बिंदु से चूक गए - यह डिफी-हेलमैन कुंजी विनिमय में था, न कि अपाचे (या nginx, या sshd, या ...)
BE77Y
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.