میلاد فشی
کارشناس فناوری اطلاعات

آموزش نصب VSFTPD در لینوکس اوبونتو

از دردسرهای پرشدن سرور FTP تا نصب VSFTPD بر روی اوبونتو سرور 16.4 ، قصد دارم تجربیات خودم رو در مورد مباحث مدیریت سرورهای مجازی و راه اندازی سرور FTP رو در اختیار شما عزیزان قرار بدم.در این آموزش قصد دارم یک سرور FTP را راه اندازی کنم.سرور FTP سازمان ما یک گنو/لینوکس CentOS بود که به صورت مجازی بر روی ESXi vSphere شرکت VMware نصب شده بود.

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

خود ESXi هم بر روی یک سرور HP نصب شده است. مشکل اینجا بود که ما فضای کافی برای آپلود فایل بر روی FTP نداشتیم.قبلاً هم یکی از سرورهای ویندوزی (Windows Server 2008) ما پر شده بود و فضای کافی نداشت.من از 3 هارد سرور ویندوزی با نرم افزار Acronis True Image یک Backup تهیه کردم.

این 3 هارد RAID5 داشت و من 4 هارد جدید، روی سرور بستم و با استفاده از HP Smart Array این 4 هارد رو با RAID10 کانفیگ کردم و بعد Backup ای که با اَکرونِس گرفته بودم روی این 4 هارد جدید Restore کردم.و بعد از عملیات ریستور یا Recovery مشکل کمبود فضا حل شد.البته میتوان از نرم افزار Backup گرفتن مثل اکرونیس یا CloneZilla یا ... استفاده نکرد.

و همه هاردهای خود را روی سرور نصب کنید.و 3 هارد قدیمی RAID5 باشند.و 4هارد جدید هم RAID10 یا هر RAID که شما میپسندید.بعد با استفاده از نرم افزارهای پارتیشن بندی Bootable با استفاده از گزینه Clone Disk یا Copy Disk کل اطلاعات روی 3 هاردی که به صورت منطقی یک Logical دیسک است را بر روی 4 هاردی که آن هم یک Logical Disk با ظرفیت بیشتر است کپی کنید.

اما تجربه ای که من به دست آوردم این بود که این کار برای سرورهایی که بر روی آن سیستم‌عامل ESXi نصب شده است جواب نمیدهد.ESXi بعد از نصب پارتیشن های هارد را به شکل عجیب غریبی پارتیشن بندی میکند.و شما حتی با Clone کردن دیسک هم نمیتوانید آن را بر روی هاردهای جدید با ظرفیت بیشتر کپی کنید

حتی گزینه Migrate OS هم که در نرم افزارهای جدید پارتیشن بندی وجود دارد مشکل را حل نکرد.به هرحال من به شخصه نتوانستم این کار رو انجام بدم.خوب به ناچار از اطلاعات موجود بر روی ESXi به صورت فایل های OVF یا OVA خروجی گرفتم.برای این کار از نرم افزار vSphere Client استفاده کردم و از منوی File گزینه Export OVF Template را انتخاب کردم.

البته OVA هم مانند OVF است با این تفاوت که فقط یک فایل یکتا (Single File)را برای ما تولید میکند.از تمام ماشین های مجازی بر روی ESXi یک OVA گرفتم.بعد هاردهای جدید را روی سرور گذاشتم و نرم افزار ESXi را از اول روی سرور نصب کردم.سپس patch و update های ESXi را بر روی آن نصب کردم.

آپدیت کردن آفلاین سرورهای ESXi هم خودش آموزش جداگانه ای رو نیاز داره.سپس فایل های OVA را با استفاده از File>Deploy OVA Template بر روی هاردهای جدید مجدداً نصب کردم.اما باز هم مشکل حل نشد! باز هم کمبود فضا در سرور FTP رو داشتیم. واقعاً حس بدی داشتم.فکر میکردم مثل پت و مت هستیم.

البته این ایده همکارم بود چون که اون با سابقه بود و از جزییات سرورها با خبر بود.من تازه فهمیده بودم مشکل از کمبود فضای DataStore سرور ESXi نیست! بلکه CentOS که سرور FTP ماست پارتیشن روت آن فقط 40 گیگابایت است و با اینکه در DataStore فضای خالی زیادی وجود داره ولی CentOS فقط 40 گیگابایت از این فضا رو برای خودش نگه داشته!

