এক্স-ফরোয়ার্ড-ফর হেডারের ভিত্তিতে সংস্থানগুলিতে অ্যাক্সেসকে কীভাবে অস্বীকার করবেন


13

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

এখনও অবধি আমি নিম্নলিখিত কোড সহ একটি আইপি এর জন্য এটি পরিচালনা করতে পেরেছি:

set $allow false;
if ($http_x_forwarded_for ~* 123.233.233.123) {
    set $allow true;
}
if ($http_x_forward_for ~* 10.20.30.40) {
    set $allow false;
}
if ($allow = false) {
    return 403;
}

তবে আমি কীভাবে পুরো আইপি রেঞ্জের জন্য এটি করতে পারি? হাতে শত শত আইপি নির্দিষ্ট করে বোঝা যায় না।

সমস্ত সাহায্য প্রশংসা করা হয়

উত্তর:


11

শিরোনামটির মান সম্মানের জন্য রিয়েলআইপি মডিউলটি ব্যবহার করুন X-Forwarded-Forset_real_ip_fromবিপরীত প্রক্সি (বর্তমান মান $remote_addr) এর আইপি ঠিকানায় সেট করুন ।

উদাহরণ স্বরূপ:

server {
    ...
    real_ip_header X-Forwarded-For;
    set_real_ip_from 10.1.2.3;
    ...
}

আপনার এখন ক্লায়েন্টের আসল আইপি ঠিকানা ব্যবহার করে $remote_addrএবং allow/ denyনির্দেশিকা ব্যবহার করতে সক্ষম হওয়া উচিত । আরও জন্য এই নথিটি দেখুন।


