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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
How-To-Secure-A-Linux-Server — लिनक्स सर्वर को सुरक्षित करने के लिए चरण-दर-चरण मार्गदर्शिका, जिसमें SSH सुरक्षा, फ़ायरवॉल, घुसपैठ का पता लगाना, ऑडिटिंग, और सिस्टम कॉन्फ़िगरेशन शामिल है ताकि हमले की सतह को कम किया जा सके और रक्षा में सुधार किया जा सके। | Kitploit
उपकरण/GitHubGitHub/imthenachoman/how-to-secure-a-linux-server
भेद्यता स्कैनरकॉन्फ़िगरेशन ऑडिटिंगनेटवर्क सुरक्षामालवेयर विश्लेषणप्रमाणीकरणघुसपैठ का पता लगानालर्निंग और शिक्षाघटना प्रतिक्रियाचयनित संसाधन

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
लॉग विश्लेषण
GitHubimthenachoman/how-to-secure-a-linux-server

How-To-Secure-A-Linux-Server

लिनक्स सर्वर को सुरक्षित करने के लिए चरण-दर-चरण मार्गदर्शिका, जिसमें SSH सुरक्षा, फ़ायरवॉल, घुसपैठ का पता लगाना, ऑडिटिंग, और सिस्टम कॉन्फ़िगरेशन शामिल है ताकि हमले की सतह को कम किया जा सके और रक्षा में सुधार किया जा सके।

रिपॉजिटरी देखें
30.3k2.0k21 महीना पहलेKitploit द्वारा समीक्षित

लिनक्स सर्वर को सुरक्षित कैसे करें

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

CC-BY-SA

विषय सूची

  • परिचय
    • मार्गदर्शिका का उद्देश्य
    • अपने सर्वर को सुरक्षित क्यों करें
    • एक और मार्गदर्शिका क्यों
    • अन्य मार्गदर्शिकाएँ
    • करने / जोड़ने के लिए
  • मार्गदर्शिका का अवलोकन
    • इस मार्गदर्शिका के बारे में
    • मेरा उपयोग-मामला
    • कॉन्फ़िगरेशन फ़ाइलों का संपादन - आलसी लोगों के लिए
    • योगदान देना
  • शुरू करने से पहले
    • अपने सिद्धांतों की पहचान करें
    • लिनक्स वितरण चुनना
    • लिनक्स स्थापित करना
    • स्थापना-पूर्व/पश्चात आवश्यकताएँ
    • अन्य महत्वपूर्ण नोट्स
    • अपने लिनक्स सर्वर को सुरक्षित करने के लिए Ansible प्लेबुक का उपयोग करना
  • SSH सर्वर
    • SSH परिवर्तन करने से पहले महत्वपूर्ण नोट
    • SSH सार्वजनिक/निजी कुंजियाँ
    • AllowGroups के लिए SSH समूह बनाएँ
    • /etc/ssh/sshd_config को सुरक्षित करें
    • छोटी Diffie-Hellman कुंजियाँ हटाएँ
    • SSH के लिए 2FA/MFA
  • बुनियादी बातें
    • sudo का उपयोग कौन कर सकता है, इसे सीमित करें
    • su का उपयोग कौन कर सकता है, इसे सीमित करें
    • FireJail के साथ एप्लिकेशन को सैंडबॉक्स में चलाएँ
    • NTP क्लाइंट
    • /proc को सुरक्षित करना
    • खातों को सुरक्षित पासवर्ड का उपयोग करने के लिए बाध्य करें
    • स्वचालित सुरक्षा अपडेट और अलर्ट
    • अधिक सुरक्षित रैंडम एन्ट्रॉपी पूल (WIP)
    • पैनिक/सेकेंडरी/फ़ेक पासवर्ड लॉगिन सुरक्षा प्रणाली जोड़ें
  • नेटवर्क
    • UFW (Uncomplicated Firewall) के साथ फ़ायरवॉल
    • PSAD के साथ iptables घुसपैठ का पता लगाना और रोकथाम
    • Fail2Ban के साथ एप्लिकेशन घुसपैठ का पता लगाना और रोकथाम
    • CrowdSec के साथ एप्लिकेशन घुसपैठ का पता लगाना और रोकथाम
  • ऑडिटिंग
    • AIDE के साथ फ़ाइल/फ़ोल्डर अखंडता निगरानी (WIP)
    • ClamAV के साथ एंटी-वायरस स्कैनिंग (WIP)
    • Rkhunter के साथ रूटकिट का पता लगाना (WIP)
    • chrootkit के साथ रूटकिट का पता लगाना (WIP)
    • logwatch - सिस्टम लॉग विश्लेषक और रिपोर्टर
    • ss - आपके सर्वर पर सुन रहे पोर्ट देखना
    • Lynis - लिनक्स सुरक्षा ऑडिटिंग
    • OSSEC - होस्ट घुसपैठ का पता लगाना
  • खतरे का क्षेत्र
  • विविध
    • Google के साथ MSMTP (सरल Sendmail)
    • अंतर्निहित TLS के साथ MTA के रूप में Gmail और Exim4
    • अलग iptables लॉग फ़ाइल
  • बचा हुआ
    • मुझसे संपर्क करना
    • सहायक लिंक
    • आभार
    • लाइसेंस और कॉपीराइट

(nGitHubTOC के साथ बनाई गई TOC)

परिचय

मार्गदर्शिका का उद्देश्य

इस मार्गदर्शिका का उद्देश्य आपको लिनक्स सर्वर को सुरक्षित करना सिखाना है।

लिनक्स सर्वर को सुरक्षित करने के लिए आप बहुत सी चीज़ें कर सकते हैं और यह मार्गदर्शिका उनमें से जितना संभव हो उतने को कवर करने का प्रयास करेगी। जैसे-जैसे मैं सीखूंगा, या जैसे-जैसे लोग योगदान देंगे, और विषय/सामग्री जोड़ी जाएगी।

इस मार्गदर्शिका के Ansible प्लेबुक How To Secure A Linux Server With Ansible पर उपलब्ध हैं, जो moltenbit द्वारा है।

(विषय सूची)

अपने सर्वर को सुरक्षित क्यों करें

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

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

इससे भी बुरी बात यह है कि, अच्छी सुरक्षा के बिना, आप कभी नहीं जान सकते कि आपका सर्वर से समझौता किया गया है या नहीं। एक बुरा कलाकार आपके सर्वर तक अनधिकृत पहुँच प्राप्त कर सकता है और बिना कुछ बदले आपका डेटा कॉपी कर सकता है, तो आपको कभी पता नहीं चलेगा। या आपका सर्वर किसी DDOS हमले का हिस्सा रहा हो, और आपको पता नहीं चलेगा। समाचारों में कई बड़े पैमाने के डेटा उल्लंघनों को देखें - कंपनियों को अक्सर डेटा लीक या घुसपैठ का पता तब तक नहीं चलता जब तक कि बुरे कलाकार चले नहीं जाते।

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

(विषय सूची)

एक और मार्गदर्शिका क्यों

यह मार्गदर्शिका दोहराव/अनावश्यक लग सकती है क्योंकि ऑनलाइन अनगिनत लेख हैं जो आपको लिनक्स को सुरक्षित करने का तरीका बताते हैं, लेकिन जानकारी विभिन्न लेखों में फैली हुई है, जो अलग-अलग चीज़ों को कवर करते हैं, और अलग-अलग तरीकों से। किसके पास सैकड़ों लेखों को छानने का समय है?

जैसे-जैसे मैं अपने Debian बिल्ड के लिए शोध कर रहा था, मैं नोट्स लेता रहा। अंत में मुझे एहसास हुआ कि, मैं जो पहले से जानता था, और जो मैं सीख रहा था, उसके साथ मेरे पास एक हाउ-टू गाइड बनाने की सामग्री थी। मैंने सोचा कि मैं इसे ऑनलाइन डालूंगा ताकि दूसरों को सीखने और समय बचाने में मदद हो सके।

मुझे कभी एक ऐसी मार्गदर्शिका नहीं मिली जो सब कुछ कवर करती हो - यह मार्गदर्शिका मेरा प्रयास है।

इस मार्गदर्शिका में शामिल कई चीज़ें काफी बुनियादी/मामूली हो सकती हैं, लेकिन हममें से अधिकांश लोग हर दिन लिनक्स स्थापित नहीं करते हैं, और उन बुनियादी चीज़ों को भूलना आसान है।

(विषय सूची)

अन्य मार्गदर्शिकाएँ

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

  • सेंटर फॉर इंटरनेट सिक्योरिटी (CIS) बेंचमार्क प्रदान करता है जो लिनक्स के कई स्वादों को सुरक्षित करने के लिए विस्तृत, उद्योग-विश्वसनीय, चरण-दर-चरण निर्देश हैं। विवरण के लिए उनका हमारे बारे में पृष्ठ देखें। मेरी सिफारिश है कि पहले इस मार्गदर्शिका (जिसे आप यहाँ पढ़ रहे हैं) को देखें और फिर CIS की मार्गदर्शिका को। इस तरह उनकी सिफारिशें इस मार्गदर्शिका में किसी भी चीज़ को ओवरराइड कर देंगी।
  • वितरण-विशिष्ट कठोरीकरण/सुरक्षा मार्गदर्शिकाओं के लिए, अपने वितरण के दस्तावेज़ देखें।
  • https://security.utexas.edu/os-hardening-checklist/linux-7 - Red Hat Enterprise Linux 7 हार्डनिंग चेकलिस्ट
  • https://cloudpro.zone/index.php/2018/01/18/debian-9-3-server-setup-guide-part-1/ - # Debian 9.3 सर्वर सेटअप गाइड
  • https://blog.vigilcode.com/2011/04/ubuntu-server-initial-security-quick-secure-setup-part-i/ - Ubuntu सर्वर प्रारंभिक सुरक्षा गाइड
  • https://www.tldp.org/LDP/sag/html/index.html
  • https://seifried.org/lasg/
  • https://news.ycombinator.com/item?id=19178964
  • https://wiki.archlinux.org/index.php/Security - कई लोगों ने इसकी भी सिफारिश की है
  • https://securecompliance.co/linux-server-hardening-checklist/

(विषय सूची)

करने / जोड़ने के लिए

  • Fail2ban के लिए कस्टम जेल
  • MAC (अनिवार्य पहुंच नियंत्रण) और लिनक्स सुरक्षा मॉड्यूल (LSM)
    • https://wiki.archlinux.org/index.php/security#Mandatory_access_control
    • सुरक्षा-उन्नत लिनक्स / SELinux
      • https://en.wikipedia.org/wiki/Security-Enhanced_Linux
      • https://linuxtechlab.com/beginners-guide-to-selinux/
      • https://linuxtechlab.com/replicate-selinux-policies-among-linux-machines/
      • https://teamignition.us/how-to-stop-being-a-scrub-and-learn-to-use-selinux.html
    • AppArmor
      • https://wiki.archlinux.org/index.php/AppArmor
      • https://security.stackexchange.com/questions/29378/comparison-between-apparmor-and-selinux
      • http://www.insanitybit.com/2012/06/01/why-i-like-apparmor-more-than-selinux-5/
  • डिस्क एन्क्रिप्शन
  • Rkhunter और chrootkit
    • http://www.chkrootkit.org/
    • http://rkhunter.sourceforge.net/
    • https://www.cyberciti.biz/faq/howto-check-linux-rootkist-with-detectors-software/

