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

سرور مجازی NVMe

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

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



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

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

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

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

پیش نیازها

قبل از ادامه این آموزش، مطمئن شوید که به عنوان یک کاربر با امتیازات sudo وارد سیستم شده اید.

نصب vsftpd روی CentOS 7

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

sudo yum install vsftpd

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

sudo systemctl start vsftpdsudo systemctl enable vsftpd

می‌توانید با چاپ کردن وضعیت سرویس vsftpd تأیید کنید:

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 Thu 2018-11-22 09:42:37 UTC; 6s ago
 Main PID: 29612 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

پیکربندی 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 از آپلود فایل‌ها خودداری می‌کند. این برای جلوگیری از آسیب پذیری امنیتی است.

پیشنهاد می‌کنیم بخوانید:  روش نصب PostgreSQL در CentOS 8

هنگامی که 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 استفاده کند. ما حداقل و حداکثر محدوده پورت ها را مشخص می کنیم و بعداً محدوده را در فایروال خود باز می کنیم.

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

/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

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

اگر از فایروال استفاده می کنید، باید به ترافیک 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 7 سیستم.

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

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

زمان انتشار: 1402-12-27 18:30:02

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

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

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