CentOS 7 এ এফটিপি সার্ভারটি ইনস্টল, কনফিগার ও সুরক্ষিত করার উপায় - [বিস্তৃত গাইড]


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

এই নির্দেশিকাতে, আমরা সেন্টোস/আরএইচএল 7 এবং ফেডোরা বিতরণে একটি এফটিপি সার্ভার ইনস্টল, কনফিগার এবং সুরক্ষিত করার পদক্ষেপগুলি বর্ণনা করব (ভিএসএফটিপিডি "খুব সুরক্ষিত এফটিপি ডিমন")।

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

পদক্ষেপ 1: এফটিপি সার্ভার ইনস্টল করা

1. vsftpd সার্ভার ইনস্টল করা সরাসরি এগিয়ে, কেবলমাত্র টার্মিনালে নিম্নলিখিত কমান্ডটি চালান।

# yum install vsftpd

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

# systemctl start vsftpd
# systemctl enable vsftpd

৩. পরবর্তী, বাহ্যিক সিস্টেমগুলি থেকে এফটিপি পরিষেবাগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য, আমাদের 21 বন্দরটি খুলতে হবে, যেখানে এফটিপি ডিমনগুলি নিম্নরূপ শুনছে:

# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-service=ftp
# firewall-cmd --reload

পদক্ষেপ 2: এফটিপি সার্ভার কনফিগার করা

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

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

এরপরে, উপরের কনফিগারেশন ফাইলটি খুলুন এবং এই সম্পর্কিত মানগুলির সাথে নিম্নলিখিত বিকল্পগুলি সেট করুন:

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 অ্যাক্সেসের অনুমতি/অস্বীকার করার জন্য FTP কনফিগার করুন।

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

তবে, ব্যবহারকারী তালিকা_ডেনি = কোনও সেটিংস পরিবর্তন করে না, তার মানে কেবলমাত্র ব্যবহারকারীরা স্পষ্টভাবে ব্যবহারকারী তালিকা_ফাইলে =/ইত্যাদি/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   

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

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

F. এখন এফটিপি ব্যবহারকারীদের তাদের হোম ডিরেক্টরিতে সীমাবদ্ধ করতে নিম্নলিখিত দুটি বিকল্প নির্বাচন করুন।

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user = হ্যাঁ স্থানীয় ব্যবহারকারীদের ডিফল্ট সেটিংসে লগইন করার পরে তাদের হোম ডিরেক্টরি একটি ক্রুট কারাগারে রাখা হবে।

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

ফাইলটি সংরক্ষণ করুন এবং এটি বন্ধ করুন।

এসইএলিনাক্সের সাথে এফটিপি সার্ভার সুরক্ষিত করা হচ্ছে

Now. এখন, এফটিপিকে ব্যবহারকারীর হোম ডিরেক্টরিতে ফাইল পড়তে দেওয়ার জন্য নীচে সেলিনাক্স বুলিয়ান সেট করুন। নোট করুন যে এটি প্রথমে কমান্ডটি ব্যবহার করে করা হয়েছিল:

# setsebool -P ftp_home_dir on

তবে, এই বাগ রিপোর্টে বর্ণিত হিসাবে ftp_home_dir নির্দেশটি ডিফল্টরূপে অক্ষম করা হয়েছে: https://bugzilla.redhat.com/show_bug.cgi?id=1097775।

এখন আমরা এফটিপিকে ব্যবহারকারীর হোম ডিরেক্টরি পড়তে/লেখার অনুমতি দেওয়ার জন্য সেলইনাক্স বিধি সেট করতে সেমেনেজ কমান্ডটি ব্যবহার করব।

# semanage boolean -m ftpd_full_access --on

এই মুহুর্তে, আমরা এতদূর উপরে যে সমস্ত পরিবর্তনগুলি করেছি তা কার্যকর করতে আমাদের vsftpd পুনরায় চালু করতে হবে:

# systemctl restart vsftpd

পদক্ষেপ 4: এফটিপি সার্ভার পরীক্ষা করা

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

# useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
# passwd ravi

এরপরে, আমাদের রবি ফাইলটি /etc/vsftpd.userlist ফাইলের সাথে ইকো কমান্ডটি নিম্নরূপ যুক্ত করতে হবে:

# echo "ravi" | tee -a /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist

৯. এখন আমাদের উপরের সেটিংসটি সঠিকভাবে কাজ করছে কিনা তা পরীক্ষার সময়। আসুন অজ্ঞাতনামা লগইনগুলি পরীক্ষা করে শুরু করা যাক, আমরা নীচের স্ক্রিন শট থেকে দেখতে পাচ্ছি যে বেনামে প্রবেশের অনুমতি নেই:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

১০. ব্যবহারকারী /etc/vsftpd.userlist ফাইলটিতে তালিকাভুক্ত না থাকলে ব্যবহারকারীকে লগইন করার অনুমতি দেওয়া হবে, যা নীচের স্ক্রিন শটে যেমন হয় না তেমন পরীক্ষাও করা যাক:

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

১১. এখন একটি চূড়ান্ত পরীক্ষা করে দেখুন যে কোনও ব্যবহারকারী /etc/vsftpd.userlist ফাইলটিতে তালিকাভুক্ত হয়েছে, লগইন করার পরে তার/তার হোম ডিরেক্টরিতে রাখা হয়েছে:

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

আপনি কী করছেন তা যদি আপনি ঠিক জানেন তবেই এই বিকল্পটি সক্রিয় করুন। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এই সুরক্ষা সংক্রান্ত প্রভাবগুলি vsftpd সুনির্দিষ্ট নয়, এগুলি সমস্ত এফটিপি ডেমনগুলিতে প্রয়োগ হয় যা স্থানীয় ব্যবহারকারীদের ক্রুট জেলেও রাখার প্রস্তাব দেয়।

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

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

১২. আবার vsftpd কনফিগারেশন ফাইলটি খুলুন এবং নীচে অনিরাপদ বিকল্পটি মন্তব্য করে শুরু করুন:

#allow_writeable_chroot=YES

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

# mkdir /home/ravi/ftp
# chown nobody:nobody /home/ravi/ftp
# chmod a-w /home/ravi/ftp

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

# mkdir /home/ravi/ftp/files
# chown ravi:ravi  /home/ravi/ftp/files
# chmod 0700 /home/ravi/ftp/files/

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

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

ফাইলটি সংরক্ষণ করুন এবং এটি বন্ধ করুন। আবারও, আসুন নতুন সেটিংস সহ পরিষেবাটি আবার শুরু করুন:

# systemctl restart vsftpd

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

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

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

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