১. পরিচিতি
উবুন্টুতে একটি FTP সার্ভার সেট আপ করা ডেভেলপার এবং প্রশাসকদের জন্য যারা ফাইল পাঠানো এবং গ্রহণ করার জন্য দক্ষতার সাথে প্রয়োজনীয়, একটি অত্যন্ত ব্যবহারিক পদ্ধতি। বিশেষ করে হোম সার্ভার তৈরি করার লক্ষ্যে বা একটি সাধারণ অভ্যন্তরীণ ফাইল-শেয়ারিং পরিবেশ গড়ে তোলার সময়, FTP (File Transfer Protocol) একটি সরল এবং সহজে বাস্তবায়নযোগ্য বিকল্প হিসেবে বিশেষভাবে উল্লেখযোগ্য।
FTP সার্ভার কী?
একটি FTP সার্ভার হলো ইন্টারনেট বা লোকাল নেটওয়ার্কের মাধ্যমে ফাইল প্রেরণ এবং গ্রহণের জন্য ডিজাইন করা একটি বিশেষায়িত সার্ভার সফটওয়্যার। ব্যবহারকারীরা FTP ক্লায়েন্ট সফটওয়্যার ব্যবহার করে সার্ভারের সাথে সংযোগ স্থাপন করে ফাইল আপলোড এবং ডাউনলোড করতে পারেন।
কিছু ক্ষেত্রে SFTP এবং SCP-এর মতো নিরাপদ বিকল্পগুলি জনপ্রিয়তা অর্জন করেছে যদিও, FTP তার সরলতা এবং হালকা প্রকৃতির কারণে অনেক অ্যাপ্লিকেশনের জন্য পছন্দের বিকল্প হিসেবে রয়ে গেছে। এটি বিশেষ করে সীমিত নেটওয়ার্কের মধ্যে বা মৌলিক কাজের জন্য একটি অত্যন্ত ব্যবহারিক প্রোটোকল হিসেবে চলমান।
উবুন্টুতে FTP সার্ভারের ভূমিকা
উবুন্টু হলো অনেক ব্যবহারকারীর প্রিয় একটি লিনাক্স ডিস্ট্রিবিউশন এবং সার্ভার উদ্দেশ্যে ব্যাপকভাবে ব্যবহৃত হয়। উবুন্টু পরিবেশে একটি FTP সার্ভার তৈরি করে, একাধিক ডিভাইস এবং ব্যবহারকারীর মধ্যে ফাইল শেয়ারিং সহজ হয়ে ওঠে।
এটি বিশেষ করে নিম্নলিখিত ক্ষেত্রে কার্যকর:
- ওয়েব সার্ভারে ফাইল স্থানান্তর
- রাস্পবেরি পাই-এর মতো IoT ডিভাইসের সাথে একীকরণ
- অভ্যন্তরীণ ডকুমেন্ট শেয়ারিং
এভাবে, উবুন্টু এবং FTP সার্ভারের সমন্বয় নমনীয় এবং দক্ষ ফাইল ব্যবস্থাপনা সক্ষম করে।
এই নিবন্ধের উদ্দেশ্য এবং লক্ষ্য পাঠক
এই নিবন্ধটি উবুন্টুতে FTP সার্ভার সেট আপ করার পদ্ধতি ব্যাখ্যা করবে, নতুনদের জন্য সহজবোধ্য ধাপে ধাপে নির্দেশনা প্রদান করে। এটি বিশেষভাবে নিম্নলিখিত পাঠকদের লক্ষ্য করে:
- যারা মৌলিক উবুন্টু অপারেশনের সাথে পরিচিত কিন্তু FTP-এ নতুন।
- যারা লোকাল বা সাধারণ ব্যবসায়িক ব্যবহারের জন্য FTP সার্ভার তৈরি করতে চান।
- যারা নিরাপত্তা এবং জাপানি ফাইলের নামে গার্বলডের মতো গুরুত্বপূর্ণ বিবেচনা সম্পর্কে জানতে চান।
এখানে উল্লিখিত ধাপগুলি ক্রমানুসারে অনুসরণ করে, আপনি একটি নিরাপদ এবং ব্যবহারিক FTP সার্ভার পরিবেশ তৈরি করতে পারবেন। পরবর্তী বিভাগে, আমরা “vsftpd” নামক একটি বিশেষভাবে জনপ্রিয় FTP সার্ভার ইনস্টল করার পদ্ধতি ব্যাখ্যা করে শুরু করব।
২. vsftpd ইনস্টল করা
উবুন্টুতে FTP সার্ভার তৈরির সময়, সবচেয়ে সাধারণভাবে ব্যবহৃত সফটওয়্যার হলো vsftpd (Very Secure FTP Daemon)। তার নামের মতোই, এটি “খুব নিরাপদ” ডিজাইন দর্শনের সাথে একটি FTP সার্ভার। এটি হালকা এবং স্থিতিশীল, যা কর্পোরেট এবং শিক্ষামূলক পরিবেশে ব্যাপকভাবে গৃহীত।
এই বিভাগে উবুন্টুতে vsftpd ইনস্টল করার ধাপ এবং সার্ভিস স্টার্টআপ এবং অটোমেটিক স্টার্টআপ সেট আপ করার পদ্ধতি ব্যাখ্যা করা হবে।
vsftpd ইনস্টল করা
প্রথমে, উবুন্টুর প্যাকেজ ম্যানেজমেন্ট সিস্টেম (APT) ব্যবহার করে vsftpd ইনস্টল করুন। নিম্নলিখিত ধাপগুলি ক্রমানুসারে চালান:
sudo apt update
sudo apt install vsftpd
sudo apt update: প্যাকেজ তথ্যকে সর্বশেষ সংস্করণে আপডেট করে।sudo apt install vsftpd: vsftpd প্যাকেজ ইনস্টল করে।
ইনস্টলেশন সম্পূর্ণ হলে, vsftpd স্বয়ংক্রিয়ভাবে শুরু হবে।
সার্ভিস স্ট্যাটাস চেক করা
vsftpd সঠিকভাবে ইনস্টল হয়েছে এবং চলছে কিনা তা যাচাই করার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
sudo systemctl status vsftpd
যদি এই কমান্ডটি “active (running)” প্রদর্শন করে, তাহলে FTP সার্ভার স্বাভাবিকভাবে চলছে।
অটোমেটিক স্টার্টআপ চেক এবং সক্ষম করা
vsftpd সাধারণত ইনস্টলেশনের পরপরই অটোমেটিক স্টার্টআপের জন্য কনফিগার করা থাকে, কিন্তু দ্বিগুণ চেক করা ভালো।
sudo systemctl enable vsftpd
এই কমান্ডটি চালানো নিশ্চিত করে যে vsftpd পরবর্তী সিস্টেম বুটে স্বয়ংক্রিয়ভাবে শুরু হবে।
ফায়ারওয়াল (UFW) কনফিগার করা ভুলবেন না
যদি আপনার উবুন্টু সিস্টেমে UFW (Uncomplicated Firewall) সক্ষম থাকে, তাহলে FTP পোর্টগুলি খুলতে হবে।
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
এটি স্ট্যান্ডার্ড FTP পোর্টগুলির বাইরের অ্যাক্সেস অনুমোদন করে: পোর্ট ২০ (ডেটা) এবং পোর্ট ২১ (কমান্ড)।
সেট আপের পর, পরিবর্তন প্রয়োগ করার জন্য UFW রিলোড করুন।
sudo ufw reload
৩. মৌলিক কনফিগারেশন
একবার vsftpd ইনস্টল হয়ে গেলে, পরবর্তী ধাপ হল আপনার প্রয়োজন অনুযায়ী FTP সার্ভারের আচরণ কাস্টমাইজ করা কনফিগারেশন ফাইল সম্পাদনা করে। যদিও vsftpd কনফিগারেশন ফাইলটি অত্যন্ত বিশদ নিয়ন্ত্রণের সুযোগ দেয়, তবে প্রাথমিক অবস্থায় এতে অনেক সীমাবদ্ধতা থাকে, তাই প্রয়োজনীয় ফিচারগুলো স্পষ্টভাবে সক্রিয় করতে হবে।
এই অংশে সাধারণ মৌলিক কনফিগারেশন আইটেমগুলো ব্যাখ্যা করা হয়েছে।
কনফিগারেশন ফাইলের অবস্থান
vsftpd-এর প্রধান কনফিগারেশন ফাইলটি নিম্নলিখিত স্থানে অবস্থিত:
/etc/vsftpd.conf
কনফিগারেশন পরিবর্তন করতে, ফাইলটি নিম্নরূপ সম্পাদনা করুন:
sudo nano /etc/vsftpd.conf
পরিবর্তন করার পরে, আপনাকে vsftpd সার্ভিসটি রিস্টার্ট করতে হবে।
sudo systemctl restart vsftpd
রাইট অ্যাক্সেস (আপলোড ইত্যাদি) সক্রিয় করা
ডিফল্ট vsftpd কনফিগারেশনে, ফাইল আপলোড এবং FTP সার্ভারে পরিবর্তন করা অনুমোদিত নয়। রাইট অ্যাক্সেস দিতে নিম্নলিখিত লাইনটি সক্রিয় করুন:
write_enable=YES
এই সেটিংটি ব্যবহারকারীদের তাদের হোম ডিরেক্টরির মধ্যে ফাইল আপলোড, মুছে ফেলা এবং পরিবর্তন করার অনুমতি দেয়।
লোকাল ইউজার লগইন অনুমোদন
Ubuntu ইউজার অ্যাকাউন্ট ব্যবহার করে FTP লগইন করতে হলে নিম্নলিখিত সেটিংটি প্রয়োজন:
local_enable=YES
এই সেটিংয়ের মাধ্যমে /etc/passwd-এ রেজিস্টার্ড লোকাল ইউজার (সিস্টেম ইউজার) গুলো FTP মাধ্যমে লগইন করতে পারবে।
ডিরেক্টরি লিস্টিং রিট্রিভাল সক্রিয় করা
যদি FTP ক্লায়েন্ট ফাইল ও ডিরেক্টরির তালিকা পেতে না পারে, তবে নিম্নলিখিত সেটিংগুলো পরীক্ষা করুন:
listen=YES
listen_ipv6=NO
বিশেষ করে এমন পরিবেশে যেখানে IPv6 নিষ্ক্রিয় করা আছে, listen_ipv6=YES থাকলে সংযোগে সমস্যা হতে পারে।
লগইন ব্যানার সেট করা (ঐচ্ছিক)
আপনি FTP সার্ভারে সংযোগের সময় প্রদর্শিত একটি বার্তা (ব্যানার) সেট করতে পারেন।
ftpd_banner=Welcome to your custom Ubuntu FTP server!
ব্যবসায়িক প্রসঙ্গে এটি ব্যবহারকারীদের যোগাযোগের তথ্য বা গুরুত্বপূর্ণ ন জানাতে সহায়ক হতে পারে।
ASCII মোড ট্রান্সফার অনুমোদন (প্রয়োজন হলে)
যদি আপনাকে নির্দিষ্ট টেক্সট ফাইল (যেমন Windows লাইন ব্রেক সম্বলিত স্ক্রিপ্ট) সঠিকভাবে ট্রান্সফার করতে হয়, তবে নিম্নলিখিতটি কনফিগার করুন:
ascii_upload_enable=YES
ascii_download_enable=YES
সাধারণত বাইনারি ট্রান্সফারই যথেষ্ট, তবে আপনার পরিবেশের উপর নির্ভর করে এটি সক্রিয় করার কথা বিবেচনা করুন।
এভাবে, vsftpd-এর মৌলিক কনফিগারেশনটি স্পষ্টভাবে “কি অনুমোদিত” তা নির্ধারণের মাধ্যমে গঠিত হয়। কনফিগারেশন ফাইল সম্পাদনের পরে, পরিবর্তনগুলি প্রয়োগ করতে অবশ্যই vsftpd সার্ভিসটি রিস্টার্ট করুন।
পরবর্তী অংশে আরও উন্নত সিকিউরিটি সেটিংস নিয়ে আলোচনা করা হবে। পাবলিক নেটওয়ার্কে FTP সার্ভার চালানোর সময় সিকিউরিটি ব্যবস্থা অপরিহার্য।
৪. সিকিউরিটি বৃদ্ধি
FTP একটি সুবিধাজনক প্রোটোকল হলেও, ডেটা এনক্রিপশন ছাড়া প্রেরণ করার বৈশিষ্ট্যটি সিকিউরিটি উদ্বেগ তৈরি করে। বিশেষ করে ইন্টারনেটের মাধ্যমে চালানোর সময় শক্তিশালী সিকিউরিটি সেটিংস প্রয়োজন।
এই অংশে vsftpd দিয়ে বাস্তবায়নযোগ্য সাধারণ সিকিউরিটি মেজারগুলো পরিচয় করিয়ে দেওয়া হয়েছে।
chroot দিয়ে ইউজার অ্যাক্সেস রেঞ্জ সীমাবদ্ধ করা
FTP ইউজারদের তাদের নিজস্ব ডিরেক্টরির বাইরে অন্য ডিরেক্টরিতে প্রবেশেরতি দেওয়া অত্যন্ত ঝুঁকিপূর্ণ। তাই chroot কনফিগার করা জরুরি, যা প্রতিটি ইউজারকে তার হোম ডিরেক্টরিতে সীমাবদ্ধ রাখে।
নিম্নলিখিত দুটি সেটিং সক্রিয় করুন:
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_local_user=YESলোকাল ইউজারদের তাদের হোম ডিরেক্টরির উপরে নেভিগেট করা থেকে বাধা দেয়।allow_writeable_chroot=YESহল একটি সেটিং যা vsftpd-এর সিকিউরিটি সীমাবদ্ধতা শিথিল করে এবং হোম ডিরেক্টরিতে রাইট পারমিশন থাকলে প্রয়োজনীয়।
* এটি না করলে আপনি “500 OOPS: vsftpd: refusing to run with writable root inside chroot” ত্রুটির সম্মুখীন হবেন।
অ্যাক্সেসযোগ্য ইউজার সীমাবদ্ধ করা
সব লোকাল ইউজারকে FTP-তে লগইন করার অনুমতি দিলে অপ্রত্যাশিত তথ্য লিকের ঝুঁকি থাকে। তাই হোয়াইটলিস্ট পদ্ধতি ব্যবহার করে FTP-তে অ্যাক্সেসযোগ্য ইউজারগুলো নিয়ন্ত্রণ করুন।
প্রথমে vsftpd.conf-এ নিম্নলিখিত সেটিংগুলো যোগ করুন:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
এরপর, /etc/vsftpd.userlist ফাইলে আপনি যেসব ইউজারকে লগইন করতে দিতে চান, তাদের নাম এক লাইনে একটি করে তালিকাভুক্ত করুন।
sudo nano /etc/vsftpd.userlist
(উদাহরণ)
ftpuser1
ftpuser2
এই কনফিগারেশনের সাথে, শুধুমাত্র স্পষ্টভাবে তালিকাভুক্ত ব্যবহারকারীরাই লগইন করতে পারবেন।
FTPS (SSL/TLS) দিয়ে এনক্রিপ্টেড যোগাযোগ বাস্তবায়ন
স্ট্যান্ডার্ড FTP ডেটা প্লেইন টেক্সটে প্রেরণ করে, যা ID, পাসওয়ার্ড এবং ডেটায় শোনার ঝুঁকি তৈরি করে। এটি এড়াতে, যোগাযোগ এনক্রিপ্ট করার জন্য FTPS (FTP over SSL/TLS) ব্যবহার করুন।
প্রথমে, একটি SSL সার্টিফিকেট তৈরি করুন (বা বিদ্যমান একটি ব্যবহার করুন)।
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
পরবর্তীতে, vsftpd.conf-এ নিম্নলিখিত সেটিংস যোগ করুন:
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
এখন, FTP ক্লায়েন্ট পক্ষে “FTPS (Explicit SSL)” ব্যবহার করে সংযোগ করতে পারবেন।
অপ্রয়োজনীয় ফিচার বন্ধ করা
নিরাপত্তা বাড়ানোর জন্য, ব্যবহার না করা ফিচারগুলো সক্রিয়ভাবে বন্ধ করা জরুরি।
উদাহরণ:
anonymous_enable=NO
এটি অ্যানোনিমাস ব্যবহারকারী লগইন বন্ধ করে (ডিফল্টভাবে বন্ধ, কিন্তু স্পষ্টভাবে সেট করলে অতিরিক্ত নিরাপত্তা প্রদান করে)।
এই সেটিংসের সাথে, Ubuntu-এ vsftpd FTP সার্ভারে মৌলিক নিরাপত্তা ব্যবস্থা প্রয়োগ করা হবে।
বিশেষ করে ইন্টারনেটের উপর ব্যবহার করলে, FTPS বাস্তবায়ন অপরিহার্য।
পরবর্তী অধ্যায়ে জাপানি ফাইল নামের গার্বল হ্যান্ডেল করার বিস্তারিত ব্যাখ্যা করা হবে। এটি FTP অপারেশনে প্রায়শই উপেক্ষিত পয়েন্ট কিন্তু সমস্যা প্রতিরোধে গুরুত্বপূর্ণ।
৫. জাপানি ফাইল নাম হ্যান্ডেলিং
FTP ব্যবহার করে ফাইল পাঠানো এবং গ্রহণ করার সময়, জাপানি ফাইল নাম গার্বল হওয়ার সমস্যা দেখা দিতে পারে। এটি বিশেষ করে Windows এবং Ubuntu-এর মধ্যে FTP-এর মাধ্যমে ফাইল বিনিময়ে সাধারণ, যেখানে এনকোডিং মিসম্যাচ “???” বা অবোধ্য স্ট্রিং তৈরি করতে পারে।
এই বিভাগে vsftpd-এ জাপানি ফাইল নাম গার্বল প্রতিরোধের ব্যবস্থা পরিচয় করা হয়েছে।
গার্বলড ক্যারেক্টারের প্রধান কারণসমূহ
গার্বলড জাপানি ফাইল নাম প্রধানত নিম্নলিখিত তিনটি ফ্যাক্টরের কারণে ঘটে:
- Ubuntu-এর লোকেল সেটিং UTF-8 নয়।
- FTP ক্লায়েন্টের এনকোডিং সেটিং ভুল।
- vsftpd UTF-8 সাপোর্টে অপারেট করছে না।
এগুলো ক্রমানুসারে চেক এবং অ্যাডজাস্ট করা জরুরি।
Ubuntu-এর লোকেল চেক এবং সেটিং
প্রথমে, Ubuntu পক্ষে ক্যারেক্টার এনকোডিং UTF-8 কিনা নিশ্চিত করুন। নিম্নলিখিত কমান্ড ব্যবহার করে বর্তমান লোকেল প্রদর্শন করুন:
locale
উদাহরণ আউটপুট:
LANG=ja_JP.UTF-8
যদি LANG বা LC_ALL UTF-8-এ সেট না হয়, তাহলে নিম্নরূপ পরিবর্তন এবং পুনরায় কনফিগার করুন:
sudo update-locale LANG=ja_JP.UTF-8
source /etc/default/locale
প্রয়োজনে লোকেল জেনারেট করুন:
sudo locale-gen ja_JP.UTF-8
এটি সার্ভারের মধ্যে ফাইল নাম প্রসেসিংকে UTF-8-এ ইউনিফাই করবে।
vsftpd-এর UTF-8 সেটিং চেক
vsftpd ডিফল্টভাবে UTF-8 সাপোর্ট করে, কিন্তু নিশ্চিত করার জন্য নিম্নলিখিত সেটিং চেক করুন:
utf8_filesystem=YES
যদি এই সেটিং আইটেম না থাকে, তাহলে সিস্টেম UTF-8-এ অপারেট করলে কোনো বিশেষ সমস্যা হবে না। তবে, কিছু ভার্সনে vsftpd-এ এটি সাপোর্ট নাও করতে পারে।
FTP ক্লায়েন্ট সেটিংস (FileZilla উদাহরণ)
FTP ক্লায়েন্টের সেটিংসও অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ, FileZilla ব্যবহার করে সংযোগ করার সময়, নিম্নরূপ কনফিগার করুন:
- সাইট ম্যানেজার খুলুন।
- আপনার সংযোগের সেটিংস খুলুন।
- “Charset” ট্যাব নির্বাচন করুন।
- “Use custom charset” নির্বাচন করুন এবং
UTF-8এন্টার করুন।
এই সেটিং ক্লায়েন্টকে সার্ভারের ফাইল নামগুলোকে UTF-8 হিসেবে সঠিকভাবে ব্যাখ্যা করতে দেয়, গার্বল ক্যারেক্টার প্রতিরোধ করে।
অন্যান্য OS থেকে আপলোডের নোট
Windows ইত্যাদিতে তৈরি ফাইল আপলোড করার সময়, যদি সিস্টেম Shift_JIS-এর মতো ভিন্ন ক্যারেক্টার এনকোডিং ব্যবহার করে, তাহলে আপলোডের সময় ফাইল নাম ক্ষতিগ্রস্ত হতে পারে।
এমন ক্ষেত্রে, আপলোডের আগে ফাইল নাম UTF-8-এ কনভার্ট করা নিরাপদ। কমান্ড লাইনে convmv-এর মতো টুলস ব্যবহার করতে পারেন।
সারাংশ
FTP দিয়ে জাপানি ফাইলের নামগুলি হ্যান্ডেল করার সময়, মূল বিষয় হলো সার্ভার এবং ক্লায়েন্ট উভয়ের ক্যারেক্টার এনকোডিং মিলতে হবে। Ubuntu-তে, UTF-8 কে স্ট্যান্ডার্ড হিসেবে সেট করে এবং FTP ক্লায়েন্ট সাইডে স্পষ্টভাবে UTF-8 নির্দিষ্ট করে বেশিরভাগ ক্যারেক্টার গার্বলিং সমস্যা প্রতিরোধ করা যায়।
পরবর্তী অধ্যায়ে প্যাসিভ মোড এবং ফায়ারওয়াল সেটিংস ব্যাখ্যা করা হবে। এগুলি গুরুত্বপূর্ণ কনফিগারেশন যা সংযোগ সমস্যা এড়াতে সাহায্য করে, বিশেষ করে রাউটার বা ক্লাউড পরিবেশে FTP ব্যবহার করার সময়।
৬. প্যাসিভ মোড এবং ফায়ারওয়াল কনফিগারেশন
ইন্টারনেট বা NAT পরিবেশে (রাউটারের পিছনে) একটি FTP সার্ভার চালানোর সময় একটি সাধারণ সমস্যা হলো “সংযোগ সফল হয়েছে কিন্তু ফাইল লিস্ট পাওয়া যাচ্ছে না” বা “ডেটা ট্রান্সফার ব্যর্থ হয়েছে” এই ঘটনা।
এই সমস্যাগুলির অনেকগুলি FTP অপারেশন মোড (অ্যাকটিভ/প্যাসিভ) এবং ফায়ারওয়াল সেটিংস এর ভুলের কারণে ঘটে।
এই বিভাগে vsftpd-তে প্যাসিভ মোড সক্ষম করার উপায় এবং ফায়ারওয়ালে প্রয়োজনীয় পোর্টগুলি কনফিগার করার ব্যাখ্যা করা হয়েছে।
প্যাসিভ মোড কী?
FTP-এর দুটি যোগাযোগ মোড রয়েছে: “অ্যাকটিভ মোড” এবং “প্যাসিভ মোড”।
- অ্যাকটিভ মোড : সার্ভার ক্লায়েন্টের সাথে সংযোগ স্থাপনের চেষ্টা করে।
- প্যাসিভ মোড : যোগাযোগ শুধুমাত্র ক্লায়েন্ট থেকে সার্ভারে সংযোগ দিয়ে সম্পন্ন হয় (NAT এবং ফায়ারওয়াল অভূতপূর্ব যোগাযোগের জন্য আরও শক্তিশালী)।
আধুনিক নেটওয়ার্ক পরিবেশে, প্যাসিভ মোড সুপারিশ করা হয়। vsftpd-তে প্যাসিভ মোড সেটিংস স্পষ্টভাবে কনফিগার করতে হবে।
vsftpd-তে প্যাসিভ মোড সক্ষম করা
/etc/vsftpd.conf-এ নিম্নলিখিত সেটিংস যোগ করুন বা সম্পাদনা করুন:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
এটি vsftpd কে প্যাসিভ মোডে চালানোর জন্য কনফিগার করে এবং ডেটা ট্রান্সফারের জন্য ৪০০০০ থেকে ৫০০০০ পোর্টগুলি ব্যবহার করে। এই রেঞ্জটি ঐচ্ছিক, কিন্তু সাধারণত ২০-৩০টি পোর্ট রিজার্ভ করা হয়।
এক্সটার্নাল IP অ্যাড্রেস নির্দিষ্ট করা (NAT পরিবেশের জন্য)
যদি সার্ভারটি NAT পরিবেশে থাকে, যেমন রাউটারের পিছনে, তাহলে ক্লায়েন্টগুলি সঠিকভাবে সংযোগ করতে পারে সেজন্য গ্লোবালি দৃশ্যমান এক্সটার্নাল IP অ্যাড্রেস স্পষ্টভাবে নির্দিষ্ট করতে হবে।
pasv_address=203.0.113.45
* উপরের IP অ্যাড্রেসটি একটি উদাহরণ। দয়া করে এটিকে আপনার প্রকৃত গ্লোবাল IP অ্যাড্রেস দিয়ে প্রতিস্থাপন করুন।
এই সেটিংসের সাথে, FTP ক্লায়েন্ট vsftpd দ্বারা পাঠানো সঠিক অ্যাড্রেস তথ্য এর ভিত্তিতে ডেটা সংযোগের চেষ্টা করতে পারে।
ফায়ারওয়াল (UFW) কনফিগারেশন
Ubuntu ফায়ারওয়াল (UFW)-তে vsftpd-এর ব্যবহৃত পোর্টগুলি খুলুন। নিম্নলিখিত কমান্ডগুলি চালান:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
20/tcp: FTP ডেটা চ্যানেল (অ্যাকটিভ মোডের জন্য)21/tcp: FTP কমান্ড চ্যানেল (লগইন এবং কমান্ড ট্রান্সমিশন)40000:50000/tcp: প্যাসিভ মোড ডেটা ট্রান্সফারের পোর্ট রেঞ্জ
সেটআপের পর, পরিবর্তনগুলি প্রয়োগ করতে UFW রিলোড করুন।
sudo ufw reload
ক্লাউড পরিবেশে (AWS, GCP, Azure ইত্যাদি) লক্ষ্য করার বিষয়
ক্লাউড ইনস্ট্যান্সে FTP চালানোর সময়, শুধুমাত্র OS-লেভেল UFW-তে নয়, ক্লাউড প্রোভাইডারের সিকিউরিটি গ্রুপ (ফায়ারওয়াল)-এও একই পোর্টগুলি খুলতে হবে।
উদাহরণ: AWS-এর জন্য
→ সিকিউরিটি গ্রুপে TCP পোর্ট 21 এবং 40000-50000 অনুমোদন করুন।
সারাংশ
FTP ব্যবহারিকভাবে চালানোর জন্য, vsftpd-এর প্যাসিভ মোড কনফিগার করা এবং আপনার নেটওয়ার্ক পরিবেশ অনুসারে পোর্ট খোলা অপরিহার্য। বিশেষ করে এক্সটার্নাল নেটওয়ার্ক থেকে সংযোগের সময়, অনেক যোগাযোগ ব্যর্থতা এবং টাইমআউট এই সেটিংসের কারণে ঘটে।
পরবর্তী অধ্যায়ে প্রত্যেক FTP ব্যবহারকারীর জন্য ব্যক্তিগত অ্যাক্সেস অনুমতি এবং ডিরেক্টরি সীমাবদ্ধতা সেট করার উপায় ব্যাখ্যা করা হবে। এটি মাল্টি-ইউজার অপারেশন এবং অনুমতি ব্যবস্থাপনার জন্য উপকারী হবে।
৭. প্রতি-ব্যবহারকারী কনফিগারেশন
একটি FTP সার্ভার বাস্তব অপারেশনাল পরিবেশে ব্যবহার করার সময়, একাধিক ব্যবহারকারীর জন্য ভিন্ন ভিন্ন অ্যাক্সেস অনুমতি এবং ডিরেক্টরি নির্ধারণ করার অনেক ক্ষেত্রে প্রয়োজন হয়। উদাহরণস্বরূপ, প্রত্যেক বিভাগ বা ব্যক্তিগত ব্যবহারকারীর জন্য ডেডিকেটেড ফোল্ডার সেটআপ করা বা অন্যান্য ব্যবহারকারীর ফাইলগুলিতে অ্যাক্সেস সীমাবদ্ধ করা প্রয়োজন হতে পারে।
এই বিভাগে vsftpd-তে প্রতি-ব্যবহারকারী ভিত্তিতে সেটিংস ব্যবস্থাপনার উপায় পরিচয় করানো হয়েছে।
ডেডিকেটেড FTP ব্যবহারকারী তৈরি করা
প্রথমে, FTP এর জন্য নিবেদিত ব্যবহারকারী অ্যাকাউন্ট তৈরি করুন। নির্দিষ্ট হোম ডিরেক্টরি সহ নতুন ব্যবহারকারী তৈরি করা সাধারণ ব্যাপার।
sudo adduser ftpuser1
এই কমান্ডটি /home/ftpuser1 এ একটি নিবেদিত ডিরেক্টরি তৈরি করে। যদি আপনি এটি শুধুমাত্র FTP উদ্দেশ্যে ব্যবহার করেন, শেল নিষ্ক্রিয় করে লগইন সীমাবদ্ধ করতে পারেন।
sudo useradd -m -s /usr/sbin/nologin ftpuser2
হোম ডিরেক্টরি অনুমতি সেট করা
vsftpd এর নিরাপত্তা স্পেসিফিকেশনের কারণে, FTP হোম ডিরেক্টরির জন্য “লিখনযোগ্য চ্রুট ডিরেক্টরি” অনুমোদিত নয়। তাই, নিম্নলিখিত কনফিগারেশনটি সুপারিশ করা হয়:
/home/ftpuser1/
├── files/ ← Allow write access (for uploads, etc.)
অনুমতিগুলি নিম্নরূপ সমন্বয় করুন:
sudo mkdir /home/ftpuser1/files
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/files
sudo chmod 755 /home/ftpuser1
এটি একটি নিরাপদ কনফিগারেশন তৈরি করে যেখানে রুট ডিরেক্টরি (/home/ftpuser1) লিখনযোগ্য নয়, তবে files/ সাবডিরেক্টরিতে আপলোড করা সম্ভব।
chroot দিয়ে ব্যবহারকারীদের ডিরেক্টরিতে সীমাবদ্ধ করা
পূর্ববর্তী অধ্যায়ে উল্লেখিত chroot_local_user=YES সেট করে, আপনি FTP লগইন ব্যবহারকারীদের তাদের হোম ডিরেক্টরির উপরের ডিরেক্টরিগুলি অ্যাক্সেস করা থেকে রোধ করতে পারেন।
chroot_local_user=YES
allow_writeable_chroot=YES
এই সেটিংটি অন্য ব্যবহারকারীদের এলাকাগুলি দুর্ঘটনাবশত দেখা বা পরিবর্তন করা থেকে রোধ করতে সহায়তা করে।
প্রতি-ব্যবহারকারী কনফিগারেশন ফাইল ব্যবহার (বিস্তারিত নিয়ন্ত্রণ)
vsftpd-এ প্রতিটি ব্যবহারকারীর জন্য পৃথক সেটিং প্রয়োগের একটি ফিচারও আছে। এটি আপনাকে অ্যাক্সেস সীমাবদ্ধতা, লগিং এবং সংযোগ সময়ের মতো নীতিগুলি সূক্ষ্মভাবে নিয়ন্ত্রণ করতে দেয়।
প্রথমে, নিম্নরূপ কনফিগার করুন:
user_config_dir=/etc/vsftpd_user_conf
এরপর, নির্দিষ্ট ডিরেক্টরিতে পৃথক কনফিগারেশন ফাইল তৈরি করুন।
sudo mkdir /etc/vsftpd_user_conf
sudo nano /etc/vsftpd_user_conf/ftpuser1
উদাহরণ:
local_root=/home/ftpuser1/files
write_enable=YES
এটি আপনাকে ftpuser1 এর রুট ডিরেক্টরিকে /home/ftpuser1/files এ সীমাবদ্ধ করতে এবং অন্যান্য ব্যবহারকারীদের থেকে লেখার অনুমতি আলাদা করতে দেয়।
SFTP একসাথে ব্যবহার করার সময় লক্ষ্যণীয় বিষয়গুলো
যদি আপনি vsftpd এর পাশাপাশি SFTP (SSH-ভিত্তিক FTP) ব্যবহার করেন, যা OpenSSH ফিচার ব্যবহার করে, তবে ব্যবহারকারী শেল এবং গ্রুপ সংযুক্তি ভিন্ন হতে পারে বলে কনফিগারেশনগুলো আলাদাভাবে পরিচালনা করা সুপারিশ করা হয়।

