نحوه نصب سرور FTP با VSFTPD در اوبونتو ۲۰٫۰۴

نحوه نصب سرور FTP با VSFTPD در اوبونتو ۲۰٫۰۴

سعیده مهاجری

در این مقاله نحوه نصب و کانفیگ سرور FTP در اوبونتو ۲۰٫۰۴ که برای به اشتراک گذاشتن پرونده ها بین دستگاه های خود استفاده می کنید ، توضیح خواهیم داد .

FTP یا (File Transfer Protocol) یک پروتکل شبکه استاندارد است که برای انتقال پرونده ها به یک شبکه از راه دور استفاده می شود . چندین سرور FTP اپن سورس برای لینوکس موجود است . شناخته شده ترین و پرکاربردترین آنها ، PureFTPd ، ProFTPD و vsftpd هستند.

vsftpd یا(Very Secure Ftp Daemon) ، یک سرور FTP پایدار ، ایمن و سریع است. ما همچنین نحوه کانفیگ سرور را برای محدود کردن کاربران به فهرست اصلی خود و رمزگذاری کل انتقال با SSL / TLS به شما نشان خواهیم داد.

اگرچه FTP یک پروتکل بسیار محبوب است ، اما برای انتقال امن تر و سریعتر داده ها ، باید از SCP یا SFTP استفاده کنید .

نصب vsftpd در اوبونتو ۲۰٫۰۴ :

بسته vsftpd در مخازن اوبونتو موجود است . برای نصب آن ، دستورات زیر را اجرا کنید :

sudo apt updatesudo 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 را مرور خواهیم کرد .

با باز کردن پرونده کانفیگ vsftpd شروع کنید :

 

sudo nano /etc/vsftpd.conf

۱_ دسترسی به FTP :

ما فقط به کاربران local اجازه دسترسی به سرور FTP را خواهیم داد . دستورالعمل های anonymous_enable و local_enable را جستجو کنید و مطابقت کانفیگ خود را با دستور زیر اجرا کنید :

anonymous_enable=NO
local_enable=YES

 

۲_ امکان آپلود :

دستورالعمل write_enable را پیدا کرده و از آن کامنت بگیرید تا تغییرات سیستم فایل مانند آپلودو حذف پرونده ها امکان پذیر شود:

 

write_enable=YES

 

۳_ Chroot jail :

برای جلوگیری از دسترسی کاربران local FTP به پرونده های خارج از دایرکتوری های خانگی خود ، lne را با chroot_local_user شروع کنید :

 

chroot_local_user=YES

 

به طور پیش فرض ، به دلایل امنیتی ، وقتی chroot فعال است ، در صورت نوشتن پوشه ای که کاربران در آن قفل شده اند ، vsftpd از آپلود پرونده ها امتناع می کند .

برای فعال کردن آپلود هنگام فعال کردن chroot ، از یکی از راه حل های زیر استفاده کنید :

  • روش ۱_ گزینه recommended فعال نگه داشتن ویژگی chroot و کانفیگ فهرستهای FTP است. در این مثال ، ما یک دایرکتوری ftp در داخل خانه کاربر ایجاد خواهیم کرد ، که به عنوان chroot و یک پوشه قابل نوشتن برای آپلود پرونده ها عمل می کند :
user_sub_token=$USER
local_root=/home/$USER/ftp
  • روش ۲_ گزینه دیگر فعال کردن دستورالعمل allow_writeable_chroot است :
allow_writeable_chroot=YES

از این گزینه فقط درصورتی استفاده کنید که  اجازه نوشتن به کاربر خود را در فهرست اصلی آن داده باشید .

۴_ اتصالات Passive FTP :

به طور پیش فرض ، vsftpd ، از حالت فعال استفاده می کند . برای استفاده از حالت غیرفعال ، حداقل و حداکثر دامنه پورت ها را تنظیم کنید :

pasv_min_port=30000
pasv_max_port=31000

برای اتصال غیرفعال FTP می توانید از هر درگاهی استفاده کنید. وقتی حالت غیرفعال ، فعال است ، سرویس گیرنده FTP در یک پورت تصادفی در محدوده ای که انتخاب کرده اید ، یک اتصال به سرور باز می کند .

۵_ محدود کردن ورود کاربر :

vsftpd را می توانید طوری تنظیم کنید که فقط به کاربران خاصی اجازه ورود بدهد . برای انجام این کار ، دستورات زیر را در انتهای پرونده اضافه کنید:

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

هنگامی که این گزینه فعال است ، باید صریحاً مشخص کنید که کدام کاربران می توانند با افزودن نام کاربری به پرونده /etc/vsftpd.user_list  وارد سیستم شوند .

