Mod_Security এবং Mod_evasive মডিউলগুলি ব্যবহার করে ব্রুট ফোর্স বা ডিডোএস আক্রমণগুলির বিরুদ্ধে অ্যাপাচি সুরক্ষা করুন


হোস্টিং ব্যবসায় আপনি যাদের জন্য বা যদি আপনি নিজের সার্ভার হোস্ট করছেন এবং সেগুলি ইন্টারনেটে প্রকাশ করছেন তবে আক্রমণকারীদের বিরুদ্ধে আপনার সিস্টেমকে সুরক্ষিত করা অবশ্যই একটি উচ্চ অগ্রাধিকার হতে হবে।

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

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

এই নিবন্ধে, আমরা কীভাবে ইনস্টল করতে, কনফিগার করতে এবং এডিএইচএল/সেন্টোস 8 এবং 7 এবং ফেডোরার সাথে অ্যাপাচি-র পাশাপাশি সেগুলি খেলতে পারি তা নিয়ে আলোচনা করব। তদ্ব্যতীত, আমরা সার্ভার অনুসারে প্রতিক্রিয়া জানার জন্য আক্রমণগুলি অনুকরণ করব sim

এটি ধরে নেওয়া হয় যে আপনার সিস্টেমে আপনার কাছে একটি ল্যাম্প সার্ভার ইনস্টল রয়েছে। যদি তা না হয় তবে দয়া করে আরও এগিয়ে যাওয়ার আগে এই নিবন্ধটি দেখুন।

  • CentOS 8
  • এ কীভাবে এলএএমপি সার্ভার ইনস্টল করবেন
  • কীভাবে আরএইচইএল/সেন্টোস 7
  • এ ল্যাম্প স্ট্যাক ইনস্টল করবেন

আপনি যদি RHEL/CentOS 8/7 বা ফেডোরা চালিয়ে যাচ্ছেন তবে আপনাকে ফায়ারওয়াল্ডের পরিবর্তে ডিফল্ট ফায়ারওয়াল ফ্রন্ট-এন্ড হিসাবে iptables সেট আপ করতে হবে। আমরা আরএইচইএল/সেন্টোস 8/7 এবং ফেডোরা উভয় ক্ষেত্রে একই সরঞ্জামটি ব্যবহার করার জন্য এটি করি।

পদক্ষেপ 1: RHEL/CentOS 8/7 এবং ফেডোরায় Iptables ফায়ারওয়াল ইনস্টল করা

শুরু করতে, থামাতে এবং ফায়ারওয়াল্ড অক্ষম করুন:

# systemctl stop firewalld
# systemctl disable firewalld

তারপরে আইপটিবলস সক্ষম করার আগে iptables-পরিষেবাদি প্যাকেজটি ইনস্টল করুন:

# yum update && yum install iptables-services
# systemctl enable iptables
# systemctl start iptables
# systemctl status iptables

পদক্ষেপ 2: মোড_সিকিউরিটি এবং মোড_ভ্যাসিভ ইনস্টল করা

ইতিমধ্যে স্থানে একটি এলএএমপি সেটআপ করা ছাড়াও, উভয় প্যাকেজ ইনস্টল করার জন্য আপনাকে আরএইচইএল/সেন্টোস 8/7 এ EPEL সংগ্রহস্থল সক্ষম করতে হবে। ফেডোরা ব্যবহারকারীদের কোনও রেপো সক্ষম করার দরকার নেই, কারণ ইপেল ইতিমধ্যে ফেডোরা প্রকল্পের অংশ।

# yum update && yum install mod_security mod_evasive

--------------- CentOS/RHEL 8 --------------- 
# dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm
# dnf --enablerepo=raven-extras install mod_evasive

ইনস্টলেশন সমাপ্ত হলে, আপনি /etc/httpd/conf.d এ উভয় সরঞ্জামের জন্য কনফিগারেশন ফাইলগুলি খুঁজে পাবেন।

# ls -l /etc/httpd/conf.d

এখন, এই দুটি মডিউল অ্যাপাচি এর সাথে একীভূত করতে এবং এটি শুরু হওয়ার সাথে সাথে এগুলি লোড করতে, নীচের লাইনগুলি mod_evasive.conf শীর্ষ স্তরের বিভাগে উপস্থিত হয়েছে তা নিশ্চিত করুন এবং যথাক্রমে মোড_সিকিউরিটি.কম

LoadModule evasive20_module modules/mod_evasive24.so
LoadModule security2_module modules/mod_security2.so

নোট করুন << মডিউল/মোড_সিকিউরিটি ২. এসো এবং মডিউলগুলি/Mod_evasive24.so হ'ল /etc/httpd ডিরেক্টরি থেকে উত্স ফাইলে সম্পর্কিত আপেক্ষিক পথ মডিউল এর। /ইত্যাদি/httpd/মডিউল ডিরেক্টরিগুলির বিষয়বস্তু তালিকাভুক্ত করে আপনি এটি যাচাই করতে পারেন (এবং প্রয়োজনে এটি পরিবর্তন করুন):