خوب فکری که به سرم زد این بود که باز هم مثل پت و مت Gparted رو روی CentOS نصب کنم و با استفاده از اون فضای پارتیشن روت رو افزایش بدم.اما به دو دلیل این کار رو نکردم.

یکی اینکه Resize کردن پارتیشن همیشه موفقیت آمیز نیست.دوم اینکه CentOS سرور FTP ما نسخه اش قدیمی بود و RPM Base بود و من با توزیع های Debia Base راحت ترم چون که با توزیع های RPM base آشنایی ندارم.نه اینکه RPM-base ها را قبول نداشته باشم.به دوستان متخصص Oracle و RedHat و SUSE Enterprise و CentOS ای بر نخوره !

نصب Ubuntu Server 16.4.1 LTS بر روی ESXi

من تصمیم گرفتم که Ubuntu Server 16.4.1 LTS رو بر روی ESXi نصب کنم.البته علاوه بر آشنایی من با اوبونتو سرور انتخاب اوبونتو سرور برای FTP دلیل فنی هم داشت.چون که اوبونتو سرور محیط دسکتاپ (GUI) نداره و Performance بالاتری داره ولی خوب باید تا حدودی با محیط CLI یا Command Line گنو//لینوکس آشنایی داشته باشید.

البته همون قدر که اوبونتو در نسخه دسکتاپ به کاربرپسندی و راحتی شما فکر میکنه و محیط دسکتاپ های Unity و gnome و KDE و ... رو پشتیبانی میکنه ، در نسخه سرور به کارایی و سرعت اهمیت میده.هرچند شما به راحتی میتونید هر دسکتاپی رو که دوست دارید روی سرورتون نصب کنید.

ولی این کار توصیه نمیشه.خوب ما در اینجا فرض میکنیم که شما قبلاً با نصب گنو//لینوکس آشنایی دارید و با مراحل نصب اوبونتو سرور آشنا هستید. فایل iso نسخه سرور و دسکتاپ اوبونتو را از سایت Ubuntu.com میتوانید به صورت رایگان دانلود نمایید.

نصب سرویس FTP بر روی اوبونتو 

فلسفه و تفکری وجود داره که سیستم عامل رو به خدا تشبیه میکنه و فرآیندها(Process) رو هم به انسان ها تشبیه کرده. فرآیندها هم مثل مردم یونان باستان ، به خدایان(Polytheism) اعتقاد دارند!!! خدای پرینتر یا Print Daemon یا خدای فایل File Daemon یا ... ! اینها همش افسانه و شوخی نیست.

فلسفه پشت این خدایان ، همون بحث Modularity و طراحی و پیاده سازی لایه‌ای سیستم عامل هستش.این لغت daemon از زمان سیستم عامل unix برسر زبانها افتاد.پر استفاده ترین نرم افزار پیاده سازی ftp در گنولینوکس ، بسته نرم افزاری vsftpd که مخفف Very Secure File Transfer Protocol Daemon است.

اگر ftp روی اینترنت با امنیت پایین باشد هر کسی می تواند با دسترسی به ftp و نوشتن (کپی) یک فایل مخرب روی آن و دانلود آن توسط افرادی روی سرور باعث تخریب سرور شوند. عاقلانه و ساده ترین کار این است که هر کسی اجازه write روی سرور ftp را نداشته باشد یا حداقل روی تمامی دایرکتوری ها نداشته باشد

و اگر نیاز به رد و بدل فایل ها بین کارمندان باشد باید فقط روی همان دایرکتوری بازهم برای افراد مشخصی فقط دسترسی write وجود داشته باشد. ftp روی پورت 21 بصورت پیش فرض به در خواست ها گوش می دهد، تغییر این پورت به عددی دیگر، یکی دیگر از کارهای ایمن ساختن سرویس ftp است.

هرچند حرفه‌ای‌های شبکه و امنیت با توجه به ضعف‌هاي امنيتي كه در اين پروتكل وجود داره و صد البته قابليت هاي بسيار كمتري كه نسب به DFS در شبكه داخلي داره استفاده از این پروتکل در شبکه داخلی را توصیه نمیکنند ، ولی در سازمان ما چون که کاربران از قدیم با این پروتکل به فایل های سرور دسترسی داشته اند و به راحتی نمیشه این سنت قدیمی رو به اونها ترک داد.