(विषय सूची)

मार्गदर्शिका का अवलोकन

इस मार्गदर्शिका के बारे में

यह मार्गदर्शिका...

  • ...एक कार्य प्रगति पर है।
  • ...घर पर लिनक्स सर्वर पर केंद्रित है। यहां के सभी अवधारणाएं/सिफारिशें बड़े/पेशेवर वातावरण में लागू होती हैं, लेकिन उन उपयोग-मामलों में अधिक उन्नत और विशिष्ट कॉन्फ़िगरेशन की आवश्यकता होती है जो इस मार्गदर्शिका के दायरे से बाहर हैं।
  • ...आपको लिनक्स के बारे में, लिनक्स स्थापित करने का तरीका, या इसका उपयोग कैसे करें, नहीं सिखाती। यदि आप लिनक्स में नए हैं तो https://linuxjourney.com/ देखें।
  • ...का उद्देश्य लिनक्स वितरण-अज्ञेयवादी होना है।
  • ...आपको सुरक्षा के बारे में जानने के लिए आवश्यक सब कुछ नहीं सिखाती और न ही सिस्टम/सर्वर सुरक्षा के सभी पहलुओं में प्रवेश करती है। उदाहरण के लिए, भौतिक सुरक्षा इस मार्गदर्शिका के दायरे से बाहर है।
  • ...इस बारे में बात नहीं करती कि प्रोग्राम/टूल कैसे काम करते हैं, न ही उनके कोने-कोने में जाती है। इस मार्गदर्शिका में संदर्भित अधिकांश प्रोग्राम/टूल बहुत शक्तिशाली और अत्यधिक कॉन्फ़िगरेबल हैं। लक्ष्य बुनियादी आवश्यकताओं को कवर करना है - इतना कि आपकी भूख बढ़े और आप और अधिक सीखने के लिए उत्सुक हों।
  • ...का उद्देश्य कोड प्रदान करके इसे आसान बनाना है जिसे आप कॉपी-पेस्ट कर सकते हैं। आपको पेस्ट करने से पहले कमांड को संशोधित करने की आवश्यकता हो सकती है, इसलिए अपना पसंदीदा टेक्स्ट एडिटर पास में रखें।
  • ...एक ऐसे क्रम में व्यवस्थित है जो मेरे लिए तार्किक रूप से समझ में आता है - यानी फ़ायरवॉल स्थापित करने से पहले SSH को सुरक्षित करना। इस प्रकार, इस मार्गदर्शिका को उसी क्रम में पालन करने का इरादा है जैसा प्रस्तुत किया गया है, लेकिन ऐसा करना आवश्यक नहीं है। बस सावधान रहें यदि आप चीज़ों को अलग क्रम में करते हैं - कुछ अनुभागों में पिछले अनुभागों को पूरा करने की आवश्यकता होती है।

(विषय सूची)

मेरा उपयोग-मामला

सर्वर कई प्रकार के होते हैं और अलग-अलग उपयोग-मामले होते हैं। जबकि मैं चाहता हूँ कि यह मार्गदर्शिका यथासंभव सामान्य हो, कुछ ऐसी चीज़ें होंगी जो सभी/अन्य उपयोग-मामलों पर लागू नहीं हो सकती हैं। इस मार्गदर्शिका से गुजरते समय अपने सर्वोत्तम निर्णय का उपयोग करें।

इस मार्गदर्शिका में शामिल कई विषयों के संदर्भ में मदद करने के लिए, मेरा उपयोग-मामला/कॉन्फ़िगरेशन है:

  • एक डेस्कटॉप श्रेणी का कंप्यूटर...
  • एक एकल NIC के साथ...
  • एक उपभोक्ता ग्रेड राउटर से जुड़ा...
  • ISP द्वारा प्रदान किया गया एक गतिशील WAN IP प्राप्त करना...
  • IPV4 पर WAN+LAN के साथ...
  • और LAN NAT का उपयोग कर रहा है...
  • जिसे मैं अज्ञात कंप्यूटरों और अज्ञात स्थानों (यानी एक दोस्त के घर) से दूरस्थ रूप से SSH करने में सक्षम होना चाहता हूँ।

(विषय सूची)

कॉन्फ़िगरेशन फ़ाइलों का संपादन - आलसी लोगों के लिए

मैं बहुत आलसी हूँ और अगर ज़रूरत न हो तो हाथ से फ़ाइलों को संपादित करना पसंद नहीं करता। मैं यह भी मानता हूँ कि बाकी सभी लोग मेरी तरह ही हैं। :)

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

कोड स्निपेट echo, cat, sed, awk, और grep जैसे बुनियादी कमांड का उपयोग करते हैं। कोड स्निपेट कैसे काम करते हैं, जैसे प्रत्येक कमांड/भाग क्या करता है, यह इस मार्गदर्शिका के दायरे से बाहर है - man पेज आपके मित्र हैं।

नोट: कोड स्निपेट यह सत्यापित/पुष्टि नहीं करते कि परिवर्तन हुआ - यानी पंक्ति वास्तव में जोड़ी या बदली गई। मैं सत्यापन का हिस्सा आपके सक्षम हाथों में छोड़ूंगा। इस मार्गदर्शिका के चरणों में उन सभी फ़ाइलों का बैकअप लेना शामिल है जिन्हें बदला जाएगा।

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

(विषय सूची)

योगदान देना

मैं इस मार्गदर्शिका को GitHub पर रखना चाहता था ताकि सहयोग करना आसान हो। जितने अधिक लोग योगदान देंगे, यह मार्गदर्शिका उतनी ही बेहतर और अधिक पूर्ण होती जाएगी।

योगदान देने के लिए आप फोर्क कर सकते हैं और पुल रिक्वेस्ट सबमिट कर सकते हैं या एक नई समस्या सबमिट कर सकते हैं।

(विषय सूची)

शुरू करने से पहले

अपने सिद्धांतों की पहचान करें

शुरू करने से पहले आप यह पहचानना चाहेंगे कि आपके सिद्धांत क्या हैं। आपका खतरा मॉडल क्या है? विचार करने के लिए कुछ बातें:

  • आप अपने सर्वर को सुरक्षित क्यों करना चाहते हैं?
  • आप कितनी सुरक्षा चाहते हैं या नहीं चाहते?
  • आप सुरक्षा के लिए कितनी सुविधा का त्याग करने को तैयार हैं और इसके विपरीत?
  • वे कौन से खतरे हैं जिनसे आप सुरक्षा करना चाहते हैं? आपकी स्थिति के लिए विशिष्टताएँ क्या हैं? उदाहरण के लिए:
    • क्या आपके सर्वर/नेटवर्क तक भौतिक पहुँच एक संभावित हमला वेक्टर है?
    • क्या आप अपने राउटर पर पोर्ट खोलेंगे ताकि आप अपने घर के बाहर से अपने सर्वर तक पहुँच सकें?
    • क्या आप अपने सर्वर पर एक फ़ाइल शेयर होस्ट करेंगे जो डेस्कटॉप श्रेणी की मशीन पर माउंट की जाएगी? डेस्कटॉप मशीन के संक्रमित होने और बदले में सर्वर को संक्रमित करने की क्या संभावना है?
  • क्या आपके पास ठीक होने का कोई साधन है यदि आपका सुरक्षा कार्यान्वयन आपको आपके ही सर्वर से लॉक आउट कर दे? उदाहरण के लिए, आपने रूट लॉगिन अक्षम कर दिया या GRUB को पासवर्ड प्रोटेक्ट कर दिया।

ये विचार करने के लिए कुछ चीज़ें मात्र हैं। अपने सर्वर को सुरक्षित करना शुरू करने से पहले आप यह समझना चाहेंगे कि आप किस चीज़ से और क्यों बचाव करने का प्रयास कर रहे हैं, ताकि आप जान सकें कि आपको क्या करने की आवश्यकता है।

(विषय सूची)

लिनक्स वितरण चुनना

यह मार्गदर्शिका वितरण-अज्ञेयवादी होने का इरादा है ताकि उपयोगकर्ता अपनी इच्छानुसार कोई भी वितरण का उपयोग कर सकें। फिर भी, ध्यान रखने योग्य कुछ बातें हैं:

आप एक ऐसा वितरण चाहते हैं जो...

  • ...स्थिर हो। जब तक आपको रात के 2 बजे डिबगिंग करना पसंद न हो, आप नहीं चाहते कि एक अनअटेंडेड अपग्रेड, या एक मैन्युअल पैकेज/सिस्टम अपडेट, आपके सर्वर को निष्क्रिय कर दे। लेकिन इसका मतलब यह भी है कि आप नवीनतम, महानतम, ब्लीडिंग एज सॉफ़्टवेयर नहीं चलाने में सहज हैं।
  • ...सुरक्षा पैच के साथ अद्यतित रहता है। आप अपने सर्वर पर सब कुछ सुरक्षित कर सकते हैं, लेकिन यदि कोर OS या आपके द्वारा चलाए जा रहे एप्लिकेशन में ज्ञात कमजोरियाँ हैं, तो आप कभी सुरक्षित नहीं होंगे।
  • ...आप परिचित हों। यदि आप लिनक्स नहीं जानते हैं, तो मैं आपको सलाह दूंगा कि इसे सुरक्षित करने का प्रयास करने से पहले एक के साथ खेलें। आपको इसके साथ सहज होना चाहिए और अपना रास्ता जानना चाहिए, जैसे सॉफ़्टवेयर कैसे स्थापित करें, कॉन्फ़िगरेशन फ़ाइलें कहाँ हैं, आदि...
  • ...अच्छी तरह से समर्थित हो। सबसे अनुभवी प्रशासक को भी कभी-कभी मदद की आवश्यकता होती है। मदद के लिए एक जगह होने से आपकी समझदारी बचेगी।

(विषय सूची)

लिनक्स स्थापित करना

लिनक्स स्थापित करना इस मार्गदर्शिका के दायरे से बाहर है क्योंकि प्रत्येक वितरण इसे अलग तरह से करता है और स्थापना निर्देश आमतौर पर अच्छी तरह से प्रलेखित होते हैं। यदि आपको सहायता की आवश्यकता है, तो अपने वितरण के दस्तावेज़ से शुरू करें। वितरण के बावजूद, उच्च-स्तरीय प्रक्रिया आमतौर पर इस प्रकार है:

  1. ISO डाउनलोड करें
  2. इसे अपने इंस्टॉल मीडियम (जैसे CD या USB स्टिक) पर बर्न/कॉपी/ट्रांसफर करें
  3. अपने इंस्टॉल मीडियम से अपने सर्वर को बूट करें
  4. स्थापित करने के लिए संकेतों का पालन करें

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

