دخول أكثر أمانًا

Alhoqbaniمنذ سنتين

لا تترد في طرح أسئلتك المتعلقة بمواضيع الدورة في التعليقات.

بسم الله الرحمن الرحيم

بعد أن عرفنا طريقة إنشاء سيرفرك الخاص من DigitalOcean والدخول إليه في الدرس السابق، سوف نقوم في هذا الدرس بتغيير بعض الإعدادات في السيرفر ليكون الدخول إلى السيرفر أكثر أمانًا.

عند إنشاء سيرفر جديد من DigitalOcean فإننا نقوم بالدخول إلى السيرفر باستخدام البيانات المستلمة عبر البريد الالكتروني والتي تحتوي على اسم المستخدم وكلمة المرور.

وللدخول إلى السيرفر فإننا نستخدم اسم المستخدم وكلمة المرور كالتالي:

# root الدخول باستخدام الحساب
ssh [email protected]
# وبإدخال كلمة المرور
# [email protected]'s password:

الدخول إلى السيرفر عن طريق الحساب (root) وكلمة المرور لا يعتبر آمنًا. 

فالحساب root على أنظمة Linux هو حساب غير عادي ويملك أعلى الصلاحيات في السيرفر، لذلك يجب منع الحساب root من الدخول إلى السيرفر بشكل مباشر. مستخدم خارق - ويكيبيديا

كما أنه عند استخدام كلمة المرور للاتصال بالسيرفر فإنه من الممكن أن يتم اعتراض الاتصال والكشف عن كلمة المرور. ويكيبيديا

لذلك سوف نقوم بالآتي لتوفير حماية أكبر عند الدخول إلى السيرفر: 

  1. إنشاء مستخدم جديد للدخول إلى السيرفر بدلاً من الحساب root.
  2. منع المستخدم root من الدخول إلى السيرفر.
  3. إستخدام ssh key للدخول إلى السيرفر بدلاً من كلمة المرور.
  4. منع جميع المستخدمين من الدخول بواسطة كلمة المرور. 

سيرفر جديد

قم بإنشاء سيرفر جديد باتباع خطوات  الدرس السابق.

إنشاء مستخدم جديد

بعد الدخول إلى السيرفر نقوم بإنشاء مستخدم جديد باستخدام الأمر التالي:

# لإضافة مستخدم جديد adduser
# ubuntu اسم المستخدم الجديد
adduser ubuntu

# Enter new UNIX password: # <قم باختيار كلمة مرور جديدة>
# Retype new UNIX password: # <تأكيد كلمة المرور>

# الضغط على زر الادخال لتجاوز جميع هذه البيانات
# Enter the new value, or press ENTER for the default
#	Full Name []: # <Enter>
#	Room Number []: # <Enter>
#	Work Phone []: # <Enter>
#	Home Phone []: # <Enter>
#	Other []: # <Enter>

# تأكيد صحة المعلومات
# Is the information correct? [Y/n] # <y>

نقوم بمنح المستخدم الجديد الصلاحيات اللازمة لإدارة السيرفر، وذلك بإضافة المستخدم إلى المجموعة sudo

usermod -aG sudo ubuntu

منع المستخدم root من الدخول

لمنع المستخدم root من الدخول إلى السيرفر مباشرة نقوم بتغيير إعدادات ssh في السيرفر بتعديل الملف الخاص بهذه الإعدادات.

قم بتفح ملف الإعدادت باستخدام محرر النصوص nano

nano /etc/ssh/sshd_config

ابحث في الملف عن النص PermitRootLogin yes وقم بتغييره إلى PermitRootLogin no

احفظ التغييرات بالضغط على Ctrl + o ثم الضغط على Enter وللخروج من المحرر Ctrl + x

وأخيرًا، لابد من إعادة تشغيل خدمة الـssh على السيرفر لتفعيل الإعدادت الجديدة، وذلك باستخدام الأمر التالي:

