Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
puppet-os-hardening — وحدة Puppet هذه توفر العديد من الإعدادات المتعلقة بالأمان، مما يمنح حماية أساسية شاملة. | Kitploit
أدوات/GitHubGitHub/dev-sec/puppet-os-hardening
أمن البنية التحتية السحابيةماسحات الثغرات الأمنيةتدقيق التكوينأمن الشبكاتDevSecOpsالمصادقة
GitHubdev-sec/puppet-os-hardening

puppet-os-hardening

وحدة Puppet هذه توفر العديد من الإعدادات المتعلقة بالأمان، مما يمنح حماية أساسية شاملة.

عرض المستودع
29110014منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
الموقع الإلكتروني
مشاركة

تحصين نظام التشغيل Puppet

Puppet Forge Version Puppet Forge Downloads Puppet Forge Endorsement Build Status

جدول المحتويات

  1. وصف الوحدة - ما الذي تفعله الوحدة ولماذا هي مفيدة
  2. الإعداد - أساسيات البدء مع os_hardening
    • متطلبات الإعداد
    • البدء مع os_hardening
  3. الاستخدام - خيارات التكوين والوظائف الإضافية
    • مهم لـ Puppet Enterprise
    • المعلمات
    • استخدام Hiera
    • ملاحظة حول الحزم المطلوبة/غير المطلوبة والخدمات المعطلة
  • القيود - توافق أنظمة التشغيل، إلخ.
  • التطوير - دليل للمساهمة في الوحدة
  • الاختبار - بوابات الجودة لتغييراتك في الكود
    • الاختبار المحلي
    • اختبارات PDK
    • اختبارات التكامل (Docker)
    • اختبارات التكامل (DigitalOcean)
    • اختبار CI لطلبات السحب والنسخ
  • تواصل معنا
  • المساهمون + الشكر
  • الترخيص والمؤلف
  • وصف الوحدة

    توفر وحدة Puppet هذه تكوينًا آمنًا لنظام التشغيل الأساسي لديك مع التحصين وهي جزء من DevSec Hardening Framework.

    الإعداد

    متطلبات الإعداد

    • Puppet OpenSource أو Enterprise
    • وحدة stdlib
    • وحدة sysctl

    البدء مع os_hardening

    بعد إضافة هذه الوحدة، يمكنك استخدام الفئة:

    root@kitploit:~
    class { 'os_hardening': }
    

    جميع المعلمات موجودة داخل الفئة الرئيسية os_hardening، لذا عليك فقط تمريرها بهذه الطريقة:

    root@kitploit:~
    class { 'os_hardening':
      enable_ipv4_forwarding => true,
    }
    

    الاستخدام

    مهم لـ Puppet Enterprise

    إذا كنت تستخدم هذه الوحدة في بيئة PE، يجب عليك تعيين pe_environment = true وإلا سيقوم puppet بإصدار خطأ (مورد مكرر)!

    المعلمات

    • system_environment = 'default' تحديد السياق الذي يعمل فيه النظام. بعض الخيارات لا تعمل مع docker/lxc
    • pe_environment = false اضبط هذا على true إذا كنت تستخدم Puppet Enterprise مهم - انظر أعلاه
    • extra_user_paths = [] إضافة مسارات إضافية إلى متغير PATH للمستخدم (الافتراضي فارغ).
    • umask = undef umask المستخدم لإنشاء أدلة منزلية جديدة بواسطة useradd / newusers (مثل '027')
    • maildir = undef مسار maildir (مثل '/var/mail')
    • usergroups = true true إذا كنت تريد مجموعات منفصلة لكل مستخدم، false خلاف ذلك
    • sys_uid_min = undef و sys_gid_min = undef تجاوز الإعداد الافتراضي لـ login.defs
    • password_max_age = 60 الحد الأقصى لعمر كلمة المرور
    • password_min_age = 7 الحد الأدنى لعمر كلمة المرور (قبل السماح بأي تغيير آخر لكلمة المرور)
    • password_warn_age = 7 أيام التحذير قبل استحقاق تغيير كلمة المرور
    • login_retries = 5 الحد الأقصى لعدد محاولات تسجيل الدخول إذا كانت كلمة المرور خاطئة (عادةً ما يتم تجاوزها بواسطة PAM / auth_retries)
    • login_timeout = 60 مهلة المصادقة بالثواني، لذا سينتهي تسجيل الدخول إذا مر هذا الوقت
    • chfn_restrict = '' الحقول التي يمكن تغييرها بواسطة المستخدمين العاديين باستخدام chfn
    • allow_login_without_home = false true للسماح للمستخدمين بدون منزل بتسجيل الدخول
    • allow_change_user = false إذا كان يمكن للمستخدم استخدام su لتغيير تسجيل دخوله
    • ignore_users = [] مصفوفة من حسابات مستخدمي النظام التي يجب عدم تحصينها (تعطيل كلمة المرور وتعيين الصدفة إلى /usr/sbin/nologin)
    • folders_to_restrict = ['/usr/local/games','/usr/local/sbin','/usr/local/bin','/usr/bin','/usr/sbin','/sbin','/bin'] مجلدات للتأكد من أن المجموعة والعالم ليس لديهما حق الكتابة إليها أو إلى أي من محتوياتها
    • ignore_max_files_warnings = false true إذا كنت لا تريد أن يقوم puppet بتسجيل تحذيرات max_files والأداء عند التكرار على المجلدات التي تحتوي على أكثر من 1000 ملف مثل /bin /usr/bin
    • recurselimit = 5 عمق الدليل لفحص الأذونات التكراري
    • passwdqc_enabled = true true إذا كنت تريد استخدام فحص كلمات المرور القوية في PAM باستخدام passwdqc
    • auth_retries = 5 الحد الأقصى لعدد محاولات المصادقة، قبل قفل الحساب لبعض الوقت
    • auth_lockout_time = 600 الوقت بالثواني الذي يجب أن يمر، إذا تم قفل الحساب بسبب كثرة محاولات المصادقة الفاشلة
    • passwdqc_options = 'min=disabled,disabled,16,12,8' اضبط على أي سطر خيارات (كسلسلة نصية) تريد تمريره إلى passwdqc
    • manage_pam_unix = false true إذا كنت تريد إدارة pam_unix بواسطة هذه الوحدة
    • enable_pw_history = true true إذا كنت تريد أن يتذكر pam_unix سجل كلمات المرور لمنع إعادة استخدام كلمات المرور (يتطلب manage_pam_unix = true)
    • pw_remember_last = 5 عدد كلمات المرور الأخيرة (مثل 5 سيمنع المستخدم من إعادة استخدام أي من آخر 5 كلمات مرور له)
    • only_root_may_su = false true عندما يكون root فقط وأعضاء مجموعة wheel هم من يمكنهم استخدام su، مطلوب أن يكون true للامتثال لمعيار CIS Benchmark
    • root_ttys = ['console','tty1','tty2','tty3','tty4','tty5','tty6'] أجهزة TTY المسجلة لـ root
    • whitelist = [] جميع الملفات التي يجب الاحتفاظ ببتات SUID/SGID الخاصة بها إذا تم تعيينها (سيتم دمجها مع قائمة بيضاء محددة مسبقًا من الملفات)
    • blacklist = [] جميع الملفات التي يجب إزالة بتات SUID/SGID الخاصة بها إذا تم تعيينها (سيتم دمجها مع قائمة سوداء محددة مسبقًا من الملفات)
    • remove_from_unknown = false true إذا كنت تريد إزالة بتات SUID/SGID من أي ملف غير مكوّن صراحةً في blacklist. سيجعل هذا كل تشغيل لـ Puppet يبحث في أنظمة الملفات المثبتة عن بتات SUID/SGID غير المكونة في القائمة السوداء الافتراضية وقائمة المستخدم السوداء. إذا وجد بت SUID/SGID، فسيتم إزالته، ما لم يكن هذا الملف في whitelist الخاص بك.
    • dry_run_on_unknown = false مثل remove_from_unknown أعلاه، فقط لا تتم إزالة بتات SUID/SGID. سيظل يبحث في أنظمة الملفات عن بتات SUID/SGID لكنه سيطبعها فقط في سجلك. هذا الخيار موصى به فقط، عندما تقوم أولاً بتكوين remove_from_unknown لبتات SUID/SGID، بحيث يمكنك رؤية الملفات التي يتم تغييرها وإجراء تعديلات على whitelist و blacklist الخاص بك.
    • enable_module_loading = true true إذا كنت تريد السماح بتغيير وحدات kernel بمجرد تشغيل النظام (مثل modprobe، rmmod)
    • load_modules = [] تحميل هذه الوحدات عبر initramfs إذا كان enable_module_loading هو false
    • disable_filesystems = ['cramfs','freevxfs','jffs2','hfs','hfsplus','squashfs','udf'] مصفوفة من أنظمة الملفات (وحدات kernel) التي يجب تعطيلها
    • cpu_vendor = 'intel' مطلوب فقط إذا كان enable_module_loading = false: تعيين بائع CPU للوحدات المراد تحميلها
    • icmp_ratelimit = '100' القيمة الافتراضية '100'، تسمح بالتجاوز، تتطلب String
    • desktop_enabled = false true إذا كان هذا نظام سطح مكتب، أي Xorg، KDE/GNOME/Unity/إلخ
    • enable_ipv4_forwarding = false true إذا كان هذا النظام يتطلب إعادة توجيه الحزم في IPv4 (مثل Router)، false خلاف ذلك
    • manage_ipv6 = true true لتحصين إعداد ipv6، false لتجاهل ipv6 تمامًا
    • enable_ipv6 = false false لتعطيل ipv6 على هذا النظام، true لتمكينه
    • enable_ipv6_forwarding = false true إذا كان هذا النظام يتطلب إعادة توجيه الحزم في IPv6 (مثل Router)، false خلاف ذلك
    • arp_restricted = true true إذا كنت تريد تقييد سلوك الإعلان عن ARP والرد عليه، false خلاف ذلك
    • arp_ignore_samenet = false true سيتجاهل الحزم غير القادمة من نفس الشبكة الفرعية (arp_ignore = 2)، false سيتحقق فقط من عنوان IP الهدف (arp_ignore = 1)
    • enable_sysrq = false true لتمكين مفتاح sysrq السحري، false خلاف ذلك
    • enable_core_dump = false false لمنع إنشاء ملفات التفريغ الأساسية (core dumps)، true خلاف ذلك
    • enable_stack_protection = true لتوزيع عشوائي لتخطيط مساحة العنوان (ASLR). يمكن أن يساعد ASLR في صد أنواع معينة من هجمات تجاوز سعة المخزن المؤقت. يمكن لـ ASLR تحديد موقع القاعدة والمكتبات والكومة والمكدس في مواقع عشوائية في مساحة عنوان العملية، مما يجعل من الصعب على البرنامج المهاجم التنبؤ بعنوان الذاكرة للتعليمة التالية.
    • enable_rpfilter = true true لتمكين تصفية المسار العكسي (تجاهل الحزم المزيفة)، false خلاف ذلك
    • rpfilter_loose = false (فقط إذا كان enable_rpfilter هو true) الوضع المرن (rp_filter = 2) إذا كان true، الوضع الصارم خلاف ذلك
    • enable_log_martians = true true لتمكين تسجيل حزم الشبكة المشبوهة / غير القابلة للتوجيه، false خلاف ذلك تحذير - قد يؤدي هذا إلى إنشاء ملفات سجل ضخمة!
    • unwanted_packages = [] الحزم التي يجب إزالتها من النظام
    • wanted_packages = [] الحزم التي يجب إضافتها إلى النظام
    • disabled_services = [] الخدمات التي يجب عدم تمكينها
    • enable_grub_hardening = false اضبط على true لتمكين بعض قواعد تحصين grub
    • grub_user = 'root' اسم مستخدم grub الذي يجب توفيره عند تغيير التكوين في موجه grub
    • grub_password_hash = '' تجزئة كلمة مرور تم إنشاؤها باستخدام grub-mkpasswd-pbkdf2 مرتبطة بـ grub_user
    • boot_without_password = true إعداد Grub بحيث يتطلب كلمة مرور فقط عند تغيير إدخال، وليس عند تشغيل إدخال موجود
    • system_umask = undef إذا تم تعيين هذا المتغير، قم بإعداد umask لجميع المستخدمين في النظام (مثل '027')
    • manage_home_permissions = false اضبط على true لإدارة أذونات ملفات وأدلة المستخدمين المحليين (g-w,o-rwx)
    • ignore_home_users = [] مصفوفة للمستخدمين الذين لا يجب تقييدهم بواسطة manage_home_permissions
    • manage_log_permissions = false اضبط على true لإدارة أذونات ملفات السجل (g-wx,o-rwx)
    • restrict_log_dir = ['/var/log/'] تعيين دليل السجل الرئيسي
    • ignore_restrict_log_dir = [] مصفوفة لاستبعاد أدلة السجل تحت دليل السجل الرئيسي
    • ignore_files_in_folder_to_restrict = [] مصفوفة لتجاهل الملفات المراد تحصينها في الأدلة تحت مصفوفة folder_to_restrict
    • manage_cron_permissions = false اضبط على true لإدارة أذونات ملفات cron (og-rwx)
    • enable_sysctl_config = true اضبط على false لتعطيل تكوين sysctl
    • manage_system_users = true اضبط على false لتعطيل إدارة مستخدمي النظام (كلمة مرور فارغة وتعيين صدفة nologin)
    • shadow_group = undef تجاوز ملكية المجموعة لـ /etc/shadow
    • shadow_mode = undef تجاوز أذونات الملف لـ /etc/shadow

    استخدام Hiera

    من الممكن أيضًا تعيين المعلمات في Hiera بهذه الطريقة:

    root@kitploit:~
    os_hardening::password_max_age:  90
    os_hardening::password_min_age:  0
    os_hardening::password_warn_age: 14
    os_hardening::unwanted_packages: ['telnet']
    os_hardening::ignore_users:      ['git','githook','ansible','apache','puppetboard']
    

    ملاحظة حول الحزم المطلوبة/غير المطلوبة والخدمات المعطلة

    نظرًا لأن CIS Distribution Independent Linux Benchmark هو نقطة بداية جيدة بخصوص تحصين الأنظمة، فقد اعتُبر من المناسب تنفيذ طريقة سهلة للتعامل مع الحالات الفردية التي لا يرغب المرء في كتابة وحدة كاملة لها.

    على سبيل المثال، لزيادة الامتثال لـ CIS DIL على نظام Debian، يجب تعيين ما يلي:

    root@kitploit:~
    wanted_packages   => ['ntp'],
    unwanted_packages => ['telnet'],
    disabled_services => ['rsync'],
    

    الإعدادات الافتراضية لـ NTP جيدة بالفعل لمعظم الحالات، لذا ليس من الضروري فورًا تنفيذ وحدة. ومع ذلك، إذا كنت تستخدم وحدة للتحكم في هذه الخدمات، فهذا بالطبع مفضل.

    القيود

    تم اختبار هذه الوحدة ويجب أن تعمل على معظم توزيعات Linux. للحصول على قائمة شاملة بأنظمة التشغيل المدعومة، راجع metadata.json

    التطوير

    إذا كنت تريد المساهمة، يرجى اتباع دليل المساهمة الخاص بنا.

    الاختبار

    الاختبار المحلي

    يجب أن يكون لديك مترجم Ruby مثبتًا على نظامك. قد تكون فكرة جيدة استخدام rvm لهذا الغرض. بالإضافة إلى ذلك، يجب تثبيت Puppet Development Kit PDK و Docker Community Edition، حيث تعمل اختبارات التكامل في حاويات Docker.

    لجميع اختبارات التكامل الخاصة بنا نستخدم test-kitchen. إذا لم تكن معتادًا على test-kitchen فيرجى إلقاء نظرة على دليلهم.

    اختبارات PDK

    root@kitploit:~
    # اختبارات الصياغة و Lint
    pdk validate
    
    # اختبارات الوحدة
    pdk test unit
    

    اختبارات التكامل (Docker)

    افتراضيًا، ستعمل اختبارات التكامل في حاويات docker - لسوء الحظ لا يمكن لجميع الاختبارات العمل في بيئات الحاويات (مثل إعدادات sysctl).

    root@kitploit:~
    # تثبيت التبعيات
    gem install bundler
    bundle install
    
    # قائمة بجميع حالات الاختبار
    bundle exec kitchen list
    
    # اختبار سريع على جهاز واحد
    bundle exec kitchen test ubuntu-16-04-puppet5
    
    # اختبار على جميع الأجهزة
    bundle exec kitchen test
    

    اختبارات التكامل (DigitalOcean)

    لاختبارات التكامل الكاملة مع DigitalOcean يجب أن تحصل على حساب هناك وإعداد بعض متغيرات البيئة:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN - رمز الوصول لـ DigitalOcean
    • DIGITALOCEAN_SSH_KEY_IDS - المعرف في DigitalOcean لمفتاح ssh الخاص بك، راجع هذا لمزيد من المعلومات

    يجب تسمية مفتاح ssh باسم ~/.ssh/do_ci وإضافته إلى ملفك الشخصي في DigitalOcean. بعد ذلك تكون جاهزًا لتشغيل الاختبارات كما هو موضح في اختبارات التكامل (Docker).

    إذا كنت تريد تشغيل اختبارات التكامل الكاملة مع Github Actions في نسختك، فسيتعين عليك إضافة هذه متغيرات البيئة في إعدادات نسختك:

    • KITCHEN_LOCAL_YAML=kitchen.do.yml
    • DIGITALOCEAN_ACCESS_TOKEN - رمز الوصول لـ DigitalOcean
    • CI_SSH_KEY - الجزء الخاص من مفتاح ssh، المتاح على DigitalOcean لحالاتك، في شكل مشفر base64 (مثل cat id_rsa | base64 -w0 ; echo)
    • DIGITALOCEAN_SSH_KEY_IDS - المعرف في DigitalOcean لـ CI_SSH_KEY، راجع هذا لمزيد من المعلومات

    اختبار CI لطلبات السحب والنسخ

    سيتم اختبار التصحيحات الخاصة بك تلقائيًا عبر Github Actions. ملخص الاختبار مرئي على Github في طلب السحب الخاص بك، يمكن العثور على التفاصيل في الاختبارات المرتبطة.

    تواصل معنا

    يمكنك الوصول إلينا بعدة طرق:

    • @DevSecIO على Twitter
    • القائمة البريدية للأسئلة والنقاش العام: [email protected] [اشتراك]
    • القائمة البريدية لإعلانات الإصدارات (لا يمكن إرسال مشاركات هنا): [email protected] [اشتراك]

    المساهمون + الشكر

    • Dominik Richter arlimus
    • Edmund Haselwanter ehaselwanter
    • Christoph Hartmann chris-rock
    • Thomas Dütsch a-tom
    • Patrick Meier atomic111
    • Artem Sidorenko artem-sidorenko
    • Kurt Huwig kurthuwig
    • Matthew Haughton 3flex
    • Reik Keutterling spielkind
    • Daniel Dreier danieldreier
    • Timo Goebel timogoebel
    • Tristan Helmich fadenb
    • Michael Geiger mcgege
    • Timo Bergemann LooOOooM

    للنقل الأصلي لـ chef-os-hardening إلى puppet:

    • Artem Sidorenko artem-sidorenko
    • Frank Kloeker eumel8

    شكرًا لكم جميعًا!!

    الترخيص والمؤلف

    • المؤلف:: Dominik Richter [email protected]
    • المؤلف:: Deutsche Telekom AG

    مرخص بموجب رخصة Apache، الإصدار 2.0 (the "License")؛ لا يجوز لك استخدام هذا الملف إلا بالامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص على

    root@kitploit:~
      http://www.apache.org/licenses/LICENSE-2.0
    

    ما لم يكن مطلوبًا بموجب القانون المعمول به أو متفقًا عليه كتابيًا، يتم توزيع البرنامج المرخص بموجب الترخيص على أساس "AS IS"، بدون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص للغة المحددة التي تحكم الأذونات و القيود بموجب الترخيص.

    تنزيل الأداة