
هذا الكوكبوك الخاص بـ Chef يوفر العديد من الإعدادات المتعلقة بالأمان، مما يمنح حماية أساسية شاملة.
يوفر هذا الـ cookbook العديد من الإعدادات المتعلقة بالأمان، مما يوفر حماية أساسية شاملة.
يقوم بتكوين:
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
الحد الأقصى لعمر كلمة المروريتضمن default.rb مكونات أخرى بناءً على سمات الاكتشاف التلقائي (ohai) لنظامك. على سبيل المثال، لا تقم بتنفيذ selinux على أنظمة غير RHEL. يمكنك تجاوز هذا السلوك وفرض تنفيذ المكونات أو عدم تنفيذها عبر تعيين السمات في 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.
يتم فحص التدقيق اللغوي (Linting) باستخدام 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 - رمز الوصول لـ DigitalOceanCI_SSH_KEY - الجزء الخاص من بعض مفاتيح ssh، المتوفرة على DigitalOcean لمثيلاتك، في شكل مشفر base64 (مثل cat id_rsa | base64 -w0 ; echo)DIGITALOCEAN_SSH_KEY_IDS - المعرف في DigitalOcean لـ CI_SSH_KEY، راجع هذا لمزيد من المعلوماتيعتمد هذا الـ cookbook بشكل أساسي على أدلة من:
شكرًا لكم جميعًا!!
راجع دليل المساهمة.
مرخص بموجب رخصة Apache، الإصدار 2.0 (the "License")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يقتضِ القانون المعمول به أو يُتفق عليه كتابيًا، يتم توزيع البرنامج المرخص بموجب الترخيص على أساس "AS IS"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص للغة المحددة التي تحكم الأذونات و القيود بموجب الترخيص.
['os-hardening']['auth']['pw_min_age'] = 7
الحد الأدنى لعمر كلمة المرور (قبل السماح بأي تغيير آخر لكلمة المرور)['os-hardening']['auth']['pw_warn_age'] = 7
عدد الأيام قبل بلوغ الحد الأقصى لعمر كلمة المرور للتحذير من التغيير الوشيك['os-hardening']['auth']['uid_min'] = 1000
الحد الأدنى لمعرفات المستخدمين (UIDs) المعينة بواسطة useradd['os-hardening']['auth']['uid_max'] = 60000
الحد الأعلى لمعرفات المستخدمين (UIDs) المعينة بواسطة useradd['os-hardening']['auth']['gid_min'] = 1000
الحد الأدنى لمعرفات المجموعات (GIDs) المعينة بواسطة groupadd['os-hardening']['auth']['gid_max'] = 60000
الحد الأعلى لمعرفات المجموعات (GIDs) المعينة بواسطة groupadd['os-hardening']['auth']['retries'] = 5
الحد الأقصى لعدد محاولات المصادقة، قبل قفل الحساب لبعض الوقت['os-hardening']['auth']['lockout_time'] = 600
الوقت بالثواني الذي يجب أن يمر، إذا تم قفل الحساب بسبب كثرة محاولات المصادقة الفاشلة['os-hardening']['auth']['timeout'] = 60
مهلة المصادقة بالثواني، بحيث يخرج تسجيل الدخول إذا مر هذا الوقت['os-hardening']['auth']['allow_homeless'] = false
true للسماح للمستخدمين بدون مجلد رئيسي (home) بتسجيل الدخول['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
true إذا كنت تريد استخدام فحص كلمات مرور قوي في PAM باستخدام passwdqc['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
اضبط على أي سطر خيارات (كنص) تريد تمريره إلى passwdqc['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
اضبط على اسم الـ cookbook الذي يتم الحصول على القالب منه لملف /usr/share/pam-configs/passwdqc['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
اضبط على اسم الـ cookbook الذي يتم الحصول على القالب منه لملف /usr/share/pam-configs/tally2['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
اضبط على اسم الـ cookbook الذي يتم الحصول على القالب منه لملف /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 ولكنه سيطبعها فقط في سجلّك. يُنصح بهذا الخيار فقط، عند تكوين remove_from_unknown لوحدات SUID/SGID لأول مرة، بحيث يمكنك رؤية الملفات التي يتم تغييرها وإجراء تعديلات على 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 كما هو. اضبط على enforcing للفرض أو permissive لوضع SELinux المتساهل.