(विषय सूची)

स्थापना-पूर्व/पश्चात आवश्यकताएँ

  • यदि आप अपने राउटर पर पोर्ट खोल रहे हैं ताकि आप बाहर से अपने सर्वर तक पहुँच सकें, जब तक आपका सिस्टम ऊपर और सुरक्षित न हो जाए, तब तक पोर्ट फ़ॉरवर्डिंग अक्षम करें।
  • जब तक आप शारीरिक रूप से अपने सर्वर से जुड़कर सब कुछ नहीं कर रहे हैं, आपको दूरस्थ पहुँच की आवश्यकता होगी, इसलिए सुनिश्चित करें कि SSH काम करता है।
  • अपने सिस्टम को अद्यतित रखें (यानी Debian आधारित सिस्टम पर sudo apt update && sudo apt upgrade)।
  • सुनिश्चित करें कि आप अपने सेटअप के लिए विशिष्ट कोई भी कार्य करते हैं जैसे:
    • नेटवर्क कॉन्फ़िगर करना
    • /etc/fstab में माउंट पॉइंट कॉन्फ़िगर करना
    • प्रारंभिक उपयोगकर्ता खाते बनाना
    • कोर सॉफ़्टवेयर स्थापित करना जो आप चाहते हैं जैसे man
    • आदि...
  • आपके सर्वर को ईमेल भेजने में सक्षम होना चाहिए ताकि आप महत्वपूर्ण सुरक्षा अलर्ट प्राप्त कर सकें। यदि आप मेल सर्वर सेटअप नहीं कर रहे हैं तो अंतर्निहित TLS के साथ MTA के रूप में Gmail और Exim4 देखें।
  • मैं यह भी अनुशंसा करूंगा कि आप इस मार्गदर्शिका के साथ शुरू करने से पहले CIS बेंचमार्क को पढ़ें ताकि आप समझ सकें कि उनके पास क्या कहना है। मेरी सिफारिश है कि पहले इस मार्गदर्शिका (जिसे आप यहाँ पढ़ रहे हैं) को देखें और फिर CIS की मार्गदर्शिका को। इस तरह उनकी सिफारिशें इस मार्गदर्शिका में किसी भी चीज़ को ओवरराइड कर देंगी।

(विषय सूची)

अन्य महत्वपूर्ण नोट्स

  • यह मार्गदर्शिका Debian पर लिखी और परीक्षण की जा रही है। नीचे दी गई अधिकांश चीज़ें अन्य वितरणों पर काम करनी चाहिए। यदि आपको कुछ ऐसा मिलता है जो काम नहीं करता है, तो कृपया मुझसे संपर्क करें। मुख्य चीज़ जो प्रत्येक वितरण को अलग करती है वह है इसकी पैकेज प्रबंधन प्रणाली। चूंकि मैं Debian का उपयोग करता हूँ, मैं उपयुक्त apt कमांड प्रदान करूंगा जो सभी Debian आधारित वितरणों पर काम करना चाहिए। यदि कोई अन्य वितरणों के लिए संबंधित कमांड प्रदान करने को तैयार है, तो मैं उन्हें जोड़ूंगा।
  • फ़ाइल पथ और सेटिंग्स में भी थोड़ा अंतर हो सकता है - यदि समस्या हो तो अपने वितरण के दस्तावेज़ देखें।
  • शुरू करने से पहले पूरी मार्गदर्शिका पढ़ें। आपका उपयोग-मामला और/या सिद्धांत कुछ न करने या क्रम बदलने का आह्वान कर सकते हैं।
  • बिना यह समझे कि आप क्या पेस्ट कर रहे हैं, आंख मूंदकर कॉपी-पेस्ट न करें। कुछ कमांड को आपकी आवश्यकताओं के अनुसार काम करने से पहले संशोधित करने की आवश्यकता होगी - उदाहरण के लिए उपयोगकर्ता नाम।

(विषय सूची)

अपने लिनक्स सर्वर को सुरक्षित करने के लिए Ansible प्लेबुक का उपयोग करना

इस मार्गदर्शिका के Ansible प्लेबुक How To Secure A Linux Server With Ansible पर उपलब्ध हैं।अपनी आवश्यकताओं के अनुसार चरों को संपादित करना सुनिश्चित करें और यह पुष्टि करने के लिए पहले सभी कार्यों को पढ़ें कि यह आपके सिस्टम को तोड़ता नहीं है। प्लेबुक चलाने के बाद सुनिश्चित करें कि सभी सेटिंग्स आपकी आवश्यकताओं के अनुसार कॉन्फ़िगर की गई हैं!

  1. Ansible को स्थापित करें
  2. git clone How To Secure A Linux Server With Ansible
  3. Create SSH-Public/Private-Keys ``` ssh-keygen -t ed25519
root@kitploit:~
5. अपनी आवश्यकताओं के अनुसार *group_vars/variables.yml* में सभी वेरिएबल बदलें।
6. प्लेबुक चलाने से पहले SSH रूट एक्सेस सक्षम करें:  ```
nano /etc/ssh/sshd_config
[...]
PermitRootLogin yes
[...]
  1. अनुशंसित: अपने सिस्टम पर स्टेटिक IP पता कॉन्फ़िगर करें।
  2. अपने सिस्टम का IP पता hosts.yml में जोड़ें।

 

सर्वर स्थापित करते समय आपने जो रूट पासवर्ड निर्दिष्ट किया था, उसका उपयोग करके आवश्यकताएँ प्लेबुक चलाएँ:

root@kitploit:~
ansible-playbook --inventory hosts.yml --ask-pass requirements-playbook.yml

 

variables.yml फ़ाइल में आपने जो नए उपयोगकर्ता का पासवर्ड निर्दिष्ट किया था, उसके साथ मुख्य प्लेबुक चलाएँ:

root@kitploit:~
ansible-playbook --inventory hosts.yml --ask-pass main-playbook.yml

 

यदि आपको प्लेबुक को कई बार चलाने की आवश्यकता है तो SSH कुंजी और नए SSH पोर्ट का उपयोग करना याद रखें:

root@kitploit:~
ansible-playbook --inventory hosts.yml -e ansible_ssh_port=SSH_PORT --key-file /PATH/TO/SSH/KEY main-playbook.yml

(विषय सूची)

SSH सर्वर

SSH परिवर्तन करने से पहले महत्वपूर्ण नोट

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

इस विचार के लिए Sonnenbrand को धन्यवाद।

SSH सार्वजनिक/निजी कुंजियाँ

क्यों

SSH सार्वजनिक/निजी कुंजियों का उपयोग पासवर्ड का उपयोग करने की तुलना में अधिक सुरक्षित है। यह हमारे सर्वर से कनेक्ट करना आसान और तेज़ भी बनाता है, क्योंकि आपको पासवर्ड दर्ज करने की आवश्यकता नहीं है।

यह कैसे काम करता है

अधिक विवरण के लिए नीचे दिए गए संदर्भ देखें, लेकिन उच्च स्तर पर, सार्वजनिक/निजी कुंजियाँ पहचान सत्यापित करने के लिए कुंजियों की एक जोड़ी का उपयोग करके काम करती हैं।

  1. एक कुंजी, सार्वजनिक कुंजी, केवल डेटा को एन्क्रिप्ट कर सकती है, उसे डिक्रिप्ट नहीं कर सकती
  2. दूसरी कुंजी, निजी कुंजी, डेटा को डिक्रिप्ट कर सकती है

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

जब आप SSH सर्वर से कनेक्ट करते हैं, तो SSH उस फ़ाइल में आपके क्लाइंट से मेल खाने वाली सार्वजनिक कुंजी की तलाश करेगा, जिस सर्वर से आप कनेक्ट कर रहे हैं, उस पर ~/.ssh/authorized_keys फ़ाइल में। ध्यान दें कि फ़ाइल उस ID के होम फ़ोल्डर में है जिससे आप कनेक्ट करने का प्रयास कर रहे हैं। इसलिए, सार्वजनिक कुंजी बनाने के बाद, आपको इसे ~/.ssh/authorized_keys में जोड़ना होगा। एक तरीका यह है कि इसे USB स्टिक पर कॉपी करके भौतिक रूप से सर्वर पर स्थानांतरित किया जाए। दूसरा तरीका है ssh-copy-id का उपयोग करके सार्वजनिक कुंजी को स्थानांतरित और जोड़ना।

कुंजियाँ बनाए जाने और सार्वजनिक कुंजी को होस्ट पर ~/.ssh/authorized_keys में जोड़े जाने के बाद, SSH पहचान सत्यापित करने और फिर एक सुरक्षित कनेक्शन स्थापित करने के लिए सार्वजनिक और निजी कुंजियों का उपयोग करता है। पहचान कैसे सत्यापित की जाती है यह एक जटिल प्रक्रिया है, लेकिन Digital Ocean के पास इसके काम करने के तरीके का बहुत अच्छा विवरण है। उच्च स्तर पर, पहचान सर्वर द्वारा सार्वजनिक कुंजी के साथ एक चुनौती संदेश को एन्क्रिप्ट करके, फिर इसे क्लाइंट को भेजकर सत्यापित की जाती है। यदि क्लाइंट निजी कुंजी के साथ चुनौती संदेश को डिक्रिप्ट नहीं कर सकता है, तो पहचान सत्यापित नहीं की जा सकती और कोई कनेक्शन स्थापित नहीं होगा।

उन्हें अधिक सुरक्षित माना जाता है क्योंकि SSH कनेक्शन स्थापित करने के लिए आपको निजी कुंजी की आवश्यकता होती है। यदि आप PasswordAuthentication no को /etc/ssh/sshd_config में सेट करते हैं, तो SSH आपको निजी कुंजी के बिना कनेक्ट नहीं होने देगा।

आप कुंजियों के लिए एक पास-फ़्रेज़ भी सेट कर सकते हैं, जिसके लिए सार्वजनिक/निजी कुंजियों का उपयोग करके कनेक्ट करते समय आपको कुंजी पास-फ़्रेज़ दर्ज करना होगा। ध्यान रखें कि ऐसा करने का मतलब है कि आप ऑटोमेशन के लिए कुंजी का उपयोग नहीं कर सकते क्योंकि आपके पास अपनी स्क्रिप्ट में पासफ़्रेज़ भेजने का कोई तरीका नहीं होगा। ssh-agent एक प्रोग्राम है जो कई Linux डिस्ट्रोस में शामिल है (और आमतौर पर पहले से चल रहा होता है) जो आपको अपनी अनएन्क्रिप्टेड निजी कुंजी को कॉन्फ़िगर करने योग्य अवधि के लिए मेमोरी में रखने की अनुमति देगा। बस ssh-add चलाएँ और यह आपसे आपके पासफ़्रेज़ के लिए संकेत देगा। कॉन्फ़िगर करने योग्य अवधि बीतने तक आपसे दोबारा पासफ़्रेज़ के लिए संकेत नहीं दिया जाएगा।

हम Ed25519 कुंजियों का उपयोग करेंगे, जो https://linux-audit.com/ के अनुसार:

यह एक अण्डाकार वक्र हस्ताक्षर योजना का उपयोग कर रहा है, जो ECDSA और DSA की तुलना में बेहतर सुरक्षा प्रदान करता है। साथ ही, इसका प्रदर्शन भी अच्छा है।

लक्ष्य

  • Ed25519 सार्वजनिक/निजी SSH कुंजियाँ:
    • आपके क्लाइंट पर निजी कुंजी
    • आपके सर्वर पर सार्वजनिक कुंजी

नोट्स

  • आपको यह चरण प्रत्येक कंप्यूटर और खाते के लिए करना होगा जिससे/जिस रूप में आप अपने सर्वर से कनेक्ट होंगे।

संदर्भ

  • https://www.ssh.com/ssh/public-key-authentication
  • https://help.ubuntu.com/community/SSH/OpenSSH/Keys
  • https://linux-audit.com/using-ed25519-openssh-keys-instead-of-dsa-rsa-ecdsa/
  • https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process
  • https://wiki.archlinux.org/index.php/SSH_Keys
  • https://www.ssh.com/ssh/copy-id
  • man ssh-keygen
  • man ssh-copy-id
  • man ssh-add

चरण

  1. उस कंप्यूटर से जिसका उपयोग आप अपने सर्वर से कनेक्ट करने के लिए करेंगे, क्लाइंट, सर्वर स्वयं नहीं, ssh-keygen के साथ एक Ed25519 कुंजी बनाएँ:

    root@kitploit:~
    ssh-keygen -t ed25519
    
    root@kitploit:~
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/home/user/.ssh/id_ed25519):
    Created directory '/home/user/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/user/.ssh/id_ed25519.
    Your public key has been saved in /home/user/.ssh/id_ed25519.pub.
    The key fingerprint is:
    SHA256:F44D4dr2zoHqgj0i2iVIHQ32uk/Lx4P+raayEAQjlcs user@client
    The key's randomart image is:
    +--[ED25519 256]--+
    |xxxx  x          |
    |o.o +. .         |
    | o o oo   .      |
    |. E oo . o .     |
    | o o. o S o      |
    |... .. o o       |
    |.+....+ o        |
    |+.=++o.B..       |
    |+..=**=o=.       |
    +----[SHA256]-----+
    

    नोट: यदि आप एक पासफ़्रेज़ सेट करते हैं, तो जब तक आप ssh-agent का उपयोग नहीं कर रहे हैं, आपको इस कुंजी का उपयोग करके अपने सर्वर से हर बार कनेक्ट करने पर इसे दर्ज करना होगा।

  2. अब आपको अपने क्लाइंट से सार्वजनिक कुंजी ~/.ssh/id_ed25519.pub को अपने सर्वर पर ~/.ssh/authorized_keys फ़ाइल में होगा। चूँकि हम संभवतः अभी भी LAN पर घर पर हैं, हम शायद हमलों से सुरक्षित हैं, इसलिए हम सार्वजनिक कुंजी को स्थानांतरित और जोड़ने के लिए का उपयोग करेंगे:

अब अपनी सेटअप-विशिष्ट कोई भी कार्य करने का अच्छा समय होगा।

(विषय सूची)

AllowGroups के लिए SSH समूह बनाएँ

क्यों

यह नियंत्रित करना आसान बनाने के लिए कि सर्वर पर कौन SSH कर सकता है। एक समूह का उपयोग करके, हम सर्वर पर SSH पहुँच को शीघ्रता से अनुमति देने या न देने के लिए खातों को समूह में तेज़ी से जोड़/हटा सकते हैं।

यह कैसे काम करता है

हम SSH के कॉन्फ़िगरेशन फ़ाइल /etc/ssh/sshd_config में AllowGroups विकल्प का उपयोग करके SSH सर्वर को बताएँगे कि वह केवल उन उपयोगकर्ताओं को SSH करने की अनुमति दे जो एक निश्चित UNIX समूह के सदस्य हैं। जो कोई भी समूह में नहीं है वह SSH नहीं कर पाएगा।

लक्ष्य

  • एक UNIX समूह जिसका उपयोग हम सुरक्षित /etc/ssh/sshd_config में करेंगे ताकि सीमित किया जा सके कि सर्वर पर कौन SSH कर सकता है

नोट्स

  • यह सुरक्षित /etc/ssh/sshd_config में सेट AllowGroup सेटिंग का समर्थन करने के लिए एक पूर्वापेक्षा चरण है।

संदर्भ

  • man groupadd
  • man usermod

चरण

  1. एक समूह बनाएँ:

    root@kitploit:~
    sudo groupadd sshusers
    
  2. समूह में खाता(खाते) जोड़ें:

    root@kitploit:~
    sudo usermod -a -G sshusers user1
    sudo usermod -a -G sshusers user2
    sudo usermod -a -G sshusers ...
    

    आपको यह आपके सर्वर पर प्रत्येक खाते के लिए करना होगा जिसे SSH पहुँच की आवश्यकता है।

(विषय सूची)

सुरक्षित /etc/ssh/sshd_config

क्यों

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

यह कैसे काम करता है

/etc/ssh/sshd_config डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल है जिसका SSH सर्वर उपयोग करता है। हम इस फ़ाइल का उपयोग SSH सर्वर को यह बताने के लिए करेंगे कि उसे किन विकल्पों का उपयोग करना चाहिए।

लक्ष्य

  • एक सुरक्षित SSH कॉन्फ़िगरेशन

नोट्स

  • सुनिश्चित करें कि आपने पहले AllowGroups के लिए SSH समूह बनाएँ पूरा कर लिया है।

संदर्भ

  • OpenSSH 6.7+ के लिए Mozilla के OpenSSH दिशानिर्देश https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67 पर
  • https://linux-audit.com/audit-and-harden-your-ssh-configuration/
  • https://www.ssh.com/ssh/sshd_config/
  • https://www.techbrown.com/harden-ssh-secure-linux-vps-server/ (टूटा हुआ; http://web.archive.org/web/20200413100933/https://www.techbrown.com/harden-ssh-secure-linux-vps-server/ देखें)
  • https://serverfault.com/questions/660160/openssh-difference-between-internal-sftp-and-sftp-server/660325
  • man sshd_config
  • डुप्लिकेट सेटिंग्स खोजने के तरीके के लिए than0s को धन्यवाद (यहाँ).

चरण

  1. OpenSSH सर्वर की कॉन्फ़िगरेशन फ़ाइल /etc/ssh/sshd_config का बैकअप लें और टिप्पणियाँ हटाएँ ताकि इसे पढ़ना आसान हो:

    root@kitploit:~
    sudo cp --archive /etc/ssh/sshd_config /etc/ssh/sshd_config-COPY-$(date +"%Y%m%d%H%M%S")
    sudo sed -i -r -e '/^#|^$/ d' /etc/ssh/sshd_config
    
  2. /etc/ssh/sshd_config संपादित करें, फिर इन सेटिंग्स को ढूँढें और संपादित या जोड़ें जो आपके कॉन्फ़िगरेशन/सेटअप के बावजूद लागू होनी चाहिए:

    नोट: SSH डुप्लिकेट विरोधाभासी सेटिंग्स को पसंद नहीं करता है। उदाहरण के लिए, यदि आपके पास ChallengeResponseAuthentication no और फिर ChallengeResponseAuthentication yes है, तो SSH पहले वाले का सम्मान करेगा और दूसरे को अनदेखा करेगा। आपकी /etc/ssh/sshd_config फ़ाइल में पहले से ही नीचे दी गई कुछ सेटिंग्स/पंक्तियाँ हो सकती हैं। समस्याओं से बचने के लिए आपको अपनी /etc/ssh/sshd_config फ़ाइल को मैन्युअल रूप से देखना होगा और किसी भी डुप्लिकेट विरोधाभासी सेटिंग्स को संबोधित करना होगा।

    नोट: यदि आप OpenSSH 9.1 या बाद का संस्करण चला रहे हैं, तो नीचे दिए गए कॉन्फ़िगरेशन में RequiredRSASize 3072 पंक्ति को अनटिप्पणी करें। यह न्यूनतम RSA कुंजी आकार 3072 बिट्स लागू करता है और प्रमाणीकरण के दौरान छोटी RSA कुंजियों को अस्वीकार कर देगा। यह केवल RSA कुंजियों को प्रभावित करता है। यदि आप ED25519 या ECDSA कुंजियों का उपयोग करते हैं, तो आप प्रभावित नहीं होते हैं। आप के साथ अपनी कुंजी प्रकार और आकार की जाँच कर सकते हैं। पुराने OpenSSH संस्करणों पर, पंक्ति को टिप्पणी के रूप में छोड़ दें क्योंकि यह sshd को शुरू होने से रोकेगी।

(विषय सूची)

छोटी Diffie-Hellman कुंजियाँ हटाएँ

क्यों

Mozilla के OpenSSH 6.7+ के OpenSSH दिशानिर्देशों के अनुसार, "उपयोग में सभी Diffie-Hellman मॉड्यूली कम से कम 3072-बिट-लंबे होने चाहिए"।

Diffie-Hellman एल्गोरिथ्म का उपयोग SSH द्वारा एक सुरक्षित कनेक्शन स्थापित करने के लिए किया जाता है। मॉड्यूली (कुंजी आकार) जितना बड़ा होगा, एन्क्रिप्शन उतना ही मजबूत होगा।

लक्ष्य

  • सभी Diffie-Hellman कुंजियाँ हटाएँ जो 3072 बिट्स से कम लंबी हैं

संदर्भ

  • OpenSSH 6.7+ के लिए Mozilla के OpenSSH दिशानिर्देश https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67 पर
  • https://infosec.mozilla.org/guidelines/key_management
  • man moduli

चरण

  1. SSH की मॉड्यूली फ़ाइल /etc/ssh/moduli का बैकअप लें:

    root@kitploit:~
    sudo cp --archive /etc/ssh/moduli /etc/ssh/moduli-COPY-$(date +"%Y%m%d%H%M%S")
    
  2. छोटे मॉड्यूली हटाएँ:

    root@kitploit:~
    sudo awk '$5 >= 3071' /etc/ssh/moduli | sudo tee /etc/ssh/moduli.tmp
    sudo mv /etc/ssh/moduli.tmp /etc/ssh/moduli
    

(विषय सूची)

SSH के लिए 2FA/MFA

क्यों

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

दो-कारक प्रमाणीकरण (2FA) / बहु-कारक प्रमाणीकरण (MFA) का उपयोग करने के लिए किसी भी व्यक्ति को प्रवेश करने के लिए दो कुंजियाँ रखने की आवश्यकता होती है, जिससे दुर्भावनापूर्ण अभिनेताओं के लिए यह कठिन हो जाता है। दो कुंजियाँ हैं:

  1. उनका पासवर्ड
  2. एक 6 अंकों का टोकन जो हर 30 सेकंड में बदलता है

दोनों कुंजियों के बिना, वे अंदर नहीं आ पाएंगे।

क्यों नहीं

बहुत से लोग अनुभव को बोझिल या कष्टप्रद पा सकते हैं। और, आपके सिस्टम तक पहुँच साथ में आने वाले प्रमाणक ऐप पर निर्भर है जो कोड उत्पन्न करता है।

यह कैसे काम करता है

Linux पर, PAM प्रमाणीकरण के लिए जिम्मेदार है। PAM के चार कार्य हैं जिनके बारे में आप https://en.wikipedia.org/wiki/Linux_PAM पर पढ़ सकते हैं। यह खंड प्रमाणीकरण कार्य के बारे में बात करता है।

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

यह खंड SSH के माध्यम से लॉग इन करते समय प्रमाणीकरण नियमों को बदल देगा ताकि पासवर्ड और एक 6 अंकों के कोड दोनों की आवश्यकता हो।हम SSH के PAM कॉन्फ़िगरेशन को सर्वर पर बताने जा रहे हैं कि उपयोगकर्ता से पहले उनका पासवर्ड और फिर उनका संख्यात्मक टोकन मांगे। PAM तब उपयोगकर्ता के पासवर्ड को सत्यापित करेगा और, यदि यह सही है, तो यह प्रमाणीकरण अनुरोध को libpam-google-authenticator पर रूट करेगा जो आपके 6 अंकों के टोकन को मांगेगा और सत्यापित करेगा। यदि, और केवल यदि, सब कुछ ठीक है तो प्रमाणीकरण सफल होगा और उपयोगकर्ता को लॉग इन करने की अनुमति दी जाएगी।

लक्ष्य

  • सभी SSH कनेक्शनों के लिए 2FA/MFA सक्षम किया गया

नोट्स

  • ऐसा करने से पहले, आपको इस बात का अंदाजा होना चाहिए कि 2FA/MFA कैसे काम करता है और जारी रखने के लिए आपको अपने फोन पर एक प्रमाणक ऐप की आवश्यकता होगी।
  • हम google-authenticator-libpam का उपयोग करेंगे।
  • नीचे दिए गए कॉन्फ़िगरेशन के साथ, किसी उपयोगकर्ता को केवल अपना 2FA/MFA कोड दर्ज करने की आवश्यकता होगी यदि वे अपने पासवर्ड से लॉग ऑन कर रहे हैं, लेकिन नहीं यदि वे SSH सार्वजनिक/निजी कुंजियों का उपयोग कर रहे हैं। इस व्यवहार को अपनी आवश्यकताओं के अनुरूप बदलने के तरीके के लिए दस्तावेज़ीकरण देखें।

संदर्भ

  • https://github.com/google/google-authenticator-libpam
  • https://en.wikipedia.org/wiki/Linux_PAM
  • https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm
  • https://fastmail.blog/2016/07/22/how-totp-authenticator-apps-work/
  • https://jemurai.com/2018/10/11/how-it-works-totp-based-mfa/

चरण

  1. libpam-google-authenticator स्थापित करें।

    डेबियन-आधारित सिस्टम पर:

    root@kitploit:~
    sudo apt install libpam-google-authenticator
    
  2. सुनिश्चित करें कि आप उस आईडी से लॉग इन हैं जिसके लिए आप 2FA/MFA सक्षम करना चाहते हैं और आवश्यक टोकन डेटा बनाने के लिए google-authenticator निष्पादित करें:

    root@kitploit:~
    google-authenticator
    
    root@kitploit:~
    Do you want authentication tokens to be time-based (y/n) y
    https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DR4ZWX34FQKZROVX7AGLJ64684Y%26issuer%3Dhost
    
    ...
    
    Your new secret key is: R3NVX3FFQKZROVX7AGLJUGGESY
    Your verification code is 751419
    Your emergency scratch codes are:
      12345678
      90123456
      78901234
      56789012
      34567890
    
    Do you want me to update your "/home/user/.google_authenticator" file (y/n) y
    
    Do you want to disallow multiple uses of the same authentication
    token? This restricts you to one login about every 30s, but it increases
    your chances to notice or even prevent man-in-the-middle attacks (y/n) Do you want to disallow multiple uses of the same authentication
    token? This restricts you to one login about every 30s, but it increases
    your chances to notice or even prevent man-in-the-middle attacks (y/n) y
    
    By default, tokens are good for 30 seconds. In order to compensate for
    possible time-skew between the client and the server, we allow an extra
    token before and after the current time. If you experience problems with
    poor time synchronization, you can increase the window from its default
    size of +-1min (window size of 3) to about +-4min (window size of
    17 acceptable tokens).
    Do you want to do so? (y/n) y
    
    If the computer that you are logging into isn't hardened against brute-force
    login attempts, you can enable rate-limiting for the authentication module.
    By default, this limits attackers to no more than 3 login attempts every 30s.
    Do you want to enable rate-limiting (y/n) y
    

(विषय सूची)

मूल बातें

sudo का उपयोग कौन कर सकता है, इसे सीमित करें

क्यों

sudo खातों को अन्य खातों के रूप में कमांड चलाने देता है, जिसमें root भी शामिल है। हम यह सुनिश्चित करना चाहते हैं कि केवल वे खाते ही sudo का उपयोग कर सकें जिन्हें हम चाहते हैं।

लक्ष्य

  • sudo विशेषाधिकार उन लोगों तक सीमित जो एक समूह में हैं जिसे हम निर्दिष्ट करते हैं

नोट्स

  • आपके इंस्टॉलेशन ने पहले ही ऐसा कर दिया हो सकता है, या इस उद्देश्य के लिए पहले से ही एक विशेष समूह हो सकता है, इसलिए पहले जाँच लें।
    • डेबियन sudo समूह बनाता है। इस समूह के सदस्यों (इस प्रकार sudo विशेषाधिकार वाले) को देखने के लिए:

      root@kitploit:~
      cat /etc/group | grep "sudo"
      
    • RedHat wheel समूह बनाता है

  • कुछ वितरणों पर sudo को पासवर्ड की आवश्यकता नहीं होने के बारे में एक नोट के लिए https://github.com/imthenachoman/How-To-Secure-A-Linux-Server/issues/39 देखें। साझा करने के लिए sbrl का धन्यवाद।

चरण

  1. एक समूह बनाएं:

    root@kitploit:~
    sudo groupadd sudousers
    
  2. खाता(खातों) को समूह में जोड़ें:

    root@kitploit:~
    sudo usermod -a -G sudousers user1
    sudo usermod -a -G sudousers user2
    sudo usermod -a -G sudousers  ...
    

    आपको अपने सर्वर पर प्रत्येक खाते के लिए ऐसा करना होगा जिसे sudo विशेषाधिकारों की आवश्यकता है।

  3. sudo के कॉन्फ़िगरेशन फ़ाइल /etc/sudoers का बैकअप बनाएं:

    root@kitploit:~
    sudo cp --archive /etc/sudoers /etc/sudoers-COPY-$(date +"%Y%m%d%H%M%S")
    
  4. sudo के कॉन्फ़िगरेशन फ़ाइल /etc/sudoers को संपादित करें:

    root@kitploit:~
    sudo visudo
    
  5. sudo को केवल sudousers समूह के उपयोगकर्ताओं को sudo का उपयोग करने की अनुमति देने के लिए कहें, यदि यह पहले से नहीं है तो यह पंक्ति जोड़ें:

    root@kitploit:~
    %sudousers   ALL=(ALL:ALL) ALL
    

(विषय सूची)

su का उपयोग कौन कर सकता है, इसे सीमित करें

क्यों

su भी खातों को अन्य खातों के रूप में कमांड चलाने देता है, जिसमें root भी शामिल है। हम यह सुनिश्चित करना चाहते हैं कि केवल वे खाते ही su का उपयोग कर सकें जिन्हें हम चाहते हैं।

लक्ष्य

  • su विशेषाधिकार उन लोगों तक सीमित जो एक समूह में हैं जिसे हम निर्दिष्ट करते हैं

संदर्भ

  • olavim को इस विचार को साझा करने के लिए धन्यवाद

चरण

  1. एक समूह बनाएं:

    root@kitploit:~
    sudo groupadd suusers
    
  2. खाता(खातों) को समूह में जोड़ें:

    root@kitploit:~
    sudo usermod -a -G suusers user1
    sudo usermod -a -G suusers user2
    sudo usermod -a -G suusers  ...
    

    आपको अपने सर्वर पर प्रत्येक खाते के लिए ऐसा करना होगा जिसे sudo विशेषाधिकारों की आवश्यकता है।

  3. सुनिश्चित करें कि केवल इस समूह के उपयोगकर्ता ही /bin/su निष्पादित कर सकें:

    root@kitploit:~
    sudo dpkg-statoverride --update --add root suusers 4750 /bin/su
    

(विषय सूची)

एप्लिकेशन को FireJail के साथ सैंडबॉक्स में चलाएं

क्यों

कई एप्लिकेशन के लिए, सैंडबॉक्स में चलाना निश्चित रूप से बेहतर है।

ब्राउज़र (और भी अधिक बंद-स्रोत वाले) और ईमेल क्लाइंट अत्यधिक अनुशंसित हैं।

लक्ष्य

  • एप्लिकेशन को एक जेल (कुछ सुरक्षित निर्देशिकाओं) में सीमित करें और शेष सिस्टम तक पहुंच को अवरुद्ध करें

संदर्भ

  • FireJail का धन्यवाद

चरण

  1. सॉफ़्टवेयर स्थापित करें:

    root@kitploit:~
    sudo apt install firejail firejail-profiles
    

    नोट: डेबियन 10 स्थिर के लिए, आधिकारिक बैकपोर्ट अनुशंसित है:

    root@kitploit:~
    sudo apt install -t buster-backports firejail firejail-profiles
    
  2. किसी एप्लिकेशन को (जो /usr/bin या /bin में स्थापित है) केवल सैंडबॉक्स में चलने दें (यहाँ कुछ उदाहरण देखें):

    root@kitploit:~
    sudo ln -s /usr/bin/firejail /usr/local/bin/google-chrome-stable
    sudo ln -s /usr/bin/firejail /usr/local/bin/firefox
    sudo ln -s /usr/bin/firejail /usr/local/bin/chromium
    sudo ln -s /usr/bin/firejail /usr/local/bin/evolution
    sudo ln -s /usr/bin/firejail /usr/local/bin/thunderbird
    
  3. एप्लिकेशन को सामान्य रूप से चलाएं (टर्मिनल या लॉन्चर के माध्यम से) और जांचें कि क्या यह जेल में चल रहा है:

    root@kitploit:~
    firejail --list
    
  4. एक सैंडबॉक्स किए गए ऐप को फिर से पहले की तरह चलने दें (उदाहरण: firefox)

    root@kitploit:~
    sudo rm /usr/local/bin/firefox
    

(विषय सूची)

