Bangla programming tutorials

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

Say no to Symlink Attack

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

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



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

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

<?php passthru( "cat /etc/passwd" ); ?>

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

<?php readfile( "cat /etc/passwd" ); ?>

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

নোট: 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 এর বাহিরের ফাইল পিএইপি স্ক্রিপ্ট ব্যবহার করে রিড কিংবা কখনো কখনো রাইট করা যায়, তো সিমলিংক টাও এভাবেই ঘটে

<?php passthru( "cat /etc/passwd" ); ?> এটি যদি এক্সিকিউট করেন দেখবেন সার্ভার সিকিউরড না হলে সব ইউজারদের প্যাথ দেখাবে । এবার সিংমলিক করা হয় যে স্ক্র্রিপ্ট দিয়ে তার কাজহলো, এটা দেখে প্রথমে সার্ভারে হোস্ট করা সব ব্যবহার কারীর 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

Like FanPage: Like Post:

Comments

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


Captch(Enter the number on the below field): 64