أفضل 7 ممارسات أمان لخادم OpenSSH

img

OpenSSH هو تطبيق بروتوكول SSH. يوصى باستخدام OpenSSH لتسجيل الدخول عن بُعد وعمل نسخ احتياطية ونقل الملفات عن بُعد عبر scp أو sftp وغير ذلك الكثير. SSH مثالي للحفاظ على السرية والنزاهة للبيانات المتبادلة بين شبكتين ونظامين. ومع ذلك ، فإن الميزة الرئيسية هي مصادقة الخادم ، من خلال استخدام تشفير المفتاح العام. من وقت لآخر ، هناك شائعات حول استغلال يوم الصفر لـ OpenSSH. توضح هذه الصفحة كيفية تأمين خادم OpenSSH الخاص بك الذي يعمل على نظام Linux أو نظام مشابه لـ Unix لتحسين أمان sshd.

افتراضية OpenSSH

منفذ TCP – 22
ملف تكوين خادم OpenSSH – sshd_config (موجود في / etc / ssh /)
ملف تكوين عميل OpenSSH – ssh_config (موجود في / etc / ssh /)

1. استخدم تسجيل الدخول المستند إلى المفتاح العام SSH

يدعم خادم OpenSSH المصادقة المختلفة. يوصى باستخدام المصادقة القائمة على المفتاح العام. أولاً ، قم بإنشاء زوج المفاتيح باستخدام الأمر التالي ssh-keygen على سطح المكتب / الكمبيوتر المحمول المحلي لديك:

تعتبر مفاتيح DSA و RSA 1024 بت أو أقل من مفاتيح ssh ضعيفة. تجنبهم. يتم اختيار مفاتيح RSA على مفاتيح ECDSA عندما يكون التوافق مع الإصدارات السابقة مصدر قلق لعملاء ssh. جميع مفاتيح ssh إما ED25519 أو RSA. لا تستخدم أي نوع آخر.

$ ssh-keygen -t key_type -b bits -C “comment"
$ ssh-keygen -t ed25519 -C “Login to production cluster at xyz corp"
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_aws_$(date +%Y-%m-%d) -C “AWS key for abc corp clients"
بعد ذلك ، قم بتثبيت المفتاح العام باستخدام الأمر ssh-copy-id:
$ ssh-copy-id -i /path/to/public-key-file user@host
$ ssh-copy-id user@remote-server-ip-or-dns-name
$ ssh-copy-id vivek@rhel7-aws-server

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

$ ssh vivek@rhel7-aws-serv

img
التحقق من هذا المفتاح ssh

2. تعطيل تسجيل دخول المستخدم الجذر

قبل تعطيل تسجيل دخول المستخدم الجذر ، تأكد من أن المستخدم العادي يمكنه تسجيل الدخول باسم الجذر. على سبيل المثال ، اسمح لمستخدم vivek بتسجيل الدخول كجذر باستخدام الأمر sudo.

كيفية إضافة مستخدم vivek إلى sudo group على Debian / Ubuntu
اسمح لأعضاء المجموعة sudo بتنفيذ أي أمر. إضافة مستخدم vivek إلى مجموعة sudo:
$ sudo adduser vivek sudo

تحقق من عضوية المجموعة باستخدام الأمر id
$ id vivek
كيفية إضافة مستخدم vivek إلى مجموعة sudo على خادم CentOS / RHEL
يسمح للأشخاص في عجلة المجموعة بتشغيل جميع الأوامر على خادم CentOS / RHEL و Fedora Linux. استخدم الأمر usermod لإضافة المستخدم المسمى vivek إلى مجموعة العجلة:
sudo usermod -aG wheel vivek
معرف $ vivek

اختبر وصول sudo وقم بتعطيل تسجيل الدخول إلى الجذر لـ ssh
اختبرها وتأكد من أن المستخدم vivek يمكنه تسجيل الدخول كجذر أو تشغيل الأمر كجذر:
$ sudo -i
$ sudo /etc/init.d/sshd status
$ sudo systemctl status httpd

بمجرد التأكيد ، قم بتعطيل تسجيل الدخول إلى الجذر عن طريق إضافة السطر التالي إلى sshd_config:
PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

3. تعطيل تسجيل الدخول المستند إلى كلمة المرور

