تأمين الاتصالات عن طريق SSH وإعداد أسماء المضيفات على Red Hat Enterprise Linux


محمد أحمد العيل

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

كان مديرو الأنظمة في البداية يستعملون خدمة telnet للولوج إلى الأنظمة عن بعد؛ إلا أن هذه الخدمة لم تعد مستعملة نظرا لأن الاتصالات التي تتم عبرها غير آمنة وتمكن قراءتها. سنرى في هذا المقال طريقة آمنة للولوج عن بعد إلى الخواديم وكيفيةَ إعداد خدمات الشبكة لتبدأ تلقائيا بعد إقلاع النظام؛ كما سنتعرّض لكيفية ضبط الشبكة واسم المضيف Hostname.

تثبيت SSH وتأمين الاتصالات

ستحتاج، لتكون قادرا على الاتصال بخواديم RHEL عن بعد عن طريق SSH، إلى تثبيت الحزم openssh-server ، openssh-clients وopenssh. لن يكتفي الأمر التالي بتثبيت برنامج الولوج عن بعد بل سيثبّت أيضا أداة نقل الملفات عن بعد وأداة لتأمين تقل الملفات:

# yum update && yum install openssh openssh-clients openssh-server

تتولى حزمة openssh-server إدارة الاتصالات عبر SSH من جانب الخادوم، في ما تتولى openssh-clients إدارتها من جانب العميل؛ تثبيتُ الحزمتين - إضافة إلى حزمة openssh - على نفس الجهاز يمكّن من استخدامه للاتّصال بجهاز آخر أو للاتصال به انطلاقا من جهاز آخر.

توجد إعدادات أساسيّة في الملفّ etc/ssh/sshd_config/ على الخادوم يزيد تعديل قيمها المبدئيّة من أمان الاتصالات عن بعد:

  • غيّر المنفذ Port المبدئي الذي يُنصت عبره الخادوم لاتصالات SSH. القيمة المبدئيّة هي 22. تأكد قبل تغيير المنفذ أنه غير مُستخدَم؛ مثلا بتنفيذ أمر netstatعلى النحو التالي (حيث 2500 هو المنفذ الذي نريد التأكد من شغوره):
# netstat -npltu | grep 2500

إن لم يُرجع الأمر أعلاه أية نتيجة فيمكنك استخدام المنفذ 2500 دون مشاكل. افتح الملف etc/ssh/sshd_config/ لتعديل المنفذ المبدئي على الخادوم ليصبح على النحو التالي:

Port 2500
  • ثم في نفس الملفّ عدّل قيمة التعليمة Protocol لتصبح 2 فقط:
Protocol 2

اضبط المهلة الزمنيّة للاستيثاق على القيمة دقيقتين على سبيل المثال، عطّل إمكانيّة الدخول بالحساب الجذر root عن بعد واجعل الولوج عن بعد متاحا فقط لمجموعة محدودة من المستخدمين:

LoginGraceTime 2m
PermitRootLogin no
AllowUsers academy

 

  1. يمكن أيضا تفعيل الاستيثاق المعتمد على المفاتيح بدلا من كلمات السّر:

    PasswordAuthentication no
    RSAAuthentication yes
    PubkeyAuthentication yes

     

يفترض الإعداد الأخير أنك سبق أن ولّدت زوج مفاتيح لحساب المستخدم على الأجهزة العميلة ونسخت المفتاح العامّ إلى الخادوم مثل ما هو مشروح في درس العمل مع خواديم SSH: العملاء والمفاتيح.

إعداد الشبكة وتمييز الأسماء Name resolution

توجد بضعة ملفات إعداد تتحكّم في إعدادات الشبكة على مستوى النظام عموما:

1. ملف etc/hosts/

يُستخدَم هذا الملفّ لترجمة أسماء المضيفات إلى عناوين IP في الشبكات الصغيرة. يأخذ كلّ سطر في الملفّ الصيغة التاليّة:

 
 اسم النطاق المعرَّف بالكامل  اسم المضيف   العنوان

