FTP প্রোটোকল সবচেয়ে পুরানো প্রোটোকলগুলির একটি (এটি ৪০ বছরেরও বেশি পুরানো), কিন্তু সহজ ফাইল ট্রান্সফার প্রোটোকল প্রয়োজন হয়ে এখনও এটি ব্যাপকভাবে ব্যবহৃত হয়। মাইক্রোসফট অপারেটিং সিস্টেমের যেকোনো সংস্করণে FTP সার্ভার ইনস্টল করা সম্ভব। FTP সার্ভিসের শেষ গভীর আধুনিকীকরণ উইন্ডোজ ৭/সার্ভার ২০০৮ R2-এ করা হয়েছিল था (বাস্তবে সার্ভিস কোড প্রায় নতুন করে লেখা হয়েছিল)। সার্ভিসের নিরাপত্তা উল্লেখযোগ্যভাবে উন্নত হয়েছে এবং অনেক নতুন ফিচার যোগ করা হয়েছে। বিশেষত, উইন্ডোজের FTP সার্ভার আপনাকে FTP ইউজার আইসোলেশন কনফিগার করার অনুমতি দেয়। এটি একটি একক FTP সার্ভারে অনেক ব্যবহারকারীকে তাদের নিজস্ব ফোল্ডারগুলোর সীমাবদ্ধ অ্যাক্সেস দিতে সক্ষম করে।
FTP ইউজার আইসোলেশন কী এবং এটি কেন প্রয়োজন?
আইসোলেশন.carrier করা হলে, ব্যবহারকারীরা শুধু তাদের নিজস্ব ফোল্ডারগুলির সাথে কাজ করতে পারে এবং FTP ডিরেক্টরি ট্রিতে উপরের দিকে যেতে পারে না (ব্যবহারকারীর শীর্ষ FTP লেভেল ডিরেক্টরি FTP সার্ভারের রুট হিসেবে প্রদর্শিত হয়)। এইভাবে FTP সার্ভারের অন্য ব্যবহারকারীদের ডেটা অ্যাক্সেস করা রোধ করা যায়। ISP/হোস্টিং প্রদানকারীদের দ্বারা FTP ইউজার আইসোলেশন ব্যাপকভাবে ব্যবহৃত হয় যখন ভিন্ন ব্যবহারকারীদের জন্য একক ফাইল স্টোরেজে ব্যক্তিগত অ্যাক্সেস প্রদান করা প্রয়োজন হয়।
পূর্বের উইন্ডোজ সংস্করণের মতো, উইন্ডোজ সার্ভার ২০১৬/২০১২ R2-এ FTP সার্ভিস (এটিকে sFTP এবং TFTP-এর সাথে গুলিয়ে নেওয়া উচিত নয়) IIS সার্ভিসের উপর ভিত্তি করে তৈরি এবং গভীরভাবে একত্রিত এবং এর একটি একক প্রশাসনিক ব্যবস্থাপনা ইন্টারফেস রয়েছে।
এই आर्टিকেলে আমরা উইন্ডোজ সার্ভার ২০১৬/২০১২ R2-এ IIS-ভিত্তিক FTP সার্ভার ইনস্টল এবং FTP ইউজার আইসোলেশন কনফিগার করার পদ্ধতি দেখাব (এই ম্যানুয়াল উইন্ডোজ ১০ এবং ৮.১-ও প্রযোজ্য)।
উইন্ডোজ সার্ভার ২০১৬/২০১২ R2-এ FTP সার্ভার রোল কীভাবে ইনস্টল করবেন?
সার্ভার ম্যানেজার কনসোল ব্যবহার করে Web Server (IIS) -> FTP Server বিভাগে FTP Service এবং FTP Extensibility অপশনগুলো চেক করে FTP সার্ভিস ইনস্টল করা যাবে।

এছাড়া একটি PowerShell কমান্ড দিয়ে FTP সার্ভার রোল ইনস্টল করা যাবে:
Install-WindowsFeature Web-FTP-Server