يجب تعطيل جميع عمليات تسجيل الدخول المستندة إلى كلمة المرور. يسمح فقط بتسجيل الدخول المستند إلى المفتاح العام. أضف ما يلي في ملف sshd_config الخاص بك:
AuthenticationMethods publickey
PubkeyAuthentication yes

يجب أن يستخدم الإصدار الأقدم من SSHD على CentOS 6.x / RHEL 6.x الإعداد التالي:
PubkeyAuthentication yes

4. تقييد وصول المستخدمين ssh

بشكل افتراضي ، يمكن لجميع مستخدمي الأنظمة تسجيل الدخول عبر SSH باستخدام كلمة المرور الخاصة بهم أو المفتاح العام. في بعض الأحيان تقوم بإنشاء حساب مستخدم UNIX / Linux لغرض FTP أو البريد الإلكتروني. ومع ذلك ، يمكن لهؤلاء المستخدمين تسجيل الدخول إلى النظام باستخدام ssh. سيكون لديهم وصول كامل إلى أدوات النظام بما في ذلك المترجمات ولغات البرمجة النصية مثل Perl و Python والتي يمكنها فتح منافذ الشبكة والقيام بالعديد من الأشياء الفاخرة الأخرى. اسمح فقط لمستخدم root و vivek و jerry باستخدام النظام عبر SSH ، أضف ما يلي إلى sshd_config:

AllowUsers Ahmed turk

بدلاً من ذلك ، يمكنك السماح لجميع المستخدمين بتسجيل الدخول عبر SSH مع رفض عدد قليل فقط من المستخدمين ، مع السطر التالي في sshd_config:
DenyUsers root Tamer

5. تعطيل كلمات المرور الفارغة

تحتاج إلى عدم السماح صراحةً بتسجيل الدخول عن بُعد من الحسابات التي تحتوي على كلمات مرور فارغة ، وتحديث sshd_config بالسطر التالي:

PermitEmptyPasswords no

6. استخدم كلمات مرور وعبارات مرور قوية لمستخدمي / مفاتيح ssh

لا يمكن التأكيد بما فيه الكفاية على مدى أهمية استخدام كلمات مرور وعبارات مرور قوية للمستخدم لمفاتيحك. يعمل هجوم القوة الغاشمة لأن المستخدم ينتقل إلى كلمات المرور القائمة على القاموس. يمكنك إجبار المستخدمين على تجنب كلمات المرور ضد هجوم القاموس واستخدام أداة john the ripper لمعرفة كلمات المرور الضعيفة الموجودة. إليك نموذج مولد كلمة مرور عشوائي (ضع في ملف ~ / .bashrc):

img
مولد كلمة السر العشوائية

Run it:
genpasswd 16

Output:
uw8CnDVMwC6vOKgW

7. جدار الحماية SSH TCP المنفذ رقم 22
تحتاج إلى جدار الحماية ssh TCP port # 22 عن طريق تحديث تكوينات iptables / ufw / firewall-cmd أو pf firewall. عادة ، يجب أن يقبل خادم OpenSSH فقط الاتصالات من شبكة LAN الخاصة بك أو مواقع WAN البعيدة الأخرى فقط.

تكوين Netfilter (Iptables)
قم بتحديث / etc / sysconfig / iptables (ملف خاص بـ Redhat والأصدقاء) لقبول الاتصال فقط من 192.168.1.0/24 و 202.54.1.5/29 ، أدخل:
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state –state NEW -p tcp –dport 22 -j ACCEPT

إذا كان لديك sshd مزدوج مكدس باستخدام IPv6 ، فقم بتحرير / etc / sysconfig / ip6tables (ملف خاص لـ Redhat والأصدقاء) ، فأدخل:
-A RH-Firewall-1-INPUT -s ipv6network::/ipv6mask -m tcp -p tcp –dport 22 -j ACCEPT

استبدل ipv6network :: / ipv6mask بنطاقات IPv6 الفعلية.

UFW هو اختصار لجدار الحماية غير المعقد. يتم استخدامه لإدارة جدار حماية Linux ويهدف إلى توفير واجهة سهلة الاستخدام للمستخدم. استخدم الأمر التالي لقبول المنفذ 22 من 202.54.1.5/29 فقط:

$ sudo ufw allow from 202.54.1.5/29 to any port 22

  • Share:
Send a Message