لینوکس

آموزش نصب و راه اندازی سرور FTP با VSFTPD در لینوکس اوبونتو

آموزش راه اندازی سریع سرور FTP با VSFTPD در لینوکس اوبونتو

در این مقاله نحوه نصب و راه اندازی سرور FTP با VSFTPD در لینوکس اوبونتو که برای اشتراک گذاری فایل ها بین دستگاه های مختلف استفاده می شود؛ به صورت کامل آموزش داده خواهد شد. در ادامه همراه داتیس نتورک باشید.

آموزش راه اندازی سریع سرور 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 مفید بوده باشد.

داتیس نتورک را در شبکه های اجتماعی دنبال کنید.

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *