ক্লাউড আর্মার প্রি-কনফিগার করা WAF নিয়ম কোডল্যাব

1. ভূমিকা

নমস্কার! ক্লাউড আর্মার প্রি-কনফিগার করা WAF নিয়ম কোডল্যাবে স্বাগতম!

Google ক্লাউড আর্মার হল Google-এর এন্টারপ্রাইজ এজ নেটওয়ার্ক সিকিউরিটি সলিউশন যা DDOS সুরক্ষা, WAF নিয়ম প্রয়োগ এবং স্কেলে অভিযোজিত ব্যবস্থাপনা প্রদান করে।

ক্লাউড আর্মার OWASP শীর্ষ 10 ওয়েব অ্যাপ্লিকেশন সুরক্ষা দুর্বলতাগুলির বিরুদ্ধে প্রশমিত করার জন্য পূর্ব-কনফিগার করা WAF নিয়ম সেটগুলিকে প্রসারিত করেছে৷ নিয়ম সেটগুলি স্থানীয় ফাইল অন্তর্ভুক্তি (lfi), দূরবর্তী ফাইল অন্তর্ভুক্তি (rfi), রিমোট কোড এক্সিকিউশন (rce), সহ কিছু সাধারণ ওয়েব অ্যাপ্লিকেশন নিরাপত্তা ঝুঁকি থেকে রক্ষা করার জন্য OWASP মোডসিকিউরিটি মূল নিয়ম সেট সংস্করণ 3.0.2-এর উপর ভিত্তি করে তৈরি করা হয়েছে। এবং আরো অনেক

এই কোডল্যাবে, আপনি Google ক্লাউড আর্মার WAF নিয়মগুলি ব্যবহার করে কিছু সাধারণ দুর্বলতাগুলি কীভাবে প্রশমিত করবেন তা শিখবেন৷

আপনি কি শিখবেন

  • কোনও পরিষেবাকে সমর্থন করার জন্য কীভাবে একটি ইনস্ট্যান্স গ্রুপ এবং একটি গ্লোবাল লোড ব্যালেন্সার সেট আপ করবেন
  • lfi, rce, স্ক্যানার, প্রোটোকল আক্রমণ এবং সেশন ফিক্সেশনের বিরুদ্ধে সুরক্ষার জন্য পূর্ব-কনফিগার করা WAF নিয়মগুলির সাথে ক্লাউড আর্মার সুরক্ষা নীতিগুলি কীভাবে কনফিগার করবেন
  • ক্লাউড আর্মার লগগুলি পর্যবেক্ষণ করে একটি আক্রমণ প্রশমিত করেছে তা কীভাবে যাচাই করবেন।

আপনি কি প্রয়োজন হবে

  • গুগল কম্পিউট ইঞ্জিনের প্রাথমিক জ্ঞান ( কোডল্যাব )
  • বেসিক নেটওয়ার্কিং এবং TCP/IP জ্ঞান
  • মৌলিক ইউনিক্স/লিনাক্স কমান্ড লাইন জ্ঞান
  • Google ক্লাউডে নেটওয়ার্কিংয়ের সাথে GCP-এ নেটওয়ার্কিং-এর একটি ট্যুর সম্পূর্ণ করা সহায়ক
  • (ঐচ্ছিক) SQL ইনজেকশন, আইপি-ভিত্তিক, এবং ভূ-ভিত্তিক নিয়মগুলির সাথে কাজের চাপ রক্ষা করতে শেখার জন্য Cloudnet20 ক্লাউড আর্মার ল্যাবটি সম্পূর্ণ করুন৷

কোডল্যাব টপোলজি এবং ব্যবহার কেস

119e13312f3cec25.jpeg

চিত্র 1 - ক্লাউড আর্মার WAF নিয়ম কোডল্যাব টপোলজি

