Bangla programming tutorials

হোস্টিং সার্ভারে Symlink Protection দিন: চেক করে দেখুন অাপনার সার্ভার সিমলিংক অ্যাটাক থেকে নিরাপদ কিনা ।

Say no to Symlink Attack

হোস্টিং সার্ভারে Symlink Protection দিন: চেক করে দেখুন আপনার সার্ভার সিমলিংক অ্যাটাক থেকে নিরাপদ কিনা ।

প্রতিদিন বাংলাদেশে শত শত সাইট হ্যাক হয় প্রশ্ন উঠে এর সব সাইটই কি দুর্বল সিকিউরিটি এর জন্য হ্যাক হয় ? না জরিপ করলে দেখতে পাবেন যে ৭০% সাইট হ্যাক সার্ভার নিরাপদ না বলে, যারা zone-h সম্পর্কে জানেন না তাদেরকে বলছি এটি একটি ওয়েবসাইট যেখানে হ্যাকাররা তাদের হ্যাকিং এর রেকর্ড প্রমান হিসাবে রেখে দেয় । তো, এই সাইট কে যদি আমরা analysis করি তবে দেখুন প্রথম পেজের প্রায়সব গুলোতেই M শব্দটি আছে এর মানে হচ্ছে ম্যাস ডিফেস করা হয়েছে । অর্থাৎ সার্ভারে থাকা যে কোনো একটি সাইটকে হ্যাক করা হয় প্রথমে এরপর সিমলিংক কিংবা রুট করে বাকি সব সাইটকে কয়েক সেকেন্ডের মধ্যে ডিফেস দিয়ে ফেলা হয় । এক্ষেত্রে যদি আপনার সাইট নিরাপদও হয় তবুও ডিফেস হতে পারে । সাধারনত হ্যাকার রা কোনো সাইট হ্যাক করার পর সর্বপ্রথম ট্রাই করে সার্ভারে সিমলিংক করার ।



আশা করি এর ভয়ংকর প্রভাব সম্পর্কে আপনাদের কে বুঝাতে পেরেছি ।

কিভাবে দেখবেন সিমলিংক প্রটেকশন কাজ করছে কিনা : নিচের কোডটি .php এক্সটেনশনে সেভ করুন আপনার হোস্টিং এ :

এ্ররপর ব্রাউজার দিয়ে ফাইলটি ব্রাউজ করুন: কিছু লেখা দেখতে পাবেন এখন /home/ এটা দিয়ে সার্চ করুন । যদি দেখেন /home/apnarcpanelusername ছাড়া  ছাড়া অন্য কোনো ইউজারও লেখা থাকে এমন তবে আপনার সার্ভারে সিকিউরিটি ঠিকমত কাজ করছে না । এটা অনেক সময় ব্লক থাকতে পারে যদি কাজ না করে তবে

এটা ব্যবহার করতে পারেন । সমস্যা নেই সার্ভারে কিনা অ্যাকাউন্টে কোনো ক্ষতি হবে না ।

নোট: home/munin এটা থাকতে পারে সমস্যা নেই ।

যেমন: http://www.cs.cmu.edu/~guna/15-123S11/code/lecture21/passwd.txt এটা একটা স্যাম্পল, এখানে গিয়ে সার্চ দিলে শুধু একটাই /home/ পাবেন ।

এবার http://www.engr.iupui.edu/~maprile/sysadmin/passwd2.html এটা দেখুন একাধিক পাবেন /home/ দিয়ে সার্চ দিলে এটা vulnerable,

কিছু ক্ষেত্রে একাধিক থাকতে সার্ভিস থাকতে পারে, সুতরাং যদি ৫-৬ টা আসে রেজাল্টে কিংবা দেখতে ইউজার নেম মনে হয় তবে  আপনার সার্ভার সিকিউর না ।

নোট: home/munin এটা থাকতে পারে সমস্যা নেই ।

কিভাবে protect করতে হয় ?