# cd /etc/httpd/modules
# pwd
# ls -l | grep -Ei '(evasive|security)'

তারপরে অ্যাপাচি পুনরায় আরম্ভ করুন এবং এটি মোড_ডভ্যাসিভ এবং মোড_সিকিউরিটি লোড হয়েছে তা যাচাই করুন:

# systemctl restart httpd 	

লোড স্ট্যাটিক এবং ভাগ করা মডিউলগুলির একটি তালিকা ডাম্প করুন।

# httpd -M | grep -Ei '(evasive|security)'				

পদক্ষেপ 3: একটি মূল বিধি সেট ইনস্টল এবং মোড_সিকিউরিটি কনফিগার করুন

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

1. সেই উদ্দেশ্যে তৈরি করা ডিরেক্টরিতে OWASP CRS ডাউনলোড করুন।

# mkdir /etc/httpd/crs-tecmint
# cd /etc/httpd/crs-tecmint
# wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz -O master

২. সিআরএস ফাইলটি অনতার করুন এবং আমাদের সুবিধার্থে ডিরেক্টরিটির নাম পরিবর্তন করুন।

# tar xzf master
# mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs

৩. এখন মোড_সিকিউরিটি কনফিগার করার সময় এসেছে। নিয়মের সাথে নমুনা ফাইলটি ( ওওএসপি-মোডেসিকিউরিটি-সিআরএস/মোডসিকিউরিটি_সিআর_স_০_সেটআপ.কন.ফ.মাম ) । উদাহরণ এক্সটেনশন ছাড়াই অন্য কোনও ফাইলে অনুলিপি করুন:

# cd owasp-modsecurity-crs/
# cp crs-setup.conf.example crs-setup.conf

এবং ওয়েব সার্ভারের প্রধান কনফিগারেশন ফাইল /etc/httpd/conf/httpd.conf ফাইলটিতে নিম্নলিখিত লাইনগুলি সন্নিবেশ করে মডিউলটির সাথে অ্যাপাচি কে এই ফাইলটি ব্যবহার করতে বলুন। আপনি যদি অন্য ডিরেক্টরিতে টারবালটি আনপ্যাক করতে চান তবে আপনাকে অন্তর্ভুক্তির নির্দেশাবলী অনুসরণ করে পাথগুলি সম্পাদনা করতে হবে:

