علی کنگرانی
علی کنگرانی
خواندن ۵ دقیقه·۳ سال پیش

سرویس FTP در لینوکس

سرویس FTP چیه ؟

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

کار با FTP در سیستم عای لینوکسی:

زمانی که کاربر به سرور FTP متصل میشه دو کار کلی میتونه انجام بده، یکی از اونها اجرای تعدادی دستور هستش و کار دیگه جابجایی اطلاعاته. به طور پیش فرض FTP از پورت ۲۱ برای اتصال برای اجرای دستورات و پورت ۲۰ برای جابجایی اطالاعات استفاده می کنه.

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

# apt install vsftpd


در ابتدا باید سرویس رو فعال کنیم.

#systemctl enable vsftpd


همچنین سرویس به شکل زیر باید استارت بشه.

# systemctl start vsftpd



در نهایت می تونید وضعیت سرویس FTP رو بررسی کنید که باید به شکل زیر باشه.

# systemctl status vsftpd



از مسیر زیر وارد فایل تنظیمات FTP بشید.

# vi /etc/vsftpd.conf


تنظیماتی که از اینجا به بعد گفته می شن رو در صورت نیاز می تونید روی سرورتون اعمال کنید.

در صورت فعال کردن این گزینه، به کاربر ها اجازه نوشتن روی سیستم رو میدین (در واقع می تونن فایل ایجاد کنن).

write_enable=YES


با فعال کردن مورد اول، هر کاربری فقط می تونه با نام کاربر مشخص خودش وارد سرور بشه و نام کاربری anonymous غیر فعال میشه. در صورت فعال کردن گزینه دوم، کاربر هایی که روی سرور تعریف شدن هم می تونن به این سرویس دسترسی داشته باشن.

anonymous_enable=NO local_enable=YES



می تویند به هیچ کاربری اجازه دسترسی به فایل های خارج از خونه خودش (home) رو ندید. برای این کار باید گزینه زیر رو فعال کنید.

chroot_local_user=YES



بعد از فعال کردن گزینه بالا باید یک دایرکتوری برای کاربر ایجاد کنید که به عنوان خونش (home) عمل می کنه.

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



در نظر داشته باشید که می تونید فقط به یه سری کاربر خاص اجازه دسترسی به سرور رو بدین. برای این کار باید گزینه زیر رو فعال کنید. به این شکل یه لیست از کاربرایی که مجاز به استفاده از این سرویس هستن رو مشخص می کنید (فقط جای لیست رو اینجا مشخص می کنید).

نکته: از این قابلیت می تونید برای گرفتن دسترسی تعدادی از کاربر های عم استفاده کنید. به شکلی که دسترسی برای همه باز باشه و فقط برای تعداد مشخصی بسته بشه.

userlist_enable=YSE userlist_file=/etc/vsftpd.user_list #userlist_deny=NO


به شکل زیر می تونید رنج (range) پورت های قابل استفاده در حالت Passive رو مشخص کنید. به طور کلی FTP در حالت Active کار می کنه که کاربر به پورت ۲۱ متصل می شه و سرور از طریق پورت ۲۰ به کاربر متصل می شه و انتقال اطالاعات انجام میشه. اما در حالت Passive کاربر به پورت ۲۱ متصل میشه و بعد از پاسخ سرور، به یه پورت نامشخص دیگه برای انتقال اطلاعات متصل میشه که این زیر می تونید رنج (range) اون پورت های نامشخص رو مشخص کنید.

pasv_min_port=30000 pasv_max_port=31000


در آخر، فایل تنظیمات شما باید به شکل زیر باشه (بدون در نظر گرفتن مواردی که comment شدن).

# 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 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 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=NO



بعد از وارد کردن تغییرات روی تنظیمات FTP، باید به شکل زیر سرویسش رو ریست (reset) کنید.

# systemctl restart vsftpd


بعد از ریست (reset) هم می تونید به شکل زیر وضعیت سرویس رو بررسی کنید.