على سبيل المثال:

 
192.168.0.10    rhcsa   rhcsa.redhat.academy.hsoub.com

2. ملفّ etc/resolv.conf/

يحدّد عناوين IP الخاصّة بخواديم النطاقات ونطاق البحث الذي يُستخدَم لتكملة استعلام عن اسم نطاق في حال عدم تحديد اسم النطاق المعرَّف بالكامل. لن تحتاج لتحرير هذا الملفّ في الحالات العاديّة؛ ولكن إن احتجت لتعديل خواديم النطاقات فمن المهمّ الحفاظ على الصيغة التاليّة لكلّ سطر في الملف:

 
nameserver  عنوان IP

على سبيل المثال:

 
nameserver 8.8.8.8

3. ملفّ etc/host.conf/

يحدّد الطرق والترتيبات التي يستخدمها خادوم تمييز الأسماء لمعرفة عناوين أسماء المضيفات في الشبكة. بمعنى أنه يخبر الخادوم الخدماتِ التي يجب عليه الاستعانة بها ووفق أي ترتيب. توجد في هذا الملفّ خيارات كثيرة؛ إلا أن الإعداد الأساسي والأكثر انتشارا يحوي سطرا بالصيغة التاليّة:

 
order bind,hosts

تشير هذه الصيغة إلى أن خادوم تمييز الأسماء يجب أن يستعلم أولا من الخواديم المحدّدة في الملفّ resolv.conf ثم إن لم يحصُل على نتيجة ينظُر في الملفّ etc/hosts/.

4. ملفّ etc/sysconfig/network/

يحوي هذا الملفّ معلومات التوجيه Routing ومعلومات المضيف العامّة لجميع واجهات الشبكة. يمكن استخدام التعليمات التاليّة:

NETWORKING=yes|no
HOSTNAME=value

حيث value هي اسم النطاق المعرَّف بالكامل للمضيف.

 
GATEWAY=XXX.XXX.XXX.XXX

حيث XXX.XXX.XXX.XXX هو عنوان IP الخاصّ بالبوّابة Gateway.

 
GATEWAYDEV=value

تحدّد قيمة هذه التعليمة، في حالة حاسوب توجد به أكثر من واجهة شبكة، الجهازَ الطّرفي Device الذي توجد عليه البواّبة؛ مثلا enp0s3.

مجلّد etc/sysconfig/network-scripts/ (ملفات إعداد واجهات الشبكة)

توجد داخل هذا المجلّد ملفات عدّة تبدأ أسماءها بـifcfg؛ يظهر بعد السابقة ifcfg في اسم الملفّ اسمُ الواجهة التي يضبط إعداداتها. يمكن عرض أسماء الواجهات الموجودة على الجهاز باستخدام الأمر ip link show:

 
# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 08:00:27:21:98:8c brd ff:ff:ff:ff:ff:ff

تظهر في نتيجة الأمر أعلاه أسماءُ الواجهات enp0s3، lo وenp0s8؛ وعند سرد محتويات المجلّد:

 
# ls /etc/sysconfig/network-scripts/
ifcfg-enp0s3     ifdown-eth   ifdown-post    ifdown-TeamPort  ifup-eth   ifup-plip    ifup-sit       init.ipv6-global
ifcfg-lo         ifdown-ib    ifdown-ppp     ifdown-tunnel    ifup-ib    ifup-plusb   ifup-Team      network-functions
ifcfg-Profile_1  ifdown-ippp  ifdown-routes  ifup             ifup-ippp  ifup-post    ifup-TeamPort  network-functions-ipv6
ifdown           ifdown-ipv6  ifdown-sit     ifup-aliases     ifup-ipv6  ifup-ppp     ifup-tunnel
ifdown-bnep      ifdown-isdn  ifdown-Team    ifup-bnep        ifup-isdn  ifup-routes  ifup-wireless

