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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
chef-ssh-hardening — هذا الكوكبوك الخاص بـ Chef يوفر إعدادات آمنة لكل من ssh-client و ssh-server. | Kitploit
أدوات/GitHubGitHub/dev-sec/chef-ssh-hardening
أمن البنية التحتية السحابيةتدقيق التكوينأمن الشبكاتDevSecOpsالمصادقة
GitHubdev-sec/chef-ssh-hardening

chef-ssh-hardening

هذا الكوكبوك الخاص بـ Chef يوفر إعدادات آمنة لكل من ssh-client و ssh-server.

عرض المستودع
1686635منذ 8 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

ssh-hardening (Chef cookbook)

Supermarket Build Status Code Coverage Gitter Chat

الوصف

يوفر هذا الـ cookbook إعدادات آمنة لكل من ssh-client و ssh-server. لا يوفر هذا الـ cookbook إمكانيات لإدارة المستخدمين و/أو مفاتيح ssh، يرجى استخدام cookbooks أخرى لهذا الغرض.

المتطلبات

  • Chef >= 14.13.11

المنصات

  • Debian 8, 9, 10
  • Ubuntu 16.04, 18.04
  • RHEL 6, 7
  • CentOS 6, 7
  • Oracle Linux 6, 7
  • Fedora 29, 30
  • OpenSuse Leap 42
  • Amazon Linux 1, 2

الخصائص (Attributes)

فيما يلي يمكنك العثور على توثيق الخصائص وقيمها الافتراضية.

ملاحظة: بعض القيم الافتراضية لخصائص هذا الـ cookbook يتم تعيينها في الـ recipes. يجب عليك استخدام مستوى أولوية خصائص أعلى لتجاوز هذه الخصائص. يتم تمييز هذه الخصائص بـ #override attribute# في القائمة أدناه. مثال لتجاوز مثل هذه الخاصية:

root@kitploit:~
override['ssh-hardening']['ssh']['server']['listen_to'] = node['ipaddress']
  • ['ssh-hardening']['network']['ipv6']['enable'] - false. اضبط على true إذا كان IPv6 مطلوبًا
  • ['ssh-hardening']['ssh']['ports'] - 22. المنافذ التي يجب أن يستمع إليها ssh-server ويتصل بها ssh-client
  • ['ssh-hardening']['ssh'][{'client', 'server'}]['kex'] - nil لحساب أفضل تبادل مفاتيح (KEX) بناءً على إصدار الخادم، وإلا حدد سلسلة من قيم Kex
  • ['ssh-hardening']['ssh'][{'client', 'server'}]['mac'] - nil لحساب أفضل رموز مصادقة الرسائل (MACs) بناءً على إصدار الخادم، وإلا حدد سلسلة من قيم Mac
  • ['ssh-hardening']['ssh'][{'client', 'server'}]['cipher'] - nil لحساب أفضل التشفيرات بناءً على إصدار الخادم، وإلا حدد سلسلة من قيم Cipher
  • ['ssh-hardening']['ssh'][{'client', 'server'}]['cbc_required'] - . اضبط على إذا كان CBC مطلوبًا للتشفيرات. هذا عادةً ضروري فقط إذا كانت آليات M2M الأقدم بحاجة للتواصل مع SSH، والتي لا تحتوي على أي من التشفيرات الآمنة المكوّنة مفعّلة. CBC هو بديل ضعيف. يجب تجنب أي شيء أضعف وبالتالي فهو غير متاح.

الاستخدام

أضف الـ recipes إلى run_list:

root@kitploit:~
"recipe[ssh-hardening]"

سيؤدي هذا إلى تثبيت ssh-server و ssh-client. يمكنك بدلاً من ذلك اختيار واحد فقط عبر:

root@kitploit:~
"recipe[ssh-hardening::server]"
"recipe[ssh-hardening::client]"

قم بتكوين الخصائص:

root@kitploit:~
"ssh-hardening": {
  "ssh" : {
    "server" : {
      "listen_to" : "10.2.3.4"
    }
  }
}

القيمة الافتراضية لـ listen_to هي 0.0.0.0. يُنصح بشدة بتغيير القيمة.

SFTP

لتفعيل تكوين SFTP أضف أحد الـ recipes التالية إلى run_list:

root@kitploit:~
"recipe[ssh-hardening]"
أو
"recipe[ssh-hardening::server]"

قم بتكوين الخصائص:

root@kitploit:~
"ssh-hardening": {
  "ssh" : {
    "server": {
      "sftp" : {
      "enable" : true,
      "chroot" : "/home/sftp/%u",
      "group"  : "sftusers"
    }
    }
  }
}

سيؤدي هذا إلى تفعيل خادم SFTP وتقييد (chroot) كل مستخدم في مجموعة sftpusers إلى دليل /home/sftp/%u.

خيارات التكوين الإضافية

يمكن إلحاق خيارات تكوين إضافية بملفات تكوين العميل أو الخادم. يمكن استخدام هذا لتجاوز القيم المحددة بشكل ثابت، أو إضافة خيارات تكوين غير متاحة عبر الخصائص.

الصيغة كما يلي:

root@kitploit:~
# => تكوين خادم إضافي
default['ssh-hardening']['ssh']['server']['extras'].tap do |extra|
  extra['#Some Comment'] = 'Heres the Comment'
  extra['AuthenticationMethods'] =  'publickey,keyboard-interactive'
end

# => تكوين عميل إضافي
default['ssh-hardening']['ssh']['client']['extras'].tap do |extra|
  extra['PermitLocalCommand'] = 'no'
  extra['Tunnel'] =  'no'
end

خيارات تكوين Match لـ sshd

يجب وضع كتل Match في نهاية sshd_config. يمكن تحقيق ذلك باستخدام شجرة الخصائص match_blocks:

root@kitploit:~
default['ssh-hardening']['ssh']['server']['match_blocks'].tap do |match|
  match['User root'] = <<~ROOT
    AuthorizedKeysFile .ssh/authorized_keys
  ROOT
  match['User git'] = <<~GIT
    Banner none
    AuthorizedKeysCommand /bin/false
    AuthorizedKeysFile .ssh/authorized_keys
    GSSAPIAuthentication no
    PasswordAuthentication no
  GIT
end

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

يرجى تثبيت chef-dk، VirtualBox أو VMware Workstation و Vagrant.

يتم فحص الـ Linting باستخدام rubocop و foodcritic:

root@kitploit:~
$ chef exec rake lint
.....

يتم إجراء اختبارات الوحدة/المواصفات باستخدام chefspec:

root@kitploit:~
$ chef exec rake spec
.....

يتم إجراء اختبارات التكامل باستخدام test-kitchen و inspec:

root@kitploit:~
$ chef exec rake kitchen
.....
# أو يمكنك استخدام kitchen مباشرة
$ kitchen test

الأسئلة الشائعة / المزالق

لا أستطيع تسجيل الدخول إلى حسابي. لقد سجلت مفتاح العميل، لكنه ما زال لا يسمح لي بالدخول.

إذا كنت قد استنفدت جميع المشكلات النموذجية (جدار الحماية، الشبكة، المفتاح المفقود، المفتاح الخاطئ، الحساب المعطل وما إلى ذلك)، فقد يكون حسابك مقفلاً. أسرع طريقة لمعرفة ذلك هي النظر إلى تجزئة كلمة المرور الخاصة بمستخدمك:

root@kitploit:~
sudo grep myuser /etc/shadow

إذا كانت التجزئة تتضمن !، فإن حسابك مقفل:

root@kitploit:~
myuser:!:16280:7:60:7:::

الطريقة الصحيحة لحل هذا هي فتح قفل الحساب (passwd -u myuser). إذا لم يكن لدى المستخدم كلمة مرور، يمكنك فتح قفله عبر:

root@kitploit:~
usermod -p "*" myuser

بدلاً من ذلك، إذا كنت تنوي استخدام PAM، فقد قمت بتفعيله عبر ['ssh-hardening']['ssh']['use_pam'] = true. سيسمح PAM للمستخدمين المقفلين بالدخول بالمفاتيح.

لماذا لا يتصل تطبيقي عبر SSH بعد الآن؟

انظر دائمًا إلى ملفات السجلات أولاً وإذا أمكن انظر إلى التفاوض بين العميل والخادم الذي يتم عند الاتصال.

لقد رأينا بعض المشكلات في التطبيقات (المبنية على python و ruby) والتي ترجع إلى استخدامها لمجموعة تشفير قديمة. يتعارض هذا مع وحدة التقوية هذه، التي قللت قائمة التشفيرات ورموز مصادقة الرسائل (MACs) وخوارزميات تبادل المفاتيح (KEX) إلى مجموعة أكثر أمانًا.

إذا وجدت أن هذا غير كافٍ، فلا تتردد في تفعيل الخصائص cbc_requires للتشفيرات، و weak_hmac لـ MACs و weak_kex لـ KEX في مساحات الأسماء ['ssh-hardening']['ssh']['client'] أو ['ssh-hardening']['ssh']['server'] بناءً على المكان الذي تريد دعمها فيه.

لماذا لا أستطيع تسجيل الدخول إلى خادم SFTP بعد إضافة مستخدم إلى مجموعة SFTP الخاصة بي؟

هذه مشكلة ملكية ChrootDirectory. سيرفض sshd اتصالات SFTP للحسابات التي تم ضبطها على التقييد (chroot) في أي دليل تعتبر ملكيته/أذوناته غير آمنة من قبل sshd. تتطلب متطلبات الملكية/الأذونات الصارمة في sshd أن يكون كل دليل في مسار chroot مملوكًا للجذر وقابلاً للكتابة فقط من قبل المالك. لذا، على سبيل المثال، إذا كانت بيئة chroot هي /home فيجب أن تكون مملوكة للجذر.

انظر https://wiki.archlinux.org/index.php/SFTP_chroot

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

  • Dominik Richter arlimus
  • Christoph Hartmann chris-rock
  • Bernhard Weisshuhn (a.k.a. bernhorst) bkw
  • Patrick Munch atomic111
  • Edmund Haselwanter ehaselwanter
  • Dana Merrick dmerrick
  • Anton Rieder aried3r
  • Trent Petersen Rockstar04
  • Petri Sirkkala sirkkalap
  • Jan Klare jklare
  • Zac Hallett zhallett
  • Petri Sirkkala sirkkalap
  • stribika
  • Siddhant Rath sidxz

يعتمد هذا الـ cookbook بشكل أساسي على أدلة من:

  • NSA: Guide to the Secure Configuration of Red Hat Enterprise Linux 5
  • Deutsche Telekom, Group IT Security, Security Requirements (German)

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

المساهمة

انظر إرشادات المساهم.

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

  • Author:: Dominik Richter [email protected]
  • Author:: Deutsche Telekom AG

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

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

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

تنزيل الأداة
false
true
  • ['ssh-hardening']['ssh'][{'client', 'server'}]['weak_hmac'] - false. اضبط على true إذا كانت آليات HMAC الأضعف مطلوبة. هذا عادةً ضروري فقط إذا كانت آليات M2M الأقدم بحاجة للتواصل مع SSH، والتي لا تحتوي على أي من HMACs الآمنة المكوّنة مفعّلة.
  • ['ssh-hardening']['ssh'][{'client', 'server'}]['weak_kex'] - false. اضبط على true إذا كانت آليات تبادل المفاتيح (KEX) الأضعف مطلوبة. هذا عادةً ضروري فقط إذا كانت آليات M2M الأقدم بحاجة للتواصل مع SSH، والتي لا تحتوي على أي من KEXs الآمنة المكوّنة مفعّلة.
  • ['ssh-hardening']['ssh']['client']['remote_hosts'] - [] - مضيف واحد أو أكثر، يمكن لـ ssh-client الاتصال بها.
  • ['ssh-hardening']['ssh']['client']['password_authentication'] - false. اضبط على true إذا كان يجب تفعيل مصادقة كلمة المرور.
  • ['ssh-hardening']['ssh']['client']['roaming'] - false. اضبط على true إذا كان يجب تفعيل التجوال التجريبي للعميل. من المعروف أن هذا يسبب مشكلات محتملة مع كشف الأسرار لخوادم ضارة ويكون معطلاً افتراضيًا.
  • ['ssh-hardening']['ssh']['client']['extras'] - {}. أضف خيارات تكوين إضافية، انظر أدناه للتفاصيل
  • ['ssh-hardening']['ssh']['server']['host_key_files'] - nil لحساب أفضل تكوين لمفاتيح المضيف بناءً على إصدار الخادم، وإلا حدد مصفوفة بمسارات الملفات (مثل /etc/ssh/ssh_host_rsa_key)
  • ['ssh-hardening']['ssh']['server']['dh_min_prime_size'] - 2048 - الحد الأدنى المقبول لطول الأعداد الأولية بالبت في /etc/ssh/moduli. سيتم إزالة الأعداد الأولية الأقل من هذا الرقم. (انظر هذا لمزيد من المعلومات والخلفية)
  • ['ssh-hardening']['ssh']['server']['dh_build_primes'] - false - إذا كان يجب بناء أعداد أولية خاصة. عملية إعادة البناء هذه تحدث مرة واحدة فقط وتستغرق وقتًا طويلاً (~ 1.5 - 2 ساعة على الأجهزة الحديثة لطول 4096).
  • ['ssh-hardening']['ssh']['server']['dh_build_primes_size'] - 4096 - طول العدد الأولي الذي يجب توليده. هذا الخيار صالح فقط إذا كان dh_build_primes مفعّلاً.
  • ['ssh-hardening']['ssh']['server']['listen_to'] #override attribute# - عنوان IP واحد أو أكثر، يجب أن يستمع إليها ssh-server. الافتراضي هو الاستماع على جميع الواجهات. يجب تكوينه لأسباب أمنية!
  • ['ssh-hardening']['ssh']['server']['allow_root_with_key'] - false لتعطيل تسجيل دخول الجذر تمامًا. اضبط على true للسماح للجذر بتسجيل الدخول عبر آلية تعتمد على المفاتيح
  • ['ssh-hardening']['ssh']['server']['allow_tcp_forwarding'] - false. اضبط على true للسماح بإعادة توجيه TCP
  • ['ssh-hardening']['ssh']['server']['allow_agent_forwarding'] - false. اضبط على true للسماح بإعادة توجيه الوكيل (Agent)
  • ['ssh-hardening']['ssh']['server']['allow_x11_forwarding'] - false. اضبط على true للسماح بإعادة توجيه X11
  • ['ssh-hardening']['ssh']['server']['permit_tunnel'] - false لتعطيل إعادة توجيه جهاز tun. اضبط على true للسماح بإعادة توجيه جهاز tun. قيم مقبولة أخرى: 'yes', 'no', 'point-to-point', 'ethernet'. راجع man sshd_config للسلوكيات الدقيقة. ملاحظة: ستحتاج أيضًا إلى تفعيل allow_tcp_forwarding.
  • ['ssh-hardening']['ssh']['server']['use_pam'] - true. اضبط على false لتعطيل مصادقة pam الخاصة بـ sshd
  • ['ssh-hardening']['ssh']['server']['challenge_response_authentication'] - false. اضبط على true لتفعيل مصادقة الاستجابة للتحدي.
  • ['ssh-hardening']['ssh']['server']['deny_users'] - [] لتكوين DenyUsers، إذا تم تحديده، يُمنع تسجيل الدخول لأسماء المستخدمين التي تطابق أحد الأنماط.
  • ['ssh-hardening']['ssh']['server']['allow_users'] - [] لتكوين AllowUsers، إذا تم تحديده، يُسمح بتسجيل الدخول فقط لأسماء المستخدمين التي تطابق أحد الأنماط.
  • ['ssh-hardening']['ssh']['server']['deny_groups'] - [] لتكوين DenyGroups، إذا تم تحديده، يُمنع تسجيل الدخول للمستخدمين الذين تطابق مجموعتهم الأساسية أو قائمة مجموعاتهم الإضافية أحد الأنماط.
  • ['ssh-hardening']['ssh']['server']['allow_groups'] - [] لتكوين AllowGroups، إذا تم تحديده، يُسمح بتسجيل الدخول فقط للمستخدمين الذين تطابق مجموعتهم الأساسية أو قائمة مجموعاتهم الإضافية أحد الأنماط.
  • ['ssh-hardening']['ssh']['server']['print_motd'] - false. اضبط على true لتفعيل طباعة الـ MOTD
  • ['ssh-hardening']['ssh']['server']['print_last_log'] - false. اضبط على true لتفعيل طباعة معلومات آخر تسجيل دخول
  • ['ssh-hardening']['ssh']['server']['banner'] - nil. اضبط مسارًا مثل '/etc/issue.net' لتفعيل اللافتة (banner)
  • ['ssh-hardening']['ssh']['server']['os_banner'] - false لتعطيل معلومات الإصدار أثناء المصافحة البروتوكولية (عائلة debian فقط). اضبط على true لتفعيلها
  • ['ssh-hardening']['ssh']['server']['use_dns'] - nil لاستخدام الافتراضي الخاص بـ openssh. اضبط على true أو false لتفعيل/تعطيل بحث DNS والتحقق من المضيف البعيد
  • ['ssh-hardening']['ssh']['server']['use_privilege_separation'] - nil لحساب أفضل قيمة بناءً على إصدار الخادم، وإلا اضبط على true أو false
  • ['ssh-hardening']['ssh']['server']['login_grace_time'] - 30s. الوقت الذي يجب أن يتم فيه تسجيل الدخول بنجاح، وإلا يتم فصل المستخدم.
  • ['ssh-hardening']['ssh']['server']['max_auth_tries'] - 2. عدد محاولات المصادقة لكل اتصال
  • ['ssh-hardening']['ssh']['server']['max_sessions'] - 10 عدد الجلسات لكل اتصال
  • ['ssh-hardening']['ssh']['server']['password_authentication'] - false. اضبط على true إذا كان يجب تفعيل مصادقة كلمة المرور
  • ['ssh-hardening']['ssh']['server']['log_level'] - verbose. مستوى تسجيل sshd. راجع LogLevel في man 5 sshd_config للقيم الممكنة.
  • ['ssh-hardening']['ssh']['server']['sftp']['enable'] - false. اضبط على true لتفعيل ميزة SFTP الخاصة بخادم OpenSSH
  • ['ssh-hardening']['ssh']['server']['sftp']['group'] - sftponly. يضبط خيار Match Group الخاص بـ SFTP للسماح بـ SFTP فقط للمستخدمين المخصصين
  • ['ssh-hardening']['ssh']['server']['sftp']['chroot'] - /home/%u. يضبط الدليل الذي يجب أن يُقيّد فيه مستخدم SFTP (chroot)
  • ['ssh-hardening']['ssh']['server']['sftp']['authorized_keys_path'] - nil. إذا لم يكن nil، مسار كامل لملف أو عدة ملفات مفاتيح مصرح بها مفصولة بمسافات سيتم تعيينها داخل Match Group للوصول عبر SFTP فقط
  • ['ssh-hardening']['ssh']['server']['sftp']['password_authentication'] - false. اضبط على true إذا كان يجب تفعيل مصادقة كلمة المرور
  • ['ssh-hardening']['ssh']['server']['authorized_keys_path'] - nil. إذا لم يكن nil، يُتوقع مسار كامل لملف أو عدة ملفات مفاتيح مصرح بها مفصولة بمسافات.
  • ['ssh-hardening']['ssh']['server']['extras'] - {}. أضف خيارات تكوين إضافية، انظر أدناه للتفاصيل
  • ['ssh-hardening']['ssh']['server']['match_blocks'] - {}. كتلة تكوين Match، انظر أدناه للتفاصيل