OWASP জুস শপ অ্যাপ্লিকেশনটি নিরাপত্তা প্রশিক্ষণ এবং সচেতনতার জন্য উপযোগী, কারণ এতে OWASP শীর্ষ 10 নিরাপত্তা দুর্বলতার উদাহরণ রয়েছে- নকশা অনুসারে। একজন আক্রমণকারী পরীক্ষার উদ্দেশ্যে এটিকে কাজে লাগাতে পারে। এই কোডল্যাবে, আমরা ক্লাউড আর্মার WAF নিয়মগুলির সাথে অ্যাপ্লিকেশনটিকে সুরক্ষিত করে কিছু অ্যাপ্লিকেশন আক্রমণ প্রদর্শন করতে এটি ব্যবহার করব। অ্যাপ্লিকেশনটি একটি Google ক্লাউড লোড ব্যালেন্সার দ্বারা ফ্রন্ট করা হবে, যার উপর ক্লাউড আর্মার সুরক্ষা নীতি এবং নিয়মগুলি প্রয়োগ করা হবে৷ এটি সর্বজনীন ইন্টারনেটে পরিবেশন করা হবে এইভাবে প্রায় যেকোনো জায়গা থেকে পৌঁছানো যায় এবং ক্লাউড আর্মার এবং ভিপিসি ফায়ারওয়াল নিয়ম ব্যবহার করে সুরক্ষিত।

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

আপনি শুরু করার আগে

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্প আইডি সেট আপ করা আছে

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

এপিআই সক্ষম করুন

সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com        
gcloud services enable monitoring.googleapis.com 

3. ভিপিসি নেটওয়ার্ক তৈরি করুন

একটি VPC নেটওয়ার্ক তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute networks create ca-lab-vpc --subnet-mode custom

আউটপুট

Created
NAME        SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
ca-lab-vpc  CUSTOM       REGIONAL

একটি সাবনেট তৈরি করুন

ক্লাউড শেল থেকে

gcloud compute networks subnets create ca-lab-subnet \
        --network ca-lab-vpc --range 10.0.0.0/24 --region us-central1

আউটপুট

Created 
NAME           REGION       NETWORK       RANGE
ca-lab-subnet  us-central1  ca-lab-vpc    10.0.0.0/24

ভিপিসি ফায়ারওয়াল নিয়ম তৈরি করুন

ভিপিসি এবং সাবনেট তৈরি করার পরে, এখন আপনি কয়েকটি ফায়ারওয়াল নিয়ম সেট আপ করবেন। প্রথম ফায়ারওয়াল নিয়মটি পোর্ট 3000-এ সমস্ত আইপি-কে পরীক্ষার অ্যাপ্লিকেশনের ওয়েবসাইটের বাহ্যিক আইপি অ্যাক্সেস করার অনুমতি দেওয়ার জন্য ব্যবহার করা হবে। দ্বিতীয় ফায়ারওয়াল নিয়মটি লোড ব্যালেন্সারের উৎস আইপি থেকে স্বাস্থ্য-পরীক্ষার অনুমতি দেওয়ার জন্য ব্যবহার করা হবে।

ক্লাউড শেল থেকে

gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc

আউটপুট

Creating firewall...done.
NAME           NETWORK     DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
allow-js-site  ca-lab-vpc  INGRESS    1000      tcp:3000        False

Google হেলথ-চেক রেঞ্জ থেকে স্বাস্থ্য-পরীক্ষার অনুমতি দিতে FW নিয়ম তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute firewall-rules create allow-health-check \
    --network=ca-lab-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-healthcheck \
    --rules=tcp

আউটপুট

Creating firewall...done.
NAME                NETWORK     DIRECTION  PRIORITY  ALLOW  DENY  DISABLED
allow-health-check  ca-lab-vpc  INGRESS    1000      tcp          False

4. পরীক্ষা অ্যাপ্লিকেশন সেট আপ করুন

পরবর্তী ধাপ হল পরীক্ষা অ্যাপ্লিকেশন তৈরি করা, এই ক্ষেত্রে OWASP জুস শপ ওয়েব সার্ভার।

