وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش راه اندازی سرور FTP با VSFTPD روشن CentOS 8

0 2
زمان لازم برای مطالعه: 5 دقیقه



FTP (پروتکل انتقال فایل) یک پروتکل شبکه سرویس گیرنده-سرور است که به کاربران اجازه می دهد فایل ها را به و از یک ماشین راه دور منتقل کنند.

سرورهای FTP منبع باز بسیاری برای لینوکس وجود دارد. محبوب ترین و پرکاربردترین سرورها هستند PureFTPd
، ProFTPD
، و vsftpd
.

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

نصب vsftpd روی CentOS 8

بسته vsftpd به صورت پیش فرض در دسترس است CentOS مخازن برای نصب آن، دستور زیر را به عنوان root یا کاربر با امتیازات sudo اجرا کنید:

sudo dnf install vsftpd

پس از نصب بسته، دیمون vsftpd را راه اندازی کنید و آن را فعال کنید تا به طور خودکار در زمان بوت شروع شود:

sudo systemctl enable vsftpd --now

بررسی وضعیت خدمات:

sudo systemctl status vsftpd

خروجی چیزی شبیه به این خواهد بود که نشان می دهد سرویس vsftpd فعال و در حال اجرا است:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-30 15:16:51 EDT; 10s ago
  Process: 2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
  ...

پیکربندی vsftpd

تنظیمات سرور vsftpd در /etc/vsftpd/vsftpd.conf فایل پیکربندی. بسیاری از تنظیمات به خوبی در داخل فایل ثبت شده است. برای همه گزینه های موجود، به vsftpd رسمی
page.

در بخش‌های بعدی، به برخی از تنظیمات مهم مورد نیاز برای پیکربندی یک نصب امن vsftpd خواهیم پرداخت.

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

sudo nano /etc/vsftpd/vsftpd.conf

1. دسترسی به FTP

ما فقط به کاربران محلی اجازه دسترسی به سرور FTP را می دهیم anonymous_enable و local_enable دستورالعمل ها و مطمئن شوید که پیکربندی شما با خطوط زیر مطابقت دارد:

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. فعال کردن آپلود

لغو نظر write_enable تنظیم اجازه دادن به تغییرات در سیستم فایل، مانند آپلود و حذف فایل ها.

/etc/vsftpd/vsftpd.conf
write_enable=YES

3. Chroot Jail

با حذف نظر کاربران FTP از دسترسی به فایل های خارج از دایرکتوری خانگی خود جلوگیری کنید chroot بخشنامه

/etc/vsftpd/vsftpd.conf
chroot_local_user=YES

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

هنگامی که chroot فعال است، از یکی از روش‌های زیر برای اجازه آپلود استفاده کنید.

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

    /etc/vsftpd/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • روش 2. – گزینه دیگر این است که دستور زیر را در فایل پیکربندی vsftpd اضافه کنید. اگر باید به کاربر خود دسترسی قابل نوشتن به فهرست اصلی خود بدهید، از این گزینه استفاده کنید.

    /etc/vsftpd/vsftpd.conf
    allow_writeable_chroot=YES

4. اتصالات منفعل FTP

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

پیشنهاد می‌کنیم بخوانید:  روش اضافه کردن کاربر به Sudoers در CentOS

خطوط زیر را به فایل پیکربندی اضافه کنید:

/etc/vsftpd/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. محدود کردن ورود کاربر

برای اینکه فقط کاربران خاصی بتوانند وارد سرور FTP شوند، خطوط زیر را بعد از آن اضافه کنید userlist_enable=YES خط:

/etc/vsftpd/vsftpd.conf
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

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

6. ایمن سازی انتقال با SSL/TLS

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

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

اگر دامنه یا زیردامنه ای دارید که به آدرس IP سرور FTP اشاره می کند، می توانید به راحتی یک گواهی رایگان Let’s Encrypt SSL ایجاد کنید.

در این آموزش، یک گواهی SSL با امضای خود را با استفاده از openssl ابزار

دستور زیر یک کلید خصوصی 2048 بیتی و گواهینامه خود امضا شده با اعتبار 10 سال ایجاد می کند. هم کلید خصوصی و هم گواهینامه در یک فایل ذخیره می شوند:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

پس از ایجاد گواهی SSL، فایل پیکربندی vsftpd را باز کنید:

sudo nano /etc/vsftpd/vsftpd.conf

پیدا کن rsa_cert_file و rsa_private_key_file دستورالعمل ها، مقادیر آنها را به pam مسیر فایل و تنظیم کنید ssl_enable بخشنامه به YES:

/etc/vsftpd/vsftpd.conf
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

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

سرویس vsftpd را مجددا راه اندازی کنید

پس از اتمام ویرایش، فایل پیکربندی vsftpd (به استثنای نظرات) باید چیزی شبیه به این باشد:

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

فایل را ذخیره کنید و سرویس vsftpd را مجددا راه اندازی کنید تا تغییرات اعمال شوند:

sudo systemctl restart vsftpd

باز کردن فایروال

how-to-configure-and-manage-firewall-on-centos-8 اگر در حال اجرا هستید، باید به ترافیک FTP اجازه دهید.

پیشنهاد می‌کنیم بخوانید:  روش به روز رسانی وردپرس: چهار راه سریع و ساده

برای باز کردن پورت 21 (پورت فرمان FTP)، پورت 20 (درگاه داده FTP) و 30000-31000 (محدوده پورت های غیرفعال)، در فایروال خود دستورات زیر را وارد کنید:

sudo firewall-cmd --permanent --add-port=20-21/tcpsudo firewall-cmd --permanent --add-port=30000-31000/tcp

قوانین فایروال را با تایپ کردن مجدد بارگیری کنید:

firewall-cmd --reload

ایجاد کاربر FTP

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

  • اگر از قبل کاربری دارید که می‌خواهید به FTP دسترسی داشته باشید، از مرحله اول صرفنظر کنید.
  • اگر تنظیم کنید allow_writeable_chroot=YES در فایل پیکربندی خود، مرحله 3 را رد کنید.
  1. یک کاربر جدید به نام ایجاد کنید newftpuser:

    sudo adduser newftpuser

    در مرحله بعد، باید رمز عبور کاربر را تنظیم کنید:

    sudo passwd newftpuser
  2. کاربر را به لیست کاربران مجاز FTP اضافه کنید:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
  3. درخت دایرکتوری 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
.

غیرفعال کردن دسترسی شل

به طور پیش فرض، هنگام ایجاد یک کاربر، اگر به طور صریح مشخص نشده باشد، کاربر دسترسی SSH به سرور خواهد داشت.

برای غیرفعال کردن دسترسی پوسته، یک پوسته جدید ایجاد می‌کنیم که به سادگی پیامی را چاپ می‌کند که به کاربر می‌گوید حسابش فقط به دسترسی 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

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

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

پوسته کاربر را به تغییر دهید /bin/ftponly:

sudo usermod newftpuser -s /bin/ftponly

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

نتیجه

ما به شما نشان دادیم که چگونه یک سرور FTP امن و سریع را نصب و پیکربندی کنید CentOS 8.

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

اگر سوال یا بازخوردی دارید، در کامنت بگذارید.

ftp centos
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-28 02:37:02

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید