
وحدة puppet هذه توفر إعدادات آمنة لـ ssh-client و ssh-server.
توفر وحدة Puppet هذه إعدادات آمنة لكل من عميل وخادم SSH.
saz/ssh (>= 2.3.6), puppetlabs/stdlib (>= 4.2.0)ipv6_enabled = false - true إذا كان IPv6 مطلوبًاcbc_required = false - true إذا كانت خوارزمية CBC مطلوبة للتشفير. عادةً ما يكون هذا ضروريًا فقط إذا كانت آليات M2M قديمة تحتاج إلى التواصل عبر SSH ولا تدعم أيًا من خوارزميات التشفير الآمنة المكوّنة. CBC بديل ضعيف. يجب تجنب أي شيء أضعف من ذلك، وبالتالي فهو غير متاح.weak_hmac = false - true إذا كانت آليات HMAC الأضعف مطلوبة. عادةً ما يكون هذا ضروريًا فقط إذا كانت آليات M2M قديمة تحتاج إلى التواصل عبر SSH ولا تدعم أيًا من آليات HMAC الآمنة المكوّنة.weak_kex = false - true إذا كانت آليات تبادل المفاتيح (KEX) الأضعف مطلوبة. عادةً ما يكون هذا ضروريًا فقط إذا كانت آليات M2M قديمة تحتاج إلى التواصل عبر SSH ولا تدعم أيًا من آليات KEX الآمنة المكوّنة.allow_root_with_key = false - false لتعطيل تسجيل دخول الجذر تمامًا. اضبطه على true للسماح للجذر بتسجيل الدخول عبر آلية تعتمد على المفاتيح.ports = [ 22 ] - المنافذ التي يجب أن يستمع إليها خادم SSH ويتصل بها عميل SSHlisten_to = [ "0.0.0.0" ] - عنوان IP واحد أو أكثر يجب أن يستمع إليها خادم SSH. القيمة الافتراضية فارغة، ولكن يجب تكوينها لأسباب أمنية!remote_hosts - مضيف واحد أو أكثر يمكن لعميل SSH الاتصال بها. القيمة الافتراضية فارغة، ولكن يجب تكوينها لأسباب أمنية!allow_tcp_forwarding = false - اضبطه على true للسماح بإعادة توجيه TCPallow_agent_forwarding = false - اضبطه على true للسماح بإعادة توجيه الوكيلuse_pam = false لتعطيل مصادقة PAMclient_options = {} - عيّن قيمًا في التجزئة لتجاوز إعدادات الوحدةserver_options = {} - عيّن قيمًا في التجزئة لتجاوز إعدادات الوحدةبعد إضافة هذه الوحدة، يمكنك استخدام الفئة:
class { 'ssh_hardening': }
سيؤدي هذا إلى تثبيت خادم SSH وعميل SSH. يمكنك بدلاً من ذلك اختيار واحد فقط عبر:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
يجب عليك تكوين السمات الأساسية:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
القيمة الافتراضية لـ listen_to هي 0.0.0.0. يُنصح بشدة بتغيير القيمة.
سيتم دمج الخيارات الافتراضية مع الخيارات التي تم تمريرها عبر معاملات client_options و server_options.
إذا تم تعيين خيار كقيمة افتراضية وعبر معامل الخيارات معًا، فسيفوز الأخير.
المثال التالي سيفعّل X11Forwarding، وهو معطل افتراضيًا:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
للاختبار المحلي، يمكنك استخدام Vagrant و Virtualbox أو VMWare لتشغيل الاختبارات محليًا. ستحتاج إلى تثبيت Virtualbox و Vagrant على نظامك. راجع Vagrant Downloads للحصول على حزمة Vagrant المناسبة لنظامك. لجميع اختباراتنا نستخدم test-kitchen. إذا لم تكن معتادًا على test-kitchen، فيرجى إلقاء نظرة على دليلهم.
بعد ذلك قم بتثبيت test-kitchen:
# Install dependencies
gem install bundler
bundle install
# Fetch tests
bundle exec thor kitchen:fetch-remote-tests
# Do lint checks
bundle exec rake lint
# Do spec checks
bundle exec rake spec
# fast test on one machine
bundle exec kitchen test default-ubuntu-1204
# test on Debian-based machines
bundle exec kitchen test
# for development
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
لمزيد من المعلومات، راجع test-kitchen
لا أستطيع تسجيل الدخول إلى حسابي. لقد سجلت مفتاح العميل، لكنه ما زال لا يسمح لي بالدخول.
إذا كنت قد استنفدت جميع المشكلات النموذجية (جدار الحماية، الشبكة، المفتاح المفقود، المفتاح الخاطئ، الحساب المعطل، إلخ)، فقد يكون حسابك مقفلاً. أسرع طريقة لمعرفة ذلك هي النظر إلى تجزئة كلمة المرور لمستخدمك:
sudo grep myuser /etc/shadow
إذا كانت التجزئة تتضمن !، فإن حسابك مقفل:
myuser:!:16280:7:60:7:::
الطريقة الصحيحة لحل ذلك هي فتح قفل الحساب (passwd -u myuser). إذا لم يكن لدى المستخدم كلمة مرور، يمكنك فتح قفله عبر:
usermod -p "*" myuser
بدلاً من ذلك، إذا كنت تنوي استخدام PAM، فقد قمت بتمكينه عبر use_pam = true. سيسمح PAM للمستخدمين المقفلين بالدخول باستخدام المفاتيح.
لماذا لا يتصل تطبيقي عبر SSH بعد الآن؟
انظر دائمًا إلى ملفات السجلات أولاً، وإذا أمكن، انظر إلى التفاوض بين العميل والخادم الذي يتم إكماله عند الاتصال.
لقد رأينا بعض المشكلات في التطبيقات (المبنية على Python و Ruby) والتي تعود إلى استخدامها لمجموعة تشفير قديمة. يتعارض هذا مع وحدة التحصين هذه، التي قللت قائمة خوارزميات التشفير ورموز مصادقة الرسائل (MACs) وتبادل المفاتيح (KEX) إلى مجموعة أكثر أمانًا.
إذا وجدت أن هذا غير كافٍ، فلا تتردد في تفعيل cbc_required للتشفير، و weak_hmac لرموز MAC، و weak_kex لتبادل المفاتيح.
مرخص بموجب رخصة Apache، الإصدار 2.0 (the "License")؛ لا يجوز لك استخدام هذا الملف إلا بالامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يقتضِ القانون المعمول به أو يتم الاتفاق عليه كتابيًا، يتم توزيع البرنامج المرخص بموجب الترخيص على أساس "AS IS"، بدون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود المحددة التي تحكم الاستخدام.