<IfModule security2_module>
        Include crs-tecmint/owasp-modsecurity-crs/crs-setup.conf
        Include crs-tecmint/owasp-modsecurity-crs/rules/*.conf
</IfModule>

পরিশেষে, এটি সুপারিশ করা হয় যে << /etc/httpd/modsec امنیت.d ডিরেক্টরিতে আমরা আমাদের নিজস্ব কাস্টমাইজড নির্দেশিকা রাখব (যেখানে আমরা নামটি দেব tecmint.conf নিম্নলিখিত উদাহরণে) সিআরএস ফাইলগুলি সরাসরি পরিবর্তিত করার পরিবর্তে এটি করার ফলে নতুন সংস্করণ প্রকাশিত হওয়ায় সিআরএসগুলি সহজতর আপগ্রেড করার সুযোগ পাবে।

<IfModule mod_security2.c>
	SecRuleEngine On
	SecRequestBodyAccess On
	SecResponseBodyAccess On 
	SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream 
	SecDataDir /tmp
</IfModule>

মোড_সিকিউরিটি কনফিগারেশনের দিকনির্দেশের সম্পূর্ণ ব্যাখ্যামূলক গাইডের জন্য আপনি স্পাইডারল্যাবগুলির ModSecurity গিটহাব সংগ্রহস্থলটি পড়তে পারেন।

পদক্ষেপ 4: মোড_ ইভটিভ কনফিগার করা

মোড_ভাইভেসিভ /etc/httpd/conf.d/mod_evasive.conf নির্দেশিকা ব্যবহার করে কনফিগার করা হয়েছে। যেহেতু প্যাকেজ আপগ্রেড করার সময় আপডেট করার কোনও নিয়ম নেই, তাই মোড_সিকিউরিটি এর বিপরীতে কাস্টমাইজড নির্দেশিকা যুক্ত করতে আমাদের আলাদা ফাইলের দরকার নেই।

ডিফল্ট mod_evasive.conf ফাইলটিতে নিম্নলিখিত নির্দেশাবলী সক্ষম করা আছে (নোট করুন যে এই ফাইলটি ভারী মন্তব্য করেছে, সুতরাং আমরা নীচের কনফিগারেশন নির্দেশকে হাইলাইট করতে মন্তব্যগুলি প্রত্যাহার করেছি):

<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

নির্দেশের ব্যাখ্যা:

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

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

কেবলমাত্র একটি ছোট সাবধানবাণী: যদি এই মানগুলি সঠিকভাবে সেট না করা থাকে তবে আপনি বৈধ দর্শনার্থীদের অবরুদ্ধ করার ঝুঁকিটি চালান।

আপনি অন্যান্য দরকারী দিকনির্দেশনাগুলিও বিবেচনা করতে চাইতে পারেন:

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

# setsebool -P httpd_can_sendmail 1

এরপরে, অন্যান্য নির্দেশাবলীর বাকি অংশের সাথে mod_evasive.conf ফাইলটিতে এই নির্দেশিকা যুক্ত করুন:

DOSEmailNotify [email 

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

এটি একটি আর্গুমেন্ট হিসাবে একটি বৈধ সিস্টেম কমান্ড প্রয়োজন,

DOSSystemCommand </command>

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

যখন কোনও আইপি ঠিকানা কালো তালিকাভুক্ত হয়ে যায়, আমাদের এটি থেকে আসা ভবিষ্যতের সংযোগগুলি ব্লক করা দরকার। আমরা নিম্নলিখিত শেল স্ক্রিপ্টটি ব্যবহার করব যা এই কাজটি সম্পাদন করে। /usr/স্থানীয়/বিন স্ক্রিপ্টস-টেকমিন্ট (বা আপনার পছন্দের নাম যাই হোক না কেন) নামে একটি ডিরেক্টরি এবং ban_ip.sh নামে একটি ফাইল তৈরি করুন যে ডিরেক্টরিতে।

#!/bin/sh
# IP that will be blocked, as detected by mod_evasive
IP=$1
# Full path to iptables
IPTABLES="/sbin/iptables"
# mod_evasive lock directory
MOD_EVASIVE_LOGDIR=/var/log/mod_evasive
# Add the following firewall rule (block all traffic coming from $IP)
$IPTABLES -I INPUT -s $IP -j DROP
# Remove lock file for future checks
rm -f "$MOD_EVASIVE_LOGDIR"/dos-"$IP"

আমাদের ডসসিস্টেমকম্যান্ড নির্দেশিকা নীচের হিসাবে পড়তে হবে:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

উপরের লাইনে, % s মোড_অ্যাভ্যাসিভ দ্বারা সনাক্ত করা হিসাবে আপত্তিকর আইপি উপস্থাপন করে।

নোট করুন যে আপনি যদি কোনও টার্মিনাল এবং পাসওয়ার্ড ছাড়াই স্ক্রিপ্টটি (এবং সেই স্ক্রিপ্টটি কেবল!) চালানোর জন্য ব্যবহারকারীর অ্যাপাচি কে অনুমতি না দেন তবে এই সমস্ত কিছুই কার্যকর হবে না। যথারীতি, আপনি ভিসুডো ফাইলটি /etc/sudoers ফাইল অ্যাক্সেস করতে কেবল টাইপ করতে পারেন এবং তারপরে নীচের চিত্রটিতে প্রদর্শিত 2 লাইন যুক্ত করতে পারেন:

apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
Defaults:apache !requiretty

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

#Defaults requiretty

অবশেষে, ওয়েবসভারটি পুনরায় চালু করুন:

# systemctl restart httpd

পদক্ষেপ 4: অ্যাপাচে একটি ডিডোএস আক্রমণ সিমুলেট করা

এমন বেশ কয়েকটি সরঞ্জাম রয়েছে যা আপনি আপনার সার্ভারে একটি বাহ্যিক আক্রমণকে অনুকরণ করতে ব্যবহার করতে পারেন। এর মধ্যে বেশ কয়েকটি সন্ধানের জন্য আপনি কেবল “ ডিডোস আক্রমণগুলির অনুকরণের সরঞ্জামগুলি ” এর জন্য গুগল করতে পারেন।

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

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

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

আমাদের পরীক্ষার পরিবেশটি একটি CentOS 7 সার্ভার [ আইপি 192.168.0.17 ] এবং একটি উইন্ডোজ হোস্ট থেকে গঠিত যা থেকে আমরা আক্রমণটি চালু করব [আইপি 192.168.0.103 ]:

দয়া করে নীচের ভিডিওটি প্লে করুন এবং একটি সাধারণ ডস আক্রমণ আক্রমণ করার জন্য নির্দেশিত ক্রমে বর্ণিত পদক্ষেপগুলি অনুসরণ করুন:

তারপরে আপত্তিজনক আইপি iptables দ্বারা অবরুদ্ধ করা হয়েছে:

উপসংহার

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

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

রেফারেন্স লিংক