NTP क्लाइंट

क्यों

कई सुरक्षा प्रोटोकॉल समय का लाभ उठाते हैं। यदि आपका सिस्टम समय गलत है, तो इसका आपके सर्वर पर नकारात्मक प्रभाव पड़ सकता है। एक NTP क्लाइंट आपके सिस्टम समय को वैश्विक NTP सर्वर के साथ सिंक रखकर उस समस्या को हल कर सकता है।

यह कैसे काम करता है

NTP का मतलब Network Time Protocol है। इस गाइड के संदर्भ में, सर्वर पर एक NTP क्लाइंट का उपयोग आधिकारिक सर्वरों से खींचे गए आधिकारिक समय के साथ सर्वर समय को अपडेट करने के लिए किया जाता है। सभी सार्वजनिक NTP सर्वरों के लिए https://www.pool.ntp.org/en/ देखें।

नोट: डेबियन 13 (Trixie) से शुरू करके, क्लासिक ntp पैकेज हटा दिया गया है। sudo apt install ntp चलाने पर "Package ntp has no installation candidate" त्रुटि के साथ विफल हो जाएगा। चूंकि यह गाइड केवल NTP का उपयोग क्लाइंट के रूप में करती है (सर्वर की घड़ी को सिंक करने के लिए), डेबियन 13+ पर अनुशंसित दृष्टिकोण systemd-timesyncd का उपयोग करना है, जो पहले से स्थापित है और किसी अतिरिक्त पैकेज की आवश्यकता नहीं है। नीचे डेबियन 13+ चरण देखें।

लक्ष्य

  • NTP क्लाइंट स्थापित और सर्वर समय को सिंक रखता हुआ

संदर्भ

  • https://cloudpro.zone/index.php/2018/01/27/debian-9-3-server-setup-guide-part-4/
  • https://en.wikipedia.org/wiki/Network_Time_Protocol
  • https://www.pool.ntp.org/en/
  • https://serverfault.com/questions/957302/securing-hardening-ntp-client-on-linux-servers-config-file/957450#957450
  • https://tf.nist.gov/tf-cgi/servers.cgi

चरण

डेबियन 13 (Trixie) और बाद में: systemd-timesyncd

systemd-timesyncd एक हल्का SNTP क्लाइंट है जो पहले से ही डेबियन में शामिल है। पूर्ण ntpd डेमॉन के विपरीत, यह किसी भी पोर्ट पर नहीं सुनता है, जो इसे एक छोटा हमला सतह बनाता है। इस गाइड के उद्देश्यों के लिए - आपके सर्वर की घड़ी को सिंक रखना - यही सब आपको चाहिए।

  1. NTP सिंक्रोनाइज़ेशन सक्षम करें:

    root@kitploit:~
    sudo timedatectl set-ntp true
    
  2. सत्यापित करें कि यह काम कर रहा है:

    root@kitploit:~
    timedatectl status
    

    आउटपुट में आपको NTP service: active और System clock synchronized: yes देखना चाहिए।

  3. विश्वसनीय NTP सर्वर कॉन्फ़िगर करें। कॉन्फ़िगरेशन फ़ाइल का बैकअप बनाएं और फिर इसे संपादित करें:

    root@kitploit:~
    sudo cp --archive /etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf-COPY-$(date +"%Y%m%d%H%M%S")
    

    /etc/systemd/timesyncd.conf को संपादित करें और [Time] अनुभाग को अनकमेंट/सेट करें:

    root@kitploit:~
    [Time]
    NTP=pool.ntp.org
    FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org
    

    आलसियों के लिए:

    root@kitploit:~
    sudo sed -i -r -e "s/^#?NTP=.*$/NTP=pool.ntp.org         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")/" /etc/systemd/timesyncd.conf
    sudo sed -i -r -e "s/^#?FallbackNTP=.*$/FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")/" /etc/systemd/timesyncd.conf
    
डेबियन 12 (Bookworm) और पहले: ntp पैकेज

नोट: ये चरण केवल डेबियन 12 और पहले पर लागू होते हैं। डेबियन 13+ पर, ntp पैकेज अब उपलब्ध नहीं है -- इसके बजाय ऊपर systemd-timesyncd चरणों का उपयोग करें।

  1. ntp स्थापित करें।

    डेबियन-आधारित सिस्टम पर:

    root@kitploit:~
    sudo apt install ntp
    
  2. NTP क्लाइंट के कॉन्फ़िगरेशन फ़ाइल /etc/ntp.conf का बैकअप बनाएं:

    root@kitploit:~
    sudo cp --archive /etc/ntp.conf /etc/ntp.conf-COPY-$(date +"%Y%m%d%H%M%S")
    
  3. डिफ़ॉल्ट कॉन्फ़िगरेशन, कम से कम डेबियन पर, पहले से ही काफी सुरक्षित है। हमें बस यह सुनिश्चित करना है कि हम pool निर्देश का उपयोग कर रहे हैं न कि किसी server निर्देश का। pool निर्देश NTP क्लाइंट को किसी सर्वर का उपयोग बंद करने की अनुमति देता है यदि वह अनुत्तरदायी है या खराब समय दे रहा है। सभी server निर्देशों को कमेंट करके और /etc/ntp.conf में नीचे जोड़कर ऐसा करें।

    root@kitploit:~
    pool pool.ntp.org iburst
    

    आलसियों के लिए:

    root@kitploit:~
    sudo sed -i -r -e "s/^((server|pool).*)/# \1         # commented by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")/" /etc/ntp.conf
    echo -e "\npool pool.ntp.org iburst         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")" | sudo tee -a /etc/ntp.conf
    

(विषय सूची)

/proc को सुरक्षित करना

क्यों

https://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/ को उद्धृत करने के लिए:

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

नोट: यह कुछ systemd सिस्टम पर टूट सकता है। कृपया अधिक जानकारी के लिए https://github.com/imthenachoman/How-To-Secure-A-Linux-Server/issues/37 देखें। साझा करने के लिए nlgranger का धन्यवाद।

लक्ष्य

  • /proc को hidepid=2 के साथ माउंट किया गया ताकि उपयोगकर्ता केवल अपनी प्रक्रियाओं के बारे में जानकारी देख सकें

संदर्भ

  • https://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/
  • https://likegeeks.com/secure-linux-server-hardening-best-practices/#Hardening-proc-Directory
  • https://www.cyberciti.biz/faq/linux-hide-processes-from-other-users/

चरण

  1. /etc/fstab का बैकअप बनाएं:

    root@kitploit:~
    sudo cp --archive /etc/fstab /etc/fstab-COPY-$(date +"%Y%m%d%H%M%S")
    
  2. /proc को hidepid=2 के साथ माउंट करने के लिए /etc/fstab में यह पंक्ति जोड़ें:

    root@kitploit:~
    proc     /proc     proc     defaults,hidepid=2     0     0
    

    आलसियों के लिए:

    root@kitploit:~
    echo -e "\nproc     /proc     proc     defaults,hidepid=2     0     0         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")" | sudo tee -a /etc/fstab
    
  3. सिस्टम को रीबूट करें:

    root@kitploit:~
    sudo reboot now
    

    नोट: वैकल्पिक रूप से, आप sudo mount -o remount,hidepid=2 /proc के साथ रीबूट किए बिना /proc को पुनः माउंट कर सकते हैं।

(विषय सूची)

खातों को सुरक्षित पासवर्ड का उपयोग करने के लिए बाध्य करें

क्यों

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

यह कैसे काम करता है

लिनक्स पर, PAM प्रमाणीकरण के लिए जिम्मेदार है। PAM के चार कार्य हैं जिनके बारे में आप https://en.wikipedia.org/wiki/Linux_PAM पर पढ़ सकते हैं। यह अनुभाग पासवर्ड कार्य के बारे में बात करता है।जब किसी खाते का पासवर्ड सेट या बदलने की आवश्यकता होती है, तो PAM का पासवर्ड कार्य अनुरोध को संभालता है। इस अनुभाग में हम PAM के पासवर्ड कार्य को बताएंगे कि वह अनुरोधित नए पासवर्ड को libpam-pwquality को भेजे ताकि यह सुनिश्चित हो सके कि वह हमारी आवश्यकताओं को पूरा करता है। यदि आवश्यकताएं पूरी होती हैं तो इसका उपयोग/सेट किया जाता है; यदि यह आवश्यकताओं को पूरा नहीं करता है तो यह त्रुटि देता है और उपयोगकर्ता को सूचित करता है।

लक्ष्य

  • मजबूत पासवर्ड लागू करना

कदम

  1. libpam-pwquality इंस्टॉल करें।

    Debian-आधारित सिस्टम पर:

    root@kitploit:~
    sudo apt install libpam-pwquality
    
  2. PAM के पासवर्ड कॉन्फ़िगरेशन फ़ाइल /etc/pam.d/common-password का बैकअप लें:

    root@kitploit:~
    sudo cp --archive /etc/pam.d/common-password /etc/pam.d/common-password-COPY-$(date +"%Y%m%d%H%M%S")
    
  3. PAM को libpam-pwquality का उपयोग करके मजबूत पासवर्ड लागू करने का निर्देश दें, फ़ाइल /etc/pam.d/common-password को संपादित करें और इस प्रकार शुरू होने वाली पंक्ति को बदलें:

    root@kitploit:~
    password        requisite                       pam_pwquality.so
    

    इस प्रकार:

    root@kitploit:~
    password        requisite                       pam_pwquality.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=3 gecoschec
    

    उपरोक्त विकल्प हैं:

    • retry=3 = त्रुटि लौटाने से पहले उपयोगकर्ता को 3 बार संकेत दें।
    • minlen=10 = पासवर्ड की न्यूनतम लंबाई, इनसे प्राप्त क्रेडिट (या डेबिट) को ध्यान में रखते हुए:
      • dcredit=-1 = कम से कम होना चाहिए

(Table of Contents)

स्वचालित सुरक्षा अपडेट और अलर्ट

क्यों

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

जब तक आप हर दिन अपने सर्वर की जांच करने की योजना नहीं बनाते, आप सिस्टम को स्वचालित रूप से अपडेट करने और/या उपलब्ध अपडेट के बारे में ईमेल प्राप्त करने का तरीका चाहेंगे।

आप सभी अपडेट नहीं करना चाहते क्योंकि हर अपडेट के साथ कुछ टूटने का जोखिम होता है। महत्वपूर्ण अपडेट करना महत्वपूर्ण है लेकिन बाकी सब कुछ तब तक प्रतीक्षा कर सकता है जब तक आपके पास इसे मैन्युअल रूप से करने का समय न हो।

क्यों नहीं

स्वचालित और अनअटेंडेड अपडेट आपके सिस्टम को तोड़ सकते हैं और हो सकता है कि आप इसे ठीक करने के लिए अपने सर्वर के पास न हों। यह विशेष रूप से समस्याग्रस्त होगा यदि इसने आपकी SSH पहुंच को तोड़ दिया।

नोट्स

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