# systemctl status vsftpd



تو این مرحله باید پورت های لازم رو روی فایروال سیستم باز کنید. در اینجا ما از ufw به عنوان فایروال استفاده می کنیم و به شکل زیر پورت ۲۱ رو روی سیستم باز می کنیم.

# ufw allow 21/tcp



همونطور که می دونید ما به پورت ۲۰ هم نیاز داریم که به شکل زیر باید بازش کنیم.

# ufw allow 20/tcp



همچنین باید پورت های مشخص شده برای حالت passive رو هم روی فایروال باز کنید.

‍‍‍

# ufw allow 3000:31000/tcp


نکته: قبل از روشن کردن فایروال پورت ۲۲ رو باز کنید که دسترسی ssh رو داشته باشید.

# ufw allow OpenSSH



حالا می تونید فایروال سیستم رو روشن کنید که قوانین روی سیستم اعمال بشن.

# ufw enable


به شکل زیر میم تویند وضعیت فایروال سیستم رو ببینید.

# ufw status



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

# adduser arvanftp


به شکل زیر دایرکتوری خونه (home) کاربر رو بسازید.

# mkdir -p /home/arvanftp/ftp


به شکل زیر به کاربر اجازه خوندن و اجرا کردن دستور در دایرکتوری خونش (home) رو بدین.

#chmod 550 /home/arvanftp/ftp


همچنین باید به شکل زیر دسترسی نوشتن رو روی یه فایل به کاربر بدین که بتونه فایل آپلود کنه.

# chmod 750 /home/arvanftp/ftp/upload


مالکیت این دایرکتوری رو به خود کاربر بدین.

# chown -R arvanftp: /home/arvanftp/ftp


به شکل زیر می تونید یه shell کاربر رو محدود کنید به طوری که دسترسی بجز استفاده از سرویس ftp رو نده. برای مثال کاربر اجازه ssh زدن به سیستم رو نخواهد داشت.

#echo -e ‘#!/bin/sh\necho “This account is limited to FTP access only.”’ | sudo tee -a /bin/ftponly


به استفاده از دستور زیر اجازه اجرا شدن رو به فایل زیر بدین.

# chmod a+x /bin/ftponly


حالا باید فایلی که ایجاد کردید رو به عنوان shell های مجاز سیستم تعریف کنید.

# echo “/bin/ftponly” | sudo tee -a /etc/shells


در آخر باید shell کاربر رو تغییر بدین که رو حالت پیش فرض نباشه.

#usermod arvanftp -s /bin/ftponly


حالا باید کاربری رو که ایجاد کردین رو به لیست کاربرای مجاز اضافه کنید.

# echo &quotarvanftp&quot | tee -a /etc/vsftpd.user_list


برای امتحان کردن سرویس، فایل زیر رو روی سرور ایجاد کنید.

# vi /home/arvanftp/ftp/upload/ItWorks.txt



از روی یک سیستم دیگه به شکل زیر به سرور ftp متصل بشید. در اینجا باید نام کاربری و رمز عبور رو وارد کنید (آی‌پی که در تصویر اومده برای سرور تستی بوده و بعد از نوشتن این داکیومنت سرور حذف شده. شما باید آی‌پی خودتونو بزنید).

ftp <Ip Address>


به شکل زیر می تونید لیست دستورات مجاز رو ببینید.

ftp> help


برای مثال به شکل زیر می تونید ببینید که در چه مسیری هستید.

ftp> pwd


همچنین می تونید فایل های موجود در مسیر فعلیتون رو مشاهده کنید.

ftp> ls



به شکل زیر می تونید تو سرور جابجا بشید.

ftp> cd upload


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

ftp> get <File name>


به شکل زیر می تونید از سرور ftp خارج بشید.

ftp> exit


همونطور که میبینید فایل دانلود شده و می توینم ازش نهایت استفاده رو بکنیم :).

# cat ItWorks.txt


linux
شاید از این پست‌ها خوشتان بیاید