۶_ ایمن سازی Transmissions با SSL / TLS :

برای رمزگذاری FTP transmissions با SSL / TLS ، باید گواهینامه  SSL داشته باشید و سرور FTP را برای استفاده از آن کانفیگ کنید .

می توانید از یک گواهینامه SSL موجود که توسط یک سازمان صدور گواهینامه معتبر امضا شده استفاده کنید یا یک گواهینامه خود امضا ، ایجاد کنید.

اگر دامنه یا زیر دامنه ای دارید که به آدرس IP سرور FTP اشاره دارد ، می توانید به سرعت یک گواهینامه SSL رایگان رمزگذاری کنید.

ما یک کلید خصوصی ۲۰۴۸ بیتی و گواهینامه  SSL خود امضا signed شده تولید خواهیم کرد که به مدت ده سال معتبر خواهد بود:

 

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_cert_file و rsa_private_key_file را پیدا کنید ، مقادیر آنها را به مسیر فایل pam تغییر دهید و دستورالعمل ssl_enable را به YES تنظیم کنید :

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

اگر در غیر این صورت مشخص نشده باشد ، سرور FTP فقط از TLS برای برقراری ارتباطات ایمن استفاده خواهد کرد.

سرویس 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 را مجاز کنید .

برای باز کردن پورت ۲۱ یا (پورت فرمان FTP) ، پورت ۲۰ یا (پورت داده FTP) و ۳۰۰۰۰-۳۱۰۰۰ یا (پورت پسیو) ، دستورات زیر را اجرا کنید:

 

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

برای جلوگیری از قفل شدن ، از باز بودن پورت ۲۲ اطمینان حاصل کنید :

sudo ufw allow OpenSSH

با غیرفعال کردن و فعال کردن مجدد UFW ، قوانین UFW را بارگیری کنید :

sudo ufw disablesudo ufw enable

برای تأیید تغییرات اجرا شده ، دستورات زیر را اجرا کنید :

sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
۲۰:۲۱/tcp                  ALLOW       Anywhere
۳۰۰۰۰:۳۱۰۰۰/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
۲۰:۲۱/tcp (v6)             ALLOW       Anywhere (v6)
۳۰۰۰۰:۳۱۰۰۰/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

ایجاد FTP User :

برای تست سرور FTP ، کاربر جدیدی ایجاد خواهیم کرد.

  • اگر کاربری که می خواهید به او دسترسی FTP بدهید قبلاً وجود دارد ، مرحله ۱ را نادیده بگیرید.
  • اگر در پرونده کانفیگ خود allow_writeable_chroot = YES را تنظیم کرده اید ، مرحله ۳ را نادیده بگیرید.

۱_ کاربر جدیدی به نام newftpuser ایجاد کنید :

sudo adduser newftpuser

۲_ کاربر را به لیست کاربران FTP مجاز اضافه کنید:

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

۳_ پوشه  root FTP  را ایجاد کرده و مجوزهای صحیح را تنظیم کنید:

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

همانطور که در بخش قبلی گفته شد ، کاربر می تواند پرونده های خود را در فهرست ftp / upload آپلود کند.

در این مرحله ، سرور FTP شما کاملاً کاربردی است . شما باید بتوانید با استفاده از هر سرویس گیرنده FTP که می تواند برای استفاده از رمزگذاری TLS کانفیگ شود ، مانند FileZilla به سرور متصل شوید.

غیرفعال کردن Shell Access :

به طور پیش فرض ، هنگام ایجاد کاربر ، اگر صریحاً مشخص نشده باشد ، کاربر به SSH به سرور دسترسی خواهد داشت. برای غیرفعال کردن دسترسی shell ، shell جدیدی ایجاد کنید که پیامی را چاپ کند که به کاربر بگویید حساب وی فقط به دسترسی FTP محدود شده است .

برای ایجاد پرونده / bin / ftponly و اجرای آن دستورات زیر را اجرا کنید :

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

shell جدید را به لیست shells معتبر در پرونده / etc / shell اضافه کنید:

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

user shell را به / bin / ftponly تغییر دهید:

sudo usermod newftpuser -s /bin/ftponly

برای تغییر shell همه کاربرانی که می خواهید فقط به FTP دسترسی داشته باشید می توانید از همین دستور استفاده کنید .

جمع بندی :

ما به شما نحوه نصب و کانفیگ سرور FTP امن و سریع را بر روی سیستم اوبونتو ۲۰٫۰۴ آموزش دادیم .

امیدواریم مطالب مورد پسند بوده باشد.

ما را در شتابان هاست همراهی کنید.

 

 

 

 

برچسب ها: دستورات لینوکس