در این مقاله نحوه نصب و راه اندازی سرور FTP با VSFTPD در لینوکس اوبونتو که برای اشتراک گذاری فایل ها بین دستگاه های مختلف استفاده می شود؛ به صورت کامل آموزش داده خواهد شد. در ادامه همراه داتیس نتورک باشید.
نصب سرور FTP با VSFTPD در اوبونتو
FTP (File Transfer Protocol) یک پروتکل استاندارد شبکه است که برای انتقال پرونده ها از راه دور مورد استفاده قرار می گیرد. چندین سرور ftp اوپن سورس برای لینوکس در دسترس است.
شناخته شده ترین و پرکاربردترین آنها PureFTPd ،ProFTPD و vsftpd هستند. ما در این مقاله تلاش می کنیم که نحوه راه اندازی یک سرور ftp ایمن، سریع و پایدار را به وسیله vsftpd (Very Secure Ftp Daemon) آموزش دهیم.
گرچه FTP یک پروتکل بسیار محبوب است، اما برای انتقال امن تر و سریعتر داده ها ، باید از SCP یا SFTP استفاده کنید.
پکیج vsftpd در مخازن اوبونتو موجود است و برای نصب آن تنها کافی است دستورات زیر را اجرا کنید:
sudo apt update
sudo apt install vsftpd
پس از به پایان رسیدن مراحل نصب سرور ftp به صروت خودکار فعال می شود. برای تایید آن دستور زیر را وارد کنید:
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 Tue 2021-03-02 15:17:22 UTC; 3s ago
...
پیکربندی vsftpd
پیکربندی سرور vsftpd در فایل /etc/vsftpd.conf
ذخیره شده است.
در بخش های زیر، برخی از تنظیمات مهم مورد نیاز برای پیکربندی امن vsftpd را مرور خواهیم کرد.
با باز کردن فایل پیکربندی vsftpd شروع کنید:
sudo nano /etc/vsftpd.conf
1. دسترسی به ftp
ما فقط به لوکال یوزر ها دسترسی به FTP را خواهیم داد. دایرکتیو های anonymous_enable و local_enable را جست و جو کرده و مطابقت پیکربندی را تایید کنید:
anonymous_enable=NO
local_enable=YES
2. امکان بارگذاری اطلاعات
دستور العمل write_enable
را پیدا کرده و به وسیله آن امکان بارگذاری و یا حذف فایل ها را فراهم کنید:
write_enable=YES
3. Chroot jail
برای جلوگیری از دسترسی کاربران به فایل های خارج از دایرکتوری اختصاص داده شده به آن ها line را با chroot_local_user
آغاز کنید:
chroot_local_user=YES
به صورت پیش فرض، به دلایل امنیتی هنگامی که chroot فعال است کاربران نمی توانند هیچ گونه فایلی را در دایرکتوری که به آن دسترسی ندارند آپلود کنند.
برای رفع این محدودیت در هنگام فعال بودن chroot می تواند از راه حل های زیر استفاده نمایید:
متد 1: در این روش توصیه ما فعال نگه داشتن ویژگی های chroot و پیکربندی فهرست های ftp است. به عنوان مثال، ما یک دایرکتوری ftp در یوزر هوم کاربر ایجاد خواهیم کرد؛ که به عنوان یک chroot و یک پوشه قابل نوشتن برای بارگذاری فایل ها عمل می کند:
user_sub_token=$USER
local_root=/home/$USER/ftp
متد 2: روش دیگر فعال کردن دستور العمل allow_writeable_chroot
می باشد:
allow_writeable_chroot=YES
4. اتصالات Passive FTP
به طور پیش فرض، vsftpd از حالت فعال یا همان اکتیو (active) مود استفاده می کند. برای استفاده از حالت غیر فعال (passive) حداقل و حداکثر دامنه پورت ها را تنظیم کنید:
pasv_min_port=30000
pasv_max_port=31000
شما می توانید برای اتصالات غیر فعال اف تی پی (passive FTP) از هر پورتی استفاده کنید. هنگامی که passive mode فعال است، کلاینت ftp در یک پورت تصادفی در محدوده ای که انتخاب کرده اید، یک اتصال به سرور باز می کند.
5. محدود کردن ورود کاربر
شما می توانید پیکربندی vsftpd را به گونه ای تنظیم کنید که تنها به کاربران خاصی اجازه ورود دهد. برای انجام این کار دستورات زیر را در انتهای فایل پیکربندی وارد کنید:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
در هنگام فعال کردن این گزینه، باید مشخص کنید که چه کاربرانی وارد سیستم شوند. برای این کار شما باید نام هر کاربر را در یک خط به فایل /etc/vsftpd.user_list
اضافه کنید.
6. ایمن سازی تبادل اطلاعات به وسیله SSL / TLS
برای رمزگذاری انتقال داده ها در FTP با SSL / TLS، باید گواهی SSL داشته باشید و سرور FTP را برای استفاده از آن پیکربندی کنید.
اگر دامنه یا زیر دامنه ای دارید که به آدرس IP سرور FTP اشاره دارد، می توانید به سرعت یک گواهینامه SSL رایگان رمزگذاری کنیم.
ما یک کلید خصوصی (private key) 2048 بیتی و گواهی SSL خود امضا (self-signed SSL) تولید خواهیم کرد که به مدت ده سال فعال خواهد بود:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
کلید خصوصی و گواهی (certificate) در یک پرونده ذخیره می شوند.
پس از ایجاد گواهی SSL، فایل پیکربندی vsftpd را باز کنید:
sudo nano /etc/vsftpd.conf
دستور العمل هایrsa_cert_file
وrsa_private_key_file
و مقادیر آن ها را به فایل pam
تغییر دهید و دستور العمل ssl_enable
را به حالت YES
تغییر دهید:
pasv_min_port=30000
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
در صورت انجام ندادن تنظیمات فوق، سرور ftp تنها از TLS برای برقراری ارتباط ایمن استفاده می کند.
راه اندازی مجدد سرویس vsftpd
در ادامه آموزش نصب و راه اندازی سرور FTP با VSFTPD در لینوکس اوبونتو پس از پایان ویرایش، فایل پیکربندی vsftpd باید به شکل زیر باشد:
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/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
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
بازکردن فایروال
اگر از فایروال UFW استفاده می کنید؛ باید ترافیک FTP را مجاز نمایید.
برای باز کردن پورت 21
(پورت فرمان FTP)، پورت 20
(پورت داده FTP) و 30000-31000
(رنج پورت های Passive)، دستورات زیر را اجرا کنید:
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
output :
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 بدهید قبلاً در لیست کاربران قرار داشته است، مرحله 1 را نادیده بگیرید.
- اگر در فایل پیکربندی خود
allow_writeable_chroot=YES
را تنظیم کرده اید، مرحله 3 را نا دیده بگیرید.
01. کاربر جدیدی با نام ftpuser
ایجاد کنید:
sudo adduser newftpuser
02. کاربر را به لیست کاربران FTP مجاز اضافه کنید:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
03 دایرکتوری 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 شما راه اندازی شده و قابل استفاده می باشد. تنها کافی است با استفاده از نرم افزار های جانبی به سرور ایجاد شده متصل شوید.
غیر فعال کردن Shell Access
به طور پیش فرض، هنگام ایجاد یک کاربر، اگر صریحا مشخص نشده باشد، کاربر به SSH سرور دسترسی خواهد داشت.
در ادامه آموزش نصب و راه اندازی سرور FTP با VSFTPD در لینوکس اوبونتو برای غیر فعال کردن shell access، یک shell جدید ایجاد کرده که به کاربر بگوید حساب وی فقط به دسترسی ftp محدود شده است.
برای ایجاد فایل /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
شل جدید را به لیست شل های معتبر در فایل /etc/shells
اضافه کنید:
echo "/bin/ftponly" | sudo tee -a /etc/shells
شل یوزر را به /bin/ftponly
تغییر دهید:
sudo usermod newftpuser -s /bin/ftponly
برای تغییر shell همه کاربرانی که می خواهید فقط به FTP دسترسی داشته باشند می توانید از همین دستور استفاده کنید.
صحبت نهایی
ما در این آموزش سعی کردیم که نحوه راه اندازی سرور FTP با VSFTPD در اوبونتو را به صورت کامل به شما عزیزان آموزش دهیم. در صورت به وجود آمدن هر گونه سوالی می توانید سوالات را از طریق بخش نظرات با ما به اشتراک بگذارید.
امیدواریم مقاله راه اندازی FTP Server با VSFTPD در Ubuntu مفید بوده باشد.
داتیس نتورک را در شبکه های اجتماعی دنبال کنید.