آخرین اخبار

This is some blog description about this site

vsftpd چیست؟ | معرفی جامع و راهنمای کامل — از صفر تا صد

vsftpd چیست؟ | معرفی جامع و راهنمای کامل — از صفر تا صد

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

vsftpd دیمن FTP بسیار امنی است که از گذشته تاکنون به عنوان دیمن پیش‌فرض FTP در راکی لینوکس و بسیاری دیگر از توزیع‌های لینوکس مورد استفاده قرار گرفته است.

vsftpd امکان استفاده از کاربران مجازی با مدیریت دسترسی ممتاز (PAM) را فراهم می‌کند. این یوزرهای مجازی در سیستم وجود ندارند و هیچ مجوز دیگری به جز FTP ندارند. حتی اگر یکی از یوزرهای مجازی به خطر بیفتد، شخصی که به آن یوزر دسترسی دارد بلافاصله از تمامی مجوزها منع می‌شود.

توجه داشته باشید که ما در این مقاله، از توزیع راکی لینوکس استفاده می‌کنیم. به همین جهت ممکن است برخی از دستورات در سایر توزیع ها تفاوت اندکی داشته باشند.

قبل از آنکه به ادامه توضیح مطالب بپردازیم، توصیه می‌کنیم به این پیش‌نیازها توجه داشته باشید:

• تسلط به ویرایشگر vim

• تسط به دستورات CLI، مشاهده لاگ‌ها و سایر وظایف عمومی مدیر سیستم

• درک دستورات PAM و openssl

• اجرای دستورات با یوزر root یا استفاده از sudo با یوزر معمولی

 

نصب vsftpd

در برخی موارد ممکن است دستورات از توزیع باید از نصب openssl اطمینان حاصل کنید. اگر از وب سرور استفاده می‌کنید، احتمالاً از قبل روی سیستم شما وجود دارد، اما برای مطمئن شدن دستور زیر را اجرا کنید:

dnf install vsftpd openssl

همچنین سرویس vsftpd را با دستور زیر فعال کنید:

systemctl enable vsftpd

 

نحوه کانفیگ vsftpd

در قدم اول می‌بایست از غیرفعال کردن برخی تنظیمات و فعال کردن برخی دیگر اطمینان حاصل کنید.

برای بررسی فایل کانفیگ و ایجاد تغییرات در صورت لزوم، این دستور را اجرا کنید:

vi /etc/vsftpd/vsftpd.conf

دنبال خط "=anonymous_enable" بگردید و مطمئن شوید که جلوی آن "NO" نوشته شده باشد. یعنی باید به این شکل باشد: 

anonymous_enable=NO

مطمئن شوید که جلوی "local_enable"، YES نوشته شده باشد:

local_enable=YES

شما می‌بایست یک خط برای کاربر روت لوکال اضافه کنید. اگر از وب سرور و از ستاپ وب سرور Apache استفاده می‌کنید، روت لوکال شما با تنظیمات مطابقت خواهد داشت. اگر تنظیمات شما متفاوت است، یا اگر از وب سرور استفاده نمی‌کنید، باید تنظیمات "local_root" را متناسب با آن تغییر دهید:

local_root=/var/www/sub-domains

اطمینان حاصل کنید که جلوی "write_enable" نیز YES نوشته شده باشد:

write_enable=YES

خط "chroot_local_users" را پیدا کنید و آن را از حالت کامنت خارج کنید. سپس، این دو خط را زیر آن اضافه کنید. یعنی بدین شکل: 

chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES

 در زیر آن می‌بایست بخشی را اضافه کنید که با کاربران مجازی سروکار دارد:

  Virtual User Settings #
user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd

همچنین، باید در پایین فایل بخشی را اضافه کنید تا رمزهای عبور ارسال شده از طریق اینترنت را رمزنگاری کند. بدین منظور، شما نیاز به نصب openssl دارید و همچنین باید یک گواهی برای این کار ایجاد کنید.

در قدم اول، این خطوط را در پایین فایل اضافه کنید:

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

pasv_min_port=7000

pasv_max_port=7500

سپس کانفیگ خود را ذخیره کنید. (Shift + : + wq)

 

نحوه ایجاد گواهی RSA

