آموزش نصب و کانفیگ VSFTPD در CentOS 8
FTP (پروتکل انتقال فایل) یک پروتکل شبکه سرور-کلاینت است که به کاربران امکان می دهد فایل ها را به یک سرور انتقال دهند. بسیاری از سرورهای منبع باز FTP برای لینوکس در دسترس هستند. محبوب ترین و رایج ترین سرورهای PureFTPd, ProFTPD, و vsftpd هستند. در این آموزش ، نصب و کانفیگ vsftpd را در CentOS 8 توضیح خواهیم داد.
این یک سرور FTP پایدار ، ایمن و سریع است. ما همچنین به شما نشان خواهیم داد چگونه vsftpd را پیکربندی کنید تا کاربران در home directory خود محدود شوند و انتقال داده را با SSL / TLS رمزگذاری کنند.
نصب vsftpd در CentOS 8
بسته vsftpd در مخازن پیش فرض CentOS موجود است. برای نصب آن ، دستور زیر را به عنوان root یا کاربر با امتیازات sudo اجرا کنید :
sudo dnf install vsftpd
پس از نصب پکیج ، vsftpd daemon را شروع کنید و آن را فعال کنید تا در زمان بوت شدن به طور خودکار شروع شود:
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)
...
یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.
وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.
کانفیگ vsftpd در centos 8
تنظیمات سرور vsftpd در پرونده پیکربندی /etc/vsftpd/vsftpd.conf
ذخیره می شود. بسیاری از تنظیمات در پرونده به خوبی ثبت شده اند. برای مشاهده همه گزینه های موجود ، به صفحه رسمی vsftpd مراجعه کنید.
در بخش های بعدی به برخی از تنظیمات مهم مورد نیاز برای پیکربندی نصب امن 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 به فایل های خارج از home directories با chroot
جلوگیری کنید.
chroot_local_user=YES
به طور پیش فرض ، هنگامی که chroot فعال است ، vsftpd در صورت قابل نوشتن بودن در فهرستی که کاربران در آن قفل شده اند ، از آپلود پرونده خودداری می کنند. این امر برای جلوگیری از آسیب پذیری امنیتی است.
از یکی از روشهای زیر استفاده کنید تا هنگام فعال کردن chroot اجازه آپلود دهد.
- روش 1. – روش پیشنهادی برای اجازه آپلود، فعال کردن chroot و پیکربندی دایرکتوری های FTP است. در این آموزش یک دایرکتوری
ftp
در داخل Home کاربر ایجاد خواهیم کرد که به عنوان chroot و یک فهرست بارگذاری نوشتاری برای بارگذاری فایل ها استفاده می شود.
user_sub_token=$USER
local_root=/home/$USER/ftp
- روش 2. – گزینه دیگر اضافه کردن دستورالعمل زیر در پرونده پیکربندی vsftpd است. اگر می خواهید به کاربر دسترسی تغییرات در home directory دهید ، از این گزینه استفاده کنید.
allow_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 را پیکربندی کنید.
اگر دامنه یا ساب دامنه ای دارید که به آدرس IP سرور FTP اشاره می کند ، می توانید به راحتی یک مجوز رایگان Let’s Encrypt SSL تولید کنید.
در این آموزش ، ما با استفاده از ابزار openssl
یک self-signed SSL certificate تولید می کنیم.
دستور زیر یک کلید خصوصی 2048 بیتی و گواهی self-signed برای 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 (به استثنای comments ) باید چیزی شبیه به این باشد:
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
باز کردن فایروال
برای باز کردن پورت 21
(پورت فرمان FTP) ، پورت 20
(پورت داده FTP) و 30000-31000
(محدوده پورت های Passive) ، در فایروال خود دستورات زیر را وارد کنید:
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 را پشت سر بگذارید.
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/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 پیکربندی شده است ، به سرور خود متصل شوید.
غیرفعال کردن دسترسی Shell
به طور پیش فرض ، در هنگام ایجاد کاربر ، اگر صریحا مشخص نشده باشد ، کاربر به SSH سرور دسترسی خواهد داشت.
برای غیرفعال کردن دسترسی به 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
shell ها اضافه کنید:
echo "/bin/ftponly" | sudo tee -a /etc/shells
پوسته کاربر را به /bin/ftponly
تغییر دهید:
sudo usermod newftpuser -s /bin/ftponly
برای تغییر پوسته برای سایر کاربرانی که می خواهید فقط به FTP دسترسی داشته باشید ، از همان دستور استفاده کنید.
نتیجه گیری
ما به شما نشان داده ایم كه چگونه سرور FTP ایمن و سریع را در CentOS 8 نصب و پیكربندی كنید.
برای انتقال ایمن تر و سریع تر داده ها ، باید از SCP یا SFTP استفاده کنید.
اولین نفر باشید که نظر ارسال میکنید