از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش راه اندازی سرور FTP با VSFTPD روشن CentOS 8
سرفصلهای مطلب
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
دستورالعمل ها و مطمئن شوید که پیکربندی شما با خطوط زیر مطابقت دارد:
anonymous_enable=NO
local_enable=YES
2. فعال کردن آپلود
لغو نظر write_enable
تنظیم اجازه دادن به تغییرات در سیستم فایل، مانند آپلود و حذف فایل ها.
write_enable=YES
3. Chroot Jail
با حذف نظر کاربران FTP از دسترسی به فایل های خارج از دایرکتوری خانگی خود جلوگیری کنید chroot
بخشنامه
chroot_local_user=YES
بهطور پیشفرض، وقتی chroot فعال است، اگر دایرکتوری که کاربران در آن قفل هستند قابل نوشتن باشد، vsftpd از آپلود فایلها خودداری میکند. این برای جلوگیری از آسیب پذیری امنیتی است.
هنگامی که chroot فعال است، از یکی از روشهای زیر برای اجازه آپلود استفاده کنید.
-
روش 1. – روش توصیه شده برای اجازه آپلود، فعال نگه داشتن chroot و پیکربندی دایرکتوری های FTP است. در این آموزش، یک را ایجاد خواهیم کرد
ftp
دایرکتوری در داخل خانه کاربر، که به عنوان chroot و قابل نوشتن عمل می کندuploads
دایرکتوری برای آپلود فایل ها/etc/vsftpd/vsftpd.confuser_sub_token=$USER local_root=/home/$USER/ftp
-
روش 2. – گزینه دیگر این است که دستور زیر را در فایل پیکربندی vsftpd اضافه کنید. اگر باید به کاربر خود دسترسی قابل نوشتن به فهرست اصلی خود بدهید، از این گزینه استفاده کنید.
/etc/vsftpd/vsftpd.confallow_writeable_chroot=YES
4. اتصالات منفعل FTP
vsftpd می تواند از هر پورتی برای اتصالات غیرفعال FTP استفاده کند. ما حداقل و حداکثر محدوده پورت ها را مشخص می کنیم و بعداً محدوده را در فایروال خود باز می کنیم.
خطوط زیر را به فایل پیکربندی اضافه کنید:
pasv_min_port=30000
pasv_max_port=31000
5. محدود کردن ورود کاربر
برای اینکه فقط کاربران خاصی بتوانند وارد سرور FTP شوند، خطوط زیر را بعد از آن اضافه کنید userlist_enable=YES
خط:
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
:
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
اگر غیر از این مشخص نشده باشد، سرور FTP فقط از TLS برای ایجاد اتصالات ایمن استفاده می کند.
سرویس vsftpd را مجددا راه اندازی کنید
پس از اتمام ویرایش، فایل پیکربندی vsftpd (به استثنای نظرات) باید چیزی شبیه به این باشد:
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/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
قوانین فایروال را با تایپ کردن مجدد بارگیری کنید:
firewall-cmd --reload
ایجاد کاربر FTP
برای تست سرور FTP، یک کاربر جدید ایجاد می کنیم.
- اگر از قبل کاربری دارید که میخواهید به FTP دسترسی داشته باشید، از مرحله اول صرفنظر کنید.
- اگر تنظیم کنید
allow_writeable_chroot=YES
در فایل پیکربندی خود، مرحله 3 را رد کنید.
-
یک کاربر جدید به نام ایجاد کنید
newftpuser
:sudo adduser newftpuser
در مرحله بعد، باید رمز عبور کاربر را تنظیم کنید:
sudo passwd newftpuser
-
کاربر را به لیست کاربران مجاز FTP اضافه کنید:
echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
-
درخت دایرکتوری 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 شما کاملاً کار می کند و باید بتوانید با هر سرویس گیرنده FTP که می تواند برای استفاده از رمزگذاری TLS پیکربندی شود، به سرور خود متصل شوید. FileZilla
.
غیرفعال کردن دسترسی شل
به طور پیش فرض، هنگام ایجاد یک کاربر، اگر به طور صریح مشخص نشده باشد، کاربر دسترسی SSH به سرور خواهد داشت.
برای غیرفعال کردن دسترسی پوسته، یک پوسته جدید ایجاد میکنیم که به سادگی پیامی را چاپ میکند که به کاربر میگوید حسابش فقط به دسترسی 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
از همین دستور برای تغییر پوسته برای سایر کاربرانی که می خواهید فقط به FTP دسترسی داشته باشید استفاده کنید.
نتیجه
ما به شما نشان دادیم که چگونه یک سرور FTP امن و سریع را نصب و پیکربندی کنید CentOS 8.
برای انتقال داده های امن تر و سریع تر، باید از SCP یا SFTP استفاده کنید.
اگر سوال یا بازخوردی دارید، در کامنت بگذارید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 02:37:02