service ssh reload

بعد الخروج من السيرفر، قم بتجربة الدخول إلى السيرفر مرة أخرى باستخدام الحساب root وسوف يتم رفض الاتصال. (Permission denied). ويمكن الدخول إلى السيرفر من الآن وصاعدًا عن طريق المستخدم الجديد (ubuntu):

ssh [email protected] # <لا تنسى تغيير العنوان إلى العنوان الخاص بك>

الدخول بواسطة ssh key-pair

بدلاً من استخدام كلمة المرور فإنه يمكننا الدخول إلى السيرفر باستخدام ssh key.

في البداية تحتاج إلى إنشاء مفتاح ssh الخاص بك على جهازك.

لمستخدمي أنظمة الويندوز بإمكانكم اتباع الطريقة في هذا الدرس باستخدام Git Bash  أو عن طريق PuTTY باتباع هذا الدرس.

في حال لم يكن لديك أي ملفات ssh مسبقًا، فإنه يمكن إنشاء ملف جديد باستخدام الأمر التالي:

ssh-keygen -b 4096 -t rsa

# قم بالضغط على Enter لتجاوز الأسئلة التالية
# Enter file in which to save the key (/Users/user/.ssh/id_rsa): <Enter>
# Enter passphrase (empty for no passphrase): <Enter>
# Enter same passphrase again: <Enter>

سوف يقوم هذا الأمر بإنشاء ملفين على جهازك، يتم حفظهما بشكل افتراضي في المجلد التالي:

ls $HOME/.ssh
# id_rsa.pub id_rsa known_hosts

في هذا المجلد سوف نجد الملفين الخاصة بمفتاح ssh الجديد.

الملف الأول id_rsa ويحتوي على الشفرة الخاصة بك (private key)، والملف الثاني id_rsa.pub المفتاح العام (public key) وهو ما سوف نقوم بنقل محتواه إلى السيرفر لنتكمن من الدخول من دون كلمة المرور. قم بنسخ محتوى الملف id_rsa.pub، ويمكن عرض المحتوى عن طريق الأمر:

cat $HOME/.ssh/id_rsa.pub

بعد ذلك نقوم بالدخول إلى السيرفر وإضافة المفتاح الجديد إلى ملف authorized_keys الخاص بالمستخدم الجديد (ubuntu)

# في حال قمت باختيار اسم مختلف للمستخدم الجديد
# ubuntu قم بتغيير الاسم بدلًأ من 

ssh [email protected] # <لا تنسى تغيير العنوان إلى العنوان الخاص بك>
# إنشاء مجلد جديد
mkdir $HOME/.ssh

# إضافة المفتاح
nano $HOME/.ssh/authorized_keys

# قم بلصق محتوى الملف 
# id_rsa.pub
# ثم حفظ الملف والخروج
# احفظ التغييرات بالضغط على 
# Ctrl + o 
# ثم الضغط على Enter 
# وللخروج من المحرر Ctrl + x

بعد إضافة المفتاح إلى السيرفر، نقوم بالخروج من السيرفر ومحاولة الدخول مرة أخرى من دون كلمة المرور.

منع الدخول بكلمة المرور

الخطوة الأخيرة هي منع أي مستخدم من الدخول إلى السيرفر باستخدام كلمة المرور.

بعد تنفيذ هذه الخطوة فإنك لن تستطيع الدخول إلى السيرفر إلا بواسطة مفتاح SSH الخاص بك، وفي حال فقدانه فقد تفقد إمكانية الوصول إلى السيرفر.

بعد الدخول إلى السيرفر قم بتعديل إعدادات ssh على السيرفر كالتالي:

# تعديل ملف الإعدادات
sudo nano /etc/ssh/sshd_config

# ابحث في الملف عن PasswordAuthentication yes
# وقم باستبدالها بـ
# PasswordAuthentication no

