سلسلة RHCSA: تثبيت وتكوين وتأمين خادم ويب وFTP – الجزء 9

A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.

A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.

الخادم الويب المتوفر في RHEL 7 هو الإصدار 2.4 من خادم Apache HTTP. أما بالنسبة لخادم FTP، فسنستخدم برنامج Very Secure Ftp Daemon (المعروف أيضًا باسم vsftpd) لإنشاء اتصالات مؤمنة بواسطة TLS.

RHCSA: Installing, Configuring and Securing Apache and FTP – Part 9

في هذه المقالة سنشرح كيفية تثبيت وتكوين وتأمين خادم ويب وخادم FTP في RHEL 7.

تثبيت خادم Apache وخادم FTP

في هذا الدليل سنستخدم خادم RHEL 7 بعنوان IP ثابت هو 192.168.0.18/24. لتثبيت 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

للتحقق من أن الخادم الويب يعمل بشكل صحيح، قم بفتح متصفحك وأدخل عنوان IP للخادم. يجب أن ترى الصفحة الاختبارية:

Confirm Apache Web Server

أما بالنسبة لخادم 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)

ثم قم بفتحه باستخدام محرر النص المفضل لديك وابحث عن المتغيرات التالية:

  1. ServerRoot: المجلد الذي تُحفظ فيه ملفات التكوين والأخطاء والسجلات للخادم.
  2. Listen: توجيه أباتشي للاستماع على عنوان IP محدد و / أو منافذ.
  3. Include: يسمح بتضمين ملفات التكوين الأخرى، والتي يجب أن تكون موجودة. خلاف ذلك، سيفشل الخادم، على عكس التوجيه IncludeOptional، الذي يتم تجاهله بصورة صامتة إذا لم تكن ملفات التكوين المحددة موجودة.
  4. User و Group: اسم المستخدم / المجموعة التي يتم تشغيل خدمة httpd بها.
  5. DocumentRoot: المجلد الذي سيخدم منه أباتشي مستنداتك. بشكل افتراضي، يتم استلام جميع الطلبات من هذا المجلد، ولكن يمكن استخدام الروابط الرمزية والأسماء المستعارة للإشارة إلى مواقع أخرى.
  6. ServerName: هذا التوجيه يحدد اسم المضيف (أو عنوان IP) والمنفذ الذي يستخدمه الخادم لتحديد هويته.

الإجراء الأمني الأول سيتكون من إنشاء مستخدم ومجموعة مخصصة (مثل tecmint/tecmint) لتشغيل خادم الويب، وتغيير المنفذ الافتراضي إلى منفذ أعلى (مثل 9000 في هذه الحالة):

ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

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

# apachectl configtest

وإذا كان كل شيء ممتاز، فقم بإعادة تشغيل خادم الويب.

# systemctl restart httpd

ولا تنسى تمكين المنفذ الجديد (وتعطيل القديم) في جدار الحماية:

# firewall-cmd --zone=public --remove-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
# firewall-cmd --reload

يرجى ملاحظة أنه نظرًا لسياسات SELinux، يمكنك استخدام الأنفاق المرتجعة بواسطة

# semanage port -l | grep -w '^http_port_t'

لخادم الويب.

إذا كنت ترغب في استخدام منفذ آخر (مثل منفذ TCP 8100)، يجب عليك إضافته إلى سياق المنفذ SELinux لخدمة httpd:

# semanage port -a -t http_port_t -p tcp 8100
Add Apache Port to SELinux Policies

لتأمين تثبيت Apache الخاص بك بشكل أكبر، اتبع هذه الخطوات:

1. يجب ألا يكون لمستخدم تشغيل Apache وصول إلى القشرة:

# usermod -s /sbin/nologin tecmint

2. قم بتعطيل قائمة الدلائل لمنع المتصفح من عرض محتويات الدليل في حالة عدم وجود ملف index.html في ذلك الدليل.

عدل على /etc/httpd/conf/httpd.conf (وملفات التكوين للخوادم الافتراضية، إن وجدت) وتأكد من أن التوجيه Options، في كل من الأعلى ومستويات كتلة الدليل، مضبوط على None:

Options None

3. قم بإخفاء معلومات حول خادم الويب ونظام التشغيل في ردود HTTP. عدل على /etc/httpd/conf/httpd.conf على النحو التالي:

ServerTokens Prod 
ServerSignature Off

الآن أنت مستعد لبدء عرض المحتوى من دليلك /var/www/html.

تكوين وتأمين خادم FTP

كما هو الحال مع أباتشي، ملف التكوين الرئيسي لـ Vsftpd (/etc/vsftpd/vsftpd.conf) معلق جيدًا وفي حين أن التكوين الافتراضي يكفي لمعظم التطبيقات، يجب أن تصبح على دراية بالوثائق وصفحة الرجوع (man vsftpd.conf) من أجل تشغيل خادم الـ ftp بفعالية أكبر (لا يمكن أن أؤكد ذلك بما فيه الكفاية!).

في حالتنا، هذه هي التوجيهات المستخدمة:

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

باستخدام chroot_local_user=YES، سيتم وضع المستخدمين المحليين (بشكل افتراضي) في سجن chroot في دليل منزلهم مباشرة بعد تسجيل الدخول. وهذا يعني أن المستخدمين المحليين لن يتمكنوا من الوصول إلى أي ملفات خارج الدلائل المقابلة لمنزلهم.

أخيرًا، للسماح لـ ftp بقراءة الملفات في دليل المستخدم، اضبط الموازنة SELinux التالية:

# setsebool -P ftp_home_dir on

يمكنك الآن الاتصال بخادم الـ ftp باستخدام عميل مثل Filezilla:

Check FTP Connection

لاحظ أن سجل /var/log/xferlog يسجل التنزيلات والرفعات، والتي تتفق مع قائمة المجلدات أعلاه:

Monitor FTP Download and Upload

اقرأ أيضًا: تقييد سعة الشبكة المستخدمة من قبل تطبيقات في نظام لينكس باستخدام Trickle

ملخص

في هذا البرنامج التعليمي قمنا بشرح كيفية إعداد خادم ويب وخادم FTP. نظرًا لواسعة الموضوع، لا يمكن تغطية جميع جوانب هذه المواضيع (أي الخوادم الويب الافتراضية). لذا، أوصيك أيضًا بالتحقق من مقالات أخرى ممتازة في هذا الموقع حول Apache.

Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/