بحث امنیت هم بستگی به کاربران سازمان داره.کارکنان سازمان ما که اغلب دانش کامپیوتر ضعیفی دارند و خطری سرور FTP ما را تهدید نمیکند.و نیز فایل های روی سرور FTP هم محرمانگی ندارند.برای نصب بسته vsftpd در توزیع‌های مشتق شده از توزیع Debian GNU/Linux باید از دستور زیر استفاده نمایید:

sudo apt-get install vsftpd

برای نصب سرویس ftp در توزیع های مبتنی بر RedHat از دستور زیر استفاده کنید:

yum  -y  install  vsftpd

اگر نتوانستید vsftpd را از طریق دستور sudo apt-get install vsftpd نصب نمایید ابتدای CD اوبونتو 16.4 را در داخل دستگاه قراردهید.سپس دستور زیر را برای mount شدن آن اجرا کنید :

sudo -i
mount /dev/cdrom  /media/cdrom

سپس به آدرس زیر بروید :

cd /media/cdrom/pool/main/v/vsftpd

سپس دستور زیر را برای نصب پکیج دبیان vsftpd استفاده نمایید :

dpkg –i vsftpd_3.0.3-3ubuntu2_amd64.deb

تنظیمات VSFTPD

فایل اصلی پیکربندی vsftpd در آدرس زیر وجود دارد.

/etc/vsftpd/vsftpd.conf

البته اگر در این آدرس نبود فایل vsftpd.conf در دایرکتوری etc قرار دارد که شامل پارامتر های اصلی تنظیم vsftpd است. خط هایی که با "#" شروع شوند بعنوان Comment در نظر گرفته می شوند. البته برخی از پارامترها نیز در ابتدایشان" # "دارند که یعنی پارامتر غیر فعال است. برای فعال کردن پارامتر ها باید علامت "#" را از ابتدایشان حذف کرد. مهمترین پارامترهای این فایل اینها هستند :

anonymous_enable: یعنی هر کاربری می تواند به ftp دسترسی داشته باشد. معمولاً در سرور های ftp روی اینترنت برای دانلود فایل ها از این گزینه استفاده می‌شود که امنیت را پایین می آورد. اگر مقدارش YES باشد یعنی همه می توانند به ftp دسترسی داشته باشند. اگر NO باشد باید نام کاربری و پسورد را وارد کند.

anon_root: تعیین کننده دایرکتوری که کاربر anonymous بصورت پیش فرض وارد آن می شوند.این پارامتر بصورت پیش فرض وجود ندارد و باید آن را تعریف نمایید.این دایرکتوری محلی است که فایل‌های FTP در آن به اشتراک گذاشته میشود.برای مثال میتوانید از آدرس زیر برای آن استفاده نمایید :

anon_root=/home/itpro

local_enable: به کاربران محلی اگر YES باشد اجازه دسترسی می دهد. بهتر است NO باشد زیرا ازتباط در vsftpd یا هر ftp دیگری بصورت Clear Text است و کاربر سومی می تواند اطلاعات را بدزد. البته می توان برای امن کردن ارتباط بین سیستم ها از Certificate ها توسط ابزار openssl استفاده کرد.

write enable : اجازه نوشتن (کپی فایل و دایرکتوری توسط دیگر کاربران روی ftp را می دهد.). بهتر است NO باشد چونکه ممکن است فایلی که روی ftp نوشته می شود مخرب باشد و با کپی کردن دیگران از روی ftp روی سیستمشان، دچار مشکل شوند.

پس از ایجاد تغییر در فایل vsftp.conf برای اعمال تغییرات دستور زیر را اجرا نمایید:

sudo /etc/init.d/vsftpd restart

IP دادن به اوبونتو سرور

مهندس نصیری در انجمن توضیح داده اند.ولی خوب ما هم در این جا اشاره ای به این مبحث داریم.اولین کاری که برای سرور ftp باید انجام بدهید ، دادن IP مورد نظرتون به سیستم سرور است.با دستور ifconfig میتوانید وضعیت Network Interface هایی که در حال حاظر Active هستند را مشاهده نمایید.

همان طور که میدونید از نام های دیگر Network Adapter یا کارت شبکه Network Interface Card یا به اختصار NIC است.از این طریق شما میتوانید نام و MAC Address و IP Address و جزییات مربوط به Network Interface های فعال روی سیستم خودتون رو مشاهده کنید.برای مثال اگر نام Network Interface فعال شما "eth0" است ، با دستور زیر IP خود را به اون رابط شبکه(کارت شبکه) بدید :

sudo ifconfig eth0  192.168.0.1 netmask 255.255.255.0