लक्ष्य

  • महत्वपूर्ण सुरक्षा पैच का स्वचालित, अनअटेंडेड अपडेट
  • शेष लंबित अपडेट के स्वचालित ईमेल

Debian-आधारित सिस्टम

यह कैसे काम करता है

Debian-आधारित सिस्टम पर आप उपयोग कर सकते हैं:

  • unattended-upgrades आपके इच्छित सिस्टम अपडेट स्वचालित रूप से करने के लिए (जैसे महत्वपूर्ण सुरक्षा अपडेट)
  • apt-listchanges पैकेज परिवर्तनों के बारे में विवरण प्राप्त करने के लिए इससे पहले कि वे इंस्टॉल/अपग्रेड हों
  • apticron लंबित पैकेज अपडेट के लिए ईमेल प्राप्त करने के लिए

हम महत्वपूर्ण सुरक्षा पैच लागू करने के लिए unattended-upgrades का उपयोग करेंगे। हम स्थिर अपडेट भी लागू कर सकते हैं क्योंकि वे पहले से ही Debian समुदाय द्वारा पूरी तरह से परीक्षण किए जा चुके हैं।

संदर्भ
  • https://wiki.debian.org/UnattendedUpgrades
  • https://debian-handbook.info/browse/stable/sect.regular-upgrades.html
  • https://blog.sleeplessbeastie.eu/2015/01/02/how-to-perform-unattended-upgrades/
  • https://www.vultr.com/docs/how-to-set-up-unattended-upgrades-on-debian-9-stretch
  • https://github.com/mvo5/unattended-upgrades
  • https://wiki.debian.org/UnattendedUpgrades#apt-listchanges
  • https://www.cyberciti.biz/faq/apt-get-apticron-send-email-upgrades-available/
  • https://www.unixmen.com/how-to-get-email-notifications-for-new-updates-on-debianubuntu/
  • /etc/apt/apt.conf.d/50unattended-upgrades
कदम
  1. unattended-upgrades, apt-listchanges, और apticron इंस्टॉल करें:

    root@kitploit:~
    sudo apt install unattended-upgrades apt-listchanges apticron
    
  2. अब हमें अपडेट को स्वचालित रूप से लागू करने के लिए unattended-upgrades को कॉन्फ़िगर करने की आवश्यकता है। यह आमतौर पर पैकेजों द्वारा बनाई गई फ़ाइलों /etc/apt/apt.conf.d/20auto-upgrades और /etc/apt/apt.conf.d/50unattended-upgrades को संपादित करके किया जाता है। हालांकि, क्योंकि ये फ़ाइलें भविष्य के अपडेट के साथ अधिलेखित हो सकती हैं, हम इसके बजाय एक नई फ़ाइल बनाएंगे। फ़ाइल /etc/apt/apt.conf.d/51myunattended-upgrades बनाएं और इसे जोड़ें:

    root@kitploit:~
    // Enable the update/upgrade script (0=disable)
    APT::Periodic::Enable "1";
    
    // Do "apt-get update" automatically every n-days (0=disable)
    APT::Periodic::Update-Package-Lists "1";
    
    // Do "apt-get upgrade --download-only" every n-days (0=disable)
    APT::Periodic::Download-Upgradeable-Packages "1";
    
    // Do "apt-get autoclean" every n-days (0=disable)
    APT::Periodic::AutocleanInterval "7";
    
    // Send report mail to root
    //     0:  no report             (or null string)
    //     1:  progress report       (actually any string)
    //     2:  + command outputs     (remove -qq, remove 2>/dev/null, add -d)
    //     3:  + trace on    APT::Periodic::Verbose "2";
    APT::Periodic::Unattended-Upgrade "1";
    
    // Automatically upgrade packages from these
    Unattended-Upgrade::Origins-Pattern {
          "o=Debian,a=stable";
          "o=Debian,a=stable-updates";
          "origin=Debian,codename=${distro_codename},label=Debian-Security";
    };
    
    // You can specify your own packages to NOT automatically upgrade here
    Unattended-Upgrade::Package-Blacklist {
    };
    
    // Run dpkg --force-confold --configure -a if a unclean dpkg state is detected to true to ensure that updates get installed even when the system got interrupted during a previous run
    Unattended-Upgrade::AutoFixInterruptedDpkg "true";
    
    //Perform the upgrade when the machine is running because we wont be shutting our server down often
    Unattended-Upgrade::InstallOnShutdown "false";
    
    // Send an email to this address with information about the packages upgraded.
    Unattended-Upgrade::Mail "root";
    
    // Always send an e-mail
    Unattended-Upgrade::MailOnlyOnError "false";
    
    // Remove all unused dependencies after the upgrade has finished
    Unattended-Upgrade::Remove-Unused-Dependencies "true";
    
    // Remove any new unused dependencies after the upgrade has finished
    Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
    
    // Automatically reboot WITHOUT CONFIRMATION if the file /var/run/reboot-required is found after the upgrade.
    Unattended-Upgrade::Automatic-Reboot "true";
    
    // Automatically reboot even if users are logged in.
    Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
    

(Table of Contents)

अधिक सुरक्षित रैंडम एंट्रॉपी पूल (WIP)

क्यों

WIP

यह कैसे काम करता है

WIP

लक्ष्य

WIP

संदर्भ

  • Thanks to branneman for this idea as submitted in issue #33.
  • https://hackaday.com/2017/11/02/what-is-entropy-and-how-do-i-get-more-of-it/
  • https://www.2uo.de/myths-about-urandom
  • https://www.gnu.org/software/hurd/user/tlecarrour/rng-tools.html
  • https://wiki.archlinux.org/index.php/Rng-tools
  • https://www.howtoforge.com/helping-the-random-number-generator-to-gain-enough-entropy-with-rng-tools-debian-lenny
  • https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-encryption-using_the_random_number_generator

कदम

  1. rng-tools इंस्टॉल करें।

    Debian-आधारित सिस्टम पर:

    root@kitploit:~
    sudo apt-get install rng-tools
    
  2. अब हमें रैंडम नंबर उत्पन्न करने के लिए उपयोग किए जाने वाले हार्डवेयर डिवाइस को सेट करने की आवश्यकता है, इसे /etc/default/rng-tools में जोड़कर:

    root@kitploit:~
    HRNGDEVICE=/dev/urandom
    

    आलसी के लिए:

    root@kitploit:~
    echo "HRNGDEVICE=/dev/urandom" | sudo tee -a /etc/default/rng-tools
    
  3. सेवा पुनरारंभ करें:

    root@kitploit:~
    sudo systemctl stop rng-tools.service
    sudo systemctl start rng-tools.service
    
  4. रैंडमनेस का परीक्षण करें:

    • https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-encryption-using_the_random_number_generator
    • https://wiki.archlinux.org/index.php/Rng-tools

(Table of Contents)

पैनिक/सेकेंडरी/फेक पासवर्ड लॉगिन सुरक्षा प्रणाली जोड़ें

क्यों

भौतिक हमले (व्यक्तिगत) रैनसम/डकैती/हमले के तरीकों के खिलाफ अतिरिक्त पासवर्ड सुरक्षा जोड़ने के लिए एक अच्छा उपकरण।

यह कैसे काम करता है