সাধারনত, আপনি যখন সার্ভারে একটি পিএইচপি ফাইল এক্সিকিউট করেন তখন এটি কোনো আইসোলেশানে থেকে রান হয় না বরং এটি সেন্ট্রালি রান হয় । ফলে এর পারমিশন কিন্তু নোবডি থাকে । আবার সব সার্ভারেই FollowSymlinks  এবং SymLinksIfOwnerMatch এই দুটি enabled থাকে যা রেস কন্ডিশান ক্রিয়েট করে । ফলে সার্ভার Vulnerable হয়ে পরে, কিন্তু সিপ্যানেলে একটি প্রটেকশান সিস্টেম দেওয়া থাকে । দু:খ জনক ব্যাপার হলো ওটা কোনো কাজের না, কিন্তু অদক্ষ ( ৮০% সার্ভার কিংবা হোস্টিং প্রোভাউডার ই  ) এটা চালু রেখে নাকে তেল দিয়ে ঘুম দেন । আর দুইদিন পর পর তাদের ইউজারদের সমস্যাতে ভুগতে হয় ।

এবার আসা যাক কিভাবে প্রোটেকশান দিবেন তাতে,

মূলত সিমলিংক প্রটেকশান এর জন্য অনেকে ক্লাউডলিন্যাক্স ব্যবহারের পরামর্শ দেন আমরাও এটা ব্যবহারের পরামর্শ দিবো যদি না আপনি নিজে দক্ষ না হন, তবে আপনার সার্ভার নিয়ে কাজ করার মত যথেস্ট জ্ঞান থাকলে এটা ব্যবহার না করেও প্রটেকশান দিতে পারবেন যেটা এর থেকেও আপনাকে বেশী সিকিউরিটি এবং সুবিধা দিবে ।

১. 'SymLinksIfOwnerMatch' এটি শুধু চালু রাখুন, FollowSymlinks টা বন্ধ করে দিন । WHM এ লগিন করে এটা করতে পারবেন ।

২. Bluehost এবং Rack911 এর প্যাচ আছে দুটি Blue এর টা ব্যবহার করুন ভুলেও Rack আর blue এর টা একসাথে ব্যবহার করবেন না ।

এই দুটি ব্যবহার করলেও সিমলিংক হতে পারে, তাই এবার আমরা আইসোলেশন করবো । আগেই বলেছি প্রাথমিক অবস্থায় সার্ভারে সব কিছু রুট (নোবডি হিসাবে) প্রসেস করে । ফলে সার্ভারের config ফাইল কিংবা যেকোনো সেন্সিটিভ ডিরেক্টরি কিংবা home Directory এর বাহিরের ফাইল পিএইপি স্ক্রিপ্ট ব্যবহার করে রিড কিংবা কখনো কখনো রাইট করা যায়, তো সিমলিংক টাও এভাবেই ঘটে

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

ধরুন, আপনার wordpress সাইট আছে তার মানে কনফিগ ফাইল হবে wp-config.php যেটা আপনার public_html এর মধ্যে আছে, এবার আপনার physical path ফাইলের যদি নিচের টা হয়,

home/yourusername/public_html

আর এটা যদি কোনো ভাবে জানা যায় তাহলে ঐ একই সার্ভারে থাকা অন্য কোনো ব্যক্তি home/yourusername/public_html/wp-config.php ফাইলটি ব্রটফস করে দেখতে পারবে আছে কিনা আর থাকলে এরপর গ্রাব করে তাকে দেখাবে ফলে আপনার সাইটের কনফিগারেশন তার হাতে চলে যাবে ।

ধূর কি লিখতে শুরু করে কি লিখতাছি হাহাহা কিভাবে সিংমলিক কাজ করে তা ই তো শিখে ফেললেন আপনারা, আসলে প্রটেকশন তখনই দিতে পারবেন যখন আপনি এটা সম্পর্কে অবগত হবেন ।

তো এটা যাতে না হয় এজন্য আমাদের User Isolation করতে হবে । মানে প্রতিটা ইউজারের জন্য আলাদা আলাদা ইউজার গ্রুপ এবং ভার্চুয়াল ডিরেক্টরি । ফলে আগে যেখানে nobody হিসাবে এক্সিকিউট হতো এখন এবার তা ঐ ইইজারের ইউজার গুপের মধ্যে প্রসেস হবে । ফলে আপনি টোটালি একটা নির্দিষ্ট এরিয়াতে আটকা পরে যাবেন ।

