تعمل خواديم الوِب Web servers على تقديم المحتوى، صفحات الوِب ومستندات أخرى؛ للعملاء Clients عبر الشبكة. أما خادوم FTP فهو من أقدم طرق توفير الملفات - غير الآمنة - للمستخدمين عبر الشبكة وأكثرها انتشارا. يتوفّر نظام Red Hat Enterprise Linux 7 على الإصدار 2.4 من برنامج Apache لخواديم الوِب؛ كما يتوفّر على برنامج VSFTPD لتأدية عمل خادوم FTP مع إضافة طبقة TLS لتأمينه.
سنرى في هذا المقال من سلسلة دروس RHCSA كيفية تثبيت خادومي وِب وFTP، إعدادهما وتأمينهما على RHEL 7.
تثبيت Apache وخادوم FTP
تفترض الخطوات أدناه أن لديك خادوم RHEL 7 معدًّا وجاهزا للعمل. نبدأ بتثبيت Apache وVSFTPD:
# yum update && yum install httpd vsftpd
يصبح الخادومان بعد اكتمال أمر التثبيت أعلاه جاهزين، ولكن ينبغي أولا تفعيل الخدمتين يدويا ثم تفعيل تشغيلهما مع إقلاع النظام:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
نحتاج أيضا لإضافة قاعدة إلى الجدار الناري تسمح بمرور الاتّصالات عبر المنفذين 80
و21
وهما المنفذان المبدئيان لخادومي الوِب وFTPعلى التوالي:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
افتح المتصفح على الخادوم وأدخل العنوان 127.0.0.1
للتأكد من أن خادوم الوِب يعمل. يمكنك أيضا الوصول إلى الصفحة من حاسوب آخر يوجد على نفس الشبكة الداخليّة بإدخال عنوان IP الخاصّ بالخادوم؛ مثلا 192.168.2.200
. يجب أن تظهر الصفحة التاليّة:
بالنسبة لخادوم FTP فسنحتاج لإعداده قبل أن نتأكد من أنه يعمل على النحو المطلوب؛ وهو ما سنفعله بعد قليل.
إعداد خادوم وِب Apache وتأمينه
يوجد ملفّ الإعداد الأساسي لخادوم الوِب Apache على المسار etc/httpd/conf/httpd.conf/
، ويمكن استخدام ملفّات إعداد أخرى بوضعها داخل المجلّد etc/httpd/conf.d/
.
تكفي الإعدادات المبدئية في معظم الحالات؛ إلا أنه من الجيّد التعوّد على جميع خيارات الإعداد المتاحة، المشروحة في التوثيق الرسمي.
تأكد دائما من أخذ نسخة احتياطيّة قبل أن تبدأ في تحرير ملفّ الإعداد:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
افتح الملفّ بمحرّر النصوص المفضّل لديك ثم ابحث عن التعليمات التاليّة:
-
ServerRoot
: تحدّد قيمةُ هذه التعليمة المجلّدََ الذي توجد به ملفات الإعداد، الأخطاء والسّجلات الخاصّة بخادوم الوِب. -
Listen
: تطلُب من Apache الإنصات للاتصالات القادمة عبر منفَذ و/أو عنوان IP معيَّنين. المنفذ المبدئي هو80
. -
Include
: تطلُب من خادوم الوِب تضمين ملفّات إعداد أخرى. يجب أن تكون هذه الملفّات موجودة وإلا فإن خادوم الوِب لن يتمكّن من العمل. يمكن جعل تضمين هذه الملفّات اختياريا باستخدامIncludeOptional
بدلا منInclude
. -
User
وGroup
: حساب المستخدِم والمجموعة الذين تُشغَّل خدمة الوِب باسمهما. -
DocumentRoot
: مسار المجلّد الذي يستخدمه خادوم الوِب لتقديم المحتوى. تُؤخذ مبدئيا جميع المستندات المقدَّمة للإجابة على الطلبات من هذا المجلّد؛ إلا أنه يمكن استخدام وصلات رمزية لتقديم مستندات توجد خارج هذا المجلّد. -
ServerName
: تحدّد هذه التعليمة اسم المضيف (أو عنوان IP) والمنفذ الذي يستخدمه خادوم الوِب للتعريف بنفسه.
يتمثّل أول إعداد أمني في إنشاء حساب مستخدِم ومجموعة خاصّين بتشغيل خادوم الوِب (التعليمتان User
وGroup
السابقتان):
ServerRoot "/etc/httpd" Listen 80 User academy Group academy ServerName www.exapmle.com DocumentRoot "/var/www/html"
يمكننا اختبار الإعدادات بالأمر التالي:
# apachectl configtest
إن لم يوجد خطأ في الإعدادات فستظهر عبارة Syntax OK
.
ملحوظة: إن ظهرت رسالة الخطأ Could not reliably determine the server's fully qualified domain name
فهذا يعني أنه لم تُحدَّد قيمة للتعليمة ServerName
في ملفّ الإعداد.
يمكننا الآن إعادة تشغيل خادوم الوِب لاعتماد الإعدادات:
# systemctl restart httpd
ملحوظة: لا يمكن - مبدئيا - استخدام منفذ مغاير للمنافذ التي تظهر في نتيجة الأمر التالي في إعداد خادوم الوِب، وذلك نظرا لسياسات SELinux:
# semanage port -l | grep -w '^http_port_t'
إن كنت ترغب في استخدام منفذ غير موجود في اللائحة أعلاه (مثلا 8100
عبر بروتوكول TCP) فستحتاج لإضافة سياق منفذ Port context خاصّ بالخدمة httpd
:
# semanage port -a -t http_port_t -p tcp 8100
في ما يلي إجراءات إضافيّة يمكن تنفيذها من أجل تأمين أكبر لخادوم وِب Apache:
-
تعطيل وصول المستخدِم الذي يُشغَّل Apache باسمه من الوصول إلى الصّدفة:
# usermod -s /sbin/nologin academy
-
تعطيل سرد محتويات المجلّدات في Apache لمنع المتصفّح من عرض محتويات مجلّد لا يحوي ملفّ
index.html
. حرّر الملفّetc/httpd/conf/httpd.conf/
(وكذلك ملفات المضيفات الافتراضية في حال وجودها) وتأكّد من أن قيمة التعليمةOptions
في بداية مقاطعDirectory
تساويNone
:Options None
-
إخفاء معلومات التعريف بخادوم الوِب ونظام التشغيل عند الإجابة عن طلبات HTTP. حرّر ملفّ الإعداد
etc/httpd/conf/httpd.conf/
بتغيير قيمتي التعليمتينServerTokens
وServerSignature
على النحو التالي:ServerTokens Prod ServerSignature Off
ستُعتمَد التعديلات بإعادة تشغيل خادوم الوِب، ويمكنك بد تقديم الصفحات من المجلّد var/www/html/
.
إعداد خادوم FTP وتأمينه
يوجد ملفّ الإعداد الأساسي لخادوم Vsftpd على المسار etc/vsftpd/vsftpd.conf/
. يحوي الملفّ - مثل ملفّ إعداد Apache - الكثير من التعليقات التي تشرح عمل التعليمات. تعدّ الإعدادات الأساسيّة كافيّة إلا أنه تجب معرفة التعليمات الموجودة في التوثيق من أجل تشغيل الخادوم بقعاليّة.
بالنسبة لنا استخدمنا الإعدادات التاليّة:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES allow_writeable_chroot=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
من المهمّ الإشارة إلى أن إعطاء القيمة YES
للتعليمة chroot_local_user
يمنع المستخدمين من الوصول إلى ملفات توجد خارج المجلدات الشخصية الخاصّة بهم.
ثم نضبُط SELinux للسماح لخادوم FTP بقراءة الملفات الموجودة في مجلد المستخدم الشخصي:
# setsebool -P ftp_home_dir on
يمكن للعملاء الآن استخدام برنامج مثل Filezilla (عميلFTP) للوصول إلى الملفات على الخادوم. يحتفظ الملفّ var/log/xferlog/
بسجلّ التنزيلات والتحميلات التي تحدُث عبر خادوم FTP.
ترجمة - بتصرّف - لمقال RHCSA Series: Installing, Configuring and Securing a Web and FTP Server – Part 9 لصاحبه Gabriel Cánepa.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.