نحوه تنظیم سرور FTP با VSFTPD در Debian 9

نحوه تنظیم سرور FTP با VSFTPD در Debian 9

زهرا عزتی

سرور FTP مخفف (File Transfer Protocol) است كه یک پروتکل شبکه استاندارد بوده و برای انتقال فايل ها به شبکه از راه دور استفاده می شود. برای انتقال امن تر و سریع تر داده ها ، از SCP یا SFTP استفاده کنید. بسیاری از سرورهای منبع باز FTP برای لینوکس در دسترس هستند. محبوب ترین و پرکاربردترین آنها PureFTPd ، ProFTPD و vsftpd است.

در این مقاله ، نحوه نصب و پیکربندی سرور FTP با VSFTPD در Debian 9 را آموزش مي دهيم.  ما همچنین به شما نشان خواهیم داد که چگونه vsftpd را پیکربندی کنید تا کاربران را در فهرست خود محدود کنید و کل انتقال را با SSL / TLS رمزگذاری کنید. با ما در شتابان هاست همراه باشيد.

پیش نیازها

کاربری که وارد آن شده اید باید از امتیازات sudo برخوردار باشد تا بتواند بسته ها را نصب کند.

نصب vsftpd در Debian 9

بسته vsftpd در مخازن دبیان موجود است. نصب بسیار ساده است:

sudo apt updatesudo apt install vsftpd

خدمات vsftpd پس از اتمام مراحل نصب به طور خودکار شروع می شود. با چاپ وضعیت سرویس آن را تأیید کنید:

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 Mon 2018-12-10 11:42:51 UTC; 53s ago
 Main PID: 1394 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─۱۳۹۴ /usr/sbin/vsftpd /etc/vsftpd.conf

پیکربندی vsftpd

سرور vsftpd را می توان با تغییر فايل vsftpd.conf ، که در فهرست / etc یافت می شود ، پیکربندی کرد.

بسیاری از تنظیمات در فايل پیکربندی به خوبی ثبت شده اند. برای همه گزینه های موجود به صفحه رسمی vsftpd مراجعه کنید.

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

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

sudo nano /etc/vsftpd.conf

 دسترسی FTP

دستورالعمل های Anonymous_enable و local_enable را پیدا کنید و مطابقت پیکربندی خود را با خطوط زیر بررسی کنید:

anonymous_enable=NO
local_enable=YES

این تضمین می کند که فقط کاربران محلی می توانند به سرور FTP دسترسی پیدا کنند.

فعال کردن بارگذاری ها

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

write_enable=YES

۱) Chroot Jail

برای جلوگیری از دسترسی کاربران FTP به هر فايلي در خارج از دایرکتوری های خانه خود :

chroot_local_user=YES

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

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

روش ۱

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

user_sub_token=$USER
local_root=/home/$USER/ftp

روش ۲

گزینه دیگر اضافه کردن بخشنامه زیر در فايل پیکربندی vsftpd است. اگر می خواهید به کاربر دسترسی پیدا کنید به فهرست خانه خود رفته ، از این گزینه استفاده کنید.

allow_writeable_chroot=YES

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

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

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

pasv_min_port=30000
pasv_max_port=31000

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

برای ورود فقط برخی از کاربران به سرور FTP ، خطوط زیر را در انتهای فايل اضافه کنید:

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

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

 تضمین انتقال با SSL / TLS

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

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

اگر دامنه یا زیر دامنه ای دارید که به آدرس IP سرور FTP ، می توانید به راحتی یک مجوز رمزگذاری SSL رایگان ایجاد کنید.

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

دستور زیر یک کلید خصوصی ۲۰۴۸ بیتی و گواهی خود امضا شده برای ۱۰ سال ایجاد می کند. کلید خصوصی و گواهینامه در یک فايل ذخیره می شوند:

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

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

sudo nano /etc/vsftpd.conf

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

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

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

سرویس 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/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
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

افتتاح Firewall

اگر فایروال UFW را اجرا می کنید ، باید به ترافیک FTP اجازه دهید.

برای باز کردن پورت ۲۱ (پورت دستور FTP) ، پورت ۲۰ (پورت داده FTP) و ۳۰۰۰۰-۳۱۰۰۰ (محدوده پورت های Passive) دستورات زیر را اجرا کنید:

sudo ufw allow 20:21/tcpsudo ufw allow 30000:31000/tcp

برای جلوگیری از قفل شدن ، پورت ۲۲ را نیز باز خواهیم کرد:

sudo ufw allow OpenSSH

با غیرفعال کردن و فعال کردن دوباره UFW ، قوانین UFW را دانلود کنید:

sudo ufw disable
sudo ufw enable

برای تأیید تغییرات انجام شده:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
۲۰:۲۱/tcp                  ALLOW       Anywhere
۳۰۰۰۰:۳۱۰۰۰/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
۲۰:۲۱/tcp (v6)             ALLOW       Anywhere (v6)
۳۰۰۰۰:۳۱۰۰۰/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

ایجاد کاربر FTP

برای تست سرور FTP ما یک کاربر جدید ایجاد خواهیم کرد.

  • اگر قبلاً یک کاربر دارید که می خواهید دسترسی FTP را اعطا کنید ، اولین مرحله را پشت سر بگذارد.
  • اگر اجازه دهید_writeable_chroot = YES را در فايل پیکربندی خود قرار دهید ، از انجام مرحله ۳ صرف نظر كنيد.

۱) کاربر جدیدی بنام newftpuser ایجاد کنید:

sudo adduser newftpuser

۲) کاربر را به لیست کاربران مجاز FTP اضافه کنید:

echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

۳) پوشه 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 پیکربندی شده است ، به سرور خود متصل شوید.

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

به طور پیش فرض ، هنگام ایجاد کاربر ، اگر صریحا مشخص نشده باشد ، کاربر 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 / shell ها اضافه کنید:

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

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

sudo usermod newftpuser -s /bin/ftponly

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

ما را در شتابان هاست دنبال كنيد.