این دستور در لینوکس اوبونتو که از دبیان مشتق شده و در اکثر توزیع های Debian base بدون مشکل اجرا میشود.بدیهی است که این دستور سیستمی است و احتیاج به دسترسی مدیریتی دارد و باید از sudo در ابتدای دستور استفاده شود.واضح است که netmask هم برای تعریف Subnet Mask است. اگر می خواهید در ادامه به کارت شبکه خود یک آدرس Gateway هم بدهید کافیست دستور زیر را در خط فرمان وارد کنید :

sudo route add default gw 192.168.0.253 eth0

بعد از اینکه دستورات بالا را وارد کردید شما آدرس IP را با مشخصات داده تغییر داده اید اما نکته مهم در اینجاست که تمامی تنظیماتی که در حال حاضر انجام داده اید فقط در لحظه فعلی کار می کنند و به محض اینکه سیستم شما Restart شود و یا سرویس شبکه شما Restart شود همگی تنظیمات از بین می رود.

برای اینکه بتوانید تنظیمات بالا را بصورت دائمی بر روی سیستم قرار دهید کافیست فایل Interfaces موجود در آدرس etcnetworkinterfaces رو دستکاری کنید.برای ویرایش این فایل متنی از Editor های nano و vi میتوانید استفاده نمایید.برای ویرایش این فایل میتوانید دستور زیر را بنویسید:

nano /etc/network/interfaces

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

## To configure a dynamic IP address
auto eth0
iface eth0 inet dhcp

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

## configure a static IP
auto eth0
iface eth0 inet static
  address 192.168.1.14
  gateway 192.168.1.1
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255

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

sudo /etc/init.d/networking restart

تست ارتباط سرور مجازی اوبونتو با ESXi

با ping کردن IP سرور ESXi هم میتونید از صحت عملکرد اوبونتو مطمئن شوید.چون سرور مجازی اوبونتو باید ESXi رو پیدا کنه تا FTP از روی کلاینت ها قابل دسترسی باشه.ولی من در نصب اون دچار مشکلی شدم.هرچقدر IP سرور ESXi رو Ping گرفتم عبارت Destination Host Unreachable رو نشون میداد.

در صورتی که همه چیز درست بود!!! در هر صورت مشکلم و راه حل رو اینجا مینوسم شاید شما هم به این مشکل برخورد کردید.اگر شما دستور ifconfig رو زدید و در لیست اینترفیس های شبکه virbr0 رو مشاهده کردید.این Virtual Bridge باعث میشه ارتباط شما با ESXi قطع بشه!!! علتش رو نمیدونم ولی مشکل از این اینترفیس هستش و باید با دستورات زیر حذف اش کنید :

virsh net-destroy default
virsh net-undefine default
ifconfig

حالا میبینید که virbr0 حذف شده.بهتره اوبنتو رو با reboot now ریستارت کنید.بعد بوت شدن ifconfig –a رو بزنید.میبینید که ens33 به شما نمایش داده میشود ولی غیرفعال است! ens33 در واقع مترادف eth0 هستش.و فقط اسمش عوض شده وگرنه همون اینترفیس شبکه باسیم هستش. برای فعال شدنش هم دستور sudo ifconfig ens33 up رو بنویسید.حالا اگر سرور ESXi رو Ping بگیرید ، میبینید که ارتباط برقراره و همچنین از کلاینت ها نیز باید بتونید به آدرس FTP دسترسی داشته باشید.منابع :

Ubuntu Server Guide[https://wiki.ubuntu.com/DocumentationTeam]
https://ubuntuforums.org
https://communities.vmware.com/message/2435402#2435402
http://unix.stackexchange.com
Ubuntu.ir
falearn.ir
ITpro.ir

میلاد فشی
میلاد فشی

کارشناس فناوری اطلاعات

میلاد فشی ، کارشناس نرم افزار ، کتاب Mobile Web Application With MoSync Framework را برای برنامه نویسی Cross-Platform برای موبایل ها یا تبلت ها به رشته تحریر درآوردم.به نرم افزارهای آزاد و متن باز (FOSS) علاقه دارم. با توزیع های محبوب گنو/لینوکس نیز کار کرده ام.به شبکه های کامپیوتری بیشتر از برنامه نویسی علاقه دارم و به همین دلیل بیشتر در حوزه شبکه های کامپیوتری مطالعه و تحقیق و پژوهش دارم و خودم رو یک دانشجوی مادام العمر میدونم...

نظرات