উবুন্টুতে কীভাবে এফটিপি সার্ভারটি ইনস্টল ও কনফিগার করতে হয়


এফটিপি (ফাইল ট্রান্সফার প্রোটোকল) একটি অপেক্ষাকৃত পুরানো এবং সর্বাধিক ব্যবহৃত স্ট্যান্ডার্ড নেটওয়ার্ক প্রোটোকল যা কোনও নেটওয়ার্কের মাধ্যমে দুটি কম্পিউটারের মধ্যে ফাইল আপলোড/ডাউনলোড করতে ব্যবহৃত হয়। তবে এফটিপিটি তার আসল অনিরাপদ দ্বারা, কারণ এটি এনক্রিপশন ছাড়াই ব্যবহারকারীর শংসাপত্র (ব্যবহারকারীর নাম এবং পাসওয়ার্ড) এর সাথে ডেটা প্রেরণ করে।

সতর্কতা: আপনি যদি এফটিপি ব্যবহারের পরিকল্পনা করে থাকেন তবে এসএসএল/টিএলএসের সাথে এফটিপি সংযোগটি কনফিগার করার বিষয়টি বিবেচনা করুন (পরবর্তী নিবন্ধে প্রচ্ছদ হবে)। অন্যথায়, নিরাপদ এফটিপি যেমন এসএফটিপি ব্যবহার করা সর্বদা ভাল better

এই টিউটোরিয়ালে, আমরা FTP দুর্বলতার বিরুদ্ধে শক্তিশালী সুরক্ষা পেতে উবুন্টুতে কীভাবে একটি FTP সার্ভার (ভিএসএফটিপিডি পূর্ণ "খুব সুরক্ষিত এফটিপি ডিমন") ইনস্টল, কনফিগার এবং সুরক্ষিত করব তা দেখাব।

পদক্ষেপ 1: উবুন্টুতে VsFTP সার্ভার ইনস্টল করা

১. প্রথমত, আমাদের সিস্টেম প্যাকেজ উত্স তালিকা আপডেট করতে হবে এবং তারপরে নীচে ভিএসএফটিপিডি বাইনারি প্যাকেজ ইনস্টল করতে হবে:

$ sudo apt-get update
$ sudo apt-get install vsftpd

২. ইনস্টলেশনটি সম্পূর্ণ হয়ে গেলে পরিষেবাটি প্রথমে অক্ষম হয়ে যাবে, অতএব, আমাদের এটিকে সঠিক সময়ের জন্য ম্যানুয়ালি শুরু করতে হবে এবং পরবর্তী সিস্টেমের বুট থেকে এটি স্বয়ংক্রিয়ভাবে শুরু করতে সক্ষম করতে হবে:

------------- On SystemD ------------- 
# systemctl start vsftpd
# systemctl enable vsftpd

------------- On SysVInit ------------- 
# service vsftpd start
# chkconfig --level 35 vsftpd on

৩. পরবর্তী, আপনি যদি সার্ভারে ইউএফডাব্লু ফায়ারওয়াল সক্ষম করেছেন (এটি ডিফল্টরূপে সক্ষম নয়), দূরবর্তী মেশিনগুলি থেকে এফটিপি পরিষেবাগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য আপনাকে 21 এবং 20 পোর্টগুলি খুলতে হবে যেখানে এফটিপি ডিমনগুলি শুনতে পাচ্ছে then নিম্নলিখিত ফায়ারওয়াল নিয়ম:

$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw status

পদক্ষেপ 2: উবুন্টুতে ভিএসএফটিপি সার্ভারটি কনফিগার এবং সুরক্ষিত করুন

৪. এখন আমাদের এফটিপি সার্ভারটি সেটআপ এবং সুরক্ষিত করার জন্য কয়েকটি কনফিগারেশন করা যাক, প্রথমে আমরা এর মতো মূল কনফিগার ফাইল /etc/vsftpd/vsftpd.conf এর একটি ব্যাকআপ তৈরি করব:

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

এর পরে, আসুন, vsftpd কনফিগারেশন ফাইলটি খুলুন।

$ sudo vi /etc/vsftpd.conf
OR
$ sudo nano /etc/vsftpd.conf

এই মানগুলির সাথে নিম্নলিখিত বিকল্পগুলি যুক্ত/সংশোধন করুন:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

৫. এখন, ব্যবহারকারী তালিকা ফাইল /etc/vsftpd.userlist এর উপর ভিত্তি করে ব্যবহারকারীদের FTP অ্যাক্সেসের অনুমতি/অস্বীকার করার জন্য VSFTPD কনফিগার করুন।