ধরুন, একটা রুম আছে যাতে জানালা আছে কিন্তু লাগানো । এক্ষেত্রে চাইলেই জানলার ফুটো দিয়ে ওপাশে নজর দেওয়া কিন্তু সম্ভব ( কেউ মাথায় অন্য চিন্তা আনবেন না, বোঝানোর জন্য চেস্টা করছি শুধু ), কিন্তু রুমে যদি কোনো জানলা দরজা না রাখেন তাহলে কি সম্ভব ? না সম্ভব না ।

Cloudlinux এ মূলত এই কাজটিইকরে, তবে এই কাজটি আরো ভালো ভাবে ম্যানুয়ালী করা সম্ভব । এজন্য আপনাদের কে mod_ruid2 ব্যবহার করতে হবে সেই সাথে PHP Handler হিসাবে DSO কে ব্যবহার করবেন । এটি খুবই অসাধারন যা শুধু সিকিউরিটি না স্পিডের জন্যও বেস্ট । এই দুটো খুব সহজেই WHM থেকে Enable করা যাবে । By default ভাবে এটি দেওয়া থাকে না তাই যারা Easy Apache ব্যবহার করেন তারা এটাকে সিলেক্ট করে আবার নতুন করে রিবিল্ড করবেন ।

যখনে ইন্সটল করা থাকবে enable চাইলে putty ব্যবহার করে করতে পারবেন । প্রথমে দেখুন সব ঠিক মত আছে কিনা :

 

/usr/local/cpanel/bin/rebuild_phpconf --current


যদি ঠিক থাকে তবে নিচের মত রেজাল্ট পাবেন :

Available handlers: suphp dso cgi none
DEFAULT PHP: 5
PHP4 SAPI: none
PHP5 SAPI: suphp
SUEXEC: enabled
RUID2: enabled

Available handlers এ DSO থাকলেও চলবে ।

এবার নিচের কমান্ডটি রান করুন কাজ শেষ এখানে সব আগে থেকেই দেওয়া আছে লিনাক্সের মজাই তো এখানে :

/usr/local/cpanel/bin/rebuild_phpconf 5 none dso disabled
[/usr/local/cpanel/scripts/set_mailman_archive_perms] Setting I/O priority to reduce system load: none: prio 4
[/usr/local/cpanel/scripts/set_mailman_archive_perms] Setting mailman archive permissions
[/usr/local/cpanel/scripts/set_mailman_archive_perms] Continuing in the background
php.conf updated to:

# This file was automatically generated by the Cpanel PHP Configuration system
# If you wish to change the way PHP is being handled by Apache on your system,
# use the /usr/local/cpanel/bin/rebuild_phpconf script or the WHM interface.
#
# Manual edits of this file will be lost when Apache is updated.


# Disable Suexec in all virtualhosts
LoadModule disable_suexec_module modules/mod_disable_suexec.so

# LibPHP5 configuration
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml

# End of autogenerated PHP configuration.


Updating user configurable PHP settings.
[info] recursion depth is set to: 2
Restarting Apache



এরপর WHM এর Tweak Settings এ গিয়ে " XPERIMENTAL: Jail Apache Virtual Hosts using mod_ruid2 and cPanel® jailshell. [?] " এটা টিক দিন ;)


এবার আরামসে নাকে তেল দিয়ে ঘুমান সিংমলিক যদি কেউ করতে পারে তাকে পুরষ্কার দিয়েন হাহাহা ।

লিখেছেন:

মো: জোবায়ের আলম

ফাউন্ডার, গ্রিনওয়েব ।


Share This Post to Keep This Site Alive

Abu Saudah

Abu Saudah (2017-09-12 21:45:39)

amader hosting e ki eita add korte hobe?

Greenweb BD

Greenweb BD (2017-09-13 15:46:05)

Greenweb এর সব সার্ভারেই সিমলিংক প্রটেকশন দেওয়া আছে ।

Leave A Feedback


Captcha (Enter the number on the below field): 391