FTP সার্ভার ম্যানেজমেন্ট কনসোল ইনস্টল করতে নিচের কমান্ডটি চালান:
Install-WindowsFeature -Name "Web-Mgmt-Console"
FTP সাইট তৈরি করা এবং FTP ইউজার অনুমতি পরিচালনা
সার্ভার ম্যানেজার শুরু করুন এবং IIS ম্যানেজমেন্ট কনসোল (Internet Information Service Manager) খুলুন।

নতুন একটি FTP সাইট তৈরি করুন (Sites -> Add FTP Site).

- FTP সাইটের নাম: MyTestSite
- FTP সাইটের রুট ডিরেক্টরি: C:\inetpub\ftproot

নেটওয়ার্ক üzerে প্রেরিত FTP ডেটা রক্ষা করার জন্য FTP-এর জন্য SSL কনফিগার করা সম্ভব (এই ক্ষেত্রে FTP ব্যবহারকারীদের দ্বারা সেশন সময় প্রেরিত সমস্ত ডেটা এবং পাসওয়ার্ড/অ্যাকাউন্ট এনক্রিপ্টেড হবে), কিন্তু আমাদের демонস্ট্রেশনে এটি প্রয়োজন নেই। অন্যান্য সব সেটিং ডিফল্ট রেখে দিন।
আপনি WebAdministration PowerShell মডিউল ব্যবহার করে আপনার FTP সাইট পরিচালনা করতে পারেন। উদাহরণস্বরূপ, নতুন একটি FTP সাইট তৈরি করতে নিচের কমান্ডগুলো চালান:
Import-Module WebAdministration
# FTP সাইটের নাম সেট করুন
$FTPSiteName = 'CORP_FTP'
# FTP ফোল্ডার
$FTPRoot = 'D:\www\FTPRoot'
# FTP পোর্ট
$FTPPort = 21
New-WebFtpSite -Name $FTPSiteName -PhysicalPath $FTPRoot -Port $FTPPort
নতুন FTP সাইটটি সিলেক্ট করুন এবং FTP Authentication বিভাগে Anonymous Authentication নিষ্ক্রিয় করুন। Basic Authentication অবশ্যই সক্রিয় থাকতে হবে।

উইন্ডোজ সার্ভার ২০১৬/২০১২ R2-এ FTP সার্ভিস দুটি অ্যাকাউন্ট টাইপ ব্যবহার করতে পারে: ডোমেন বা লোকাল। অ্যাকাউন্ট টাইপের উপর নির্ভর করে FTP ডিরেক্টরি কাঠামো এবং ইউজার আইসোলেশন সেটিং-এ কিছু পার্থক্য থাকে। সহজ ব্যাখ্যার জন্য আমরা লোকাল উইন্ডোজ অ্যাকাউন্ট ব্যবহার করব।
কিছু FTP ব্যবহারকারী তৈরি করুন, ধরা যাক এগুলি হল ftp_user1, ftp_user2 এবং ftp_user3। এছাড়া ftp_users নামে একটি গ্রুপ তৈরি করুন যাতে এই ব্যবহারকারীদের অন্তর্ভুক্ত থাকে। লোকাল ব্যবহারকারী Computer Management কনসোলের Local Users and Groups বিভাগে তৈরি করা যাবে।

কমান্ড প্রম্পট বা PowerShell ব্যবহার করে লোকাল ব্যবহারকারী এবং গ্রুপ তৈরি করা যাবে। লোকাল গ্রুপ তৈরি করতে:
net localgroup ftp_users /add

নতুন লোকাল ব্যবহারকারী তৈরি করতে:
net user ftp_user1 /add *

ব্যবহারকারীকে গ্রুপে যোগ করতে:
net localgroup ftp_users ftp_user1 /add

অন্য দুটি ব্যবহারকারী একইভাবে তৈরি করুন।
C:\inetpub\ftproot ডিরেক্টরিতে ftp_users গ্রুপের জন্য Read/Write অনুমতি দিন।