নোট করুন যে ডিফল্টরূপে, ব্যবহারকারী তালিকা_ফাইলে =/ইত্যাদি/vsftpd.userlist- এ তালিকাভুক্ত ব্যবহারকারীদের ব্যবহারকারী তালিকা_ডেনী = হ্যাঁ > বিকল্পের সাহায্যে লগইন অ্যাক্সেস অস্বীকার করা হয়েছে যদি ব্যবহারকারীর তালিকা_সেসযোগ্য = হ্যাঁ থাকে।

তবে, ব্যবহারকারীর তালিকা_ডেনি = না বিকল্পটি ডিফল্ট সেটিংসের অর্থটি মুছে ফেলেছে, সুতরাং কেবলমাত্র যার ব্যবহারকারীদের ব্যবহারকারী তালিকা_ফাইলে =/ইত্যাদি/vsftpd.userlist স্পষ্টভাবে তালিকাভুক্ত রয়েছে কেবলমাত্র এফটিপি সার্ভারে লগইন করার অনুমতি দেওয়া হবে।

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

গুরুত্বপূর্ণ: ব্যবহারকারীরা যখন এফটিপি সার্ভারে লগইন করেন, তাদের একটি ক্রোয়েটেড কারাগারে রাখা হয়, এটি স্থানীয় রুট ডিরেক্টরি যা কেবল এফটিপি সেশনের জন্য তাদের হোম ডিরেক্টরি হিসাবে কাজ করবে।

এরপরে, নীচে বর্ণিত হিসাবে আমরা ক্রোটেড জেল (লোকাল রুট) ডিরেক্টরিটি কীভাবে সেট করতে হবে তার দুটি সম্ভাব্য দৃশ্যের দিকে লক্ষ্য করব।

This. এই মুহুর্তে, এফটিপি ব্যবহারকারীদের তাদের হোম ডিরেক্টরিতে সীমাবদ্ধ রাখার জন্য এই দুটি নিম্নলিখিত বিকল্পগুলি সংশোধন/সংশোধন করা যাক।

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user = YES বিকল্পটির অর্থ হ'ল লগ-ইন করার পরে স্থানীয় ব্যবহারকারীদের ডিফল্টরূপে একটি ক্রুট কারাগারে রাখা হবে।

এবং আমাদের পাশাপাশি এটিও বুঝতে হবে যে ভিএসএফটিপিডি সুরক্ষার কারণে ডিফল্টরূপে ক্রুট জেল ডিরেক্টরিটি লিখনযোগ্য হওয়ার অনুমতি দেয় না, তবে আমরা এই সেটিংটি অক্ষম করার জন্য অনুমতি_writable_chroot = YES বিকল্পটি ব্যবহার করতে পারি।

ফাইলটি সংরক্ষণ করুন এবং এটি বন্ধ করুন। তারপরে পরিবর্তনগুলি কার্যকর করতে আমাদের ভিএসএফটিপিডি পরিষেবাদি পুনরায় চালু করতে হবে:

------------- On SystemD ------------- 
# systemctl restart vsftpd

------------- On SysVInit ------------- 
# service vsftpd restart

পদক্ষেপ 3: উবুন্টুতে VsFTP সার্ভার পরীক্ষা করা

Now. এখন আমরা নিম্নরূপে ইউর্যাডড কমান্ড সহ এফটিপি ব্যবহারকারী তৈরি করে এফটিপি সার্ভারটি পরীক্ষা করব:

$ sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
$ sudo passwd aaronkilik

তারপরে, আমাদের ইকো কমান্ড এবং টি কমান্ডের সাহায্যে ফাইলটি /etc/vsftpd.userlist এ স্পষ্টভাবে ব্যবহারকারী আয়নকিলিক তালিকাবদ্ধ করতে হবে:

$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist

৮. এখন আমাদের উপরের কনফিগারেশনগুলি প্রয়োজনীয় হিসাবে কাজ করছে তা পরীক্ষা করার সময় প্রায় শেষ। আমরা বেনামে লগইনগুলি পরীক্ষা করে শুরু করব; আমরা নীচের আউটপুট থেকে পরিষ্কার দেখতে পাচ্ছি যে এফটিপি সার্ভারে বেনামী লগইনগুলির অনুমতি নেই:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

Next। এরপরে, যদি কোনও ব্যবহারকারী /etc/vsftpd.userlist ফাইলটিতে তালিকাভুক্ত না হয় তবে লগইন করার অনুমতি দেওয়া হবে যা পরবর্তী ফলাফল থেকে সত্য নয়:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

১০. এখন আমরা /etc/vsftpd.userlist ফাইলটিতে তালিকাভুক্ত কোনও ব্যবহারকারী লগইন করার পরে তার/তার হোম ডিরেক্টরিতে স্থাপন করা হয়েছে কিনা তা নির্ধারণের জন্য একটি চূড়ান্ত পরীক্ষা করব। এবং এটি নীচের আউটপুট থেকে সত্য:

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

