আপডেট: বর্তমান উত্তর সম্পূর্ণ আপডেট হয়েছে।
এই আলোচনা অনুসারে আমি ডাব্লুডাব্লুডাব্লিউ সুরক্ষা সহকারী নামে একটি গিটহাবের সংগ্রহশালা তৈরি করেছি । ask_ubuntuএই উত্তরটির জন্য উত্সর্গীকৃত একটি শাখা রয়েছে । পূর্বে এখানে উপলভ্য সমস্ত রেফারেন্স অক্ষর সীমাবদ্ধতার কারণে সরানো হয়েছে - সেগুলি গিটহাব এ উপলব্ধ।
এখানে উবুন্টু 16.04 এর মধ্যে অ্যাপাচি 2 সুরক্ষা কীভাবে বাড়ানো যায় তা সম্পূর্ণ পদ্ধতিতে জড়িত কয়েকটি উপায়ে ওভার- ভিউ করা হয়েছে।
সূচি তালিকা:
- ডাব্লুডাব্লুডাব্লিউ সুরক্ষা সহকারী স্ক্রিপ্ট (ডাব্লুএসএএস) pt ইপটেবল ►
- Iptables - বেসিক কনফিগারেশন - সংরক্ষণ করুন এবং পুনরুদ্ধার করুন
- অ্যাপাচি 2 এর জন্য মোডেভাসিভ
- মোডেভাসিভ ► ডাব্লুএসএএস ► ইপটেবল
- অ্যাপাচি 2 এর জন্য ModSecurity 2.9
- ModSecurity OWASP কোর বিধি সেট 3.x
- মোডসিকিউরিটি বিধি শ্বেত তালিকাভুক্ত
- মোডসিকিউরিটি বিধি ► ডাব্লুএসএএস ► ইপটেবল
- মোডসিকিউরিটি এবং অ্যাপাচি লগ ফাইল
- মোডসিকিউরিটি লগ ফাইলগুলি ail ফেইল 2 বন ► ইপটেবল
- মোডসিকিউরিটি গার্ডিয়ানলগ ► এইচটিটিপিডি গার্ডিয়ান ► ডাব্লুএসএএস ► ইপটেবল
- মোডসিকিউরিটি গার্ডিয়ানলগ ► HTTPD কাস্টম বিশ্লেষণ ► WSAS ► Iptables
এ ছাড়া এইচটিটিপিএস ব্যবহার করা সর্বদা ভাল বলে নেওয়া যাক:
WWW সুরক্ষা সহকারী স্ক্রিপ্ট pt Iptables
এখানে লিপি উপস্থাপন করা হয় www-security-assistant.bash। এটি আপনাকে দূষিত আইপি ঠিকানাগুলি পরিচালনা করতে সহায়তা করতে পারে। স্ক্রিপ্টের দুটি মোড রয়েছে।
স্বয়ংক্রিয় মোড
যখন বাহ্যিক প্রোগ্রাম, অ্যাপাচি এর হিসাবে mod_security, একটি দূষিত $IPঠিকানা সরবরাহ করে। এই ক্ষেত্রে, সিন্টেক্সটি যা স্ক্রিপ্টের অনুরোধ করে তা হওয়া উচিত:
www-security-assistant.bash <ip-address> Guardian
www-security-assistant.bash <ip-address> ModSecurity
www-security-assistant.bash <ip-address> ModEvasive
www-security-assistant.bash <ip-address> a2Analyst
এই মোডে স্ক্রিপ্টটি দুটি ক্রিয়াকলাপ সরবরাহ করে এবং প্রতিটি ক্রিয়াকলাপের জন্য এটি প্রশাসকের কাছে ইমেল প্রেরণ করবে ।
প্রথম পর্যায়ের প্রথম কয়েক জন্য 'অন্যায়' উৎস $IPহবে সময় একটি নির্দিষ্ট সময়ের জন্য নিষিদ্ধ এর মান সমান $BAN_TIME। এই মোডটি কমান্ডটি ব্যবহার করে at।
দ্বিতীয় স্তর: যখন নির্দিষ্ট থেকে সীমানা লঙ্ঘনের সংখ্যাটির $IPসমান হয় $LIMIT, তখন এই $IPঠিকানাটি স্থায়ীভাবে ইপটেবলের মাধ্যমে নিষিদ্ধ করা হবে এবং এটিতে যুক্ত হবে $BAN_LIST।
ম্যানুয়াল মোডে
এই মোডটি নিম্নলিখিত বিকল্পগুলি গ্রহণ করে:
www-security-assistant.bash <ip-address> --DROP "log notes"
ফাইলটিতে একটি এন্ট্রি তৈরি করে /var/www-security-assistant/iptables-DROP.listএবং একটি বিধি তৈরি করে:
iptables -A GUARDIAN -s $IP -j DROP
www-security-assistant.bash <ip-address> --DROP-CLEAR "log notes"
ফাইলটিতে একটি এন্ট্রি তৈরি করে /var/www-security-assistant/iptables-DROP-CLEAR.list, নির্দিষ্ট আইপটেবল নিয়ম সরিয়ে দেয় $IP, ইতিহাস থেকে এবং এর থেকে সরিয়ে দেয় $BAN_LIST:
iptables -D GUARDIAN -s $IP -j DROP
www-security-assistant.bash <ip-address> --ACCEPT "log notes"
ফাইলটিতে কেবল একটি এন্ট্রি তৈরি করে /var/www-security-assistant/iptables-ACCEPT.list।
www-security-assistant.bash <ip-address> --ACCEPT-CHAIN "log notes"
ফাইলটিতে একটি এন্ট্রি তৈরি করে /var/www-security-assistant/iptables-ACCEPT.listএবং একটি বিধি তৈরি করে:
iptables -A GUARDIAN -s $IP -j ACCEPT
নির্ভরতা
স্ক্রিপ্টটি ব্যবহার করে iptables-save.shএবং iptablesচেইন GUARDIAN, পরবর্তী বিভাগে ব্যাখ্যা করা হয়েছে। এটি এর মধ্যে কয়েকটি ফাইল তৈরি এবং রক্ষণাবেক্ষণ করবে $WORK_DIR:
www-security-assistant.history - এতে আগের আইপির লঙ্ঘনের জন্য ডেটা রয়েছে।
www-security-assistant.mail - স্ক্রিপ্ট দ্বারা প্রেরিত সর্বশেষ ইমেলের সামগ্রী।
iptables-ACCEPT.list; iptables-DROP.listএবং iptables-DROP-CLEAR.list।
ইমেলগুলি প্রেরণের জন্য স্ক্রিপ্টটির একটি ন্যূনতম কনফিগারেশন প্রয়োজন:
sudo apt install s-nail mutt mailutils postfix
sudo dpkg-reconfigure postfix # For General type: Internet Site
echo 'Test passed.' | mail -s Test-Email email@example.com
যদি কোনও কনফিগার করা এইচটিটিপিএস পরিষেবা থাকে তবে এর টিএলএস শংসাপত্রটি পোস্টফিক্স পরিষেবার মধ্যে ব্যবহার করা যেতে পারে।
উপরন্তু স্ক্রিপ্ট ব্যবহার at: sudo apt install at।
স্থাপন
কাজের ডিরেক্টরি তৈরি করুন, আসুন এটি কল করুন /var/www-security-assistant। এটি ডাউনলোড করুন www-security-assistant.bashএবং কার্যকর করুন:
sudo mkdir /var/www-security-assistant
sudo wget https://raw.githubusercontent.com/pa4080/www-security-assistant/ask_ubuntu/www-security-assistant.bash -O /var/www-security-assistant/www-security-assistant.bash
sudo chmod +x /var/www-security-assistant/www-security-assistant.bash
www-security-assistant.bashকাস্টম কমান্ড হিসাবে উপলব্ধ করুন :
sudo ln -s /var/www-security-assistant/www-security-assistant.bash /usr/local/bin/
এর মাধ্যমে পাসওয়ার্ড ছাড়াই www-dataচলার অনুমতি দিন । অতিরিক্ত ' ' নিয়ম সহ নিরাপদে একটি নতুন ফাইল তৈরি এবং সম্পাদনা করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন :www-security-assistant.bashsudosudoers
sudo visudo -f /etc/sudoers.d/www-security-assistant
ফাইলটির অভ্যন্তরে নিম্নলিখিত লাইনটি যুক্ত করুন - ফাইলটি সংরক্ষণ করুন এবং প্রস্থান করুন:
www-data ALL=(ALL) NOPASSWD: /var/www-security-assistant/www-security-assistant.bash
ত্বক www-security-assistant.bash। কমপক্ষে ভেরিয়েবলের মান পরিবর্তন করুন $EMAIL_TO।
চেক আপ
নিজেকে প্রতিনিধিত্ব করুন $AGENTএবং স্বয়ংক্রিয় MODE সঠিকভাবে কাজ করে কিনা তা পরীক্ষা করুন:
www-security-assistant.bash 192.168.1.177 Guardian
তারপরে আপনার ইমেলটি পরীক্ষা করুন, টাইপ করুন iptables -L GUARDIAN -n, ফাইলগুলি পর্যালোচনা করুন www-security-assistant.historyএবং www-security-assistant.mail। উপরের কমান্ডটি 5 বার চালান এবং ফাইলগুলি iptables-DROP.listএবং পর্যালোচনা করুন iptables-CURRENT.conf।
ম্যানুয়াল MODE সঠিকভাবে কাজ করে কিনা তা পরীক্ষা করে দেখুন - আপনার স্থানীয় হোস্টটি হোয়াইট তালিকায় যুক্ত করুন:
www-security-assistant.bash 127.0.0.1 --ACCEPT "Server's localhost IP"
তারপরে ফাইলটি পরীক্ষা করুন iptables-ACCEPT.list।
এই টিউটোরিয়ালটির বাকি অংশটি কীভাবে www-security-assistantআপনার সিস্টেমের সাথে সংহত করা যায় ।
Iptables - বেসিক কনফিগারেশন - সংরক্ষণ করুন এবং পুনরুদ্ধার করুন
বেসিক কনফিগারেশন
নিম্নলিখিত নিয়মগুলি যুক্ত করার আগে দয়া করে এই ম্যানুয়ালটি পড়ুন ।
sudo iptables -F
sudo iptables -I INPUT 1 -i lo -j ACCEPT
sudo iptables -I INPUT 2 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# This rule may lock you out of the system!
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
আপনি পরবর্তী ক্রিয়াগুলি করার আগে একটি নতুন এসএসএইচ সংযোগ খুলুন এবং সবকিছু ঠিকঠাক কাজ করে কিনা তা পরীক্ষা করতে আপনার সিস্টেমে লগইন করার চেষ্টা করুন!
সংরক্ষণ করুন এবং পুনরুদ্ধার করুন
এটি কাস্টম স্ক্রিপ্টগুলির মাধ্যমে অর্জন করা যেতে পারে, যা iptablesসিস্টেমের স্টপ-স্টার্ট (বা রিবুট) প্রক্রিয়া চলাকালীন কনিং সংরক্ষণ এবং পুনরুদ্ধার করবে । (আমরা যদি ইউপিডাব্লুটিকে আইপ্যাটিবলস বিধি সেটআপ করতে ব্যবহার করি তবে এই পদক্ষেপের দরকার নেই))
printf '#!/bin/sh\n/sbin/iptables-save > /var/www-security-assistant/iptables-CURRENT.conf\nexit 0\n' | sudo tee /var/www-security-assistant/iptables-save.sh
printf '#!/bin/sh\n/sbin/iptables-restore < /var/www-security-assistant/iptables-CURRENT.conf\nexit 0\n' | sudo tee /var/www-security-assistant/iptables-restore.sh
sudo chmod +x /var/www-security-assistant/iptables-restore.sh /var/www-security-assistant/iptables-save.sh
sudo ln -s /var/www-security-assistant/iptables-save.sh /etc/network/if-post-down.d/iptables-save
sudo ln -s /var/www-security-assistant/iptables-restore.sh /etc/network/if-pre-up.d/iptables-restore
নতুন চেইন তৈরি করুন
কল করা নতুন চেইন তৈরি করুন GUARDIANএবং চেইনে এটি 3 নম্বর হিসাবে সন্নিবেশ করুন INPUT:
sudo iptables -N GUARDIAN
sudo iptables -I INPUT 3 -j GUARDIAN
চেক আপ
সিস্টেমটি পুনরায় বুট করুন এবং কনফিগারেশনটি পরীক্ষা করুন। দয়া করে ব্যবহার করুন sudo systemctl reboot(ফোর্স বিকল্পটি ব্যবহার করবেন না reboot -f)। সিস্টেমটি অনলাইনে ফিরে এলে আমরা সন্ধান করতে পারি যে সদ্য নির্মিত চেইনগুলি এর দ্বারা বিদ্যমান রয়েছে:
sudo iptables -L GUARDIAN -n
অ্যাপাচি 2 এর জন্য মোডেভাসিভ
মোডিএভ্যাসিভ এইচটিটিপি ডস বা ডিডিওএস আক্রমণ বা ব্রুট ফোর্স আক্রমণের ঘটনায় ক্ষতিকারক পদক্ষেপ সরবরাহ করার জন্য অ্যাপাচি-র জন্য একটি বিদ্রূপমূলক কসরত মডিউল। আরও পড়ুন ...
স্থাপন
মডিউলটি ইনস্টল এবং সক্ষম করুন:
sudo apt install libapache2-mod-evasive
sudo a2enmod evasive
লগ ডিরেক্টরি তৈরি করুন এবং এর জন্য অ্যাক্সেসযোগ্য করুন www-data:
sudo mkdir -p /var/log/apache2_mod_evasive
sudo chown www-data /var/log/apache2_mod_evasive
বেসিক কনফিগারেশন সামঞ্জস্য করুন - কনফিগারেশন ফাইলে কিছু নির্দেশনা এবং সম্পাদনা করুন:
/etc/apache2/mods-enabled/evasive.conf
পুনর্সূচনা এ্যাপাচি: sudo systemctl restart apache2.service।
চেক আপ
- আপনার সার্ভার থেকে একটি ওয়েব পৃষ্ঠা খুলুন এবং ব্রাউজার উইন্ডোটি কয়েকবার নিবিড়ভাবে রিফ্রেশ করুন (টিপুন
F5) - আপনাকে অবশ্যই 403 নিষিদ্ধ ত্রুটি বার্তাটি পেতে হবে । লগ ডিরেক্টরিতে, একটি নতুন লক ফাইল উত্পন্ন করা হবে। এই আইপি ঠিকানা থেকে আরও লঙ্ঘন সনাক্তকরণের জন্য এই ফাইলটি মুছে ফেলা উচিত।
মোডেভাসিভ ► ডাব্লুএসএএস ► ইপটেবল
এখানে আমরা উপরের অংশে তৈরি, এর মাধ্যমে mod_evasiveকথা বলার জন্য কনফিগার করব ।iptableswww-security-assistant.bash
/etc/apache2/mods-available/evasive.confএইভাবে সম্পাদনা করুন :
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 9
DOSSiteCount 70
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
#DOSEmailNotify your@email.foo
DOSLogDir "/var/log/apache2_mod_evasive"
DOSSystemCommand "sudo /var/www-security-assistant/www-security-assistant.bash %s 'ModEvasive' 'AutoMode' >> /var/www-security-assistant/www-security-assistant.execlog 2>&1"
</IfModule>
লগ ফাইল তৈরি করুন এবং অ্যাপাচি পুনরায় চালু করুন:
sudo touch /var/www-security-assistant/www-security-assistant.execlog && sudo chown www-data /var/www-security-assistant/www-security-assistant.execlog
এই কনফিগারেশন আমরা মাধ্যমে DDOS আক্রমণ সিমুলেট করতে পরীক্ষা করার জন্য F5পদ্ধতি, উপরে উল্লিখিত, অথবা আমরা একটি কমান্ড ব্যবহার করতে পারেন ab, hping3ইত্যাদি
মনোযোগ দিন: সাবধান হন কারণ iptablesডাব্লুএসএএস-এ ব্যবহৃত নিয়মটি আপনার এসএসএইচ সংযোগগুলি সহ উত্স থেকে সমস্ত নতুন সংযোগ ড্রপ করবে $IP। পরীক্ষাগুলির সময় সার্ভারের সাথে সংযোগ স্থাপনের জন্য ব্যাকআপ উপায় রাখা ভাল। আপনি এই নিয়মটি কেবল এইচটিটিপি / এইচটিটিপিএস পোর্টগুলির সাথে কাজ করতে পরিবর্তন করতে পারেন।
অ্যাপাচি 2 এর জন্য ModSecurity 2.9
মোডসিকিউরিটি হ'ল একটি ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল ইঞ্জিন যা এটি নিজেরাই খুব অল্প সুরক্ষা সরবরাহ করে। দরকারী হওয়ার জন্য, মোডসিকিউরিটি নিয়ম সহ কনফিগার করা উচিত। ব্যবহারকারীদের বাক্সের বাইরে মোডসিকিউরিটির পুরো সদ্ব্যবহার করতে সক্ষম করতে, ট্রাস্টওয়েজের স্পাইডার ল্যাবগুলি একটি নিখরচায়িত শংসাপত্রের বিধি সরবরাহ করছে ... আরও পড়ুন ...
স্থাপন
মডিউলটি ইনস্টল এবং সক্ষম করুন:
sudo apt install libapache2-mod-security2
sudo a2enmod security2
কনফিগারেশন ফাইল তৈরি করুন:
sudo সিপি /etc / আধুনিক নিরাপত্তা / আধুনিক নিরাপত্তা.conf- প্রস্তাবিত /etc / আধুনিক নিরাপত্তা / আধুনিক নিরাপত্তা.conf
/etc/modsecurity/modsecurity.confসাবধানে পড়ুন এবং সম্পাদনা করুন! কমপক্ষে নিম্নলিখিত নির্দেশাবলী যুক্ত করুন বা পরিবর্তন করুন:
# -- Rule engine initialization ----------------------------------------------
SecRuleEngine On
# -- Debug log configuration -------------------------------------------------
SecDebugLogLevel 2
SecDebugLog "/var/log/apache2_mod_security/modsec_debug.log"
# -- Audit log configuration -------------------------------------------------
SecAuditLog "/var/log/apache2_mod_security/modsec_audit.log"
# -- Guardian log configuration -------------------------------------------------
SecGuardianLog /var/log/apache2_mod_security/modsec_guardian.log
ফাইলটি অ্যাপাচের কনফিগারেশনের সাথে /etc/apache2/mods-enabled/security2.confজড়িত /etc/modsecurity/modsecurity.conf। এই পর্যায়ে এটি দেখতে security2.confহবে:
<IfModule security2_module>
SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
</IfModule>
লগ ডিরেক্টরি তৈরি করুন:
sudo mkdir -p /var/log/apache2_mod_security
লগ রোটেশন সেটআপ করুন। প্রথমে কনফিগারেশন ফাইল তৈরি করুন:
sudo cp /etc/logrotate.d/apache2 /etc/logrotate.d/apache2-modsec
তারপরে এই নতুন ফাইলটি সম্পাদনা করুন:
/var/log/apache2_mod_security/*.log { … }
অ্যাপাচি পুনরায় চালু করুন।
চেক আপ
এতে একটি অতিরিক্ত কনফিগারেশন ফাইল তৈরি করুন /etc/modsecurity, উদাহরণস্বরূপ এটিকে কল z-customrules.confকরুন এবং নীচের বিধিটিকে এর সামগ্রী হিসাবে যুক্ত করুন:
# Directory traversal attacks
SecRule REQUEST_URI "../" "t:urlDecodeUni, deny, log, id:109"
সার্ভার পুনরায় চালু করুন: sudo systemctl restart apache2.service। আপনার ব্রাউজারটি খুলুন এবং টাইপ করুন https://example.com/?abc=../। ফলাফল হবে: 403 নিষিদ্ধ । /var/log/apache2_mod_securityআরও তথ্যের জন্য লগ ফাইল চেক ইন ।
জিনিসগুলিকে আরও মজাদার করতে স্ক্রিপ্টটিকে issues.phpআপনার মধ্যে উপযুক্ত স্থানে স্থাপন করুন DocumentRoot(এখানে আমি এই জায়গাটি ধরে নিচ্ছি /var/www/html):
sudo wget https://raw.githubusercontent.com/pa4080/www-security-assistant/ask_ubuntu/appendix/var/www/html/issues.php -O /var/www/html/issues.php
তারপরে নিম্নলিখিত পদ্ধতিতে উপরের নিয়মটি সংশোধন করুন:
# Directory traversal attacks with redirection (or use URL instead of URI: redirect:'https://example.com/issues.php')
SecRule REQUEST_URI "../" "t:urlDecodeUni, deny, log, id:109, redirect:'/issues.php'"
অ্যাপাচি পুনরায় চালু করুন, তারপরে আপনার ব্রাউজারটি খুলুন এবং https://example.com/?abc=../;-) টাইপ করুন ধারণাটি এসই এর স্ক্রিপ্ট থেকে নেওয়া হয়েছে BotLovin.cs।
/etc/modsecurity/z-customrules.confআবার সম্পাদনা করুন এবং নিয়মটি মন্তব্য করুন (অক্ষম করুন) - এটি কেবল পরীক্ষার উদাহরণ এবং এটি পরবর্তী বিভাগে বর্ণিত OWASP সিআরএস দ্বারা আচ্ছাদিত।
এখানে অন্য উদাহরণ রয়েছে যেখানে আমরা সমস্ত wp-adminপৃষ্ঠার অনুরোধগুলি পুনর্নির্দেশ করব , তবে নির্দিষ্ট আইপি ঠিকানাগুলি ব্যতীত (এটি দ্রষ্টব্য chain):
# Block wp-admin access
SecRule REQUEST_URI "^/wp-admin" "id:108, log, deny, status:403, t:lowercase, chain, redirect:'/issues.php'"
SecRule REMOTE_ADDR "!@ipMatch 192.168.1.11,99.77.66.12"
এখানে আমাদের দুটি বিঘ্নিত কর্ম রয়েছে: (1) deny, status:403এবং (2) redirect:'/issues.php'। আসলে আমাদের denyঅ্যাকশনের দরকার নেই কারণ এটি redirectক্রিয়া দ্বারা ওভাররাইড হবে ।
ModSecurity OWASP কোর বিধি সেট 3.x
উবুন্টু 16,04 আপনি সিএসআর 2.x ইনস্টল করতে পারেন: apt install modsecurity-crs। এখানে আমরা সিএসআর 3.x ইনস্টল করব , বিস্তারিত নির্দেশাবলী ইনস্টলেশন ম্যানুয়ালটিতে সরবরাহ করা gitহবে ( প্রয়োজনীয়)।
স্থাপন
ফোল্ডারে সিএসআর ক্লোন করুন /usr/share/modsecurity-crs.3:
sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs /usr/share/modsecurity-crs.3
জিওআইপি ডাটাবেস আপগ্রেড এবং স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ করুন। (জিওআইপি ডিবি আর সিআরএসের সাথে অন্তর্ভুক্ত নেই Instead পরিবর্তে আপনাকে এটি নিয়মিত ডাউনলোড করার পরামর্শ দেওয়া হচ্ছে)) স্ক্রিপ্টটি util/upgrade.pyএই কার্যকারিতা নিয়ে আসে। আপনি ক্রোন হিসাবে নিম্নলিখিত হিসাবে এটি ব্যবহার করতে পারেন - sudo crontab -e:
0 2 * * * /usr/share/modsecurity-crs.3/util/upgrade.py --geoip --crs --cron >> /var/log/apache2_mod_security/owasp-crs-upgrade.log 2>&1
কনফিগারেশন ফাইলগুলি তৈরি করুন:
sudo cp /usr/share/modsecurity-crs.3/crs-setup.conf{.example,}
sudo cp /usr/share/modsecurity-crs.3/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf{.example,}
sudo cp /usr/share/modsecurity-crs.3/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf{.example,}
সাবধানে এই ফাইলগুলি পড়ুন এবং সম্পাদনা করুন! কমপক্ষে কমপক্ষে SecGeoLookupDBনির্দেশনা:
SecGeoLookupDB util/geo-location/GeoIP.dat
অ্যাপাচের কনফিগারেশন প্রয়োগ করুন। /etc/apache2/mods-available/security2.confএইভাবে সম্পাদনা করুন :
<IfModule security2_module>
SecDataDir /var/cache/modsecurity
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional /usr/share/modsecurity-crs.3/crs-setup.conf
IncludeOptional /usr/share/modsecurity-crs.3/rules/*.conf
</IfModule>
ফাইলটি সংরক্ষণ করুন এবং তারপরে অ্যাপাচি পুনরায় চালু করুন।
মোডসিকিউরিটি বিধি শ্বেত তালিকাভুক্ত
মোডসিকিউরিটি বিধিগুলির শ্বেত তালিকাটি নিম্নোক্ত ModSec নির্দেশের মাধ্যমে করা যেতে পারে, যা নির্দিষ্ট ডিরেক্টরি বা অবস্থানের মিলগুলির জন্য বিশ্বব্যাপী, সিস্টেম ব্যাপী বা ভার্চুয়াল হোস্টের কনফিগারেশনের মধ্যেও ব্যবহার করা যেতে পারে:
SecRuleRemoveById
SecRuleRemoveByMsg
SecRuleRemoveByTag
SecRuleUpdateTargetById
SecRuleUpdateTargetByMsg
SecRuleUpdateTargetByTag
SecRuleUpdateActionById
পিএইচপিএমআইএডমিনের mod_security2জন্য অক্ষম করুন । /etc/phpmyadmin/apache.confএইভাবে পরিবর্তন করুন :
<Directory /usr/share/phpmyadmin>
<IfModule security2_module>
SecRuleEngine Off
</IfModule>
</Directory>
নির্দিষ্ট ডিরেক্টরি জন্য নির্দিষ্ট বিধি নিষ্ক্রিয় করুন:
<Directory /var/www/html>
<IfModule security2_module>
SecRuleRemoveById 973301
</IfModule>
</Directory>
বিশ্বব্যাপী নিয়ম অক্ষম করুন। এই উদ্দেশ্যে আমাদের অবশ্যই অ্যাপাচের কনফিগারেশন ফাইলগুলিতে আমাদের নির্দেশিকা যুক্ত করতে হবে: /etc/modsecurity/z-customrules.confএকটি ভাল জায়গা।
পুরো অ্যাপাচের কনফিগারেশনের মধ্যে নিয়মগুলি অক্ষম করুন:
SecRuleRemoveById 973301 950907
একটি আইপি ঠিকানা শ্বেত তালিকাভুক্ত করুন যাতে এটি ModSecurity মাধ্যমে যেতে পারে:
SecRule REMOTE_ADDR "@ipMatch 192.168.110.1" "phase:1,nolog,allow,ctl:ruleEngine=Off,ctl:auditEngine=Off"
ডিরেক্টরি ম্যাচের মধ্যে নিয়মগুলি অক্ষম করুন:
<Directory /var/www/mediawiki/core>
SecRuleRemoveById 973301 950907
</Directory>
অবস্থানের ম্যাচের মধ্যে আইডি দ্বারা নিয়মের ক্রিয়াকলাপ আপডেট করুন :
<LocationMatch "/index.php.*">
SecRuleUpdateActionById 973301 "pass"
SecRuleUpdateActionById 950907 "pass"
</LocationMatch>
উপরের উদাহরণগুলিতে আমরা ধরে নিলাম 973301এবং 950907নিয়ম আইডিগুলি যা আমাদের ওয়েব অ্যাপ্লিকেশনগুলির স্বাভাবিক কাজকে বাধা দেয়। এর বিশ্লেষণ করে আমরা এগুলি হিসাবে নিয়মগুলি পেতে পারি modsec_audit.log।
মোডসিকিউরিটি বিধি ► ডাব্লুএসএএস ► ইপটেবল
এখানে কাস্টম সেকআরুলস কীভাবে তৈরি করা যায়, এছাড়াও আমরা কীভাবে তাদের মাধ্যমে আমরা ডাব্লুডাব্লুডাব্লু সুরক্ষা সহকারী স্ক্রিপ্ট (ডাব্লুএসএএস) কল করতে পারি তার আরও কয়েকটি উদাহরণ দেওয়া হল।
প্রাথমিক সেটআপ
আমরা একটি অতিরিক্ত প্রারম্ভে বটুয়া এর প্রয়োজন - modsecurity-assistant.sh। কারণটি হ'ল, মোডসিকিউরিটির ক্রিয়ায় execখুব সহজ এবং সীমিত বাক্য গঠন রয়েছে।
sudo wget https://raw.githubusercontent.com/pa4080/www-security-assistant/ask_ubuntu/modsecurity-assistant.sh -O /var/www-security-assistant/modsecurity-assistant.sh
sudo chmod +x /var/www-security-assistant/modsecurity-assistant.sh
আপনি যদি স্ক্রিপ্টের ভিতরে তাকান তবে আপনি কয়েকটি ভেরিয়েবল দেখতে পাবেন যা মোডসিকিউরিটি দ্বারা রফতানি করা হয়েছে। এগুলো হচ্ছে: $REQUEST_URI, $ARGS, $SERVER_NAME, $REMOTE_ADDR, $REMOTE_HOSTএবং $UNIQUE_ID। অন্যান্য ভেরিয়েবলগুলি স্ক্রিপ্টের ভিতরে ব্যাখ্যা করা হয়েছে।
কাস্টম বিধি তৈরি করুন এবং এর মাধ্যমে আমাদের স্ক্রিপ্টগুলিকে কল করুন
প্রথমে একটি নিয়ম তৈরি করি যা কার্যকর করা হবে modsecurity-assistant.sh(এবং কল করুন www-security-assistant.bash) যখন অনুরোধ ইউআরআইতে এমন একটি শব্দ থাকে যা আমাদের ব্ল্যাকলিস্টে অন্তর্ভুক্ত থাকে। /etc/modsecurity/z-customrules.confনীচে নীচের লাইনগুলি খুলুন এবং যুক্ত করুন:
# REQUEST_URI words blacklist
#
SecRule REQUEST_URI "@pmFromFile /var/www-security-assistant/modsecurity-uri-black.list" \
"id:150, log, t:lowercase, chain, \
drop, deny, status:403, redirect:'/issues.php'"
SecRule REMOTE_ADDR "!@ipMatchFromFile /var/www-security-assistant/modsecurity-ip-white.list" \
"setenv:REMOTE_HOST=%{REMOTE_HOST}, \
setenv:ARGS=%{ARGS}, \
exec:/var/www-security-assistant/modsecurity-assistant.sh"
REQUEST_URI- এই পরিবর্তনশীলটিতে বর্তমান অনুরোধ থেকে সম্পূর্ণ ইউআরআই রয়েছে। নিয়মটি আরও প্রশস্ত হবে:SecRule REQUEST_URI|ARGS|REQUEST_BODY ...
@pmFromFilemodsecurity-uri-black.listপ্রতিটি বাক্যাংশ বা শব্দ একটি নতুন লাইনে স্থাপন করা হয়েছে যেখানে বাক্যাংশের তালিকা রয়েছে এমন ফাইলটি পড়বে । আপনি লগ ফাইল থেকে আকর্ষণীয় শব্দ এবং বাক্যাংশ সংগ্রহ করতে পারেন। এর মধ্যে যদি কোনও নির্দিষ্ট মিল থাকে REQUEST_URIএবং আমাদের নিদর্শনগুলির তালিকাটি প্রয়োগ করা হবে। ফাইলটি খালি থাকতে পারে, তবে আপনাকে touchএটি তৈরি করতে হবে ( )।
logকাজের সঙ্গে এই নিয়ম জন্য লগ ফাইলের মধ্যে লগ এন্ট্রি তৈরি করবে id:150।
drop, deny(সহ status) এবং redirectক্রিয়াগুলি ক্রিয়া বিঘ্নকারী গ্রুপের সাথে সম্পর্কিত, তাদের অবশ্যই নিয়মের শুরুতে chain(যদি কোনও শৃঙ্খলা থাকে) হতে হবে। দ্বিতীয় ক্রিয়াটি প্রথমটিকে ওভাররাইড করবে এবং তৃতীয়টি দ্বিতীয়টিকে ওভাররাইড করবে, সুতরাং আপনাকে অবশ্যই পছন্দ করতে হবে যা আপনি সম্পাদন করতে চান এবং অন্যগুলি মুছতে পারেন।
chainক্রিয়াটি চেইনের পরবর্তী নিয়মকে কল করবে, নোট করুন যে দ্বিতীয় নিয়মটি নেই id।
REMOTE_ADDR অনুরোধের আইপি ঠিকানা রয়েছে।
@ipMatchFromFilemodsecurity-ip-white.listআইপি অ্যাড্রেসের সাদা তালিকা রয়েছে এমন ফাইলটিতে নতুন লাইনে পৃথক করা হবে। সিআইডিআর এন্ট্রি গ্রহণযোগ্য। কারণ বিঘ্নিত ক্রিয়া সর্বদা চেইনের শীর্ষস্থানীয় নিয়মে এটি প্রয়োগ করা হবে, তবে নির্দিষ্ট আইপি এই সাদা তালিকায় থাকলে execক্রিয়াটি প্রয়োগ করা হবে না। ফাইলটি খালি থাকতে পারে, তবে আপনাকে touchএটি তৈরি করতে হবে ( )।
execক্রিয়া আমাদের বাহ্যিক স্ক্রিপ্ট কল করবে। এই ক্রিয়াটি বাধাদানকারী নয় এবং বর্তমান বিধিটি সত্য হয়ে গেলে কার্যকর করা হবে। এই ক্রিয়াটি প্রয়োগ করা হলে দূরবর্তী আইপিটি আমাদের স্ক্রিপ্টগুলির মাধ্যমে প্রক্রিয়া করা হবে।
setenvএই ক্রিয়াটি envvars হিসাবে নির্দিষ্ট অভ্যন্তরীণ ভেরিয়েবলগুলি =%{...} রফতানি করবে, রফতানির নামগুলি ইন্টার্নালগুলির চেয়ে আলাদা হতে পারে। কিছু ভেরিয়েবলগুলি ম্যানুয়ালি রফতানি করতে হবে, কিছু অন্যান্য স্বয়ংক্রিয়ভাবে রফতানি করা হবে - সম্ভবত এটি একটি ছোট বাগ (কিছু ক্ষেত্রে একই নামের সাথে ম্যানুয়াল এক্সপোর্ট, উদাহরণস্বরূপ setenv:REQUEST_URI=%{REQUEST_URI}, রফতানি ভেরিয়েবলের ফাঁকা মান ঘটায়)।
চেক আপ
আসুন ধরে নেওয়া যাক আপনার সার্ভারে জুমলা নেই, ফাইলটি সম্পাদনা করুন modsecurity-uri-black.listএবং সামগ্রী সহ একটি লাইন যুক্ত করুন /joomla। তারপরে আপনার ব্রাউজারে টাইপ করুন https://exemple.com/joomla। আপনাকে পুনঃনির্দেশিত করা উচিত এবং Iptables এর মাধ্যমে অবরুদ্ধ করা উচিত। রেকর্ডগুলি সাফ করুন sudo www-security-assistant.bash <your-ip> --DROP-CLEAR 'some note', আপনার আইপি যুক্ত করুন modsecurity-ip-white.listএবং অনুশীলনটি আবার করুন। এখন আপনাকে পুনঃনির্দেশিত করা উচিত, তবে অবরুদ্ধ নয়।
আমাদের স্ক্রিপ্টগুলি OWASP কোর রুল সেট 3.x এর সাথে সংযুক্ত করুন
এটি করার জন্য আমরা অ্যানোমালি মোড বিধিগুলির নিয়ম (949110 এবং 959100) আপডেট করব । এই উদ্দেশ্যে ফাইলটি সম্পাদনা করুন /usr/share/modsecurity-crs.3/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.confএবং নীচের অংশে পরবর্তী লাইনগুলি যুক্ত করুন:
# -- Anomaly Mode - Update actions by ID -----
#
SecRuleUpdateActionById 949110 "t:none, drop, deny, status:403, redirect:'/issues.php', \
setenv:REMOTE_HOST=%{REMOTE_HOST}, setenv:ARGS=%{ARGS}, \
exec:/var/www-security-assistant/modsecurity-assistant.sh"
SecRuleUpdateActionById 959100 "t:none, drop, deny, status:403, redirect:'/issues.php', \
setenv:REMOTE_HOST=%{REMOTE_HOST}, setenv:ARGS=%{ARGS}, \
exec:/var/www-security-assistant/modsecurity-assistant.sh"
# -- Anomaly Mode - Whitelist some URI and IP addresses -----
#
SecRule REQUEST_URI "^/wp-admin/admin-ajax.php*|^/index\.php\?title=.*&action=(submit|raw&ctype=text/javascript|raw&ctype=text/css)$" \
"id:'999010', t:none, phase:1, pass, \
ctl:ruleRemoveById=949110, \
ctl:ruleRemoveById=959100"
SecRule REMOTE_ADDR "@ipMatchFromFile /var/www-security-assistant/modsecurity-ip-white.list" \
"id:'999020', t:none, phase:1, pass, \
ctl:ruleRemoveById=949110, \
ctl:ruleRemoveById=959100"
চেক আপ
কনফিগারেশন পরিবর্তনগুলি প্রয়োগ করতে অ্যাপাচি পুনরায় চালু (অথবা পুনরায় লোড) করতে ভুলবেন না। পরীক্ষার সময় সময় সময় রেকর্ড সাফ করতে ভুলবেন না, অন্যথায় আপনি স্থায়ীভাবে অবরুদ্ধ করা যেতে পারে :-)
ডিরেক্টরি traversal আক্রমণ অনুকরণ:
https://example.com/?abc=../../../ # This should be redirected and blocked
https://example.com/wp-admin/admin-ajax.php?abc=../../../ # This should pass because of the whitelist rule
এসকিউএল ইনজেকশন আক্রমণ অনুকরণ:
https://example.com/?username=1'%20or%20'1'%20=%20'1&password=1'%20or%20'1'%20=%20'1
https://example.com/index.php?username=1'%20or%20'1'%20=%20'1'))/*&password=foo
মোডসিকিউরিটি এবং অ্যাপাচি লগ ফাইল
অ্যাপাচি ওয়েব সার্ভারটি কীভাবে এটি কাজ করে সে সম্পর্কে গুরুত্বপূর্ণ তথ্য দিতে সার্ভার প্রশাসককে কনফিগার করা যেতে পারে ... অ্যাডমিনিস্ট্রেটরকে প্রতিক্রিয়া জানানোর মূল উপায়টি লগ ফাইল ব্যবহারের মাধ্যমে। আরও পড়ুন ...
মোডসিকিউরিটির শক্তিশালী লগিং প্রক্রিয়া রয়েছে। নির্দেশের দ্বারা SecGuardianLogএটি একটি লগ ফিড সরবরাহ করে যা বাহ্যিক স্ক্রিপ্টগুলির সাথে বিশেষভাবে কাজ করার জন্য ডিজাইন করা হয়েছিল।
বর্তমানে শুধুমাত্র সাথে কাজ করতে পারে টুল অভিভাবক লগিং হয়
httpd-guardianযার অংশ, এ্যাপাচি httpd 'র সরঞ্জাম প্রকল্পের । httpd-guardianটুল সেবা আক্রমণের অস্বীকার বিরুদ্ধে রক্ষা করতে ডিজাইন করা হয়েছে। এটি blacklist toolআইপটবেবল-ভিত্তিক ... ফায়ারওয়াল, আক্রমণাত্মক আইপি অ্যাড্রেসগুলি ব্ল্যাকলিস্টিংয়ের সাথে ইন্টারঅ্যাক্ট করতে ব্যবহার করে । আরও পড়ুন ...
মোডসিকিউরিটি লগ ফাইলগুলি ail ফেইল 2 বন ► ইপটেবল
অ্যাপাচের লগ ফাইলগুলির ডেটা পার্সিংয়ের জন্য ফয়েল 2ব্যান সেটআপ করা সম্ভব। modsec_audit.logসম্ভবত সেরা পছন্দ, তবে আমরা যে বিভাগগুলির বিষয়ে কথা বলি তাও দেখুন SecGuardianLog।
যত্ন নিন যে SecAuditLogRelevantStatusএ /etc/modsecurity/modsecurity.confমন্তব্য করা হয়। অন্যথায় 404 টি ত্রুটি পৃষ্ঠা প্রাপ্ত প্রত্যেককে ব্যর্থ 2 ব্যাঙ্ক দ্বারা অবরুদ্ধ করা হবে।
SecAuditEngine RelevantOnly
#SecAuditLogRelevantStatus "^(?:5|4(?!04))"
বর্তমানে Fail2Ban কোনওভাবেই এই প্রকল্পে প্রয়োগ করা হয় না।
ModSecGuardianLog ► HTTPD- অভিভাবক ► WSAS ► Iptables ►
httpd-guardian- অ্যাপাচি সুরক্ষা, কপিরাইট (সি) 2005 আইভান রিস্টিক - পর্যবেক্ষণের অনুরোধগুলি পর্যবেক্ষণ করে ডস-এর আক্রমণগুলি সনাক্ত করুন - পাইপযুক্ত লগিং পদ্ধতির মাধ্যমে সমস্ত ওয়েব সার্ভারের অনুরোধগুলি পর্যবেক্ষণ করার জন্য ডিজাইন করা হয়েছে। এটি প্রতিটি আইপি ঠিকানা থেকে প্রেরিত অনুরোধের উপর নজর রাখে ... httpd- অভিভাবক হয় একটি সতর্কতা নির্গত করতে পারেন বা আইপি ঠিকানাটি ব্লক করতে কোনও স্ক্রিপ্ট কার্যকর করতে পারেন ...
এই স্ক্রিপ্টটি অ্যাপাচি 2 লগিং প্রক্রিয়া , বা মোডসিকিউরিটির (আরও ভাল) সাথে
ব্যবহার করা যেতে পারে ।
বর্তমান পরিস্থিতিগুলির মধ্যে ইনস্টলেশন এবং সেটআপ
এটি ডাউনলোড করুন httpd-guardianএবং কার্যকর করুন:
sudo wget https://raw.githubusercontent.com/pa4080/www-security-assistant/ask_ubuntu/httpd-guardian.pl -O /var/www-security-assistant/httpd-guardian.pl
sudo chmod +x /var/www-security-assistant/httpd-guardian.pl
98-119স্ক্রিপ্টটি কীভাবে আমাদের ডাব্লুএসএএস স্ক্রিপ্টের সাথে সংযুক্ত রয়েছে তা দেখতে লাইনগুলি পড়ুন ।
অ্যাপাচের কনফিগারেশন ( /etc/modsecurity/modsecurity.conf) এর মধ্যে নিম্নলিখিত পরিবর্তনগুলি প্রয়োগ করুন , তারপরে এটি পুনরায় চালু করুন:
#SecGuardianLog /var/log/apache2_mod_security/modsec_guardian.log
SecGuardianLog "|/var/www-security-assistant/httpd-guardian.pl"
চেক আপ
স্ক্রিপ্টটি পরীক্ষার জন্য মোডেভাসিভ অক্ষম করুন ( sudo a2dismod evasiveএটি পরে সক্ষম করতে ভুলবেন না) এবং অ্যাপাচি পুনরায় চালু করুন। তারপরে tailএক্সিকিউটিভ লগ:
tail -F /var/www-security-assistant/www-security-assistant.execlog
এবং অন্য একটি উদাহরণ থেকে ডস আক্রমণ করুন, উদাহরণস্বরূপ abএইভাবে ব্যবহার করুন :
for i in {1..20}; do (ab -n 200 -c 10 https://example.com/ &); done
ModSecGuardianLog ► কাস্টম বিশ্লেষণ ► WSAS ► Iptables
এখানে একটি সাধারণ স্ক্রিপ্ট উপস্থাপন করা হয়েছে, নামক httpd-custom-analyze.bashএটি বিশেষ কিছু নয় তবে এটি একটি দুর্দান্ত উদাহরণ হতে পারে। স্ক্রিপ্টের শরীরে এর বৈশিষ্ট্যগুলি বর্ণিত হয়েছে।
ইনস্টলেশন এবং সেটআপ
এটি ডাউনলোড করুন httpd-custom-analyze.bashএবং কার্যকর করুন:
sudo wget https://raw.githubusercontent.com/pa4080/www-security-assistant/ask_ubuntu/httpd-custom-analyze.bash -O /var/www-security-assistant/httpd-custom-analyze.bash
sudo chmod +x /var/www-security-assistant/httpd-custom-analyze.bash
অ্যাপাচের কনফিগারেশন ( /etc/modsecurity/modsecurity.conf) এর মধ্যে নিম্নলিখিত পরিবর্তনগুলি প্রয়োগ করুন এবং এটি পুনরায় চালু করুন:
#SecGuardianLog /var/log/apache2_mod_security/modsec_guardian.log
#SecGuardianLog "|/var/www-security-assistant/httpd-guardian.pl"
SecGuardianLog "|/var/www-security-assistant/httpd-custom-analyze.bash"
প্রান্তিকতাটি পৌঁছে গেলে স্ক্রিপ্ট ডাব্লুএসএএস কল করবে - পঠিত লাইন 86এবং 35।
উভয় httpd-স্ক্রিপ্ট একই সাথে সম্পাদনা modsecurity.confএবং SecGuardianLogউভয় পাইপ পেতে।
একটি পরীক্ষা সম্পাদন করতে উপরের বিভাগের টিপস অনুসরণ করুন।