সুতরাং আমি নিম্নলিখিতগুলি চেষ্টা করেও কোন লাভ হয়নি, আমি কি এটি বিভ্রান্ত করছি? location / { real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; allow xxx.xxx.xxx.xxx;
p1hr

গুগল লোড ব্যালেন্সিং ডক্সে দেখার পরে আমি নিম্নলিখিতগুলি পেয়েছি: X-Forwarded-For: <unverified IP(s)>, <immediate client IP>, <global forwarding rule external IP>, <proxies running in GCP> (requests only) <তাত্ক্ষণিক ক্লায়েন্ট আইপি> এন্ট্রি হ'ল ক্লায়েন্ট যা লোড ব্যালান্সারের সাথে সরাসরি সংযুক্ত থাকে।
p1hr

1
এটির জন্য কাজ করতে, আপনার জন্য ঠিকানা রেঞ্জ শনাক্ত করতে হবে <global forwarding rule external IP>এবং <proxies running in GCP>যোগ set_real_ip_fromতাদের সব আচ্ছাদন বিবৃতি।
রিচার্ড স্মিথ

<global forwarding rule external IP>আমার পরিষেবার বাহ্যিক আইপি, জিসিপিতে অন্য কোনও প্রক্সি নেই, আমার [31/Jul/2017:20:05:46 +0000] "GET / HTTP/1.1" 403 169 "-" "curl/7.54.0" "aaa.aaa.aaa.aaa, bbb.bbb.bbb.bbb, ccc.ccc.ccc.ccc"এনজিনেক্স লগগুলিতে আমি নিম্নলিখিত বিন্যাসে অনুরোধগুলি দেখি যেখানে ccc.ccc.ccc.ccc গ্লোবাল ফরওয়ার্ডিং নিয়ম, bbb.bbb.bbb.bbb তাত্ক্ষণিক ক্লায়েন্ট আইপি - আমি whatsmyip.org এ যা দেখি তার সাথে মেলে। কোনও অংশ আপনি কীভাবে সেই অংশটি উত্তোলন করতে পরামর্শ দিতে পারেন?
p1hr

1
ঠিক আছে, এখন আমি বিভ্রান্ত হচ্ছি আপনি set_real_ip_fromযে ঠিকানার অনুমতি / অস্বীকার করতে চান তার ডানদিকে সমস্ত ঠিকানার প্রয়োজন । real_ip_recursiveবিভাগে ইঙ্গিত হিসাবে ।
রিচার্ড স্মিথ

5

রিচার্ডের উত্তরে ইতিমধ্যে কীভাবে আসল আইপি ঠিকানাটি এনজিএনএক্সে পাওয়া যায় সে সম্পর্কে ইতিমধ্যে তথ্য রয়েছে contained

এদিকে, আইপি ব্যাপ্তিগুলি নির্দিষ্ট করার প্রশ্নে কী আসে যায় আপনি http://nginx.org/en/docs/http/ngx_http_geo_module.html ব্যবহার করতে পারেন ।

geoমত মডিউল কাজ mapমডিউল দেখবেন, যে একটি পরিবর্তনশীল IP ঠিকানার মান উপর নির্ভর করে নির্ধারিত মান পায়।

একটি উদাহরণ:

geo $allow {
    default 0;
    192.168.168.0/24 1;
}

server {
    real_ip_header X-Forwarded-For;
    set_real_ip_from 10.1.2.3;

    if ($allow = 0) {
        return 403;
    }
}

এখানে আমরা দায়িত্ব অর্পণ geoমানচিত্র, যেখানে জন্য ডিফল্ট মান $allow0. IP ঠিকানা সাবনেট থাকে 192.168.168.0/24, তারপর $allowমান 1 পাবেন, এবং অনুরোধ অনুমোদিত হয়।

geoআপনার আইপি ব্যাপ্তিগুলি সংজ্ঞায়িত করার জন্য আপনার ব্লকে যতগুলি লাইন থাকতে পারে।


ধন্যবাদ! এটি সত্যিই ভালভাবে কাজ করছে বলে মনে হচ্ছে, সর্বশেষে আমি যে মুখোমুখি হচ্ছি তা হ'ল এক্স-ফরওয়ার্ডড-এর ক্লায়েন্ট_ইপ। এই মুহুর্তে, 3 আইপি ঠিকানাগুলি থেকে যেটি শেষ হয়েছে তা ব্যবহার করা হবে। আমি real_ip_recursive on;নীচে যোগ করেছি set_real_ip_fromতবে এতে কোনও পার্থক্য হয়নি
p1hr

আপনি কি বোঝাতে চেয়েছেন যে আপনার X-Forwarded-Forশিরোনামটির তিনটি পৃথক ঠিকানা রয়েছে, অর্থাত্ একাধিক প্রক্সি দিয়ে অনুরোধটি আসে? আপনি যে কোনও অন্য শিরোলেখ ব্যবহার করতে পারেন সেখানে কি কেবল ক্লায়েন্টের আইপি রয়েছে?
টেরো কিলকেনেন

শৃঙ্খলে থাকা প্রতিটি প্রক্সি এটির আইপি ঠিকানা X-Forwarded-Forশিরোনামে যুক্ত করবে। যোগ করার পাশাপাশি আপনাকে আপনার প্রক্সি চেইনে প্রতিটি বিশ্বস্ত সার্ভারের আইপি ঠিকানার জন্য নির্দেশিকাও যুক্ত real_ip_recursive onকরতে হবে set_real_ip_from। নিগিনেক্স এর পরে এই প্রতিটি নির্দেশের মাধ্যমে কাজ করবে এবং X-Forwarded-Forশিরোনামে হিট হওয়া প্রথম মান হিসাবে ক্লায়েন্টের আইপি ফিরিয়ে দেবে যা আপনার নির্দিষ্ট set_real_ip_fromমানগুলির সাথে মেলে না
মিকনিক

এফডব্লিউআইডাব্লু, এই সংমিশ্রণটি আমার পক্ষে এডাব্লুএস এএলবিতে কাজ করে না। জিও ব্লকের অভ্যন্তরে প্রক্সি নির্দেশিকাটি কী কাজ করেছিল সেট সেটলিয়াল_আইপি - এনজিনএক্স.আর
ডকস

3

এই আমার জন্য কাজ পেয়েছেন।

geo $remote_addr $giveaccess {
      proxy 172.0.0.0/8; <-- Private IP range here
      default 0;
      11.22.33.44 1; <-- Allowed IP here
    }


server{
##
    location ^~ /secure_url_here {
        if ($giveaccess = 0){
          return 403; 
        }
        try_files $uri $uri/ /index.php?$args; <-- Add this line specific for your CMS, if required.
    }

রেফার: http://nginx.org/en/docs/http/ngx_http_geo_module.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.