সারাংশ
vsftpd প্রতিটি ব্যবহারকারীরনীয় ডিরেক্টরি নিয়ন্ত্রণ এবং অ্যাক্সেস অনুমতি সেটিংস প্রদান করে। উপযুক্ত ব্যবহারকারী ব্যবস্থাপনা নিরাপত্তা ও সুবিধার মধ্যে একটি সমতা বজায় রাখতে সহায়তা করে।
পরবর্তী অধ্যায়ে FTP সার্ভারের কার্যক্রম কীভাবে পরীক্ষা করা যায় তা ব্যাখ্যা করা হয়েছে। আসুন ক্লায়েন্ট থেকে প্রকৃতপক্ষে সংযোগ করে ফাইল আপলোড ও ডাউনলোড স্বাভাবিকভাবে করা যায় কিনা যাচাই করি।
8. অপারেশন নিশ্চিতকরণ
এখন পর্যন্ত, আপনি FTP সার্ভারের ইনস্টলেশন, কনফিগারেশন এবং ব্যবহারকারী ব্যবস্থাপনা সম্পন্ন করেছেন। শেষ গুরুত্বপূর্ণ ধাপ হল নিশ্চিত করা যে FTP সার্ভার সত্যিই সঠিকভাবে কাজ করছে।
এই অংশে লোকাল পরিবেশ এবং একটি FTP ক্লায়েন্ট ব্যবহার করে সংযোগ কীভাবে পরীক্ষা করা যায় তা পরিচয় করিয়ে দেওয়া হয়েছে।
লোকাল পরিবেশ সংযোগ পরীক্ষা (কমান্ড লাইন)
Ubuntu থেকে সরাসরি FTP সার্ভারে সংযোগ করা যায় কিনা পরীক্ষা করতে, ftp কমান্ড ব্যবহার করুন। নিম্নরূপ সংযোগের চেষ্টা করুন:
ftp localhost
লগইন প্রম্পট আসলে, পূর্বে তৈরি করা FTP ব্যবহারকারীর নাম ও পাসওয়ার্ড দিন।
Name (localhost:username): ftpuser1
Password: ********
লগইন করার পর, নিম্নলিখিত কমান্ডের মতো মৌলিক অপারেশন চেষ্টা করতে পারেন:
ls # Display file list
cd files # Change directory
put test.txt # Upload a file
get test.txt # Download a file
যদি সফলভাবে কাজ করে, তবে FTP সার্ভার কোনো সমস্যাবিহীনভাবে তৈরি হয়েছে।
- নোট: উবুন্টুর সাম্প্রতিক সংস্করণে
ftpকমান্ডটি অব্যবহৃত, তাই বিকল্প হিসেবেlftpবাncftpএর মতো ক্লায়েন্ট ইনস্টল ও ব্যবহার করতে পারেন।
GUI ক্লায়েন্ট (FileZilla উদাহরণ) থেকে সংযোগ নিশ্চিতকরণ
সাধারণ ব্যবহারকারী এবং জটিল ডিরেক্টরি কাঠামো যাচাই করার জন্য FileZilla এর মতো একটি GUI FTP ক্লায়েন্ট সুবিধাজনক। সেটআপ প্রক্রিয়া নিচে বর্ণনা করা হয়েছে।
FileZilla দিয়ে সংযোগের পদ্ধতি:
- FileZilla চালু করুন এবং “Site Manager” খুলুন।
- একটি “New Site” তৈরি করুন।
- নিম্নলিখিতটি প্রবেশ করুন:
| Configuration Item | Content |
|---|---|
| Host | Server’s IP address or domain name |
| Protocol | FTP – File Transfer Protocol |
| Encryption | Explicit FTP over TLS (if using FTPS) |
| Logon Type | Normal |
| User | ftpuser1, etc. (created username) |
| Password | Password for the above user |
- “Connect” বোতামটি ক্লিক করুন।
সংযোগের পরে ফাইল তালিকা এবং ডিরেক্টরি কাঠামো প্রদর্শিত হলে, সংযোগ সফল হয়েছে। আপলোড/ডাউনলোড অপারেশনও চেষ্টা করুন।
FTP সংযোগের সময় সাধারণ সমস্যাবলী এবং চেকপয়েন্ট
| Problem | Checkpoint |
|---|---|
| Cannot connect | Check if ports are open in the firewall and security group. |
| Login failed (530 Login incorrect) | Verify username/password and check vsftpd.userlist. |
| Cannot display file list | Check if passive mode is enabled and the port range is open. |
| File names are garbled | Reconfirm UTF-8 settings and client character encoding. |
লগ ফাইলের মাধ্যমে স্ট্যাটাস যাচাই করা
যদি সমস্যা অব্যাহত থাকে, vsftpd লগ ফাইল পরীক্ষা করা কারণ শনাক্ত করতে সহায়তা করতে পারে।
cat /var/log/vsftpd.log
অন্যান্য সিস্টেম-লেভেল লগের জন্য, নিম্নলিখিতটি ব্যবহার করুন:
sudo journalctl -u vsftpd
এই তথ্য “কখন,” “কে,” “তারা কী করেছে,” এবং “কোথায় ব্যর্থতা ঘটেছে” বুঝতে সহজ করে।
অন্যান্য টিপস
- যদি সংযোগ অস্থিতিশীল হয়: ক্লায়েন্ট-সাইড ফায়ারওয়াল বা অ্যান্টিভাইরাস সংযোগ ব্লক করছে বলে সন্দেহ করুন।
- বর্ধিত নিরাপত্তার কারণে সীমাবদ্ধতা: SELinux বা AppArmor হস্তক্ষেপ করতে পারে (AppArmor প্রায়শই Ubuntu-তে সক্রিয় থাকে)।
সারাংশ
FTP অপারেশনের সময় ঘটতে প্রবণ ত্রুটিগুলোর সাধারণ প্যাটার্ন রয়েছে। প্রতিটি পয়েন্ট শান্তভাবে যাচাই করে এবং কনফিগারেশন ফাইল, ব্যবহারকারী, ফায়ারওয়াল এবং লগ যাচাই করে বেশিরভাগ সমস্যা সমাধান করা যায়।
পরবর্তী অধ্যায়ে FTP অপারেশনের সময় ঘটতে পারে এমন সাধারণ সমস্যাগুলি এবং সেগুলি কীভাবে সমাধান করা যায় তা বিশদভাবে ব্যাখ্যা করা হবে। ত্রুটি কীভাবে হ্যান্ডল করতে হয় তা জানলে বাস্তব অপারেশনের সময় আপনার প্রতিক্রিয়া ক্ষমতা উল্লেখযোগ্যভাবে উন্নত হবে।
৯. ট্রাবলশুটিং
FTP সার্ভার সেটআপ সম্পন্ন হওয়ার পরেও, বাস্তব অপারেশনের সময় বিভিন্ন ত্রুটি ও ত্রুটিপূর্ণ অবস্থা ঘটতে পারে। বিশেষ করে, নেটওয়ার্ক কনফিগারেশন, অনুমতি সেটিংস, এবং নিরাপত্তা সেটিংসের সীমাবদ্ধতা সংযোগ ব্যর্থতা বা ফাইল ট্রান্সফার ব্যর্থতার মতো সমস্যার কারণ হতে পারে।
এই বিভাগে সাধারণ ত্রুটি এবং তাদের সমাধান কেস-বাই-কেসভাবে উপস্থাপন করা হয়েছে। এটি নবাগতদের সহজে কারণ শনাক্ত করতে এবং দ্রুত পুনরুদ্ধার করতে সহায়তা করার জন্য গঠন করা হয়েছে।
সাধারণ ত্রুটি এবং ট্রাবলশুটিং পদ্ধতি
ত্রুটি: 530 Login incorrect
কারণ:
- ভুল ইউজারনেম বা পাসওয়ার্ড।
- হোয়াইটলিস্ট ব্যবহার করার সময় ব্যবহারকারী
/etc/vsftpd.userlist-এ নিবন্ধিত নয়।
সমাধান:
- প্রবেশ করা তথ্য পুনরায় যাচাই করুন।
- যদি
userlist_deny=NOসেট করা থাকে, তবে লগইন অনুমোদন করতে চাওয়া ব্যবহারকারীকে/etc/vsftpd.userlist-এ যোগ করুন।
ত্রুটি: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
কারণ:
- চ্রুট ফাংশন সক্রিয় থাকলেও হোম ডিরেক্টরি লেখার যোগ্য।
সমাধান:
vsftpd.conf-এ নিম্নলিখিতটি যোগ করুন:allow_writeable_chroot=YES
- বিকল্পভাবে, হোম ডিরেক্টরিতে লেখার অনুমতি না দিয়ে,
files/এর মতো একটি সাবডিরেক্টরিতে লেখার অনুমতি কনফিগার করুন।