لاحظ الملفات التي تبدأ أسماءها بـifcfg مثل ifcfg-enp0s3. تتشابه إعدادات الواجهات، ما عدا واجهة lo. ينبغي الانتباه إلى أن تعديل قيمة متغيرّات في ملفّ ifcfg الخاصّ بواجهة سيلغي تطبيق التعليمات المشابهة الواردة في الملفّ etc/sysconfig/network/ على هذه الواجهة. أضفنا تعليقات إلى تعليمات الملفّات الواردة أدناه من أجل الشّرح؛ إلا أنه ينبغي تجنّب إضافة تعليقات إلى الملفّ الفعلي.

# عنوان MAC الخاصّ بالواجهة
HWADDR=08:00:27:4E:59:37
# نوع الاتصال
TYPE=Ethernet
# تشير هذه القيمةإلى أن عنوان آي بي الخاصّ بالواجهة قد حُدِّد يدويا.
# إن كانت قيمة التعليمة هي 
# dhcp 
# فهذا يعني أن عنوان آي بي يحدّده خادوم
# DHCP
# ؛ وبالتالي يجب ألا يكون السطران المواليّان لهذا السطر مذكورين
BOOTPROTO=static
# عنوان آي بي الواجهة
IPADDR=192.168.0.18
# قناع الشبكة
NETMASK=255.255.255.0
# البوابة
GATEWAY=192.168.0.1
# تحدّد ما إذا كان مدير الشبكة 
# Network manager 
# يتحكّم في هذه الواجهة.
# القيمة هنا هيno 
# ؛ من أجل منع تغيير الإعدادات
NM_CONTROLLED=no 
NAME=enp0s3
UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
# تحدّد هذه التعليمة ما إذا كان على نظام التشغيل تفعيل هذه الواجهة مع إقلاع النظام
# (نعم yes في حالتنا)
ONBOOT=yes

إعداد أسماء المضيفات

يُستخدَم الأمر hostnamectl للاستعلام عن أسماء المضيفات ولضبطها على نظام Red Hat Enterprise Linux 7. نفّذ الأمر التالي لعرض الاسم الحالي للمضيف:

# hostnamectl 
Static hostname: localhost.localdomain
        Icon name: computer-vm
        Chassis: vm
        Machine ID: df88bf46c92e47e8b4b16df99ab633d9
        Boot ID: dc52c695417a4a6aa77dfdd633b2c3c7
    Virtualization: kvm
Operating System: Red Hat Enterprise Linux
    CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
            Kernel: Linux 3.10.0-327.18.2.el7.x86_64
    Architecture: x86-64

استخدم الخيار set-hostname مع الأمر لتغيير اسم المضيف إلى الاسم المُمرَّر في المعطى الموالي:

 
# hostnamectl set-hostname academy1

يضبُط الأمر أعلاه اسمَ المضيف ليصبح academy1.

أعد تشغيل خدمة hostnamed لاعتماد التعديل دون الحاجة لإعادة تشغيل الجهاز:

 
# systemctl restart systemd-hostnamed

يمكن أيضا استخدام الأداة nmcli لنفس الغرض. يعرض الأمر التالي الاسم الحالي للمضيف:

 
# nmcli general hostname

استخدم الأمر التالي لتغيير اسم المضيف بالأداة nmcli:

 
# nmcli general hostname academy1

تشغيل خدمات الشبكة مع إقلاع النظام

نريد الآن التأكد من أن خدمات الشبكة ستُشغَّل تلقائيا مع إقلاع نظام التشغيل. يتم هذا الأمر بإنشاء وصلات إلى ملفات محدّدة ضمن مقطع [install] في ملفات إعداد الخدمات (مثل usr/lib/systemd/system/firewalld.service/ بالنسبة للجدار الناري firewalld). لكننا لن نتولى عملية إنشاء الوصلات مباشرة؛ بل إن نظام التمهيد SystemD سيتولى المهمة.

ننفّذ الأمر التالي لتفعيل خدمة الجدار الناري مع الإقلاع:

 
# systemctl enable firewalld

وبالنسبة لخدمة الشبكة:

 
# systemctl enable network

ترجمة - بتصرّف - لمقال RHCSA Series: Securing SSH, Setting Hostname and Enabling Network Services – Part 8 لصاحبه Gabriel Cánepa.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن