ذكري المظهر

كيفية إعداد خادم بروتوكول نقل الملفات مع vsftpd على ديبيان 9

اعداد سيرفر FTP على لينكس لنقل وتحميل الملفات في خطوتين

اعداد سيرفر FTP على لينكس لنقل وتحميل الملفات في خطوتين

جدول المحتويات:

Anonim

FTP (بروتوكول نقل الملفات) هو بروتوكول شبكة قياسي يستخدم لنقل الملفات من وإلى شبكة بعيدة. لنقل البيانات بشكل أكثر أمانًا وأسرع ، استخدم SCP أو SFTP.

هناك العديد من خوادم FTP مفتوحة المصدر متاحة لنظام Linux. الأكثر شعبية وتستخدم على نطاق واسع هي PureFTPd ، ProFTPD ، و vsftpd.

يشرح هذا البرنامج التعليمي كيفية تثبيت وتكوين vsftpd (Secure Ftp Daemon) في Debian 9. vsftpd خادم FTP آمن ومستقر وسريع. سنبين لك أيضًا كيفية تكوين vsftpd لتقييد المستخدمين بدليلهم الرئيسي وتشفير الإرسال بالكامل باستخدام SSL / TLS.

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

المستخدم الذي قمت بتسجيل الدخول كما يجب أن يكون لديه امتيازات sudo لتتمكن من تثبيت الحزم.

تثبيت vsftpd على ديبيان 9

تتوفر حزمة vsftpd في مستودعات دبيان. التثبيت بسيط ومباشر:

sudo apt update sudo apt install vsftpd

ستبدأ خدمة vsftpd تلقائيًا بعد اكتمال عملية التثبيت. تحقق من ذلك عن طريق طباعة حالة الخدمة:

sudo systemctl status vsftpd

سيبدو الإخراج كما يلي أدناه ، حيث يوضح أن خدمة vsftpd نشطة وتعمل:

● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

تكوين vsftpd

يمكن تكوين خادم vsftpd عن طريق تعديل ملف vsftpd.conf ، الموجود في الدليل /etc

يتم توثيق معظم الإعدادات جيدًا داخل ملف التكوين. للاطلاع على جميع الخيارات المتاحة ، تفضل بزيارة صفحة vsftpd الرسمية.

في الأقسام التالية ، سنتجاوز بعض الإعدادات المهمة اللازمة لتكوين تثبيت vsftpd آمن.

ابدأ بفتح ملف تكوين vsftpd:

sudo nano /etc/vsftpd.conf

1. FTP الوصول

حدد توجيهات anonymous_enable و local_enable وتحقق من مطابقة التكوين للخطوط أدناه:

/etc/vsftpd.conf

anonymous_enable=NO local_enable=YES

هذا يضمن أن المستخدمين المحليين فقط يمكنهم الوصول إلى خادم FTP.

2. تمكين التحميلات

قم write_enable تحديد الإعداد write_enable للسماح بالتغييرات في نظام الملفات مثل تحميل الملفات وحذفها.

/etc/vsftpd.conf

write_enable=YES

3. Chroot السجن

لمنع مستخدمي FTP من الوصول إلى أي ملفات خارج الدلائل الرئيسية الخاصة بهم ، قم chroot تحديد إعداد chroot .

/etc/vsftpd.conf

chroot_local_user=YES

افتراضيًا لمنع وجود ثغرة أمنية ، عندما يتم تمكين chroot ، فإن vsftpd سيرفض تحميل الملفات إذا كان الدليل الذي يقفله المستخدمون قابلًا للكتابة.

استخدم إحدى الطرق أدناه للسماح بالتحميلات عند تمكين chroot.

  • الطريقة الأولى - الطريقة الموصى بها للسماح بالتحميل هي الحفاظ على تمكين chroot وتكوين دلائل FTP. في هذا البرنامج التعليمي ، سنقوم بإنشاء دليل ftp داخل منزل المستخدم والذي سيكون بمثابة دليل التحميل والكتابة للتحميل لتحميل الملفات.

    /etc/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    الطريقة الثانية - خيار آخر هو إضافة التوجيه التالي في ملف تكوين vsftpd. استخدم هذا الخيار إذا كان عليك منح حق الوصول للكتابة إلى المستخدم الخاص بك إلى الدليل الرئيسي الخاص به.

    /etc/vsftpd.conf

    allow_writeable_chroot=YES

4. اتصالات FTP السلبي

يمكن أن يستخدم vsftpd أي منفذ لاتصالات FTP السلبية. سنقوم بتحديد الحد الأدنى والأقصى لنطاق المنافذ وفتح النطاق في وقت لاحق في جدار الحماية الخاص بنا.

