
यह शेफ कुकबुक कई सुरक्षा-संबंधित कॉन्फ़िगरेशन प्रदान करती है, जो सर्वांगीण आधार सुरक्षा सुनिश्चित करती है।
यह कुकबुक कई सुरक्षा-संबंधित कॉन्फ़िगरेशन प्रदान करती है, जो व्यापक आधार सुरक्षा प्रदान करती है।
यह निम्नलिखित कॉन्फ़िगर करती है:
pam और pam_limits मॉड्यूल कॉन्फ़िगर करता हैयह निम्नलिखित नहीं करेगी:
['os-hardening']['components'][COMPONENT_NAME] - डिफ़ॉल्ट रेसिपी के माध्यम से किन घटकों को निष्पादित किया जाना चाहिए, इस पर सूक्ष्म नियंत्रण की अनुमति देता है। अधिक विवरण के लिए नीचे देखें['os-hardening']['desktop']['enable'] = false
true यदि यह एक डेस्कटॉप सिस्टम है, जैसे Xorg, KDE/GNOME/Unity/आदि['os-hardening']['network']['forwarding'] = false
true यदि इस सिस्टम को पैकेट फ़ॉरवर्डिंग की आवश्यकता है (जैसे राउटर), अन्यथा false['os-hardening']['network']['ipv6']['enable'] = false['os-hardening']['network']['arp']['restricted'] = true
true यदि आप ARP की घोषणा और उत्तर देने के व्यवहार को प्रतिबंधित करना चाहते हैं, अन्यथा false['os-hardening']['env']['extra_user_paths'] = []
उपयोगकर्ता के PATH वेरिएबल में अतिरिक्त पथ जोड़ें (डिफ़ॉल्ट खाली है)।['os-hardening']['env']['umask'] = "027"['os-hardening']['env']['root_path'] = "/"
जहाँ root माउंटेड है['os-hardening']['auth']['pw_max_age'] = 60
अधिकतम पासवर्ड आयु['os-hardening']['auth']['pw_min_age'] = 7
न्यूनतम पासवर्ड आयु (किसी अन्य पासवर्ड परिवर्तन की अनुमति देने से पहले)['os-hardening']['auth']['pw_warn_age'] = 7
अधिकतम पासवर्ड आयु होने से पहले के दिनों की संख्या, आगामी परिवर्तन की चेतावनी देने के लिए['os-hardening']['auth']['uid_min'] = 1000
useradd द्वारा निर्दिष्ट UID की निचली सीमा['os-hardening']['auth']['uid_max'] = 60000
useradd द्वारा निर्दिष्ट UID की ऊपरी सीमा['os-hardening']['auth']['gid_min'] = 1000
groupadd द्वारा निर्दिष्ट GID की निचली सीमा['os-hardening']['auth']['gid_max'] = 60000
groupadd द्वारा निर्दिष्ट GID की ऊपरी सीमा['os-hardening']['auth']['retries'] = 5
प्रमाणीकरण प्रयासों की अधिकतम संख्या, इससे पहले कि खाता कुछ समय के लिए लॉक हो जाए['os-hardening']['auth']['lockout_time'] = 600
सेकंड में वह समय जो गुजरना आवश्यक है, यदि खाता बहुत अधिक असफल प्रमाणीकरण प्रयासों के कारण लॉक हो गया था['os-hardening']['auth']['timeout'] = 60
सेकंड में प्रमाणीकरण टाइमआउट, इसलिए यदि यह समय बीत जाता है तो लॉगिन समाप्त हो जाएगा['os-hardening']['auth']['allow_homeless'] = false
true यदि बिना होम वाले उपयोगकर्ताओं को लॉगिन करने की अनुमति देनी है['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
true यदि आप passwdqc का उपयोग करके PAM में मजबूत पासवर्ड जाँच का उपयोग करना चाहते हैं['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
किसी भी विकल्प पंक्ति (स्ट्रिंग के रूप में) पर सेट करें जिसे आप passwdqc को पास करना चाहते हैं['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
उस कुकबुक के नाम पर सेट करें जिससे /usr/share/pam-configs/passwdqc फ़ाइल के लिए टेम्पलेट प्राप्त किया जाता है['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
उस कुकबुक के नाम पर सेट करें जिससे /usr/share/pam-configs/tally2 फ़ाइल के लिए टेम्पलेट प्राप्त किया जाता है['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
उस कुकबुक के नाम पर सेट करें जिससे /etc/pam.d/system-auth-ac फ़ाइल के लिए टेम्पलेट प्राप्त किया जाता है['os-hardening']['security']['users']['allow'] = []
उन चीज़ों की सूची, जिन्हें उपयोगकर्ता को करने की अनुमति है। इसमें शामिल हो सकता है: change_user['os-hardening']['security']['kernel']['enable_module_loading'] = true
true यदि आप सिस्टम चलने के बाद कर्नेल मॉड्यूल बदलने की अनुमति देना चाहते हैं (जैसे modprobe, rmmod)['os-hardening']['security']['kernel']['disable_filesystems'] = ['cramfs', 'freevxfs', 'jffs2', 'hfs', 'hfsplus', 'squashfs', 'udf', 'vfat']
कर्नेल फ़ाइल सिस्टम मॉड्यूल की सूची, जो लोडिंग के लिए ब्लैकलिस्टेड हैं (जैसे वे अप्रयुक्त हैं और अक्षम किए जा सकते हैं)। इस ब्लैकलिस्टिंग से पूरी तरह बचने के लिए इसे [] पर सेट करें['os-hardening']['security']['kernel']['enable_sysrq'] = false['os-hardening']['security']['kernel']['enable_core_dump'] = false['os-hardening']['security']['suid_sgid']['enforce'] = true
true यदि आप SUID/SGID बिट्स कम करना चाहते हैं। पहले से ही उन वस्तुओं की एक सूची है जिन्हें कॉन्फ़िगर किया गया है, लेकिन आप अपनी खुद की भी जोड़ सकते हैं['os-hardening']['security']['suid_sgid']['blacklist'] = []
उन पथों की सूची जिनके SUID/SGID बिट्स हटाए जाने चाहिए['os-hardening']['security']['suid_sgid']['whitelist'] = []
उन पथों की सूची जिनके SUID/SGID बिट्स बदले नहीं जाने चाहिए['os-hardening']['security']['suid_sgid']['remove_from_unknown'] = false
true यदि आप किसी भी फ़ाइल से SUID/SGID बिट्स हटाना चाहते हैं, जो blacklist में स्पष्ट रूप से कॉन्फ़िगर नहीं है। यह हर Chef रन को माउंटेड फ़ाइल सिस्टम में उन SUID/SGID बिट्स की खोज करने देगा जो डिफ़ॉल्ट और उपयोगकर्ता ब्लैकलिस्ट में कॉन्फ़िगर नहीं हैं। यदि यह SUID/SGID बिट पाता है, तो इसे हटा दिया जाएगा, जब तक कि यह फ़ाइल आपकी whitelist में न हो।['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false
ऊपर remove_from_unknown की तरह, केवल अंतर यह है कि SUID/SGID बिट्स नहीं हटाए जाते।
यह अभी भी SUID/SGID बिट्स की खोज के लिए फ़ाइल सिस्टम को खोजेगा लेकिन केवल उन्हें आपके लॉग में प्रिंट करेगा। यह विकल्प केवल तभी अनुशंसित है, जब आप पहली बार SUID/SGID बिट्स के लिए remove_from_unknown कॉन्फ़िगर करते हैं, ताकि आप बदली जा रही फ़ाइलों को देख सकें और अपनी whitelist और blacklist में समायोजन कर सकें।['os-hardening']['security']['packages']['clean'] = true
ज्ञात समस्याओं वाले पैकेज हटाता है।['os-hardening']['security']['packages']['list'] = ['xinetd','inetd','ypserv','telnet-server','rsh-server']
हटाने के लिए पैकेजों की सूची, डिफ़ॉल्ट रूप से हम निम्नलिखित पैकेज हटाते हैं:
['os-hardening']['security']['selinux_mode'] = 'unmanaged'
unmanaged पर सेट करें यदि आप selinux कॉन्फ़िगरेशन को वैसे ही छोड़ना चाहते हैं। SELinux को लागू करने के लिए enforcing या अनुमेय SELinux के लिए permissive पर सेट करें।default.rb आपके सिस्टम की ohai स्वतः-पहचान विशेषताओं के आधार पर अन्य घटकों को शामिल करता है। जैसे गैर-RHEL सिस्टम पर selinux निष्पादित न करें। आप इस व्यवहार को ओवरराइड कर सकते हैं और ओवरराइड स्तर पर node['os-hardening']['components'] में विशेषताएँ सेट करके घटकों को निष्पादित करने या न करने के लिए बाध्य कर सकते हैं। उदाहरण
# कुछ विशेषता फ़ाइल
# sysctl और auditd शामिल न करें
override['os-hardening']['components']['sysctl'] = false
override['os-hardening']['components']['auditd'] = false
# selinux को शामिल करने के लिए बाध्य करें
override['os-hardening']['components']['selinux'] = true
वर्तमान कार्यान्वयन में विभिन्न घटक विभिन्न रेसिपी में स्थित हैं। संभावित घटक नामों के लिए उपलब्ध रेसिपी या default.rb देखें।
रेसिपी को run_list में जोड़ें, यह अंतिम होनी चाहिए:
"recipe[os-hardening]"
विशेषताएँ कॉन्फ़िगर करें:
"security" : {
"kernel" : {
"enable_module_loading" : true
}
},
कृपया chef-dk, VirtualBox या VMware Workstation और Vagrant स्थापित करें।
लिंटिंग की जाँच rubocop और foodcritic से की जाती है:
$ chef exec rake lint
.....
यूनिट/स्पेक परीक्षण chefspec से किए जाते हैं:
$ chef exec rake spec
.....
एकीकरण परीक्षण test-kitchen और inspec से किए जाते हैं:
$ chef exec rake kitchen
.....
# या आप सीधे kitchen का उपयोग कर सकते हैं
$ kitchen test
आप Travis CI में अपने फोर्क का परीक्षण सक्षम कर सकते हैं। डिफ़ॉल्ट रूप से आपको kitchen-dokken के साथ लिंटिंग, स्पेक परीक्षण और एकीकरण परीक्षण मिलेंगे।
kitchen-dokken के साथ एकीकरण परीक्षण सब कुछ कवर नहीं करते क्योंकि वे कंटेनर वातावरण में चलते हैं। पूर्ण एकीकरण परीक्षण DigitalOcean का उपयोग करके निष्पादित किए जा सकते हैं।
यदि आप अपने फोर्क के लिए पूर्ण एकीकरण परीक्षण चाहते हैं, तो आपको अपने फोर्क की सेटिंग्स में निम्नलिखित पर्यावरण चर जोड़ने होंगे:
DIGITALOCEAN_ACCESS_TOKEN - DigitalOcean के लिए एक्सेस टोकनCI_SSH_KEY - कुछ ssh कुंजी का निजी भाग, DigitalOcean पर आपके इंस्टेंस के लिए उपलब्ध, base64 एन्कोडेड रूप में (जैसे cat id_rsa | base64 -w0 ; echo)DIGITALOCEAN_SSH_KEY_IDS - CI_SSH_KEY का DigitalOcean में ID, अधिक जानकारी के लिए यह देखेंयह कुकबुक अधिकतर निम्नलिखित गाइडों पर आधारित है:
आप सभी का धन्यवाद!!
योगदानकर्ता दिशानिर्देश देखें।
Apache License, Version 2.0 (the "License") के तहत लाइसेंस प्राप्त; आप इस फ़ाइल का उपयोग केवल लाइसेंस के अनुपालन में कर सकते हैं। आप लाइसेंस की एक प्रति निम्नलिखित पते पर प्राप्त कर सकते हैं
http://www.apache.org/licenses/LICENSE-2.0
जब तक लागू कानून द्वारा आवश्यक न हो या लिखित रूप में सहमत न हो, लाइसेंस के तहत वितरित सॉफ़्टवेयर "AS IS" आधार पर वितरित किया जाता है, बिना किसी प्रकार की वारंटी या शर्तों के, व्यक्त या निहित। लाइसेंस के तहत विशिष्ट अनुमतियों और सीमाओं के लिए लाइसेंस देखें।