# ثم حفظ الملف والخروج
# احفظ التغييرات بالضغط على 
# Ctrl + o 
# ثم الضغط على Enter 
# وللخروج من المحرر Ctrl + x

# إعادة تشغيل SSH
sudo service ssh reload

 

إنشاء سيرفر مع SSH

عند إنشاء سيرفر جديد من DigitalOcean فإنه بالإمكان إضافة مفتاح الـSSH إلى السيرفر مباشرة، وذلك بالضغط على Add your SSH keys وإرفاق محتوى ملف id_rsa.pub (المفتاح العام الخاص بك).

فيه هذه الحالة فإن السيرفر الجديد سوف يسمح لك بالدخول من دون كلمة المرور، ولكن يبقى عليك تنفيذ الخطوات ١ و ٢ لتسجيل مستخدم جديد، ومنع الحساب root من الدخول.

 

 

 

 

الدرس السابق       الدرس التالي
         
نحتاج إلى سيرفر       سيرفر الويب - NGINX

 

التعليقات (11)

Alaa Najmi:

يعطيك العافية على الموضوع الجميل

ياليت لو تنزل موضوع عن البورتات واغلاقها وفتحها والخطرة وكذا

وايضا عمل vpn لدخول السيرفر

Alhoqbani:

الله يسلمك اخوي علاء. 

البورتات تكلمنا عنها في هذا الدرس

والvpn باحاول ان شاء الله. 

 

وشكرًا على مرورك. 

khaled:

يا اخي اطل في الدرس كما تريد  ساتابعه ولو كان ساعتان  

شكرا لك للمعلومات المفيده جدا 

طبقت الدرس بنجاح  على خادم داخلي  من نوع centos 7  واتصلت به من نظامي الرائيسي fedora  

جزاك الله كل خير اخي

طبقت الدرس على خادم داخلي لانه الموقع لم يقبل بطاقتي الائتمانيه ولكن ساحاول ببطاقه اخرى 

Alhoqbani:

شكرًا لك أخي خالد. وبالتوفيق.

زبن الجديع:

السلام عليكم استاذنا الكريم

عندي استفسار انا انشت سيرفر هل سيتم خصم من حسابي حق الفيزا ؟

Alhoqbani:

وعليكم السلام. 

هل استخدمت الرابط الموجود في الدرس؟

الرابط بيعطيك ١٠ دولار رصيد. 

وعشان تتأكد. ادخل على حسابك ومن الاعدادات بتشوف الرصيد الحالي واستخدامك. 

Settings > Billing

من المفترض ما يصير اي خصم على بطاقتك. لكن احيانًا بعض المواقعم تخصم دولار واحد حتى يتأكدون ان البطاقة تشتغل. 

Aardi Zouhir:

الله يحفظك أخي، كنت محتاج جدا لهده الدورة والآن بدأتها وهي مشوقة جدا على الرغم من أنني أجيد التعامل مع السيرفرات وأعمل كإداري سيرفرات لأصحاب المواقع، مع خالص التحيات صديقي.

Alhoqbani:

أهلا ومرحبًا بك أخي Aardi Zouhir وإن شاء الله تكون الدروة مفيدة ولك، وشكرًا على مرورك.

عبد الله:

السلام عليكم

دورة مميزة ومفيدة جداً، لازلت في الدرس الثاني وشرحك اكثر من رائع بادك الله فيك.

 

لدي سؤال:

انا سجلت عن طريق امازون وعند انشاء السيرفر عملت ssh key وهو عبارة عن مفتاح واحد فقط امتداداه pem ولكن ارى في شرحك انه يوجد مفتاحين  ( عام وخاص ) ؟

المفتاح الذي لدي هل يعتبر عام او خاص وما الفرق بينه وبين شرحك ؟

Alhoqbani:

وعليكم السلام ورحمة الله وبركاته، 

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

عبد الله:

طيب سؤال

هذا الأمر ماذا يفعل ؟ ssh-keygen -y -f myPrivateKey.pem

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !