
يولّد محتوى أمنيًا لـ SCAP وAnsible وBash وCEL لتقييم الامتثال والتحصين الآلي عبر مضيفات Linux والحاويات وKubernetes.
الغرض من هذا المشروع هو إنشاء محتوى سياسات أمنية لمنصات متعددة — Red Hat Enterprise Linux، Fedora، Ubuntu، Debian، SUSE Linux Enterprise Server (SLES)،... — بالإضافة إلى منتجات — Firefox،... نهدف إلى جعل كتابة محتوى أمني جديد وصيانة المحتوى الأمني الحالي بأسهل ما يمكن في جميع الصيغ الشائعة الاستخدام.

"محتوى SCAP" يشير إلى المستندات بصيغ XCCDF وOVAL و SCAP source data stream. يمكن تقديم هذه المستندات بأشكال مختلفة ومن قِبل منظمات مختلفة لتلبية احتياجاتها من أتمتة الأمان والتنفيذ الفني. للاستخدام العام، نوصي باستخدام SCAP source data streams لأنها تحتوي على جميع البيانات التي تحتاجها لتقييم الأجهزة ووضعها في حالة امتثال. تُعدّ تدفقات البيانات جزءًا من أرشيفات ZIP الخاصة بإصداراتنا.
"محتوى Ansible" يشير إلى قوائم تشغيل Ansible المُولّدة من الملفات الشخصية الأمنية. يمكن استخدامها في وضع الفحص (check-mode) لتقييم الامتثال، وكذلك في وضع التشغيل لوضع الأجهزة في حالة امتثال. ننشر هذه القوائم على Ansible Galaxy وكذلك في أرشيفات ZIP الخاصة بالإصدارات.
"ملفات إصلاح Bash" تشير إلى نصوص Bash المُولّدة من الملفات الشخصية الأمنية. صُمّمت لتُشغَّل على الأجهزة لوضعها في حالة امتثال. نوصي باستخدام صيغ أخرى لكننا نتفهم أنه في بعض سيناريوهات النشر، يكون Bash هو الخيار الوحيد.
"محتوى CEL" يشير إلى محتوى الامتثال باستخدام لغة التعبير الشائعة (Common Expression Language - CEL) لمنصات Kubernetes وOpenShift. يُولَّد محتوى CEL كملفات YAML وهو مصمم لتقييم موارد Kubernetes الأصلية عبر مشغّل الامتثال (compliance-operator)، دون الحاجة إلى وصول شل إلى العقد. تُستخدم هذه الصيغة لفحوصات الامتثال على مستوى المنصة في أنظمة تنسيق الحاويات.
نريد أن تكون المنظمات المتعددة قادرة على تطوير المحتوى الأمني بكفاءة. ومن خلال الاستفادة من نظام البناء القوي لهذا المشروع، نتجنب أكبر قدر ممكن من التكرار.
يجمع نظام البناء بين ملفات قواعد YAML سهلة التحرير مع فحوصات OVAL، ومقتطفات مهام Ansible، وإصلاحات Bash، وملفات أخرى. تُوفَّر القوالب في كل خطوة لتجنب الكود المتكرر. المعرفات الأمنية (CCE, NIST ID, STIG, ...) تظهر في جميع صيغ الإخراج لدينا لكنها جميعًا مصدرها ملفات قواعد YAML.
نحن نتفهم أنه اعتمادًا على احتياجات مؤسستك، قد تحتاج إلى استخدام صيغة محددة لمحتوى الأمن. نترك لك الاختيار.
نستخدم صيغة قواعد YAML المستوحاة من OpenControl للإدخال. اكتب مرة واحدة و ولّد محتوى أمنيًا بصيغ XCCDF وAnsible وغيرها.
title: 'Configure The Number of Allowed Simultaneous Requests'
description: |-
The <tt>MaxKeepAliveRequests</tt> directive should be set and configured to
<sub idref="var_max_keepalive_requests" /> or greater by setting the following
in <tt>/etc/httpd/conf/httpd.conf</tt>:
<pre>MaxKeepAliveRequests {{{ xccdf_value("var_max_keepalive_requests") }}}</pre>
rationale: |-
Resource exhaustion can occur when an unlimited number of concurrent requests
are allowed on a web site, facilitating a denial of service attack. Mitigating
this kind of attack will include limiting the number of concurrent HTTP/HTTPS
requests per IP address and may include, where feasible, limiting parameter
values associated with keepalive, (i.e., a parameter used to limit the amount of
time a connection may be inactive).
severity: medium
identifiers:
cce: "80551-5"
يمكن استخدام محتوانا الأمني لفحص الأجهزة الفعلية (bare-metal)، والآلات الافتراضية، وصور الآلات الافتراضية (qcow2 وغيرها)، والحاويات (بما في ذلك Docker)، وصور الحاويات.
نستخدم فحوصات المنصة لاكتشاف ما إذا كان ينبغي علينا تقييم بعض القواعد أم لا. على سبيل المثال: فحوصات الأقسام المنفصلة منطقية تمامًا على الأجهزة الفعلية ولكنها تتعارض مع الممارسات الموصى بها على الحاويات.
الطريقة المفضلة للتثبيت هي عبر مدير الحزم في توزيعتك. على Red Hat Enterprise Linux وFedora يمكنك استخدام:
yum install scap-security-guide
على Debian (sid)، يمكنك استخدام:
apt install ssg-debian # for Debian guides
apt install ssg-debderived # for Debian-based distributions (e.g. Ubuntu) guides
apt install ssg-nondebian # for other distributions guides (RHEL, Fedora, etc.)
apt install ssg-applications # for application-oriented guides (Firefox, JBoss, etc.)
حمّل أرشيف SSG ZIP المُبنى مسبقًا من صفحة الإصدارات. كل ملف ZIP هو أرشيف يحتوي على تدفقات بيانات SCAP المصدر الجاهزة.
إذا لم يكن ComplianceAsCode مُعبأً في توزيعتك (قد يكون موجودًا هناك كحزمة scap-security-guide)، أو إذا كانت
النسخة المُعبأة قديمة جدًا، فستحتاج إلى بناء المحتوى بنفسك
وتثبيته عبر make install. يرجى الاطلاع على مستند دليل المطور
لمزيد من المعلومات. نوصي أيضًا بفتح مشكلة في متتبع أخطاء تلك التوزيعة
للتعبير عن اهتمامك.
نفترض أنك قمت بتثبيت ComplianceAsCode على مستوى النظام في موقع قياسي من مصادر المنبع الحالية كما هو موضح في القسم السابق.
هناك عدة طرق لاستهلاك محتوى ComplianceAsCode، وسنستعرض بعضًا منها فقط هنا.
oscapأداة oscap هي واجهة سطر أوامر منخفضة المستوى تأتي من
مشروع OpenSCAP. يمكن استخدامها لفحص الجهاز المحلي.
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_ospp --results-arf arf.xml --report report.html --oval-results /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
بعد التقييم، سيحتوي ملف arf.xml على جميع النتائج بصيغة
result data stream (ARF) قابلة لإعادة الاستخدام، وسيحتوي report.html على تقرير
قابل للقراءة البشرية يمكن فتحه في متصفح.
استبدل الملف الشخصي بملف شخصي آخر من اختيارك، يمكنك عرض جميع الخيارات الممكنة باستخدام:
oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
يرجى الاطلاع على موقع OpenSCAP لمزيد من المعلومات.
SCAP Workbench هي واجهة مستخدم رسومية لتقييم SCAP و تخصيصه. إنها مناسبة لفحص جهاز واحد، سواء كان محليًا أو عن بُعد (عبر SSH). الإصدارات الجديدة من SCAP Workbench تتضمن تكامل SSG وستعرضه تلقائيًا عند بدء التطبيق.
يرجى الاطلاع على موقع SCAP Workbench لمزيد من المعلومات.
oscap-sshتأتي oscap-ssh مرفقة مع OpenSCAP 1.2.3 والإصدارات الأحدث. تسمح بفحص
جهاز عن بُعد عبر SSH بواجهة مشابهة لأداة oscap.
الأمر التالي يقيّم جهازًا بعنوان IP 192.168.1.123 بمحتوى
مخزّن على الجهاز المحلي. ضع في اعتبارك أن oscap يجب أن يكون مثبتًا على
الجهاز البعيد لكن محتوى SSG لا يحتاج إلى ذلك.
oscap-ssh [email protected] 22 xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf arf.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
لعرض قائمة بقوائم تشغيل Ansible المتاحة، شغّل:
ls /usr/share/scap-security-guide/ansible/
قوائم تشغيل Ansible هذه مُولّدة من ملفات SCAP الشخصية المتاحة للمنتجات.
لتطبيق قائمة التشغيل على جهازك المحلي شغّل: (هذا سيغير إعدادات الجهاز!)
ansible-playbook -i "localhost," -c local /usr/share/scap-security-guide/ansible/rhel9-playbook-ospp.yml
تحتوي كل قائمة من قوائم تشغيل Ansible على تعليمات حول كيفية نشرها. هنا مقتطف من التعليمات:
...
# This file was generated by OpenSCAP 1.2.16 using:
# $ oscap xccdf generate fix --profile rht-ccp --fix-type ansible sds.xml
#
# This script is generated from an OpenSCAP profile without preliminary evaluation.
# It attempts to fix every selected rule, even if the system is already compliant.
#
# How to apply this remediation role:
# $ ansible-playbook -i "192.168.1.155," playbook.yml
# $ ansible-playbook -i inventory.ini playbook.yml
...
لعرض قائمة بنصوص Bash المتاحة، شغّل:
# ls /usr/share/scap-security-guide/bash/
...
rhel8-script-hipaa.sh
rhel8-script-ospp.sh
rhel8-script-pci-dss.sh
...
نصوص Bash هذه مُولّدة من ملفات SCAP الشخصية المتاحة للمنتجات. على غرار قوائم تشغيل Ansible، يحتوي كل نص من نصوص Bash على تعليمات حول كيفية نشرها.
يمكن العثور على القائمة البريدية لـ SSG على https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide.
إذا واجهت مشكلات مع OpenSCAP أو SCAP Workbench، استخدم https://www.redhat.com/mailman/listinfo/open-scap-list
إذا كنت تفضل تواصلًا أكثر تفاعلية مع المجتمع، يمكنك الانضمام إلينا على Gitter وIRC:
#openscap على libera.chat.بدأ هذا المشروع في عام 2011 كتعاون بين وكالات حكومة الولايات المتحدة وبائعي أنظمة تشغيل تجاريين. كان الاسم الأصلي هو SCAP Security Guide، ويُختصر عادةً بـ SSG. كان النطاق الأصلي هو إنشاء تدفقات بيانات SCAP. بمرور الوقت، نما ليصبح أكبر مشروع مفتوح المصدر لمحتوى يتجاوز SCAP.
شهدت السنوات القليلة التالية تقديم ليس فقط ملفات شخصية أمنية خاصة بالحكومة ولكن أيضًا تجارية، مثل PCI-DSS وCIS.
لاحقًا، بدأت الصناعة تتجه نحو صيغ مختلفة لمحتوى الأمان،
مثل Ansible وPuppet وChef InSpec. تفاعل المجتمع من خلال تطوير
الأدوات وساعد في تحويل SSG إلى مشروع محتوى أمني أكثر عمومية.
حدث هذا التغيير تدريجيًا في عامي 2017 و2018. في سبتمبر 2018، قررنا
تغيير اسم المشروع إلى ComplianceAsCode، لتجنب الالتباس.
نتصور أن المستقبل سيكون غير مرتبط بصيغة محددة. لهذا اخترنا التجريد بدلاً من استخدام XCCDF كصيغة إدخال.
هذا المشروع يرحب بالمساهمين الجدد. نحن نعمل باستمرار على إزالة التعقيدات لجعل المساهمات أسهل وأكثر متعة للجميع. هذا مشروع لطيف ومجتمع ودود.
هناك طرق عديدة للمساهمة. راجع التوثيق لمزيد من التفاصيل: https://complianceascode.readthedocs.io/en/latest/manual/developer/01_introduction.html
تحقق من القائمة المحدثة لـ المساهمين.