أضف الأسطر التالية إلى ملف التكوين:

/etc/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. الحد من تسجيل دخول المستخدم

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

/etc/vsftpd.conf

userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

عند تمكين هذا الخيار ، يتعين عليك تحديد المستخدمين الذين يمكنهم تسجيل الدخول بشكل صريح من خلال إضافة أسماء المستخدمين إلى ملف /etc/vsftpd.user_list (مستخدم واحد لكل سطر).

6. تأمين عمليات الإرسال باستخدام SSL / TLS

لتشفير عمليات نقل FTP باستخدام SSL / TLS ، ستحتاج إلى الحصول على شهادة SSL وتكوين خادم FTP لاستخدامها.

يمكنك استخدام شهادة SSL موجودة موقعة من قبل المرجع المصدق الموثوق به أو إنشاء شهادة موقعة ذاتياً.

في هذا البرنامج التعليمي ، سنقوم بإنشاء شهادة SSL موقعة ذاتيًا باستخدام أمر openssl .

سيُنشئ الأمر التالي مفتاحًا خاصًا 2048 بت وشهادة موقعة ذاتيًا صالحة لمدة 10 سنوات. سيتم حفظ المفتاح الخاص والشهادة في نفس الملف:

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

بمجرد إنشاء شهادة SSL ، افتح ملف تكوين vsftpd:

sudo nano /etc/vsftpd.conf

ابحث عن توجيهات rsa_private_key_file و rsa_private_key_file وتغيير rsa_private_key_file إلى مسار ملف pam وتعيين التوجيه ssl_enable إلى YES :

/etc/vsftpd.conf

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

إذا لم يتم تحديد خلاف ذلك ، فسيستخدم خادم FTP TLS فقط لإجراء اتصالات آمنة.

أعد تشغيل خدمة vsftpd

بمجرد الانتهاء من التحرير ، يجب أن يبدو ملف تكوين vsftpd (باستثناء التعليقات) كما يلي:

/etc/vsftpd.conf

listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

احفظ الملف وأعد تشغيل خدمة vsftpd لتصبح التغييرات نافذة المفعول:

sudo systemctl restart vsftpd

فتح جدار الحماية

لفتح المنفذ 21 (منفذ أمر FTP) ، والمنفذ 20 (منفذ بيانات FTP) و 30000-31000 (نطاق المنافذ السلبية) ، قم بتشغيل الأوامر التالية:

sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

لتجنب التعرض للحبس ، سنقوم أيضًا بفتح المنفذ 22 :

sudo ufw allow OpenSSH

إعادة تحميل قواعد UFW عن طريق تعطيل وإعادة تمكين UFW:

sudo ufw disable sudo ufw enable

للتحقق من تشغيل التغييرات:

sudo ufw status

Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

إنشاء مستخدم FTP

لاختبار خادم FTP الخاص بنا ، سنقوم بإنشاء مستخدم جديد.

  • إذا كان لديك بالفعل مستخدم ترغب في منح حق الوصول إلى FTP ، فقم بتخطي الخطوة الأولى. إذا قمت بتعيين allow_writeable_chroot allow_writeable_chroot=YES في ملف التكوين الخاص بك ، فتخط الخطوة الثالثة.
  1. قم بإنشاء مستخدم جديد باسم newftpuser :

    sudo adduser newftpuser

    أضف المستخدم إلى قائمة مستخدمي FTP المسموح بهم:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

    قم بإنشاء شجرة دليل FTP وتعيين الأذونات الصحيحة:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    كما تمت مناقشته في القسم السابق ، سيتمكن المستخدم من تحميل ملفاته إلى دليل ftp/upload .

في هذه المرحلة ، يعمل خادم FTP بشكل كامل ، ويجب أن تكون قادرًا على الاتصال بالخادم الخاص بك باستخدام أي عميل FTP يمكن تكوينه لاستخدام تشفير TLS مثل FileZilla.

تعطيل شل الوصول

بشكل افتراضي ، عند إنشاء مستخدم ، إن لم يكن محددًا بشكل صريح ، فسيتمتع المستخدم بوصول SSH إلى الخادم.

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

إنشاء /bin/ftponly shell وجعلها قابلة للتنفيذ:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

إلحاق shell الجديد بقائمة الأصداف الصالحة في ملف /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

قم بتغيير shell المستخدم إلى /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

استخدم نفس الأمر لتغيير غلاف جميع المستخدمين الذين تريد منحهم حق الوصول إلى FTP فقط.

استنتاج

في هذا البرنامج التعليمي ، تعلمت كيفية تثبيت خادم FTP آمن وسريع على نظام دبيان 9 وتكوينه.

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