কম্পিউট ইন্সট্যান্স তৈরি করার সময়, সার্ভারের উপযুক্ত পরিষেবা রয়েছে তা নিশ্চিত করতে আমরা একটি কন্টেইনার ইমেজ ব্যবহার করছি। এই সার্ভারটি us-central1-c-এ স্থাপন করা হবে এবং এতে একটি নেটওয়ার্ক ট্যাগ থাকবে যা স্বাস্থ্য পরীক্ষার অনুমতি দেবে।

OWASP জুস শপ অ্যাপ্লিকেশন তৈরি করুন

অরক্ষিত অ্যাপ্লিকেশন হিসাবে পরিবেশন করতে ওপেন সোর্সটি সুপরিচিত OWASP জুস শপ অ্যাপ্লিকেশনটি ব্যবহার করুন। আপনি তাদের ওয়েবসাইটের মাধ্যমে OWASP নিরাপত্তা চ্যালেঞ্জগুলি করতে এই অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন৷

ক্লাউড শেল থেকে

gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
     --network ca-lab-vpc \
     --subnet ca-lab-subnet \
     --private-network-ip=10.0.0.3 \
     --machine-type n1-standard-2 \
     --zone us-central1-c \
     --tags allow-healthcheck

আউটপুট

NAME                  ZONE           MACHINE_TYPE   PREEMPTIBLE  
owasp-juice-shop-app  us-central1-c  n1-standard-2               

INTERNAL_IP  EXTERNAL_IP     STATUS
10.0.0.3     <public IP>     RUNNING

ক্লাউড লোড ব্যালেন্সার উপাদান সেট আপ করুন: উদাহরণ গ্রুপ

অব্যবস্থাপিত উদাহরণ গ্রুপ তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute instance-groups unmanaged create juice-shop-group \
    --zone=us-central1-c

আউটপুট

NAME              LOCATION       SCOPE  NETWORK  MANAGED  INSTANCES
juice-shop-group  us-central1-c  zone                     0

জুস শপ জিসিই ইনস্ট্যান্স আনম্যানেজড ইনস্ট্যান্স গ্রুপে যোগ করুন।

ক্লাউড শেল থেকে

gcloud compute instance-groups unmanaged add-instances juice-shop-group \
    --zone=us-central1-c \
    --instances=owasp-juice-shop-app

আউটপুট

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

নামযুক্ত পোর্টটি জুস শপ অ্যাপ্লিকেশনটির সাথে সেট করুন।

ক্লাউড শেল থেকে

gcloud compute instance-groups unmanaged set-named-ports \
juice-shop-group \
   --named-ports=http:3000 \
   --zone=us-central1-c

আউটপুট

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

এখন যেহেতু আপনি অব্যবস্থাপিত উদাহরণ গোষ্ঠী তৈরি করেছেন, পরবর্তী পদক্ষেপটি একটি স্বাস্থ্য পরীক্ষা, ব্যাকএন্ড পরিষেবা, URL মানচিত্র, লক্ষ্য প্রক্সি এবং ফরওয়ার্ড করার নিয়ম তৈরি করা।

ক্লাউড লোড ব্যালেন্সার উপাদান সেট আপ করুন: স্বাস্থ্য পরীক্ষা

জুস শপ পরিষেবা পোর্টের জন্য স্বাস্থ্য-পরীক্ষা তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute health-checks create tcp tcp-port-3000 \
        --port 3000

আউটপুট

Created 
NAME           PROTOCOL
tcp-port-3000  TCP

ক্লাউড লোড ব্যালেন্সার উপাদান সেট আপ করুন: ব্যাকএন্ড পরিষেবা

ব্যাকএন্ড পরিষেবা পরামিতি তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute backend-services create juice-shop-backend \
        --protocol HTTP \
        --port-name http \
        --health-checks tcp-port-3000 \
        --enable-logging \
        --global 

