إذا كان لديك أكثر من حاسوب في نفس الشبكة، فعند حدٍّ معيَّن ستحتاج إلى مشاركة الملفات بين تلك الحواسيب.
خادوم FTP
بروتوكول نقل الملفات (File Transfer Protocol اختصارًا FTP) هو بروتوكول TCP لتنزيل الملفات بين الحواسيب؛ في الماضي، كان يُستخدم أيضًا لرفع الملفات، لكن هذه الطريقة لا توفر إمكانية التشفير، وستُنقَل معلومات المستخدم مع البيانات في صيغة سهلة التفسير؛ إذا كنت تبحث هنا عن طريقة آمنة لرفع أو تنزيل الملفات، فألقِ نظرةً على خادوم OpenSSH.
يعمل FTP وفق نمط «عميل/خادوم»؛ حيث تُسمى مكونة FTP في الخادوم «عفريت FTP»، الذي يستمع بشكل متواصل لطلبات FTP من العملاء البعيدين؛ وعند وصول طلب، فإنه يجري عملية الدخول ويُهيِّء الاتصال، وستُنفَّذ الأوامر المُرسَلة من عميل FTP أثناء مدة عمل الجلسة.
يمكن الوصول إلى خادوم FTP بإحدى الطريقتين:
- مستخدم مجهول.
- مستخدم موثوق.
في نمط المستخدم المجهول (Anonymous)؛ يمكن للعملاء البعيدين الوصول إلى خادوم FTP بحساب المستخدم الافتراضي المُسمى «anonymous» أو «ftp» ويرسلون عنوان بريد إلكتروني ككلمة مرور؛ أما في نمط المستخدم الموثوق، فيجب على المستخدم امتلاك حساب وكلمة مرور؛ الخيار الثاني غير آمن أبدًا ولا يجب أن يستخدم إلا في الحالات الخاصة؛ إذا كنت تبحث عن طريقة آمنة لنقل الملفات، فانظر إلى SFTP في OpenSSH-Server. وصول المستخدم إلى مجلدات وملفات خادوم FTP يتعلق بالأذونات المعطية للحساب أثناء تسجيل الدخول؛ وكقاعدة عامة، سيخفي عفريت FTP المجلد الجذر لخادوم FTP وسيحول المستخدم إلى مجلد منزل FTP؛ وهذا سيخفي بقية نظام الملفات من الجلسات البعيدة.
تثبيت خادوم FTP «vsftpd»
إن vsftpd هو عفريت FTP متوفر في أوبنتو، ومن السهل تثبيته وإعداده وصيانته؛ لتثبيت vsftpd، عليك تنفيذ الأمر الآتي في الطرفية:
sudo apt-get install vsftpd
ضبط الوصول المجهول لخادوم FTP
افتراضيًا، لم يُضبَط vsftpd للسماح للمستخدمين المجهولين بالتنزيل؛ إذا كنت تريد السماح لهم بالتنزيل، فعدِّل الملف /etc/vsftpd.conf مغيّرًا:
anonymous_enable=Yes
سيُنشَأ مستخدم باسم ftp مع مجلد المنزل /srv/ftp أثناء التثبيت؛ هذا هو مجلد FTP الافتراضي.
إذا أردت تغيير هذا المسار إلى /srv/files/ftp على سبيل المثال، فببساطة أنشِئ مجلدًا في مكانٍ آخر، وغيّر مجلد المنزل للمستخدم ftp:
sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp
أعد تشغيل الخدمة vsftpd بعد عمل التغيرات السابقة:
sudo restart vsftpd
في النهاية، انسخ أيّة ملفات ومجلدات تريد للمستخدمين المجهولين تنزيلها عبر ftp إلى /srv/files/ftp أو إلى /srv/ftp إذا أبقيت على الإعدادات الافتراضية.
ضبط FTP للاستيثاق من المستخدمين
افتراضيًا، يكون vsftpd مضبوطًا على الاستيثاق من مستخدمي النظام والسماح لهم بتنزيل الملفات؛ إذا أردت السماح للمستخدمين برفع الملفات، فعدِّل الملف /etc/vsftpd.conf:
write_enable=YES
ثم أعد تشغيل vsftpd:
sudo restart vsftpd
الآن عندما يتصل مستخدمو النظام عبر FTP، فسيبدؤون في مجلد المنزل الخاص بهم، حيث يستطيعون تنزيل أو رفع الملفات أو إنشاء المجلدات ...إلخ.
وبشكلٍ مشابه، لا يُسمَح افتراضيًا للمستخدمين المجهولين برفع الملفات إلى خادوم FTP؛ لتغيير ذلك الإعداد عليك أن تُزيل التعليق عن السطر الآتي وتُعيد تشغيل خدمة vsftpd:
anon_upload_enable=YES
تحذير: إن السماح للمستخدمين المجهولين برفع الملفات إلى الخادوم هو أمرٌ خطيرٌ جدًا، ولا يُفضَّل أبدًا أن يُسمَح للمستخدمين المجهولين برفع الملفات مباشرةً من الإنترنت.
يحتوي ملف الضبط على العديد من خيارات الضبط؛ توجد معلومات حول كل خيار في ملف الضبط؛ ويمكنك مراجعة صفحة الدليل man 5 vsftpd.conf للمزيد من التفاصيل حول كل إعداد.
تأمين FTP
هنالك خيارات في /etc/vsftpd.conf للمساعدة في جعل vsftpd أكثر أمانًا؛ فمثلًا يمكن أن يقيّد وصول المستخدمين إلى مجلدات المنزل الخاصة بهم بإزالة التعليق عن السطر:
chroot_local_users=YES
يمكنك أن تقيّد قائمة محددة من المستخدمين إلى مجلدات المنزل الخاصة بهم فقط:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
بعد إزالة التعليق عن الخيارات السابقة؛ أنشِئ ملف /etc/vsftpd.chroot_list الذي يحتوي على قائمة بالمستخدمين المسموح لهم واحدًا في كل سطر؛ ثم أعد تشغيل vsftpd:
sudo restart vsftpd
يحتوي الملف /etc/ftpusers أيضًا على قائمة بالمستخدمين غير المسموح لهم بالوصول إلى FTP؛ القائمة الافتراضية تتضمن root، و daemon، و nobody ...إلخ. لتعطيل الوصول إلى FTP لمستخدمين آخرين، فأضفهم ببساطة إلى القائمة.
يمكن أن يُشفَّر FTP باستخدام FTPS، الذي يختلف عن SFTP؛ FTPS هو FTP عبر طبقة المقابس الآمنة (SSL)؛ إن SFTP هو مثل جلسة FTP عبر اتصال SSH مشفر؛ اختلاف رئيسي هو أن مستخدمي SFTP يجب أن يملكوا حساب «shell» على النظام، بدلًا من صدفة nologin؛ قد لا يكون توفير صدفة لكل المستخدمين أمرًا ملائمًا في بعض البيئات مثل خادوم ويب مشترك؛ لكن من الممكن تقييد مثل هذه الحسابات إلى SFTP فقط وتعطيل التعامل مع الصدفة، راجع درس OpenSSH لمزيدٍ من المعلومات.
لضبط FTPS، عدِّل الملف /etc/vsftpd.conf وأضف في النهاية:
ssl_enable=Yes
أيضًا، لاحظ الخيارات المتعلقة بالشهادة والمفتاح:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ضُبِطَت هذه الخيارات افتراضيًا إلى الشهادة والمفتاح الموفر من الحزمة ssl-sert؛ لكن يجب استبدالهما في البيئات الإنتاجية بالشهادة والمفتاح المُولَّد لمضيف محدد؛ للمزيد من المعلومات حول الشهادات، راجع الدرس الخاص بها في هذه السلسلة.
أعد الآن تشغيل vsftpd، وسيُجبر المستخدمون غير المجهولين على استخدام FTPS:
sudo restart vsftpd
للسماح للمستخدم بصدفة /usr/sbin/nologin بالوصول إلى FTP، لكن عدم امتلاك وصول للصدفة، فعدِّل ملف /etc/shells مضيفًا الصدفة nologin:
# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin
هذا ضروريٌ لأن vsftpd يستخدم PAM افتراضيًا للاستيثاق؛ والملف /etc/pam.d/vsftpd يحتوي على:
auth required pam_shells.so
الصدفات التي تسمح الوحدة PAM لها بالوصول هي الصدفات المذكورة في ملف /etc/shells.
يمكن ضبط أغلبية عملاء FTP الشهيرين ليتصلوا عبر FTPS. الأداة lftp التي تعمل من سطر الأوامر لها إمكانية استخدام FTPS أيضًا.
مصادر
- راجع موقع vsftpd الرسمي لمزيدٍ من المعلومات.
- لتفاصيل الخيارات في /etc/vsftpd.conf راجع صفحة دليل vsftpd.conf.
ترجمة -وبتصرف- للمقال Ubuntu Server Guide: FTP Server.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.