সতর্কতা: অনুমতি_writable_chroot = YES বিকল্পটি সেট করা এত বিপজ্জনক হতে পারে, এটির নিরাপত্তাজনিত জটিলতা থাকতে পারে, বিশেষত যদি ব্যবহারকারীদের আপলোডের অনুমতি থাকে বা আরও অনেক কিছু শেল অ্যাক্সেস থাকে। আপনি যদি করছেন ঠিক কী তা জানেন তবেই এটি ব্যবহার করুন।

আমাদের লক্ষ্য করা উচিত যে এই সুরক্ষা সংক্রান্ত প্রভাবগুলি ভিএসএফটিপিডির সাথে নির্দিষ্ট নয়, তারা অন্যান্য সমস্ত এফটিপি ডিমনকেও প্রভাবিত করতে পারে যা স্থানীয় ব্যবহারকারীদের ক্রুট কারাগারে রাখার প্রস্তাব দেয়।

এই কারণে, নীচের বিভাগে, আমরা কোনও ব্যবহারকারীর জন্য পৃথক অ লিখনযোগ্য স্থানীয় রুট ডিরেক্টরি সেট করার আরও সুরক্ষিত পদ্ধতির ব্যাখ্যা করব।

পদক্ষেপ 4: উবুন্টুতে এফটিপি ব্যবহারকারী হোম ডিরেক্টরিগুলি কনফিগার করুন

১১. এবার, আরও একবার ভিএসএফটিপিডি কনফিগারেশন ফাইলটি খুলুন।

$ sudo vi /etc/vsftpd.conf
OR
$ sudo nano /etc/vsftpd.conf

এবং নীচের চিত্র হিসাবে # অক্ষর ব্যবহার করে অনিরাপদ বিকল্পটি মন্তব্য করুন:

#allow_writeable_chroot=YES

এর পরে, ব্যবহারকারীর জন্য বিকল্প স্থানীয় রুট ডিরেক্টরি তৈরি করুন (অ্যারোনকিলিক, আপনার সম্ভবত সম্ভবত একই নয়) এবং অন্যান্য ডিরেক্টরিতে এই ডিরেক্টরিতে লেখার অনুমতি অক্ষম করে প্রয়োজনীয় অনুমতিগুলি সেট করুন:

$ sudo mkdir /home/aaronkilik/ftp
$ sudo chown nobody:nogroup /home/aaronkilik/ftp
$ sudo chmod a-w /home/aaronkilik/ftp

১২. তারপরে, স্থানীয় রুটের নীচে উপযুক্ত অনুমতি নিয়ে একটি ডিরেক্টরি তৈরি করুন যেখানে ব্যবহারকারী তার ফাইলগুলি সংরক্ষণ করবেন:

$ sudo mkdir /home/aaronkilik/ftp/files
$ sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
$ sudo chmod -R 0770 /home/aaronkilik/ftp/files/

এরপরে, ভিএসএফটিপিডি কনফিগারেশন ফাইলে নীচের বিকল্পগুলিকে তাদের সংশ্লিষ্ট মানগুলির সাথে যুক্ত/সংশোধন করুন:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

ফাইলটি সংরক্ষণ করুন এবং এটি বন্ধ করুন। এবং সাম্প্রতিক সেটিংস সহ ভিএসএফটিপিডি পরিষেবাগুলি পুনঃসূচনা করুন:

------------- On SystemD ------------- 
# systemctl restart vsftpd

------------- On SysVInit ------------- 
# service vsftpd restart

13. এখন আসুন একটি চূড়ান্ত চেক করা যাক এবং ব্যবহারকারীর স্থানীয় রুট ডিরেক্টরিটি আমরা তার হোম ডিরেক্টরিতে তৈরি FTP ডিরেক্টরি এটি নিশ্চিত করি।

# ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

এটাই! নীচের মন্তব্য ফর্মের মাধ্যমে এই গাইড সম্পর্কে আপনার মতামতটি শেয়ার করতে ভুলবেন না বা সম্ভবত আমাদের বিষয় সম্পর্কিত কোনও গুরুত্বপূর্ণ তথ্য সরবরাহ করুন।

সর্বশেষে তবে সর্বনিম্ন নয়, আমাদের পরবর্তী নিবন্ধটি মিস করবেন না, যেখানে আমরা উবুন্টু 16.04/16.10 এ এসএসপি/টিএলএস সংযোগ ব্যবহার করে কীভাবে কোনও এফটিপি সার্ভারটি সুরক্ষিত করব তা বর্ণনা করব, ততক্ষণ অবধি সর্বদা টেকমিন্টে থাকুন।