আউটপুট

NAME                BACKENDS  PROTOCOL
juice-shop-backend            HTTP

ব্যাকএন্ড পরিষেবাতে জুস শপ ইনস্ট্যান্স গ্রুপ যোগ করুন।

ক্লাউড শেল থেকে

 gcloud compute backend-services add-backend juice-shop-backend \
        --instance-group=juice-shop-group \
        --instance-group-zone=us-central1-c \
        --global

আউটপুট

Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].

Cl oud লোড ব্যালেন্সার উপাদান সেট আপ করুন: URL মানচিত্র

ব্যাকএন্ডে পাঠাতে URL মানচিত্র তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute url-maps create juice-shop-loadbalancer \
        --default-service juice-shop-backend

আউটপুট

NAME                     DEFAULT_SERVICE
juice-shop-loadbalancer  backendServices/juice-shop-backend

Cl oud লোড ব্যালেন্সার উপাদান সেট আপ করুন: টার্গেট প্রক্সি

URL মানচিত্রের সামনে লক্ষ্য প্রক্সি তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute target-http-proxies create juice-shop-proxy \
        --url-map juice-shop-loadbalancer

আউটপুট

NAME              URL_MAP
juice-shop-proxy  juice-shop-loadbalancer

ক্লাউড লোড ব্যালেন্সার উপাদান সেট আপ করুন: ফরওয়ার্ডিং নিয়ম

লোড ব্যালেন্সারের জন্য ফরওয়ার্ডিং নিয়ম তৈরি করুন।

ক্লাউড শেল থেকে

gcloud compute forwarding-rules create juice-shop-rule \
        --global \
        --target-http-proxy=juice-shop-proxy \
        --ports=80

আউটপুট

Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].

জুস শপের পরিষেবা অনলাইনে আছে কিনা তা যাচাই করুন

ক্লাউড শেল থেকে

PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule  --global --format="value(IPAddress)")"

ক্লাউড শেল থেকে

echo $PUBLIC_SVC_IP

আউটপুট

<public VIP of service>

চালিয়ে যাওয়ার আগে কয়েক মিনিট অপেক্ষা করুন, অন্যথায় আপনি একটি HTTP/1.1 404 পাওয়া যায়নি প্রতিক্রিয়া পুনরুদ্ধার করতে পারেন।

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP

আউটপুট

HTTP/1.1 200 OK
<...>

ব্রাউজারে গিয়েও দেখতে পারেন জুসের দোকান!

428c18eee6708c28.png

আমরা এখন জুস শপের দুর্বলতা এবং ক্লাউড আর্মার WAF নিয়ম সেটের মাধ্যমে কীভাবে তাদের থেকে রক্ষা করা যায় তা অন্বেষণ করতে প্রস্তুত।

5. পরিচিত দুর্বলতা প্রদর্শন করুন

সময় বাঁচানোর স্বার্থে, আমরা ক্লাউড আর্মার WAF নিয়মগুলি ঘনীভূত পদক্ষেপে প্রচার করার আগে এবং পরে রাজ্যগুলি প্রদর্শন করব।

একটি LFI দুর্বলতা পর্যবেক্ষণ করুন: পাথ ট্রাভার্সাল

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

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP/ftp

আউটপুট

HTTP/1.1 200 OK
<...>

এবং এছাড়াও লক্ষ্য করুন যে পাথ ট্রাভার্সাল কাজ করে:

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP/ftp/../

আউটপুট

HTTP/1.1 200 OK
<...>

একটি RCE দুর্বলতা পর্যবেক্ষণ করুন

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

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

আউটপুট

HTTP/1.1 200 OK
<...>

আপনি সম্পূর্ণ আউটপুট পর্যবেক্ষণ করতে কার্ল পতাকা অপসারণ করতে পারেন।

একটি সুপরিচিত স্ক্যানারের অ্যাক্সেস পর্যবেক্ষণ করুন

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

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

আউটপুট