تعداد روزها را به دلخواه ویرایش کنید و از فرمت این دستور برای ایجاد گواهی و فایل های کلید خصوصی (private key) در CLI استفاده کنید:

openssl req -x509 -nodes -days 1825 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.pem

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

vsftpd چیست؟

فیلد اول فیلد کد کشور است، این قسمت را با کد دو حرفی کشور خود پر کنید:

Country Name (2 letter code) [XX]:

در مرحله‌ی بعد نام ایالت یا استان خود را به صورت کامل بنویسید:

State or Province Name (full name) []:

سپس، نام شهر خود را وارد کنید:

Locality Name (eg, city) [Default City]:

در مرحله‌ی بعد باید نام شرکت یا سازمان خود را بدهید. البته می‌توانید این قسمت را خالی بگذارید:

Organization Name (eg, company) [Default Company Ltd]:

در قدم بعدی، باید نام واحد سازمانی خود را وارد کنید. این بخش نیز اختیاری است و می‌توانید آن را خالی بگذارید:

Organizational Unit Name (eg, section) []:

سپس باید فیلد زیر را با ارائه common name سرور خود تکمیل کنید. از فرمت مورد نظر خود نیز می‌توانید این استفاده کنید. مانند webftp.domainname.ext:

Common Name (eg, your name or your server's hostname) []:

فیلد ایمیل را می توان خالی گذاشت:

Email Address []:

پس از تکمیل این مراحل، گواهی شما ایجاد خواهد شد.

 

نحوه راه اندازی یوزرهای مجازی

همانطور که قبلاً گفته شد، استفاده از یوزرهای مجازی برای vsftpd بسیار امن است زیرا آنها هیچ امتیاز سیستمی ندارند. در نظر داشته باشید که برای vsftpd شما باید علاوه بر اضافه کردن یوزرهای مجازی، گروه نیز ایجاد کنید:

groupadd nogroup
useradd --home-dir /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

یوزر باید با خط =guest_username در فایل vsftpd.conf مطابقت داشته باشد.

vsftpd چیست؟

به دایرکتوری کانفیگ vsftpd بروید:

cd /etc/vsftpd

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

هر زمانی بخواهید کاربر جدیدی اضافه کنید، باید این فرآیند را مجدداً طی کنید:

vi vusers.txt

یوزر و پسورد باید از هم جدا باشند. اول یوزر را وارد کنید، ENTER بزنید و سپس پسورد را وارد نمایید. این کار را ادامه دهید تا زمانی که همه‌ی کاربران مد نظر به سیستم دسترسی داشته باشند. مثال:

user_name_a
user_password_a
user_name_b
user_password_b

پس از ایجاد فایل متنی، دیتابیس پسورد را ایجاد کنید تا vsftpd از آن برای یوزرهای مجازی استفاده کند. این کار را می‌بایست با دستور db_load انجام دهید. db_load توسط libdb-utils ارائه می شود که باید روی سیستم شما از قبل نصب شده باشد، اما اگر اینطور نیست، می‌توانید آن را به سادگی نصب کنید:

dnf install libdb-utils

vsftpd چیست؟

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

db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db

در این مرحله می‌بایست زمانی را برای چک کردن کارهایی که db_load انجام می‌دهد، اختصاص دهید:

سوئیچ -T اجازه می‌دهد تا یک فایل متنی را وارد دیتابیس کنید.

سوئیچ -t برای مشخص کردن اکسس متد است.

هش (hash) اکسس متدی است که شما آن را مشخص می‌کنید.

از سوئیچ -f برای خواندن یک فایل مشخص استفاده می‌شود.

فایل مشخص شده vusers.txt می‌باشد.

دیتابیسی که می سازید یا در حال تغییر روی آن هستید، vsftpd-virtual-user.db می‌باشد.

مجوزهای پیش فرض فایل دیتابیس را تغییر دهید:

chmod 600 vsftpd-virtual-user.db

فایل "vusers.txt" را حذف کنید:

rm vusers.txt

هنگام اضافه کردن یوزرها، از vi برای ایجاد یک فایل "vusers.txt" دیگر استفاده کنید و دستور db_load را مجدد اجرا کنید تا یوزرها را به دیتابیس اضافه نماید.

 

نحوه راه اندازی PAM

vsftpd یک فایل pam پیش فرض را هنگام نصب پکیج، نصب می‌کند. شما باید این فایل را با محتوای خود جایگزین کنید. توصیه می‌کنیم همیشه در قدم اول، یک نسخه بکاپ از فایل قدیمی خود تهیه نمایید.

یک دایرکتوری برای فایل پشتیبان خود در /root ایجاد کنید:

mkdir /root/backup_vsftpd_pam

فایل pam را در این دایرکتوری کپی کنید:

cp /etc/pam.d/vsftpd /root/backup_vsftpd_pam/

فایل اصلی را ویرایش کنید:

vi /etc/pam.d/vsftpd

همه چیز را در این فایل به جزء “#%PAM-1.0” حذف کنید و خطوط زیر را اضافه کنید: 

auth       required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
session required pam_loginuid.so

سپس تغییرات خود را ذخیره کنید و خارج شوید. (Shift + : + wq)

این کار ورود یوزرهای مجازی شما را که در vsftpd-virtual-user.db تعریف شده‌اند فعال می‌کند و لاگین‌های لوکال را غیرفعال می‌سازد.

 

تنظیمات کانفیگ یوزر مجازی

هر یوزر مجازی یک فایل کانفیگ دارد که دایرکتوری "local_root" خود را مشخص می‌کند. مالک این روت لوکال، کاربر "vsftpd" و گروه "nogroup" می‌باشد.

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

chown vsftpd.nogroup /var/www/sub-domains/whatever_the_domain_name_is/html

شما باید فایلی را ایجاد کنید که دارای کانفیگ یوزر مجازی باشد:

mkdir /etc/vsftpd/vsftpd_user_conf

vi /etc/vsftpd/vsftpd_user_conf/username

در این فایل، خطی وجود دارد که "local_root" کاربر مجازی را مشخص می‌کند:

local_root=/var/www/sub-domains/com.testdomain/html

مشخصات این مسیر در قسمت "Virtual User" فایل vsftpd.conf قرار دارد.

 

استارت سرویس vsftpd

سرویس vsftpd را راه اندازی کنید و یوزرها را تست کنید، با این فرض که سرویس به درستی شروع می شود:

systemctl restart vsftpd

شما می‌توانید تنظیمات را با خط فرمان تست کنید و دسترسی به ماشین را با FTP تست نمایید. ساده‌ترین راه برای این کار، تست با یک FTP کلاینت، مانند FileZilla می‌باشد.

اگر بخواهید پروسه تست سرور vsftpd را با استفاده از یوزر مجازی انجام دهید، یک پیغام حاوی گواهی SSL/TLS دریافت خواهید نمود. این پیغام به فرد می‌گوید که سرور از گواهی استفاده می‌کند و از او می‌خواهد تا قبل از ادامه پروسه، آن را تأیید نماید. هنگامی که به عنوان یک یوزر مجازی به سرویس متصل هستید، می توانید فایل ها را در "local_root" قرار دهید.

اگر نمی‌توانید فایلی را آپلود کنید، ممکن است لازم باشد به عقب برگردید، تمامی موارد را بررسی کنید و هر یک از مراحل را مجدد انجام دهید. برای مثال، ممکن است مجوزهای مالکیت برای "local_root" روی کاربر "vsftpd" و گروه "nogroup" تنظیم نشده باشد که در این صورت می‌بایست با توجه مواردی که در این مقاله گفته شد، تغییرات را اعمال کنید.

 

سخن آخر

در حال حاضر، vsftpd سرور FTP محبوب و رایجی است که می‌تواند یک سرور مستقل یا بخشی از وب سرور آپاچی باشد چرا که به دلیل امکان ساختن یوزرهای مجازی و گواهی امنیتی، از بسیاری جهات امن است.

در این مقاله ما سعی کردیم تمامی مراحل راه اندازی vsftpd را به شما شرح دهیم. توصیه می‌کنیم زمان کافی برای کانفیگ صحیح آن صرف کنید تا از بابت ایمن بودن سرور اطمینان حاصل نمایید.

مجموع رتبه (0)

0 از 5 ستاره
  • هیچ نظری یافت نشد

نظر خود را اضافه کنید.

ارسال نظر به عنوان مهمان

0
نظر شما به دست مدیر خواهد رسید