كيفية تخصيص إعدادات SSH للحصول على أقصى قدر من الأمان

يتحكم ملف تهيئة SSH في نظام Unix في كيفية عمل shell الآمن. يمكن استخدامه لجعل الأمر ssh أسهل في الاستخدام أو تكوين وظائف معينة مطلوبة من قبل المستخدم أو تشديد الأمان ضد الهجمات المحتملة. في حين أن الإجراءات البسيطة نسبيًا ، مثل تغيير منفذ ssh على أجهزتك ، يمكنها في الغالب التخلص من عدد كبير من “المكالمات الباردة” على جهازك ، يمكن لملف تهيئة ssh أن يفعل أكثر من ذلك بكثير.

كيفية تخصيص إعدادات SSH للحصول على أقصى قدر من الأمان - لينكس

أين يوجد ملف SSH؟

كيفية تخصيص إعدادات SSH للحصول على أقصى قدر من الأمان - لينكس

في أنظمة Linux ، يمكنك العثور على ملف تهيئة ssh على مستوى النظام على “/ etc / ssh / ssh_config”.

في أنظمة macOS ، يتم العثور على الملف نفسه في “/ private / etc / ssh / ssh_config” ، والذي يرتبط بـ “/ etc / ssh / ssh_config” للتوافق.

يمكن تحديد ملف ssh_config ثاني خاص بالمستخدم في “~ / .ssh / ssh_config” (الرمز “~” يمثل الدليل الرئيسي). يحل هذا الملف محل ملف التكوين على مستوى النظام ، مما يسمح لك بتعيين خيارات خاصة بالمستخدم دون تغيير تهيئة النظام. لا يتم شحن الأنظمة دائمًا باستخدام ملف “~ / .ssh / ssh_config” ، ولكن يمكن إنشاؤها بسهولة.

من الآن فصاعدًا ، سنشير إلى ملف التكوين هذا باسم “ssh_config” للوضوح والبساطة.

تحرير ملف ssh_config

لتحرير ملف ssh_config ، افتح نافذة Terminal وقم بتحرير الملف باستخدام محرر النصوص المفضل لديك. سنستخدم nano في هذا العرض ، ولكن يمكن استخدام vi أو emacs بدلاً من ذلك.

sudo nano / etc / ssh / ssh_config

سيؤدي هذا إلى فتح ملف يحتوي على عشرات من الأسطر المعلقة والتي توضح ما يفعله الملف ، ولكنه ليس شرحًا كاملاً.

كيفية تخصيص إعدادات SSH للحصول على أقصى قدر من الأمان - لينكس

ما هو ملف ssh_config وماذا يفعل ssh_config؟

يتم استخدام ملف ssh_config للتحكم في كيفية عمل shell الآمن ، المعروف باسم الأمر ssh terminal ، على النظام الخاص بك. يتم تنظيم ملف ssh_config بواسطة المضيفين. يحتوي كل مضيف على إعدادات محددة لهذا المضيف. يمكن استخدام أحرف البدل مثل * لمطابقة أسماء المضيفين المتعددة مع تصريح واحد.

يتم تعريف الخيارات باستخدام الزوج المفتاح / التعريف. هناك العديد من المفاتيح المتاحة. يمكن العثور على شرح مفصل لوظائف كل مفتاح على صفحة man ssh_config.

تكوين SSH الخاص بك

قفل الملفات: قبل تحرير الملف ، تأكد من أن كل من الملفين ssh_config و sshd_config يمتلكان صلاحيات المسؤول والمستخدم لتعيين الروت. في معظم الحالات ، ستحتاج أيضًا إلى عدم السماح للأذونات لأي شخص باستثناء الروت.

sudo chown root:root /etc/ssh/sshd_config

sudo chmod og-rwx /etc/ssh/sshd_config

تأكيد SSH Protocol 2

تأكد من أنك تستخدم البروتوكول الأحدث والعصري 2 بدلاً من البروتوكول 1. يعمل البروتوكول الأقدم مع فحص سلامة أضعف وهو أقل أمانًا بوجه عام.

لتعيين البروتوكول بشكل صريح ، استخدم ما يلي في ssh_config:

Protocol 2

يمكنك أيضًا تعيين البروتوكول الخاص بك ضمنيًا باستخدام Ciphers ، والذي سيعمل تلقائيًا على تعيين البروتوكول إلى 2 لاستخدام Ciphers الحديثة.

Ciphers aes128-ctr، aes192-ctr، aes256-ctr

عدم السماح بكلمة مرور فارغة

تأكد من أن كل حساب SSH يستخدم كلمة مرور عند تسجيل الدخول عن طريق حظر كلمات المرور الفارغة.

PermitEmptyPasswords no

عدم السماح بالروت بتسجيل الدخول

نادرًا ما يجب استخدام الروت لمعظم استخدام Linux. سيتيح لك منع تسجيل دخول الروت لقفل الحسابات على وجه التحديد إلى ما هو مطلوب وعدم منح الاستخدام على مستوى النظام. هذا أيضًا حساب مستهدف في الهجمات. تتضمن خيارات PermitRootLogin “نعم” أو “بدون كلمة مرور” أو “أوامر قسرية فقط” أو “لا”. الافتراضي هو “نعم”. لإيقاف تسجيل الدخول إلى الروت تمامًا ، علينا كتابة السطر أدناه.

PermitRootLogin no

قم بتغيير رقم المنفذ

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

