FTP مخفف File Transfer Protocol (پروتکل انتقال فایل) است. این پروتکل شباهت زیادی به HTTP (HyperText Transfer Protocol یا پروتکل انتقال متن فراهم) دارد به این معنا که یک زبان برای انتقال دادهها بر روی شبکه مشخص میکند. FTP به صورت پیشفرض رمزگذاری نشده است، بنابراین خود به تنهایی انتخاب خوبی برای انتقال دادههای امن نیست. اگر به دنبال نصب یک سرور FTP روی اوبونتو هستید، سادهترین روش استفاده از vsftpd است. این راهنما به شما کمک میکند تا یک سرور FTP را با استفاده از vsftpd روی اوبونتو نصب و پیکربندی کنید.
پیشنیازها
دسترسی به یک حساب کاربری با امتیازات روت.
دسترسی به یک پنجره ترمینال/خط فرمان (Ctrl+Alt+T).
مدیر بسته apt، به صورت پیشفرض تعبیه شده.
نصب سرور FTP روی اوبونتو
مراحل زیر را دنبال کنید تا ابزار vsftpd را روی اوبونتو نصب کنید:
مرحله ۱: بهروزرسانی مخزن بستههای سیستم
ابتدا با بهروزرسانی مخزن بستههای سیستم شروع کنید تا از دریافت آخرین نسخه برنامه اطمینان حاصل کنید. ترمینال را باز کنید و دستور زیر را اجرا کنید:
sudo apt update
تا پایان فرآیند بهروزرسانی صبر کنید.
مرحله ۲: نصب سرور vsftpd روی اوبونتو
vsftpd یک ابزار FTP منبعباز است که به دلیل سادگیاش در اوبونتو به طور معمول استفاده میشود. vsftpd را با اجرای دستور زیر نصب کنید:
sudo apt install vsftpd
مرحله ۳: راهاندازی vsftpd
برای راهاندازی سرویس و فعالسازی آن به منظور شروع خودکار در هنگام بوت، دستورات زیر را اجرا کنید:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
مرحله ۴: پشتیبانگیری از فایلهای پیکربندی
پیش از ایجاد هرگونه تغییر، از فایلهای پیکربندی خود پشتیبانگیری کنید. با استفاده از دستور cp یک نسخه پشتیبان از فایل پیکربندی پیشفرض ایجاد کنید:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default
این دستور یک کپی از فایل vsftpd.conf واقع در دایرکتوری /etc/ ایجاد میکند و آن را به عنوان vsftpd.conf_default در همان دایرکتوری ذخیره میکند.
مرحله ۵: ایجاد کاربر FTP
برای این آموزش، ما یک کاربر FTP اختصاصی ایجاد خواهیم کرد. اگر قصد دارید به یک کاربر موجود دسترسی FTP بدهید، این مرحله را رد کنید.
از سینتکس زیر برای ایجاد یک کاربر جدید و تنظیم رمز عبور استفاده کنید:
sudo useradd -m [username]
sudo passwd [username]
[username] را با نام حساب کاربری که میخواهید ایجاد کنید جایگزین کنید. پس از اجرای دستور دوم، سیستم از شما میخواهد تا یک رمز عبور برای حساب جدید ایجاد کنید. نمونه زیر فرآیند ایجاد یک حساب کاربری ftpuser و تنظیم یک رمز عبور را نشان میدهد:
مرحله ۶: پیکربندی فایروال برای اجازه ترافیک FTP
اگر از UFW استفاده میکنید، به طور پیشفرض ترافیک FTP مسدود است. دستورات زیر را برای باز کردن پورتهای ۲۰ و ۲۱ برای ترافیک FTP اجرا کنید:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
مرحله ۷: اتصال به سرور FTP
برای اتصال به سرور FTP از سینتکس زیر استفاده کنید:
sudo ftp [system_name]
[system_name] را با نام سیستم خود (که از خط فرمان گرفتهاید) جایگزین کنید.
برای مثال:
پس از اتصال به سرور، با استفاده از حساب و رمز عبوری که در مرحله ۵ تنظیم کردهاید یا با حسابی که قصد استفاده برای FTP را دارید، وارد شوید.
پیکربندی سرور vsftpd
پیکربندی سرور بسیار مهم است زیرا به شما اجازه میدهد تا تنظیمات را برای بهینهسازی عملکرد، فعالسازی ویژگیهای خاص، و سفارشیسازی سرور برای رفع نیازهایتان تغییر دهید. برای برخی از پیکربندیهای اولیه سرور، بخشهای زیر را دنبال کنید.
تغییر دایرکتوری پیشفرض
سرور FTP از دایرکتوری /srv/ftp به عنوان دایرکتوری پیشفرض استفاده میکند. شما میتوانید یک دایرکتوری جدید ایجاد کنید و آن را به عنوان دایرکتوری خانگی کاربر FTP تنظیم کنید. تغییر دادن و محدود کردن FTP به یک دایرکتوری خاص امنیت کلی سرور را بهبود میبخشد.
مراحل زیر را دنبال کنید:
- برای ایجاد یک دایرکتوری جدید از این سینتکس استفاده کنید:
sudo mkdir /srv/ftp/[new_location]
[new_location] را با دایرکتوری که میخواهید ایجاد کنید، جایگزین کنید.
- برای تغییر دایرکتوری پیشفرض که کاربر ftp در هنگام ورود قرار میگیرد، از سینتکس زیر استفاده کنید:
sudo usermod -d /srv/ftp/[new_location] ftp
- برای اعمال تغییرات، سرویس vsftpd را مجدداً راهاندازی کنید:
sudo systemctl restart vsftpd.service
حالا، میتوانید هر فایلی که میخواهید از طریق FTP به اشتراک بگذارید را در دایرکتوری /srv/ftp (اگر آن را به عنوان پیشفرض نگه داشتهاید) یا در دایرکتوری /srv/ftp/[مکان_جدید] (اگر آن را تغییر دادهاید) قرار دهید.
احراز هویت کاربران FTP
اگر میخواهید به کاربران مجاز اجازه دهید تا فایلها را آپلود کنند، فایل پیکربندی vsftpd.conf را طبق مراحل زیر ویرایش کنید:
- فایل پیکربندی vsftpd.conf را در نانو یا ویرایشگر متن دیگری باز کنید:
sudo nano /etc/vsftpd.conf
- ورودی با برچسب write_enable=YES را پیدا کنید و آن را از حالت توضیح خارج کنید (علامت # را از جلوی خط بردارید):
- فایل را ذخیره کرده و خارج شوید، و با اجرای دستور زیر، سرویس FTP را مجدداً راهاندازی کنید:
sudo systemctl restart vsftpd.service
پیکربندی این تنظیم به کاربر اجازه میدهد تا تغییراتی در دایرکتوری خانگی خود ایجاد کند.
امنسازی FTP
اکسپلویتهای بسیاری از سرورهای FTP ناامن استفاده میکنند. چندین گزینه پیکربندی در vsftpd.conf وجود دارد که به امنسازی سرور FTP شما کمک میکند و از این طریق، دسترسیهای غیرمجاز، نقض دادههای احتمالی، و آسیبپذیریهای سیستم را جلوگیری میکند.
محدود کردن دسترسی کاربران
یکی از روشهای امنسازی vsftpd، محدود کردن کاربران به دایرکتوری خانگیشان است. مراحل زیر را دنبال کنید:
- فایل vsftpd.conf را در یک ویرایشگر متن باز کنید:
sudo nano /etc/vsftpd.conf
- خط زیر را با حذف علامت هش (#) غیرفعال کنید:
chroot_local_user=YES
مثال زیر نشان دهنده فایل در نانو است:
- فایل را برای اعمال تغییرات ذخیره کرده و از ویرایشگر خارج شوید.
ایجاد فایل لیست کاربران
فایل لیست کاربران به vsftpd اجازه میدهد تا دسترسی کاربران لیست شده را تایید یا رد کند. کاربران لیست شده به کل سرور دسترسی کامل خواهند داشت. اگر کاربری در لیست نباشد، تنها به دایرکتوری خانگیاش محدود میشود. مراحل زیر را دنبال کنید:
- فایل /etc/vsftpd.chroot_list را در یک ویرایشگر متن باز کنید و برای ایجاد فایل لیست، هر کاربر را در یک خط اضافه کنید.
- فایل vsftpd.conf را ویرایش کنید و خطوط زیر را با حذف علامت # غیرفعال کنید:
chroot_local_user=YES
chroot_list_file=/etc/vsftpd.chroot_list
تصویر زیر ویرایشها را نشان میدهد:
- سرویس vsftpd را مجدداً راهاندازی کنید:
sudo systemctl restart vsftpd.service
از طرف دیگر، لیست کاربرانی که از دسترسی FTP محروم هستند، در فایل /etc/ftpusers ذخیره میشود. برای افزودن کاربران مسدود شده، این فایل را ویرایش کنید و هر کاربر را در یک خط اضافه کنید.
رمزنگاری ترافیک با FTPS
روش دیگری برای امنسازی سرور FTP شما، رمزنگاری ترافیک است. این کار از طریق FTPS – File Transfer Protocol over SSL (لایه سوکت امن) انجام میشود.
برای کارکرد این ویژگی، کاربران باید با یک حساب شل روی سرور FTP تنظیم شوند. این امر یک لایه رمزنگاری امن به ترافیک FTP شما اضافه میکند. مراحل زیر را دنبال کنید:
- با اجرای دستور زیر، یک گواهینامه جدید با openssl ایجاد کنید:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
هنگامی که پرسشهایی مطرح شد، اطلاعات مورد نیاز را ارائه دهید یا با فشار دادن Enter تنظیمات پیشفرض را نگه دارید.
- فایل vsftpd.conf را در یک ویرایشگر باز کنید و خط ssl_enable=NO را به ssl_enable=YES تغییر دهید.
سپس، خطوط زیر را به فایل پیکربندی اضافه کنید:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=40000
pasv_max_port=50000
تغییرات را ذخیره کرده و از فایل خارج شوید.
- سرویس را برای اعمال تغییرات مجدداً راهاندازی کنید:
sudo systemctl restart vsftpd.service
نتیجهگیری
پس از دنبال کردن مراحل در این آموزش، شما باید توانسته باشید یک سرور FTP را با استفاده از vsftpd روی اوبونتو نصب، پیکربندی و امنسازی کنید. یک سرور FTP امکان به اشتراکگذاری، انتقال و مدیریت فایلها را در شبکهها یا اینترنت به صورت کارآمد فراهم میکند.