ديف أوبس

تنصيب خادم FTP على أوبنتو

كيفية تنصيب وإعداد خادوم FTP على أوبنتو: شرح مفصل وشامل للمبتدئين والمتقدمين

مقدمة

خدمة FTP أو File Transfer Protocol تُعد من أقدم البروتوكولات التي تتيح تبادل الملفات بين أجهزة الكمبيوتر عبر الشبكة. وعلى الرغم من وجود بروتوكولات أحدث وأكثر أماناً مثل SFTP وSCP، لا تزال خوادم FTP تُستخدم على نطاق واسع في البيئات المؤسسية والتعليمية بسبب بساطتها وسهولة استخدامها، وخاصة في أنظمة لينُكس مثل أوبنتو.

يُعتبر تنصيب وإعداد خادوم FTP على أوبنتو من المهام الأساسية التي يحتاج إليها مسؤولو الأنظمة، ومديرو الخوادم، بل وحتى مطورو الويب الذين يحتاجون إلى وسيلة فعالة لتحميل الملفات إلى الخادم أو تحميلها منه.

في هذا المقال المفصل، سيتم تناول الخطوات الكاملة لتثبيت، إعداد، وضبط خادوم FTP على أوبنتو، بالإضافة إلى توضيح أهم الإعدادات الأمنية والعملية لضمان أداء مثالي وآمن.


المتطلبات الأساسية

قبل البدء، من المهم التأكد من توفر المتطلبات التالية على الجهاز الذي سيتم إعداد الخادم عليه:

  • نظام تشغيل أوبنتو (يفضل الإصدارات الحديثة مثل 20.04 أو 22.04)

  • صلاحيات المستخدم الجذر (root) أو إمكانية استخدام sudo

  • اتصال بالإنترنت لتثبيت الحزم المطلوبة

  • الوصول إلى الطرفية (Terminal)


الخطوة 1: تحديث النظام

قبل تثبيت أي حزمة، من الأفضل دائماً التأكد من تحديث النظام للحصول على آخر التحديثات الأمنية والبرمجية:

bash
sudo apt update && sudo apt upgrade -y

الخطوة 2: تثبيت خادوم FTP (vsftpd)

يُعتبر vsftpd (Very Secure FTP Daemon) من أشهر خوادم FTP المتوفرة لأنظمة لينُكس، ويتميز بالاستقرار والسرعة وسهولة التكوين.

bash
sudo apt install vsftpd -y

بعد التثبيت، يتم تفعيل الخدمة وتشغيلها تلقائياً. يمكن التحقق من حالتها باستخدام:

bash
sudo systemctl status vsftpd

الخطوة 3: إنشاء نسخة احتياطية من ملف الإعدادات

قبل إجراء أي تعديلات على ملف الإعدادات، من الضروري إنشاء نسخة احتياطية منه:

bash
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

الخطوة 4: ضبط إعدادات الخادوم

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

bash
sudo nano /etc/vsftpd.conf

قم بإجراء التعديلات التالية (مع شرح كل منها):

  • تفعيل الوصول للمستخدمين المحليين:

bash
local_enable=YES
  • تفعيل إمكانية رفع الملفات:

bash
write_enable=YES
  • تقييد المستخدمين إلى مجلدهم الرئيسي:

bash
chroot_local_user=YES
  • تعطيل التصفح لمجلدات النظام (تفعيل أمان إضافي):

bash
allow_writeable_chroot=YES
  • تفعيل تسجيل الدخولات:

bash
xferlog_enable=YES
  • تفعيل الوضع السلبي لتفادي مشكلات الجدار الناري:

bash
pasv_enable=YES pasv_min_port=10000 pasv_max_port=10100
  • تحديد عنوان الخادم (إن لزم):

bash
pasv_address=xxx.xxx.xxx.xxx

(استبدل xxx.xxx.xxx.xxx بعنوان IP الحقيقي للخادم)

بعد الانتهاء من التعديلات، احفظ الملف واخرج بالضغط على Ctrl + O ثم Enter ثم Ctrl + X.


الخطوة 5: إعادة تشغيل خدمة vsftpd

لتطبيق التعديلات:

bash
sudo systemctl restart vsftpd

الخطوة 6: إعداد جدار الحماية (UFW)

إذا كان جدار الحماية مفعلاً، فيجب السماح بمنفذ FTP ومنفذي الوضع السلبي:

bash
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 10000:10100/tcp sudo ufw reload

للتحقق من الحالة:

bash
sudo ufw status

الخطوة 7: إنشاء مستخدم FTP جديد

لإنشاء مستخدم جديد مخصص لـ FTP:

bash
sudo adduser ftpuser

(استبدل ftpuser بالاسم الذي تريده)

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


الخطوة 8: تحديد مجلد العمل للمستخدم

يفضل وضع الملفات داخل مجلد محدد مثل /home/ftpuser/ftp:

bash
sudo mkdir -p /home/ftpuser/ftp/files sudo chown nobody:nogroup /home/ftpuser/ftp sudo chmod a-w /home/ftpuser/ftp sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files

يتم بذلك تحديد مجلد خاص للتحميلات والملفات، مما يضيف طبقة من الحماية.


الخطوة 9: التأكد من الاتصال

يمكن استخدام أدوات مثل FileZilla أو حتى سطر الأوامر لاختبار الاتصال بالخادم. باستخدام FileZilla، يجب إدخال المعلومات التالية:

  • Host: عنوان الخادم (IP أو اسم النطاق)

  • Username: اسم المستخدم

  • Password: كلمة المرور

  • Port: 21


الخطوة 10: إعداد FTP مع SSL/TLS

لتشفير الاتصال وزيادة الأمان، يمكن تفعيل دعم SSL/TLS باستخدام vsftpd.

إنشاء شهادة SSL ذاتية:

bash
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/vsftpd.pem \ -out /etc/ssl/private/vsftpd.pem

تعديل ملف الإعدادات:

افتح ملف الإعداد:

bash
sudo nano /etc/vsftpd.conf

أضف أو عدّل القيم التالية:

bash
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH

ثم احفظ وأعد تشغيل الخدمة:

bash
sudo systemctl restart vsftpd

الخطوة 11: تسجيل الدخولات ومراقبة النشاط

تقوم vsftpd بتخزين سجلاتها عادة في:

bash
/var/log/vsftpd.log

ويمكن تتبع الدخولات المشبوهة أو الأخطاء عبر هذا الملف لتحسين الأمان.


الخطوة 12: منع الوصول المجهول

افتراضياً، يسمح vsftpd بالوصول المجهول (anonymous). لتعطيله:

bash
anonymous_enable=NO

تأكد أن هذا الخيار موجود ومُفعّل في ملف الإعدادات ثم أعد تشغيل الخدمة.


جدول المنافذ والبروتوكولات

الخدمة المنفذ البروتوكول الغرض
FTP (أساسي) 21 TCP تحكم ونقل أوامر FTP
FTP (نقل بيانات) 20 TCP قناة نقل البيانات
الوضع السلبي (PASV) 10000-10100 TCP لنقل البيانات بوضع PASV

اعتبارات أمنية إضافية

  • استخدام كلمة مرور قوية لكل مستخدم

  • تعطيل تسجيل الدخول من المستخدم root

  • مراقبة السجلات بشكل دوري

  • استخدام SFTP في الحالات التي تتطلب تشفيراً كاملاً للبيانات

  • الحد من عدد الاتصالات المتزامنة

  • تقييد الوصول إلى عناوين IP محددة باستخدام جدار الحماية أو إعدادات vsftpd


الخلاصة التقنية

خدمة FTP ما زالت تلعب دوراً في بنية الخوادم، خصوصاً في الحالات التي تتطلب تبادلاً سريعاً للملفات دون تعقيد. ولكن من الضروري تأمين الخدمة عبر التكوين الصحيح، إعداد الجدار الناري، والتأكد من أن المستخدمين لا يمكنهم الخروج من مجلداتهم. استخدام بروتوكولات مشفرة مثل FTPS أو SFTP هو الخيار الأفضل في البيئات الإنتاجية.


المصادر