ذكري المظهر

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

29- استخدام ftp sftp

29- استخدام ftp sftp

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

Anonim

FTP (بروتوكول نقل الملفات) هو بروتوكول شبكة خادم عميل قياسي يسمح للمستخدمين بنقل الملفات من وإلى شبكة بعيدة.

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

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

لنقل البيانات بشكل أكثر أمانًا وأسرع ، استخدم SCP أو SFTP.

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

قبل المتابعة مع هذا البرنامج التعليمي ، تأكد من تسجيل الدخول كمستخدم لديه امتيازات sudo.

تثبيت vsftpd على CentOS 7

تتوفر حزمة vsftpd في مستودعات CentOS الافتراضية. لتثبيته ، قم بإصدار الأمر التالي:

sudo yum install vsftpd

بمجرد تثبيت الحزمة ، ابدأ تشغيل البرنامج الخفي vsftpd وتمكينه من البدء تلقائيًا في وقت التمهيد:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

يمكنك التحقق من تشغيل خدمة vsftpd من خلال طباعة حالتها:

sudo systemctl status vsftpd

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

● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

تكوين vsftpd

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

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

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

sudo nano /etc/vsftpd/vsftpd.conf

1. FTP الوصول

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

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

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

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

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Chroot السجن

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

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

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

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

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

    /etc/vsftpd/vsftpd.conf

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

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

    /etc/vsftpd/vsftpd.conf

    allow_writeable_chroot=YES

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

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

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

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

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

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

/etc/vsftpd/vsftpd.conf

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/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

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

sudo nano /etc/vsftpd/vsftpd.conf

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

/etc/vsftpd/vsftpd.conf

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

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

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

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

/etc/vsftpd/vsftpd.conf

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 listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

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

sudo systemctl restart vsftpd

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

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

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

أعد تحميل قواعد جدار الحماية عن طريق الكتابة:

firewall-cmd --reload

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

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

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

    sudo adduser newftpuser

    بعد ذلك ، ستحتاج إلى تعيين كلمة مرور المستخدم:

    sudo passwd 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

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

استنتاج

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

بروتوكول نقل الملفات centos