- لتثبيت مكونات خادم نقل الملفات VSFTPD على نظام التشغيل أوبونتو
$ sudo apt-get install vsftpd
- تعديل ملف التهيئة vsftpd.config
أولا سننقل ملف التهيئة كنسخة إحتياطية قبل التعديل
$ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_bkup
ثم نقوم بإنشاء ملف تهيئة جديد بنفس اﻹسم اﻷصل
$ sudo nano /etc/vsftpd.conf
سنقوم بكتابة هذه اﻹعدادات اﻷساسية في ملف تهيئة الخادم أولا وبعد أن نتأكد من عمله نقوم بتعديلها لتتناسب مع بيئة التشغيل الخاصة بنا.
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
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=NO
pasv_enable=Yes
pasv_min_port=50000
pasv_max_port=51000
allow_writeable_chroot=YES
إعدادات أخري يمكن استخدامها
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_file=/var/log/vsftpd/vsftpd.log
xferlog_std_format=YES
ftpd_banner=Welcome to FTP service
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
userlist_file=/etc/vsftpd/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
pasv_max_port=51000
pasv_min_port=50000
port_enable=YES
pasv_enable=YES
pasv_address=YOUR_SERVER_URL
pasv_addr_resolve=YES
check_shell=NO
passwd_chroot_enable=YES
كما تري في اﻹعدادات السابقة:
- منع اﻹتصال بالخادم بدون كلمة سر
anonymous_enable=NO
- إنشاء سجل تقارير مخصص
/var/log/vsftpd/vsftpd.log
- تفعيل سجل التقارير الخاص
xferlog_std_format=YES
- إضافة رسالة الترحيب الخاصة بنا
ftpd_banner=Welcome to FTP service
- تفعيل اﻹتصال للمستخدمين المسجلين في نظام التشغيل
userlist_enable=YES
- تحديد قائمة المستخدمين غير المسجلين في نظام التشغيل
userlist_file=/etc/vsftpd/vsftpd.userlist
- تفعيل قائمة المستخدمين غير المسجلين
userlist_enable=YES
- تفعيل قائمة المستخدمين كقائمة موثوق بها
userlist_deny=NO
- تمكين مستخدم نظام نقل الملفات FTP من الكتابة
write_enable=YES
- إعداد اﻹختار العام umask إلى 022 لتعديل صلاحية الوصول للملفات إلى (644) والمجلدات إلى (755) بشكل تلقائي عند رفعها للسيرفر.
local_umask=022
- تحديد المنافذ رقم 50000-51000 لنقل الملفات في الوضع Passive Mode pasv_max_port=51000 pasv_min_port=50000 (اﻷرقام للمثال فقط , استخدم أرقام أخري خاصة بك لمزيد من اﻷمان)
- تحديد معرف اﻹنترنت IP أو اسم النظاق DomainName لسيرفر نقل الملفات للإتصال به
YOUR_SERVER_URL
- في حالة استخدام اسم النطاق DomainName يتم تعديل اﻹختيار pasv_addr_resolve=YES
- في حالة استخدام IP يمكن تعديل الإختيار pasv_addr_resolve=NO
إذا كان جدار الحماية UFW مفعلا على الخادم فينبغي تنفيذ اﻷمر التالي لفتح منافذ اتصال FTP لخادم نقل الملفات.
$ sudo ufw allow from any to any port 20,21,50000:5100 proto tcp
اﻵن نقوم بإنشاء مجلد ومستخدم جديد باسم ftp_user لخدمة نقل الملفات FTP وتخصيص المجلد للمستخدم الجديد كمجلد شخصي رئيسي له
$ sudo mkdir -p /var/log/vsftpd/
$ sudo mkdir -p /var/www/ftp
$ sudo useradd -d /var/www/ftp/ -s /sbin/nologin ftp_user
$ sudo passwd ftp_pass
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
ثم نقوم بتسجيل المستخدم الجديد في قائمة المستخدمين الموثوق بهم وإنشاء مجموعة جديدة باسم ftpgroup لمستخدمي خادم نقل الملفات FTP وإلحاق المستخدم ftp_user بها
$ sudo echo "ftp_user" > /etc/vsftpd/vsftpd.userlist
$ sudo groupadd ftpusers
$ sudo usermod -G ftpusers ftp_user
$ sudo chown ftp_user /var/www/ftp/ -R
أعد تشغيل خادم نقل الملفات لتطبيق اﻷعدادات السابقة
$ sudo service vsftpd restart
سنقوم بتسجيل الدخول لنظام التشغيل باسم المستخدم الجديد وإضافة ملف لمجلد المستخدم الجديد الشخصيﻹختبار إمكانية الكتابة والقراءة منه باستخدام اﻷمر التالي
$ sudo bash -c "echo FTP TESTING > /home/ftpuser/FTP-TEST"
اﻵن خادم نقل الملفات جاهز للإتصال به من قبل المستخدم ftp_user كما يلي:
$ ftp Server IP/DomainName
Name :
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
إذا كنت ترغب في اﻹتصال بالخادم عن طريق اﻹنترنت فينبغي إضافة الإعدادات الخاصة بالتأمين إلى ملف التهيئة vsftpd.conf