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

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

سعیده مهاجری

پروتکل FTP (یا File Transfer Protocol)، یک پروتکل شبکه استاندارد است که به منظور انتقال فایل‌ ها در یک شبکه ریموت استفاده می‌شود. سرورهای FTP اپن سورس مختلفی برای لینوکس موجود است که مشهورترین و پرکاربردترین آن‌ها PureFTPd ،ProFTPD و vsftpd است. در اینجا سرور vsftpd (یا Very Secure Ftp Daemon) را که یک سرور FTP پایدار، ایمن و سریع است، نصب خواهیم کرد. علاوه بر این، نحوه کانفیگ سرور را به منظور محدود کردن کاربران در دسترسی به دایرکتوری اصلی خود و رمزگذاری فایل‌های منتقل شده با SSL / TLS نشان خواهیم داد. اگرچه FTP یک پروتکل بسیار محبوب است؛ اما به منظور انتقال امن‌ تر و سریع‌ تر داده‌ ها،  باید از SCP یا SFTP استفاده کنید. در این مقاله با ما همراه باشید تا شما عزیزان را با نحوه نصب سرور FTP با VSFTPD در اوبونتو ۲۰٫۰۴ به منظور استفاده در به اشتراک گذاشتن فایل‌ ها بین چندین دستگاه آشنا کنیم.

نصب 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 را با دستور زیر باز نمایید:

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 به فایل‌های خارج از دایرکتوری‌های اصلی خود، خط مربوط به chroot_local_user را از حالت کامنت خارج کنید:

chroot_local_user=YES

به طور پیش فرض، به دلایل امنیتی، هنگامی‌که chroot فعال است، vsftpd از آپلود شدن فایل توسط کابران غیر مجاز جلوگیری می‌نماید. به منظور اجازه آپلود هنگام فعال کردن chroot، از یکی از راه حل‌های زیر استفاده کنید:

روش اول – گزینه توصیه شده، فعال نگه داشتن ویژگی chroot و کانفیگ دایرکتوری‌های FTP است. در این مثال، یک دایرکتوری ftp در دایرکتوری اصلی کاربر ایجاد خواهیم کرد که به عنوان chroot و یک دایرکتوری قابل نوشتن برای آپلود فایل‌ ها عمل می‌کند:

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

روش دوم _ گزینه دیگر، فعال کردن دستورالعمل allow_writeable_chroot است:

allow_writeable_chroot=YES

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

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

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

pasv_min_port=30000
pasv_max_port=31000

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

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

می توانید vsftpd را طوری کانفیگ کنید که فقط برخی از کاربران بتوانند وارد سیستم شوند. برای انجام این کار، دستورات زیر را در انتهای فایل اضافه کنید:

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

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

۶_ ایمن سازی انتقال با SSL/TLS :

برای رمزگذاری انتقال‌های FTP با SSL / TLS، شما باید گواهی SSL داشته باشید و سرور FTP را برای استفاده از آن کانفیگ کنید. شما می‌توانید از یک گواهینامه SSL موجود که توسط یک سازمان صدور گواهینامه معتبر (trusted Certificate Authority) امضا شده است، استفاده کنید یا یک گواهینامه خود-امضا (self-signed) ایجاد کنید. اگر دامنه یا زیر دامنه‌ای دارید که به آدرس IP سرور FTP اشاره دارد، شما می‌توانید به سرعت یک گواهینامه Let’s Encrypt SSL رایگان ایجاد کنید. در اینجا، یک کلید خصوصی ۲۰۴۸ بیتی و گواهی SSL خود-امضا (self-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) و پورت‌های ۳۰۰۰۰-۳۱۰۰۰ (محدوده پورت‌های passive)، دستورات زیر را اجرا کنید:

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 :

به منظور تست سرور FTP باید کاربر جدیدی ایجاد کنید.

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

مرحله اول : یک کاربر جدید با نام newftpuser ایجاد کنید:

sudo adduser newftpuser

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

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

مرحله سوم : دایرکتوری FTP tree را ایجاد کرده و مجوزهای صحیح را تنظیم کنید:

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 جدید را به لیست shell های معتبر در فایل /etc /shells اضافه کنید:

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

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

sudo usermod newftpuser -s /bin/ftponly

از همین دستور می‌توانید به منظور تغییر shell همه کاربران مورد نظر برای دسترسی به FTP استفاده کنید.

جمع بندی :

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

امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊

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