
نحوه تنظیم سرور 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 update
sudo 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/tcp
sudo 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/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 به سرور دسترسی خواهد داشت.
برای غیرفعال کردن دسترسی به پوسته ، ما یک پوسته جدید ایجاد خواهیم کرد که به سادگی پیامی را چاپ خواهد کرد که به کاربر می گوید حساب آنها فقط به دسترسی 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 / shell ها اضافه کنید:
echo "/bin/ftponly" | sudo tee -a /etc/shells
پوسته کاربر را به / bin / ftponly تغییر دهید:
sudo usermod newftpuser -s /bin/ftponly
برای تغییر پوسته کلیه کاربرانی که می خواهید فقط به FTP دسترسی داشته باشید ، از همان دستور استفاده کنید.
ما را در شتابان هاست دنبال كنيد.
برچسب ها: دستورات لينوكس
ارسال دیدگاه جدید