لضبط المنفذ ، قم بتحرير خادم ssh الرئيسي في “/ etc / ssh / sshd_config”. ستحتاج إلى إضافة سطر جديد يحدد المنفذ يتبع بناء الجملة Port XXXXX.

كيفية تخصيص إعدادات SSH للحصول على أقصى قدر من الأمان - لينكس

الحد من الوصول

إذا كان لديك عدة أشخاص يقومون بالوصول إلى الخادم الخاص بك ، فقد ترغب في تقييد استخدام ssh تمامًا. بالنسبة إلى هذه الحالات ، يمكنك السماح بالمستخدمين والمجموعات ومنعهما. لهذا ، ستحتاج إلى استخدام أحد المفاتيح التالية ، متبوعًا بالقيم التي ترغب في السماح بها أو رفضها: DenyUsers و AllowUsers و DenyGroups و AllowGroups. اكتمل هذا الأمر بهذا الترتيب ، لذلك حتى إذا سمحت لمستخدم ما إذا كان في قسم “الموافق عليهم” ، فسيتم رفضه.

AllowUsers ramesh john jason

AllowGroups sysadmin dba

DenyUsers cvs apache jane

DenyGroups developers qa

تحديث LoginGraceTime

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

LoginGraceTime 1m

تخصيص تهيئات SSH

إنشاء aliases

يمكن تحديد خيارات سطر أوامر Ssh من خلال aliases في ssh_config. يسمح aliases التالي للمستخدم بالاتصال بخادم dev بالخيارات المحددة ببساطة عن طريق كتابة ssh dev في سطر الأوامر.

Host dev

    HostName dev.example.com

    Port 22222

    User foobar

يعمل هذا الأمر التالي عند تنفيذه:

ssh foobar@dev.example.com -p 22222

لاحظ أنه تم تغيير منفذ ssh إلى 22222 لردع المكالمات الباردة. وإلا ، فهو عبارة عن اتصال ssh بسيط جدًا ، يتم تقصيره بواسطة العديد من الأحرف لتوفير الراحة.

المصادقة مع المفاتيح الآمنة

ssh أكثر أمانًا وملاءمة عند استخدامه مع المفاتيح العامة / الخاصة للمصادقة ، بدلاً من كلمات المرور. يمكن أن يقوم ملف ssh_config بالإعلان عن مفتاح محدد لمضيف معين باستخدام مفتاح IdentityFile.

Host dev

    HostName dev.example.com

    Port 22222

    User foobar

    IdentityFile ~/.ssh/dev.example.key

كما في الأمثلة السابقة ، يتم تشغيل أمر ssh هذا باستخدام ssh dev ، بتنفيذ الأمر التالي المكافئ لسطر الأوامر:

ssh -i ~ / .ssh / dev.example.key foobar@dev.example.com -p 22222

وضع خيارات ssh أخرى

خيارات ssh أدناه هي بعض المفاتيح الأكثر شيوعًا الموجودة في ملفات ssh_config.

Compression: يأخذ هذا المفتاح “نعم” أو “لا” كوسيطة ويستخدم في تمكين وتعطيل الضغط للمضيف. هذا عادة ما يكون غير ضروري ما لم يكن الاتصال بطيء بشكل لا يصدق.

LogLevel: تعيين مستوى التفاصيل في سجلات ssh جانب العميل. من الخيارات الأقل مطوَّلاً إلى الأكثر مطولاً ، تكون الخيارات هي QUIET و FATAL و ERROR و INFO و VERBOSE و DEBUG1 و DEBUG2 و DEBUG3.

StrictHostKeyChecking: قم بتعيين تفضيل لإضافة مضيف آخر إلى ملف known_hosts. لن تضيف “نعم” أبدًا known_hosts. سيضيف “لا” دائمًا إلى known_hosts. “اسأل” ، وهو الخيار الافتراضي ، سيطلب من المستخدم قبل الإضافة إلى ملف known_hosts. يوفر “نعم” أقصى قدر من الأمان ضد هجمات حصان طروادة ، ولكن يمكن أن يكون مملاً باستخدام ملف known_hosts مُدار بشكل سيئ. “لا” هو الأقل أمانًا ولكن يمكن أن يجعل الاتصال بعدد كبير من المضيفات المؤقتة أقل إيلاما.

UserKnownHostsFile: حدد مسار ملف known_hosts خاصة بالمستخدم.

إعادة توجيه الاتصال

غالباً ما يستخدم ssh لإعادة توجيه الاتصالات ، مما يسمح بالاتصال المحلي بالنفق من خلال اتصال بعيد. يمكن استخدام الخيارات التالية لتكوين إعادة توجيه الاتصال.

LocalForward: تحديد اتصال لإعادة توجيه حركة مرور منفذ محلي إلى جهاز بعيد. هذه أنفاق الاتصال عبر الشبكة البعيدة.

RemoteForward: تعريف منفذ بعيد ليتم توجيهه خارج منفذ محلي. هذا هو عكس الخيار أعلاه.

DynamicForward: تكوين منفذ محلي ليتم استخدامه مع بروتوكول إعادة توجيه ديناميكي.

الخلاصة

توجد معظم خيارات ssh_config لتوفير طرق أكثر ملاءمة لتنفيذ مهام محددة باستخدام الأمر ssh. إنها طريقة لتكوين الأسماء المستعارة المعقدة والاختصارات التي تساعد على زيادة الأمان من خلال جعل الأجزاء الأكثر أمانًا من ssh أسهل في الاستخدام.

زر الذهاب إلى الأعلى