يتحكم ملف تهيئة SSH في نظام Unix في كيفية عمل shell الآمن. يمكن استخدامه لجعل الأمر 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_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 تمامًا. بالنسبة إلى هذه الحالات ، يمكنك السماح بالمستخدمين والمجموعات ومنعهما. لهذا ، ستحتاج إلى استخدام أحد المفاتيح التالية ، متبوعًا بالقيم التي ترغب في السماح بها أو رفضها: 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 أسهل في الاستخدام.