C:\inetpub\ftproot ফোল্ডারে LocalUser নামে একটি ডিরেক্টরি তৈরি করুন (নামটি একই হতে হবে, এটি অত্যন্ত গুরুত্বপূর্ণ!!!)। তারপর C:\inetpub\ftproot\LocalUser ফোল্ডারে ftp_user1, ftp_user2, ftp_user3 নামে তিনটি ডিরেক্টরি তৈরি করুন।
নোট. অ্যাকাউন্ট টাইপের উপর নির্ভর করে আপনাকে নিচের ডিরেক্টরি কাঠামোগুলো তৈরি করতে হবে (%FtpRoot%\ মানে FTP সাইটের রুট; আমাদের ক্ষেত্রে এটি C:\inetpub\ftproot\):
| অ্যাকাউন্ট টাইপ | হোম ডিরেক্টরি নামকরণ সিনট্যাক্স |
| অ্যানোনিমাস ব্যবহারকারী | %FtpRoot%\LocalUser\Public |
| লোকাল উইন্ডোজ অ্যাকাউন্ট | %FtpRoot%\LocalUser\%UserName% |
| ডোমেন উইন্ডোজ অ্যাকাউন্ট | %FtpRoot%\%UserDomain%\%UserName% |
| বিশেষ IIS Manager বা ASP.NET অ্যাকাউন্ট | %FtpRoot%\LocalUser\%UserName% |

IIS কনসোলে ফিরে যান এবং সাইটের FTP Authorization Rules বিভাগে একটি নতুন নিয়ম (Add AllowRules) তৈরি করুন। নির্দিষ্ট করুন যে ftp_users গ্রুপের পড়া এবং লেখার অনুমতি থাকবে।

উইন্ডোজ সার্ভার ২০১৬/২০১২ R2-এ FTP ইউজার আইসোলেশন কীভাবে কনফিগার করবেন?
FTP ইউজার আইসোলেশন কনফিগার করার দিকে এগিএ। FTP ব্যবহারকারীদের আইসোলেশন FTP সাইট লেভেলে কনফিগার করা হয়, পুরো সার্ভারে নয়। FTP ইউজার আইসোলেশন প্রতিটি ব্যবহারকারীর জন্য ftp-হোম ফোল্ডার সংগঠিত করার অনুমতি দেয়।
FTP সাইটের সেটিং-এ FTP User Isolation খুলুন।
এই বিভাগে বেশ কিছু সেটিং রয়েছে। প্রথম দুটি ইউজার আইসোলেশন প্রস্তাব করে না:
- FTP রুট ডিরেক্টরি (একজন ব্যবহারকারীর FTP সেশন FTP সাইটের রুট ডিরেক্টরিতে শুরু হয়);
- ব্যবহারকারীর নামের ডিরেক্টরি (ব্যবহারকারী ফিজিক্যাল/ভার্চুয়াল ডিরেক্টরির সাথে শুরু হয় যার নাম ব্যবহারকারীর নামের সাথে মিলে। ডিরেক্টরি না থাকলে সেশন সাইটের রুট FTP ডিরেক্টরিতে শুরু হয়)।
পরবর্তী তিনটি অপশন ইউজার আইসোলেশনের ভিন্ন মোড:
- ব্যবহারকারীর নামের ডিরেক্টরি (গ্লোবাল ভার্চুয়াল ডিরেক্টরি নিষ্ক্রিয়) প্রস্তাব করে যে একজন ব্যবহারকারীর FTP সেশন একটি ফিজিক্যাল/ভার্চুয়াল ডিরেক্টরিতে আইসোলেটেড থাকে যার নাম FTP ব্যবহারকারীর সাথে মিলে। ব্যবহারকারীরা শুধু তাদের নিজস্ব ডিরেক্টরি দেখে (এটি তাদের রুট ftp-ডিরেক্টরি) এবং এর বাইরে যেতে পারে না (FTP ট্রির উপরের ডিরেক্টরিতে)। যেকোনো গ্লোবাল ভার্চুয়াল ডিরেক্টরি উপেক্ষা করা হয়;
- ব্যবহারকারীর নামের ফিজিক্যাল ডিরেক্টরি (গ্লোবাল ভার্চুয়াল ডিরেক্টরি সক্রিয়) প্রস্তাব করে যে একজন ব্যবহারকারীর FTP সেশন একটি ফিজিক্যাল ডিরেক্টরিতে আইসোলেটেড থাকে যার নাম FTP ব্যবহারকারীর অ্যাকাউন্টের নামের সাথে মিলে। একজন ব্যবহারকারী তার ডিরেক্টরির উপরে যেতে পারে না। তবে, তৈরি করা সমস্ত গ্লোবাল ভার্চুয়াল ডিরেক্টরি ব্যবহারকারীর জন্য উপলব্ধ;
- Active Directory-এ কনফিগার করা FTP হোম ডিরেক্টরি – একজন FTP ব্যবহারকারী তার Active Directory অ্যাকাউন্টের সেটিং-এ নির্দিষ্ট হোম ডিরেক্টরির মধ্যে আইসোলেটেড থাকে (FTPRoot এবং FTPDir প্রপার্টি)।
গুরুত্বপূর্ণ। যদি গ্লোবাল ভার্চুয়াল ডিরেক্টরি সক্রিয় থাকে, তবে সমস্ত ব্যবহারকারী FTP সাইটের রুটে সেট করা সমস্ত ভার্চুয়াল ডিরেক্টরি অ্যাক্সেস করতে পারবে (যদি তাদের উপযুক্ত NTFS অনুমতি থাকে)।

প্রয়োজনীয় আইসোলেশন মোড সিলেক্ট করুন (আমি FTP ব্যবহারকারীদের আইসোলেট করতে দ্বিতীয় অপশন ব্যবহার করছি)।
FTP সাইট সেটিং-এ যেকোনো পরিবর্তনের পর Microsoft FTP সার্ভিস (FTPSVC) পুনরায় শুরু করা উপযুক্ত।
FTP সার্ভার অ্যাক্সেসের জন্য উইন্ডোজ ফায়ারওয়াল নিয়ম কনফিগার করা
FTP সার্ভার রোল ইনস্টল করার সময়, ব্যবহারকারীদের FTP অ্যাক্সেসের জন্য প্রয়োজনীয় সমস্ত নিয়ম উইন্ডোজ ফায়ারওয়াল সেটিং-এ স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যায়।
প্যাসিভ FTP মোডে সঠিকভাবে কাজ করার জন্য, ব্যবহারকারীদের RPC পোর্ট রেঞ্জ (1025-65535)-এ কানেক্ট করতে হয়। এক্সটার্নাল ফায়ারওয়ালে এই সব পোর্ট খোলার বদলে, FTP ডেটা ট্রান্সমিশনের জন্য ব্যবহৃত ডায়নামিক TCP পোর্টের রেঞ্জ সীমিত করা যাবে।
- FTP সাইট সেটিং-এ FTP Firewall Support বিভাগ খুলুন এবং Data Channel Port Range ফিল্ডে FTP কানেকশনের জন্য যে পোর্ট রেঞ্জটি ব্যবহার করতে চান তা নির্দিষ্ট করুন। উদাহরণস্বরূপ – 50000-50100;

- পরিবর্তনগুলো সংরক্ষণ করুন এবং IIS পুনরায় শুরু করুন (
iisreset); - উইন্ডোজ কন্ট্রোল প্যানেল খুলুন এবং Control Panel\System and Security\Windows Firewall\Allowed apps-এ যান;
- সনিশ্চিত করুন যে ফায়ারওয়ালের মাধ্যমে অ্যাক্সেসের অনুমতিপ্রাপ্ত অ্যাপ্লিকেশন들의 তালিকায় FTP Server রোলের অনুমতিগুলো রয়েছে।

তারপর উইন্ডোজ ফায়ারওয়াল উইথ অ্যাডভান্সড সিকিউরিটির সেটিং-এ নিচের নিয়মগুলো সক্রিয় আছে কিনা যাচাই করুন:
- FTP Server (FTP Traffic-In) – TCP প্রোটোকল, পোর্ট ২১;
- FTP Server Passive (FTP Passive Traffic-In) – লোকাল পোর্ট ঠিকানা 1024-65535 (আমাদের ক্ষেত্রে 50000-50100);
- FTP Server Secure (FTP SSL Traffic-In) – পোর্ট ৯৯০ (FTP with SSL ব্যবহার করার সময়);
- FTP Server (FTP Traffic-Out) – পোর্ট ২০;
- FTP Server Secure (FTP SSL Traffic-Out) – পোর্ট ৯৮৯ (FTP with SSL ব্যবহার করার সময়)।

অনুসারে, এক্সটার্নাল FTP ব্যবহারকারীরা আপনার সাইটে কানেক্ট করতে পারার জন্য এই পোর্টগুলো আপনার রাউটার (গেটওয়ে, ফায়ারওয়াল)-এ খোলা থাকতে হবে।
উইন্ডোজ থেকে FTP সার্ভার কানেকশন টেস্ট করা
FTP সার্ভারের পোর্টগুলোরavailability যাচাই করতে Test-NetConnection cmdlet ব্যবহার করা যাবে:
Test-NetConnection -ComputerName yourftpservername -Port 21
অথবা ftp কমান্ড ব্যবহার করে:
ftp yourftpservername
কোনো FTP ক্লায়েন্ট বা সরাসরি File Explorer থেকে আপনার FTP সাইটে কানেক্ট করার চেষ্টা করুন (অ্যাড্রেস বারে ftp://yourservername/ লিখুন)।
ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন।

এখন আপনার হোম ডিরেক্টরিতে (যা ব্যবহারকারীর জন্য FTP সাইটের রুট) ব্যবহারকারীর ফাইলগুলোর অ্যাক্সেস পেয়েছেন। আমরা দেখতে পাচ্ছি যে ব্যবহারকারীর সেশন আইসোলেটেড এবং ব্যবহারকারী FTP সার্ভারে শুধু তার নিজস্ব ফাইলগুলো দেখতে পাচ্ছে।

টিপ। যদি আপনি অ্যানোনিমাস অ্যাক্সেস ব্যবহার করতে চান (All anonymous Users), তবে যেকোনো ব্যবহারকারী anonymous বা guest ইউজারনেম এবং ইমেইল অ্যাড্রেস পাসওয়ার্ড হিসেবে ব্যবহার করে আপনার FTP সার্ভারে কানেক্ট করতে পারবে। যদি আপনি FTP সাইটে অ্যানোনিমাসভাবে কানেক্ট করেন, তবে সেশন LocalUser\Public ডিরেক্টরিতে সীমাবদ্ধ থাকবে (জाहিরতায় Public ডিরেক্টরি আগে থেকে তৈরি থাকতে হবে)।
FTP লগ ব্যবহার করে FTP সার্ভারে ব্যবহারকারীর অ্যাক্সেস সম্পর্কে তথ্য দেখা যাবে। লগ ফাইলগুলো ডিফল্টভাবে c:\inetpub\logs\logfiles ফোল্ডারে u_exYYMMDD.log ফাইলগুলোর মধ্যে সংরক্ষিত থাকে।
আপনার FTP সার্ভারে সক্রিয় ব্যবহারকারীর কানেকশন দেখতে, IIS পারফরম্যান্স কাউন্টার-এর মান PowerShell-এর মাধ্যমে বা IIS কনসোলে "Current FTP Sessions" বিভাগ ব্যবহার করে দেখা যাবে। এই কনসোলে FTP ব্যবহারকারীর নাম এবং IP ঠিকানা দেখতে এবং প্রয়োজনে ftp-session ডিসকানেক্ট করতে পারবেন।

সুতরাং, আমরা উইন্ডোজ সার্ভার ২০১৬/২০১২ R2-তে ইউজার আইসোলেশন ভিত্তিক FTP সাইট কনফিগার করার পদ্ধতি দেখেছি। আইসোলেশন মোডে ব্যবহারকারীরা তাদের লোকাল বা ডোমেন ক্রেডেনশিয়াল ব্যবহার করে FTP-এ অথেনটিকেট হয়ে তাদের ব্যবহারকারীর নামের সাথে মিলের রুট ডিরেক্টরি অ্যাক্সেস করে।