HTTP/1.1 200 OK
<...>

একটি প্রোটোকল আক্রমণ পর্যবেক্ষণ করুন: HTTP বিভাজন

কিছু ওয়েব অ্যাপ্লিকেশন প্রতিক্রিয়াগুলিতে হেডার তৈরি করতে ব্যবহারকারীর কাছ থেকে ইনপুট ব্যবহার করে। যদি অ্যাপ্লিকেশনটি সঠিকভাবে ইনপুটটি ফিল্টার না করে, তাহলে একজন আক্রমণকারী সম্ভাব্য ক্রম %0d%0a (সিআরএলএফ সিকোয়েন্স যা বিভিন্ন লাইন আলাদা করতে ব্যবহৃত হয়) দিয়ে ইনপুট প্যারামিটারকে বিষাক্ত করতে পারে। তারপরে প্রতিক্রিয়াটিকে পার্স করার জন্য যে কোনও কিছুর দ্বারা দুটি প্রতিক্রিয়া হিসাবে ব্যাখ্যা করা যেতে পারে, যেমন একটি মধ্যস্থতাকারী প্রক্সি সার্ভার, পরবর্তী অনুরোধগুলিতে সম্ভাব্য মিথ্যা সামগ্রী পরিবেশন করে৷ ইনপুট প্যারামিটারে ক্রম %0d%0a সন্নিবেশ করুন, যা একটি বিভ্রান্তিকর পৃষ্ঠা পরিবেশন করতে পারে।

ক্লাউড শেল থেকে

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

আউটপুট

HTTP/1.1 200 OK
<...>

সেশন ফিক্সেশন পর্যবেক্ষণ করুন

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

আউটপুট

HTTP/1.1 200 OK
<...>

6. ক্লাউড আর্মার WAF নিয়ম সংজ্ঞায়িত করুন

পূর্বে কনফিগার করা WAF নিয়মগুলি তালিকাভুক্ত করুন:

ক্লাউড শেল থেকে

gcloud compute security-policies list-preconfigured-expression-sets

আউটপুট

EXPRESSION_SET
Sqli-canary
RULE_ID
    owasp-crs-v030001-id942110-sqli
    owasp-crs-v030001-id942120-sqli
<...>

ক্লাউড আর্মার নিরাপত্তা নীতি তৈরি করুন

ক্লাউড শেল থেকে:

gcloud compute security-policies create block-with-modsec-crs \
    --description "Block with OWASP ModSecurity CRS"

নিরাপত্তা নীতির ডিফল্ট নিয়ম আপডেট করুন

মনে রাখবেন যে ডিফল্ট নিয়ম অগ্রাধিকারের একটি সংখ্যাসূচক মান রয়েছে 2147483647

ক্লাউড শেল থেকে:

gcloud compute security-policies rules update 2147483647 \
    --security-policy block-with-modsec-crs \
    --action "deny-403"

যেহেতু ডিফল্ট নিয়মটি অ্যাকশন অস্বীকারের সাথে কনফিগার করা হয়েছে, তাই আমাদের অবশ্যই আপনার আইপি থেকে অ্যাক্সেসের অনুমতি দিতে হবে। অনুগ্রহ করে আপনার পাবলিক আইপি (কার্ল, আইপমনকি, হোয়াটসমিপ, ইত্যাদি) খুঁজুন।

ক্লাউড শেল থেকে:

MY_IP=$(curl ifconfig.me)

আপনার আইপি থেকে অ্যাক্সেসের অনুমতি দেওয়ার জন্য প্রথম নিয়ম যোগ করুন (নীচে আপনার আইপি ঢোকান)

ক্লাউড শেল থেকে:

gcloud compute security-policies rules create 10000 \
    --security-policy  block-with-modsec-crs  \
    --description "allow traffic from my IP" \
    --src-ip-ranges "$MY_IP/32" \
    --action "allow"

LFI আক্রমণ ব্লক করতে নিরাপত্তা নীতি আপডেট করুন

