پشتیبانی فنی سایت و سرور
FTP در لغت کوتاه شده کلمه File Transfer Protocol می باشد. یک نوع پروتکل شبکه می باشد که برای انتقال
فایل از طریق سرویس دهنده به یک سرور یا VPS و یا حتی یک هاست (Host) استفاده می شود. تا به امروز روش های
جدیدتر و بهتر و امن تر جایگرین این روش شده است.
بسیاری از کاربران خواهان استفاده از https بصورت مستقیم از داخل مرورگر استفاده کنند. کاربران از خط فرمان scp و یا
sFTP استفاده می کنند.
در این آموزش، ما به شما نحوه پیکربندی vsftpd را برای اجازه دادن به کاربر برای بارگذاری فایل ها در دایرکتوری خانگی
خود با استفاده از FTP با اعتبار ورودی ایمن شده توسط SSL / TLS نشان می دهیم.
پیش نیاز ها برای vsftpd :
یک سرور اختصاصی یا مجازی (VPS) با سیستم عامل اوبونتو نسخه 16.04 با کاربر غیرریشه و با دسترسی sudo
قدم اول – نصب vsftpd
خب ابتدا با آپدیت کردن مخازن و نصب vsftpd با دستور زیر شروع می کنیم:
sudo apt-get update sudo apt-get install vsftpd
هنگامی که نصب کامل شد، ما فایل پیکربندی را کپی می کنیم تا ما بتوانیم با یک پیکربندی خالی شروع کنیم و نسخه
اصلی را به عنوان پشتیبان ذخیره می کنیم.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
قدم دوم – باز کردن فایروال firewall
ما وضعیت فایروال را بررسی خواهیم می کنیم تا ببینیم آیا آن فعال شده است یا خیر. بنابراین بررسی می کنیم که FTP
دسترسی دارد یا خیر.
sudo ufw status
اگر فایروال غیرفعال باشد با پیام زیر رو به رو می شوید:
Status: disable
اگر فعال باشد ممکن است با پیام زیر رو به رو شوید:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
برای دسترسی FTP باید پورت های 20 ، 21 ، 22 و 990 و همچنین 40000 و 50000 دسترسی را داشته باشند
از طریق کامند های زیر دسترسی را از طریق فایروال باز نگه میداریم:
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 990/tcp sudo ufw allow 40000:50000/tcp sudo ufw status
و بعد با خروجی زیر مواجه می شویم:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)
با دیدن این خروجی پورت های لازم برای vsftpd را باز گذاشته ایم.
مرحله 3 – تهیه دایرکتوری کاربر
ابتدا یک کاربر تعریف می کنیم (در اینجا sammy کاربر فرضی می باشد. شما می توانید از نام اختصاصی خود استفاده کنید):
sudo adduser sammy
ما باید یک فولدر بسازیم و دسترسی آن را به کاربر ایجاد کرده خود بدهیم:
sudo mkdir /home/sammy/ftp sudo chown nobody:nogroup /home/sammy/ftp sudo chmod a-w /home/sammy/ftp
و به آن دسترسی می دهیم:
sudo ls -la /home/sammy/ftp
خروجی: total 8 4 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 . 4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..
حالا یک دایرکتوری به نام files ایجاد و به آن دسترسی می دهیم:
sudo mkdir /home/sammy/ftp/files sudo chown sammy:sammy /home/sammy/ftp/files
کامند برای دسترسی: sudo ls -la /home/sammy/ftp
و خروجی آن:
total 12 dr-xr-xr-x 3 nobody nogroup 4096 Aug 26 14:01 . drwxr-xr-x 3 sammy sammy 4096 Aug 26 13:59 .. drwxr-xr-x 2 sammy sammy 4096 Aug 26 14:01 files
حالا یک فایل test.txt ایجاد می کنیم:
echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt
مرحله 4 – کانفیگ دسترسی FTP:
در این مرحله باید فایل vsftpd.conf را تنظیم کنیم. برای این منظور کامند زیر را وارد می کنیم
تا ادیتور فایل nano اجرا شده و فایل را به تنظیمات زیر تغییر میدهیم:
sudo nano /etc/vsftpd.conf
# Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES
و سپس write_enable را تغییر می دهیم:
write_enable=YES
و سپس chroot را باید uncomment کنیم یعنی # را از جلوی آن حذف می کنیم:
chroot_local_user=YES
و سپس تنظیمات زیر را به این فایل اضافه می کنیم:
user_sub_token=$USER local_root=/home/$USER/ftp
و سپس محدودیت رنج را تعیین می کنیم:
pasv_min_port=40000 pasv_max_port=50000
و حالا باید تنظیمات زیر را اضافه کنیم برای دسترسی کاربر:
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
سپس کلید های ترکیبی ctrl + x را می فشاریم و سپس Y را می فشاریم و بعد Enter را میزنیم تا تغییرات ذخیره شود.
و حالا با کامند زیر کاربر خود را به userlist اضافه می کنیم:
echo "sammy" | sudo tee -a /etc/vsftpd.userlist
پس از آن این عمل را چک می کنیم:
cat /etc/vsftpd.userlist
خروجی آن :
sammy
حالا باید سرویس vsftpd را ریستارت کنیم تا تنظیمات اعمال شود، از طریق کامند زیر این کار را انجام می دهیم:
sudo service vsftpd restart
مرحله 5- در این مرحله FTP خود را تست می کنیم
از طریق کامند زیر می توانید به سرویس FTP دسترسی پیدا کنید ( آی پی سرور خود را جایگزین آی پی داخل کد کنید):
ftp -p 203.0.113.0
در قسمت Name نام کاربر را وارد کنید و پس از آن از شما رمز عبور کاربر را می خواهد وارد کنید
پس از آن با خروجی زیر رو به رو می شوید:
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sammy 331 Please specify the password. Password: your_user's_password 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
برای تست فایل باید به پوشه files میرویم و سپس فایل test.txt را فراخوان می کنیم:
cd files get test.txt
بعد از انجام کامند های بالا خروجی زیر را دریافت می کنیم:
227 Entering Passive Mode (203,0,113,0,169,12). 150 Opening BINARY mode data connection for test.txt (16 bytes). 226 Transfer complete. 16 bytes received in 0.0101 seconds (1588 bytes/s) ftp>
حالا با کامند زیر میخواهیم اطلاعات فایل test در فایل دیگری ذخیره شود و ایجاد شود:
put test.txt upload.txt
خروجی آن:
227 Entering Passive Mode (203,0,113,0,164,71). 150 Ok to send data. 226 Transfer complete. 16 bytes sent in 0.000894 seconds (17897 bytes/s)
همان طور که می بینید با موفقیت انجام شد سپس ftp را می بندیم با دستور bye
bye
تنظیمات FTP در سرور به پایان رسید هم اکنون می توانید از نرم افزار های FTP مانند Filezila
به پوشه و FTP سرور خود دسترسی داشته باشید.