- لتثبيت مكونات خادم نقل الملفات VSFTPD على نظام التشغيل أوبونتو
1 |
$ sudo apt-get install vsftpd |
- تعديل ملف التهيئة vsftpd.config
أولا سننقل ملف التهيئة كنسخة إحتياطية قبل التعديل
1 |
$ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_bkup |
ثم نقوم بإنشاء ملف تهيئة جديد بنفس اﻹسم اﻷصل
1 |
$ sudo nano /etc/vsftpd.conf |
سنقوم بكتابة هذه اﻹعدادات اﻷساسية في ملف تهيئة الخادم أولا وبعد أن نتأكد من عمله نقوم بتعديلها لتتناسب مع بيئة التشغيل الخاصة بنا.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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 |
إعدادات أخري يمكن استخدامها
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 لخادم نقل الملفات.
1 |
$ sudo ufw allow from any to any port 20,21,50000:5100 proto tcp |
اﻵن نقوم بإنشاء مجلد ومستخدم جديد باسم ftp_user لخدمة نقل الملفات FTP وتخصيص المجلد للمستخدم الجديد كمجلد شخصي رئيسي له
1 2 3 4 5 6 7 |
$ 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 بها
1 2 3 4 |
$ 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 |
أعد تشغيل خادم نقل الملفات لتطبيق اﻷعدادات السابقة
1 |
$ sudo service vsftpd restart |
سنقوم بتسجيل الدخول لنظام التشغيل باسم المستخدم الجديد وإضافة ملف لمجلد المستخدم الجديد الشخصيﻹختبار إمكانية الكتابة والقراءة منه باستخدام اﻷمر التالي
1 |
$ sudo bash -c "echo FTP TESTING > /home/ftpuser/FTP-TEST" |
اﻵن خادم نقل الملفات جاهز للإتصال به من قبل المستخدم ftp_user كما يلي:
1 2 3 4 5 6 7 |
$ ftp Server IP/DomainName Name : Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> |
إذا كنت ترغب في اﻹتصال بالخادم عن طريق اﻹنترنت فينبغي إضافة الإعدادات الخاصة بالتأمين إلى ملف التهيئة vsftpd.conf