OWASP ModSecurity Core Rule সেটটি প্রয়োগ করুন যা স্থানীয় ফাইল অন্তর্ভুক্তির জন্য পাথ ট্রাভার্সাল প্রতিরোধ করে।

ক্লাউড শেল থেকে:

gcloud compute security-policies rules create 9000 \
    --security-policy block-with-modsec-crs  \
    --description "block local file inclusion" \
     --expression "evaluatePreconfiguredExpr('lfi-stable')" \
    --action deny-403

রিমোট কোড এক্সিকিউশন (আরসিই) ব্লক করতে নিরাপত্তা নীতি আপডেট করুন

OWASP ModSecurity Core Rule সেট অনুসারে, কমান্ড ইনজেকশন সহ rce-এর জন্য যে নিয়মগুলি দেখায় তা প্রয়োগ করুন৷ সাধারণ OS কমান্ড সনাক্ত করা হয় এবং ব্লক করা হয়।

ক্লাউড শেল থেকে:

gcloud compute security-policies rules create 9001 \
    --security-policy block-with-modsec-crs  \
    --description "block rce attacks" \
     --expression "evaluatePreconfiguredExpr('rce-stable')" \
    --action deny-403

নিরাপত্তা স্ক্যানার ব্লক করতে নিরাপত্তা নীতি আপডেট করুন

সুপরিচিত নিরাপত্তা স্ক্যানার, স্ক্রিপ্টিং HTTP ক্লায়েন্ট এবং ওয়েব ক্রলার ব্লক করতে OWASP ModSecurity Core Rule সেট প্রয়োগ করুন।

ক্লাউড শেল থেকে:

gcloud compute security-policies rules create 9002 \
    --security-policy block-with-modsec-crs  \
    --description "block scanners" \
     --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
    --action deny-403

প্রোটোকল আক্রমণ ব্লক করতে নিরাপত্তা নীতি আপডেট করুন

OWASP ModSecurity Core Rule Set অনুযায়ী, ক্যারেজ রিটার্ন (CR) %0d এবং Linefeed (LF) %0a অক্ষর এবং HTTP অনুরোধ চোরাচালানের মতো অন্যান্য ধরণের প্রোটোকল আক্রমণের জন্য যে নিয়মগুলি দেখায় তা প্রয়োগ করুন৷

ক্লাউড শেল থেকে:

gcloud compute security-policies rules create 9003 \
    --security-policy block-with-modsec-crs  \
    --description "block protocol attacks" \
     --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
    --action deny-403

সেশন ফিক্সেশন ব্লক করতে নিরাপত্তা নীতি আপডেট করুন

OWASP ModSecurity Core Rule সেট অনুসারে, নিয়মগুলি প্রয়োগ করুন যা...

ক্লাউড শেল থেকে:

gcloud compute security-policies rules create 9004 \
    --security-policy block-with-modsec-crs  \
    --description "block session fixation attacks" \
     --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
    --action deny-403

ব্যাকএন্ড পরিষেবাতে নিরাপত্তা নীতি সংযুক্ত করুন

ক্লাউড শেল থেকে:

gcloud compute backend-services update juice-shop-backend \
    --security-policy block-with-modsec-crs \
    --global

নিয়মগুলি প্রচার করতে কিছু সময় নিতে পারে (কিন্তু 10 মিনিটের বেশি নয়)। পর্যাপ্ত সময় অতিক্রান্ত হওয়ার পর আত্মবিশ্বাসী হলে, পরবর্তী ধাপে ক্লাউড আর্মার WAF নিয়ম প্রয়োগ নিশ্চিত করতে পূর্বে প্রদর্শিত দুর্বলতাগুলি পরীক্ষা করুন।

7. OWASP ModSecurity Core Rule সেটের সাথে ক্লাউড আর্মার সুরক্ষা পর্যবেক্ষণ করুন