pamduress X उपयोगकर्ता में एक द्वितीयक पासवर्ड (पैनिक पासवर्ड) जोड़ेगा, जब यह पासवर्ड मेल खाता है तो एक स्क्रिप्ट चलाना शुरू करेगा (यह स्क्रिप्ट वही करती है जो आप चाहते हैं कि उपयोगकर्ता करे, जब वह इन पैनिक पासवर्ड से लॉगिन करता है।

व्यावहारिक और वास्तविक उदाहरण:


Read more

टूल डाउनलोड करें
  • https://www.tecmint.com/install-rootkit-hunter-scan-for-rootkits-backdoors-in-linux/
  • लॉग शिपिंग/बैकअप - https://news.ycombinator.com/item?id=19178681
  • CIS-CAT - https://learn.cisecurity.org/cis-cat-landing-page
  • debsums - https://blog.sleeplessbeastie.eu/2015/03/02/how-to-verify-installed-packages/
  • जोड़ना
    MIM
    ssh-copy-id
    root@kitploit:~
    ssh-copy-id user@server
    
    root@kitploit:~
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_ed25519.pub"
    The authenticity of host 'host (192.168.1.96)' can't be established.
    ECDSA key fingerprint is SHA256:QaDQb/X0XyVlogh87sDXE7MR8YIK7ko4wS5hXjRySJE.
    Are you sure you want to continue connecting (yes/no)? yes
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    user@host's password:
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'user@host'"
    and check to make sure that only the key(s) you wanted were added.
    
    ssh-keygen -l -f ~/.ssh/id_rsa
    root@kitploit:~
    ########################################################################################################
    # start settings from https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67 as of 2019-01-01
    ########################################################################################################
    
    # Supported HostKey algorithms by order of preference.
    HostKey /etc/ssh/ssh_host_ed25519_key
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    
    KexAlgorithms [email protected],ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
    
    Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
    
    MACs [email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
    
    # LogLevel VERBOSE logs user's key fingerprint on login. Needed to have a clear audit track of which key was using to log in.
    LogLevel VERBOSE
    
    # Use kernel sandbox mechanisms where possible in unprivileged processes
    # Systrace on OpenBSD, Seccomp on Linux, seatbelt on MacOSX/Darwin, rlimit elsewhere.
    # Note: This setting is deprecated in OpenSSH 7.5 (https://www.openssh.com/txt/release-7.5)
    # UsePrivilegeSeparation sandbox
    
    ########################################################################################################
    # end settings from https://infosec.mozilla.org/guidelines/openssh#modern-openssh-67 as of 2019-01-01
    ########################################################################################################
    
    # don't let users set environment variables
    PermitUserEnvironment no
    
    # Log sftp level file access (read/write/etc.) that would not be easily logged otherwise.
    Subsystem sftp  internal-sftp -f AUTHPRIV -l INFO
    
    # disable X11 forwarding as X11 is very insecure
    # you really shouldn't be running X on a server anyway
    X11Forwarding no
    
    # disable port forwarding
    AllowTcpForwarding no
    AllowStreamLocalForwarding no
    GatewayPorts no
    PermitTunnel no
    
    # don't allow login if the account has an empty password
    PermitEmptyPasswords no
    
    # ignore .rhosts and .shosts
    IgnoreRhosts yes
    
    # verify hostname matches IP
    UseDNS yes
    
    Compression no
    
    # TCP keepalive is spoofable (runs outside the encrypted channel)
    # Use ClientAlive instead (runs inside the encrypted channel)
    TCPKeepAlive no
    
    AllowAgentForwarding no
    PermitRootLogin no
    
    # don't allow .rhosts or /etc/hosts.equiv
    HostbasedAuthentication no
    
    # OpenSSH 9.1 and later
    # Enforce a minimum RSA key size of 3072 bits
    # https://www.keylength.com/en/compare/
    # RequiredRSASize 3072
    
    # https://github.com/imthenachoman/How-To-Secure-A-Linux-Server/issues/115
    HashKnownHosts yes
    
  • फिर इन सेटिंग्स को ढूँढें और संपादित या जोड़ें, और अपनी आवश्यकताओं के अनुसार मान सेट करें:

    सेटिंगमान्य मानउदाहरणविवरणनोट्स
    AllowGroupsस्थानीय UNIX समूह का नामAllowGroups sshusersSSH पहुँच की अनुमति देने के लिए समूह
    ClientAliveCountMaxसंख्याClientAliveCountMax 3बिना प्रत्युत्तर के भेजे गए क्लाइंट जीवित संदेशों की अधिकतम संख्या
    ClientAliveIntervalसेकंड की संख्याClientAliveInterval 15प्रत्युत्तर अनुरोध से पहले टाइमआउट सेकंड में
    ListenAddressरिक्त स्थान से अलग किए गए स्थानीय पतों की सूची
    • ListenAddress 0.0.0.0
    • ListenAddress 192.168.1.100
    वे स्थानीय पते जिन पर sshd को सुनना चाहिएमहत्वपूर्ण विवरण के लिए Issue #1 देखें।
    LoginGraceTimeसेकंड की संख्याLoginGraceTime 30लॉगिन टाइम-आउट से पहले सेकंड में समय
    MaxAuthTriesसंख्याMaxAuthTries 2लॉगिन के लिए अधिकतम अनुमत प्रयास
    MaxSessionsसंख्याMaxSessions 2खुले सत्रों की अधिकतम संख्या
    MaxStartupsसंख्याMaxStartups 2लॉगिन सत्रों की अधिकतम संख्या
    PasswordAuthenticationहाँ या नहींPasswordAuthentication noयदि पासवर्ड के साथ लॉगिन की अनुमति है
    Portकोई भी खुला/उपलब्ध पोर्ट नंबरPort 22वह पोर्ट जिस पर sshd को सुनना चाहिए

    इन सेटिंग्स का अर्थ क्या है, इसके अधिक विवरण के लिए man sshd_config देखें।

  • सुनिश्चित करें कि ऐसी कोई डुप्लिकेट सेटिंग्स नहीं हैं जो एक-दूसरे का खंडन करती हों। नीचे दिए गए कमांड का कोई आउटपुट नहीं होना चाहिए।

    root@kitploit:~
    awk 'NF && $1!~/^(#|HostKey)/{print $1}' /etc/ssh/sshd_config | sort | uniq -c | grep -v ' 1 '
    
  • ssh को पुनरारंभ करें:

    root@kitploit:~
    sudo service sshd restart
    
  • आप sshd -T के साथ कॉन्फ़िगरेशन के काम करने की जाँच कर सकते हैं और आउटपुट सत्यापित कर सकते हैं:

    root@kitploit:~
    sudo sshd -T
    
    root@kitploit:~
    port 22
    addressfamily any
    listenaddress [::]:22
    listenaddress 0.0.0.0:22
    usepam yes
    logingracetime 30
    x11displayoffset 10
    maxauthtries 2
    maxsessions 2
    clientaliveinterval 15
    clientalivecountmax 3
    streamlocalbindmask 0177
    permitrootlogin no
    ignorerhosts yes
    ignoreuserknownhosts no
    hostbasedauthentication no
    ...
    subsystem sftp internal-sftp -f AUTHPRIV -l INFO
    maxstartups 2:30:2
    permittunnel no
    ipqos lowdelay throughput
    rekeylimit 0 0
    permitopen any
    
  • ध्यान दें कि यह रूट के रूप में नहीं चलाया जाता है।

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

  • PAM के SSH कॉन्फ़िगरेशन फ़ाइल /etc/pam.d/sshd का बैकअप बनाएं:

    root@kitploit:~
    sudo cp --archive /etc/pam.d/sshd /etc/pam.d/sshd-COPY-$(date +"%Y%m%d%H%M%S")
    
  • अब हमें SSH के लिए प्रमाणीकरण विधि के रूप में इसे सक्षम करने के लिए /etc/pam.d/sshd में यह पंक्ति जोड़नी होगी:

    root@kitploit:~
    auth       required     pam_google_authenticator.so nullok
    

    नोट: nullok का अर्थ जानने के लिए यहाँ देखें।

    आलसियों के लिए:

    root@kitploit:~
    echo -e "\nauth       required     pam_google_authenticator.so nullok         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")" | sudo tee -a /etc/pam.d/sshd
    
  • SSH को इसका लाभ उठाने के लिए कहें, /etc/ssh/sshd_config में इस पंक्ति को जोड़कर या संपादित करके:

    root@kitploit:~
    ChallengeResponseAuthentication yes
    

    आलसियों के लिए:

    root@kitploit:~
    sudo sed -i -r -e "s/^(challengeresponseauthentication .*)$/# \1         # commented by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")/I" /etc/ssh/sshd_config
    echo -e "\nChallengeResponseAuthentication yes         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")" | sudo tee -a /etc/ssh/sshd_config
    
  • ssh को पुनर्प्रारंभ करें:

    root@kitploit:~
    sudo service sshd restart
    
  • परिवर्तनों को लागू करने के लिए सेवा को पुनर्प्रारंभ करें:

    root@kitploit:~
    sudo systemctl restart systemd-timesyncd
    
  • सिंक्रोनाइज़ेशन स्थिति जांचें:

    root@kitploit:~
    timedatectl timesync-status
    
    root@kitploit:~
           Server: 108.61.56.35 (pool.ntp.org)
    Poll interval: 32s (min: 32s; max: 34min 8s)
             Leap: normal
          Version: 4
          Stratum: 2
        Reference: C342F10A
        Precision: 1us (2^0)
     Root distance: 24.054ms (max: 5s)
           Offset: +2.156ms
            Delay: 48.567ms
           Jitter: 1.452ms
     Packet count: 3
    
  • उदाहरण /etc/ntp.conf:

    root@kitploit:~
    driftfile /var/lib/ntp/ntp.drift
    statistics loopstats peerstats clockstats
    filegen loopstats file loopstats type day enable
    filegen peerstats file peerstats type day enable
    filegen clockstats file clockstats type day enable
    restrict -4 default kod notrap nomodify nopeer noquery limited
    restrict -6 default kod notrap nomodify nopeer noquery limited
    restrict 127.0.0.1
    restrict ::1
    restrict source notrap nomodify noquery
    pool pool.ntp.org iburst         # added by user on 2019-03-09 @ 10:23:35
    
  • ntp पुनर्प्रारंभ करें:

    root@kitploit:~
    sudo service ntp restart
    
  • ntp सेवा की स्थिति जांचें:

    root@kitploit:~
    sudo systemctl status ntp
    
    root@kitploit:~
    ● ntp.service - LSB: Start NTP daemon
       Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
       Active: active (running) since Sat 2019-03-09 15:19:46 EST; 4s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 1016 ExecStop=/etc/init.d/ntp stop (code=exited, status=0/SUCCESS)
      Process: 1028 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
        Tasks: 2 (limit: 4915)
       CGroup: /system.slice/ntp.service
               └─1038 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 108:113
    
    Mar 09 15:19:46 host ntpd[1038]: Listen and drop on 0 v6wildcard [::]:123
    Mar 09 15:19:46 host ntpd[1038]: Listen and drop on 1 v4wildcard 0.0.0.0:123
    Mar 09 15:19:46 host ntpd[1038]: Listen normally on 2 lo 127.0.0.1:123
    Mar 09 15:19:46 host ntpd[1038]: Listen normally on 3 enp0s3 10.10.20.96:123
    Mar 09 15:19:46 host ntpd[1038]: Listen normally on 4 lo [::1]:123
    Mar 09 15:19:46 host ntpd[1038]: Listen normally on 5 enp0s3 [fe80::a00:27ff:feb6:ed8e%2]:123
    Mar 09 15:19:46 host ntpd[1038]: Listening on routing socket on fd #22 for interface updates
    Mar 09 15:19:47 host ntpd[1038]: Soliciting pool server 108.61.56.35
    Mar 09 15:19:48 host ntpd[1038]: Soliciting pool server 69.89.207.199
    Mar 09 15:19:49 host ntpd[1038]: Soliciting pool server 45.79.111.114
    
  • ntp की स्थिति जांचें:

    root@kitploit:~
    sudo ntpq -p
    
    root@kitploit:~
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
     pool.ntp.org    .POOL.          16 p    -   64    0    0.000    0.000   0.000
    *lithium.constan 198.30.92.2      2 u    -   64    1   19.900    4.894   3.951
     ntp2.wiktel.com 212.215.1.157    2 u    2   64    1   48.061   -0.431   0.104
    
  • एक अंक
  • ucredit=-1 = कम से कम एक बड़ा अक्षर होना चाहिए
  • lcredit=-1 = कम से कम एक छोटा अक्षर होना चाहिए
  • ocredit=-1 = कम से कम एक गैर-अल्फ़ान्यूमेरिक वर्ण होना चाहिए
  • difok=3 = नए पासवर्ड के कम से कम 3 वर्ण पुराने पासवर्ड में नहीं हो सकते
  • maxrepeat=3 = अधिकतम 3 दोहराए गए वर्णों की अनुमति दें
  • gecoschec = खाते के नाम वाले पासवर्ड की अनुमति न दें
  • आलसी के लिए:

    root@kitploit:~
    sudo sed -i -r -e "s/^(password\s+requisite\s+pam_pwquality.so)(.*)$/# \1\2         # commented by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")\n\1 retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 maxrepeat=3 gecoschec         # added by $(whoami) on $(date +"%Y-%m-%d @ %H:%M:%S")/" /etc/pam.d/common-password
    

    नोट्स:

    • APT::Periodic विकल्पों के विवरण के लिए /usr/lib/apt/apt.systemd.daily देखें
    • Unattended-Upgrade विकल्पों के विवरण के लिए https://github.com/mvo5/unattended-upgrades देखें
  • अपनी कॉन्फ़िगरेशन फ़ाइल ठीक है यह सुनिश्चित करने के लिए unattended-upgrades का ड्राई-रन चलाएं:

    root@kitploit:~
    sudo unattended-upgrade -d --dry-run
    

    यदि सब कुछ ठीक है, तो आप इसे निर्धारित समय पर चलने दे सकते हैं या unattended-upgrade -d के साथ चलाने के लिए बाध्य कर सकते हैं।

  • अपनी पसंद के अनुसार apt-listchanges कॉन्फ़िगर करें:

    root@kitploit:~
    sudo dpkg-reconfigure apt-listchanges
    
  • apticron के लिए, डिफ़ॉल्ट सेटिंग्स पर्याप्त हैं लेकिन यदि आप उन्हें बदलना चाहते हैं तो आप उन्हें /etc/apticron/apticron.conf में जांच सकते हैं। उदाहरण के लिए, मेरा कॉन्फ़िगरेशन इस प्रकार है:

    root@kitploit:~
    EMAIL="root"
    NOTIFY_NO_UPDATES="1"