LFI দুর্বলতা প্রশমিত হয়েছে তা নিশ্চিত করুন

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP/?a=../

আউটপুট

HTTP/1.1 403 Forbidden
<...>

RCE আক্রমণ প্রশমিত হয়েছে নিশ্চিত করুন

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

আউটপুট

HTTP/1.1 403 Forbidden
<..>

সুপরিচিত স্ক্যানার সনাক্তকরণ নিশ্চিত করুন

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

আউটপুট

HTTP/1.1 403 Forbidden
<..>

একটি প্রোটোকল আক্রমণ প্রশমিত হয়েছে নিশ্চিত করুন

OWASP ModSecurity Core Rule Set ver.3.0.2 অনুযায়ী, প্রোটোকল আক্রমণ প্রশমিত হয়

ক্লাউড শেল থেকে

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

আউটপুট

HTTP/1.1 403 Forbidden
<..>

সেশন ফিক্সেশন প্রচেষ্টা ব্লক করা হয়েছে নিশ্চিত করুন

ক্লাউড শেল থেকে

curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

আউটপুট

HTTP/1.1 403 Forbidden
<..>

8. ক্লাউড আর্মার নিরাপত্তা নিয়ম পর্যালোচনা করুন

এখন যেহেতু আমরা নিরাপত্তা নীতি তৈরি করেছি, আসুন ঠিক কী নিয়মগুলি কনফিগার করা হয়েছে তা একবার দেখে নেওয়া যাক৷

d00e4102fc89e44f.png

নিয়মগুলি অগ্রাধিকার দ্বারা মূল্যায়ন করা হয়: নিম্ন সংখ্যাগুলি প্রথমে মূল্যায়ন করা হয় এবং একবার ট্রিগার করা হলে, উচ্চ অগ্রাধিকার মান সহ নিয়মগুলির জন্য প্রক্রিয়াকরণ চলতে থাকে না৷

  • অগ্রাধিকার 9000 - ব্লক LFI (স্থানীয় ফাইল অন্তর্ভুক্তি)
  • অগ্রাধিকার 9001 - ব্লক RCE (রিমোট কোড এক্সিকিউশন/কমান্ড ইনজেকশন)
  • অগ্রাধিকার 9002 - ব্লক স্ক্যানার সনাক্ত করা হয়েছে
  • অগ্রাধিকার 9003 - ব্লক প্রোটোকল আক্রমণ যেমন HTTP বিভাজন এবং HTTP পাচার
  • অগ্রাধিকার 9004 - ব্লক সেশন ফিক্সেশন আক্রমণ
  • অগ্রাধিকার 10000 - আপনার আইপিকে ওয়েবসাইট অ্যাক্সেস করার অনুমতি দিন
  • অগ্রাধিকার ডিফল্ট - অস্বীকার করুন।

*লক্ষ্য করুন "আপনার আইপিকে অনুমতি দিন" নিয়মটি সাইটে অ্যাক্সেসের অনুমতি দেওয়ার জন্য সর্বোচ্চ অগ্রাধিকার নম্বর দিয়ে কনফিগার করা হয়েছে, তবে যে কোনও আক্রমণকে ব্লক করে।

9. ক্লাউড আর্মার নিরাপত্তা নীতি লগগুলি পর্যবেক্ষণ করুন

ক্লাউড আর্মার কনসোল পৃষ্ঠা থেকে, আপনি নিরাপত্তা নীতির বিশদ বিবরণ দেখতে পারেন এবং ক্লাউড লগিং পৃষ্ঠায় নির্দেশিত হওয়ার জন্য View policy logs লিঙ্কের পরে Logs ট্যাবে ক্লিক করতে পারেন। এটি স্বয়ংক্রিয়ভাবে স্বার্থের নিরাপত্তা নীতির উপর ভিত্তি করে ফিল্টার করবে, যেমন resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs) । 403 ত্রুটি প্রতিক্রিয়া কোডগুলি পর্যবেক্ষণ করুন এবং প্রয়োগকৃত সুরক্ষা নীতির নাম, মিলিত ক্ষেত্রের মান এবং পূর্ব-কনফিগার করা এক্সপ্রেশন আইডিগুলি (বা স্বাক্ষর আইডি) আরও নীচে পর্যবেক্ষণ করতে লগের বিবরণ প্রসারিত করুন৷ নিম্নলিখিত স্ক্রিনশটগুলি এই কোডল্যাবে কনফিগার করা প্রয়োগকৃত নিরাপত্তা নীতিগুলির লগগুলির উদাহরণ দেখায়৷

এলএফআই লগ

983a6cab0cff940d.png

RCE লগ

988a3a571f9d9d45.png

স্ক্যানার সনাক্তকরণ লগ

7ed661863ba27555.png

প্রোটোকল আক্রমণ লগ

17ee3cbe0bd98939.png

সেশন ফিক্সেশন লগ

80d1ddfd0fe982e1.png

10. ল্যাব ক্লিনআপ

আপনি ল্যাব সম্পূর্ণ করেছেন এখন সম্পদ পরিষ্কার করুন.

ক্লাউড আর্মার নিরাপত্তা নীতি, লোড ব্যালেন্সার, দৃষ্টান্ত, ফায়ারওয়াল নিয়ম এবং VPC নেটওয়ার্ক মুছে ফেলার জন্য এই কমান্ডগুলি চালান৷

ব্যাকএন্ড পরিষেবা থেকে ক্লাউড আর্মার নিরাপত্তা নীতি সরান

gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global

ক্লাউড আর্মার নিরাপত্তা নীতি মুছুন

নিরাপত্তা নীতি মুছে ফেললে সংশ্লিষ্ট নিয়মগুলি স্বয়ংক্রিয়ভাবে মুছে যাবে।

gcloud -q compute security-policies delete block-with-modsec-crs

লোড ব্যালেন্সার সংস্থান মুছুন

এই লোড ব্যালেন্সার রিসোর্সগুলিকে মুছে ফেলা হবে ফরওয়ার্ড করার নিয়ম, টার্গেট-http-প্রক্সি, ইউআরএল-ম্যাপ, ব্যাকএন্ড, হেলথ-চেক এবং ইনস্ট্যান্স গ্রুপ।

gcloud -q compute forwarding-rules delete juice-shop-rule --global

gcloud -q compute target-http-proxies delete juice-shop-proxy

gcloud -q compute url-maps delete juice-shop-loadbalancer

gcloud -q compute backend-services delete juice-shop-backend \
    --global

gcloud -q compute health-checks delete tcp-port-3000

gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c

উদাহরণ মুছুন

gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c

ফায়ারওয়াল নিয়ম, সাবনেট এবং ভিপিসি মুছুন

gcloud -q compute firewall-rules delete allow-health-check
gcloud -q compute firewall-rules delete allow-js-site
gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1
gcloud -q compute networks delete ca-lab-vpc

11. অভিনন্দন!

ক্লাউড আর্মার প্রি-কনফিগার করা WAF নিয়ম কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন!

আমরা কভার করেছি কি

  • কিভাবে একটি ইনস্ট্যান্স গ্রুপ এবং একটি গ্লোবাল ক্লাউড লোড ব্যালেন্সার সেট আপ করবেন
  • lfi, rce, স্ক্যানার, প্রোটোকল আক্রমণ এবং সেশন ফিক্সেশনের বিরুদ্ধে সুরক্ষার জন্য পূর্ব-কনফিগার করা WAF নিয়মগুলির সাথে ক্লাউড আর্মার সুরক্ষা নীতিগুলি কীভাবে কনফিগার করবেন
  • ক্লাউড আর্মার লগের মাধ্যমে OWASP শীর্ষ 10 আক্রমণগুলির কিছু প্রশমিত করেছে তা কীভাবে যাচাই করবেন

পরবর্তী পদক্ষেপ