স্কুইডে নিরাপদ ব্যবহারকারী-প্রমাণীকরণের গল্প


17

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

                 <the Internet>
                        | 
                        | 
           A            |          B
Users <---------> [squid-Server] <---> [LDAP-Server] 

যখন Usersইন্টারনেটের সাথে অনুরোধ অ্যাক্সেস, squidতাদের নাম এবং পাসপোর্ট জিজ্ঞেস করে, তাদের পরিচয় প্রমাণ LDAPএবং যদি LDAP তাঁদেরও অনুমোদন, তারপর তিনি তাদের মঞ্জুর করেন।

কিছু স্নিফার ব্যবহারকারী এবং স্কুইড [পথ এ] এর মধ্যে পথে পাসপোর্ট চুরি না করা পর্যন্ত সবাই খুশি ছিল। এই বিপর্যয় ঘটেছিল কারণ স্কুইড Basic-Authenticationপদ্ধতি ব্যবহার করা হয়েছিল ।

জঙ্গলের লোকজন এই সমস্যা সমাধানের জন্য জড়ো হয়েছিল। কিছু বানি NTLMপদ্ধতি ব্যবহারের প্রস্তাব দিয়েছিল । Prefered সাপ Digest-Authenticationযখন Kerberosগাছ দ্বারা বাঞ্ছনীয়।

সর্বোপরি, জঙ্গলের লোকেদের দ্বারা প্রদত্ত অনেকগুলি সমাধান বিভ্রান্ত হয়েছিল! সিংহ পরিস্থিতি শেষ করার সিদ্ধান্ত নিয়েছে। তিনি সমাধানের নিয়মগুলি চিৎকার করেছিলেন:

  • সমাধান কি নিরাপদ হবে!
  • বেশিরভাগ ব্রাউজার এবং সফ্টওয়্যারগুলির জন্য সমাধানের কাজটি (যেমন সফ্টওয়্যার ডাউনলোড করুন)
  • সমাধানটি সহজ হতে পারে এবং অন্যান্য বিশাল সাবসিস্টেমের দরকার নেই (সাম্বা সার্ভারের মতো)
  • পদ্ধতিটি বিশেষ ডোমেনের উপর নির্ভর করবে না। (যেমন অ্যাক্টিভ ডিরেক্টরি)

তারপরে, একটি বানর দ্বারা প্রস্তাবিত একটি খুব সংবেদনশীল-বিস্তৃত-চতুর সমাধান, তাকে জঙ্গলের নতুন রাজা করে তোলে!

আপনি কি সমাধান করতে পারেন অনুমান করতে পারেন?

টিপ: সিংহের মধ্যবর্তী পথ squidএবং LDAPসুরক্ষিত, সুতরাং সমাধানটিকে এটি সুরক্ষিত করতে হবে না।

দ্রষ্টব্য: দুঃখিত যদি গল্পটি বিরক্তিকর এবং অগোছালো হয় তবে এর বেশিরভাগই বাস্তব! =)

               /~\/~\/~\
            /\~/~\/~\/~\/~\
          ((/~\/~\/~\/~\/~\))
        (/~\/~\/~\/~\/~\/~\/~\)
       (////     ~   ~     \\\\)
       (\\\\(   (0) (0)   )////)
       (\\\\(   __\-/__   )////)
        (\\\(     /-\     )///)
         (\\\(  (""""")  )///)
          (\\\(  \^^^/  )///)
           (\\\(       )///)
             (\/~\/~\/~\/)         **
               (\/~\/~\/)        *####*
                |     |           ****
               /| | | |\            \\
            _/  | | | | \_ _________//   Thanks!
           (,,)(,,)_(,,)(,,)--------'

হালনাগাদ:

ম্যাসিমো ব্যাখ্যা করেছিলেন যে Users- squidএবং squid- এর মধ্যে প্রমাণীকরণের পদ্ধতিটি LDAPএকই রকম হয় না। আমরা ব্যবহারকারীর কাছ থেকে প্রমাণীকরণের তথ্য এবং সত্যায়িত সংগৃহীত ডেটাতে সালিসি পদ্ধতি ব্যবহার করতে সালিসির পদ্ধতি ব্যবহার করতে পারি।

তবে একটি সমস্যা রয়েছে: সমস্ত প্রকারের প্রমাণীকরণকারীর ইনপুট / আউটপুট এক রকম নয়। উদাহরণ স্বরূপ:

  • একটি Basicপ্রমাণীকরণকারীর একটি লাইনে "ব্যবহারকারীর পাসওয়ার্ড" জুটি পড়তে হবে এবং OKযদি ব্যবহারকারী-পাস সঠিক হয় বা একটি উত্তর দেয়ERR
  • একটি Digestপ্রমাণকারী একটি পড়া উচিত username:realmএবং উত্তর একটি হেক্স এনকোডেড HA(A1)অথবা একটি ERR

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

সুতরাং সমস্যাটি এটিকে সহজতর করে:

  1. প্রথম স্তরে, আমি (বানর!) ব্যবহারকারীর পক্ষে একটি ভাল প্রমাণীকরণ পদ্ধতি খুঁজছি। বেশিরভাগ ব্রাউজার দ্বারা সুরক্ষিত এবং সমর্থিত কোন পদ্ধতিটি আপনি সুপারিশ করেন ? আমি মাঝে বিভ্রান্ত মধ্যে আছি NTLM, Kerberosএবং Digest

  2. যেখানে আমি এমন একটি প্রমাণীকরণকারীর সন্ধান করতে পারি যা নির্বাচিত পদ্ধতির শংসাপত্রগুলির তথ্য সমর্থন করে এবং এলডিএপি-এর মাধ্যমে প্রমাণীকরণ করে।


2
+1, পুরোপুরি দুর্দান্ত গল্পের গল্প lling
ম্যাসিমো

সব প্রশ্ন এই ফর্ম জিজ্ঞাসা করা উচিত?
বার্ট সিলভারস্ট্রিম

@ বার্ট, সম্ভবত তা নয় তবে এটি দুর্দান্তভাবেই রয়েছে :-)
ম্যাসিমো

স্টাইলের জন্য +1 !!!
জিওফসি

4
আমি কিছুটা হতাশ হয়েছি যে সিংহটি সঠিকভাবে সিনট্যাক্সটি হাইলাইট করা হয়নি: 7
ওসকার ডুভের্বন

উত্তর:


1

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


এখন আমি digest_ldap_authএলডিএপি সার্ভারের বিপরীতে (স্কুইড সহ আসে) এইচটিটিপি ডাইজেস্ট প্রমাণীকরণ প্রয়োগ করে ব্যবহারকারীদের প্রমাণীকরণ করছি ।
ইসহাক

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

4

একটি আকর্ষণীয় বৈশিষ্ট্য যা আপনাকে এখানে সহায়তা করতে পারে তা হ'ল স্কুইড ক্লায়েন্ট ব্রাউজারকে প্রমাণীকরণের জন্য জিজ্ঞাসা করার জন্য যে পদ্ধতিটি ব্যবহার করে (পাথ এ) এটি ব্যবহারকারীর দ্বারা সরবরাহিত শংসাপত্রগুলি সত্যায়িত করার জন্য যে পদ্ধতিটি ব্যবহার করে সেগুলির সাথে সম্পর্কিত হওয়ার প্রয়োজন নেই path )। এর অর্থ, ফে, আপনি ক্লায়েন্ট ব্রাউজারগুলির সাহায্যে স্কুইডকে "টক" এনটিএলএম করতে পারেন, তবে এটি লিনাক্সের অভ্যন্তরীণ ব্যবহারকারী ডাটাবেস (/ ইত্যাদি / পাসডাব্লুড) এর বিরুদ্ধে ব্যবহারকারীদের খুব ভাল প্রমাণ করতে পারে। নেই কোন (পথ একটি দিকে) করা NTLM ব্যবহার আসলে (পথ বি দিকে) উইন্ডোজ ডোমেইন বিরুদ্ধে যাচাই করা অর্জিত পরিচয়পত্র প্রয়োজনীয়তার। ক্লায়েন্ট-সাইড প্রমাণীকরণ পদ্ধতি এবং সার্ভার-সাইড প্রমাণীকরণের যেকোন সম্ভাব্য সংমিশ্রণের ক্ষেত্রেও এটি একই প্রযোজ্য।

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

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

যাদুটি অবশ্যই ঘটে যায় squid.conf:

#auth_param negotiate program <uncomment and complete this line to activate>
#auth_param negotiate children 5
#auth_param negotiate keep_alive on
#auth_param ntlm program <uncomment and complete this line to activate>
#auth_param ntlm children 5
#auth_param ntlm keep_alive on
#auth_param digest program <uncomment and complete this line>
#auth_param digest children 5
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#auth_param basic program <uncomment and complete this line>
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off

প্রতিটি auth_paramনির্দেশ ক্লায়েন্ট ব্রাউজারগুলির (পাথ এ) জন্য একটি নির্দিষ্ট প্রমাণীকরণ সক্ষম করে , যখন "প্রোগ্রাম" অংশটি ব্যবহারকারীগণের সরবরাহিত শংসাপত্রগুলি বৈধ করতে স্কুইডটি আসলে কী ব্যবহার করবে তা নির্ধারণ করে। আপনি এখানে যা কিছু প্রমাণীকরণকারী প্রোগ্রাম চান তা ব্যবহার করতে পারেন (এমনকি কাস্টম-লিখিত একটি), যতক্ষণ না এটি কোনও ব্যবহারকারী আইডি এবং একটি পাসওয়ার্ড পেতে পারে এবং "হ্যাঁ" বা "না" উত্তর দেয়।

আপনি আপনার এলডিএপি ক্যোয়ারীটি ব্যবহার করতে যা যা প্রমাণীকরণকারীর গ্রহণ করতে হবে এবং এটি এখন যেখানে রয়েছে সেখানে "লেখার" মৌলিক "পরিবর্তে" auth_param ntlm "বা" auth_param ডাইজেস্ট "বিবৃতিগুলিতে আটকে থাকতে হবে।


হালনাগাদ:

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

ক্লায়েন্ট-পক্ষের প্রমাণীকরণ সম্পর্কে, যে কোনও একটি ভাল হওয়া উচিত; আমি এনটিএলএম নিয়ে বেশ খুশি এবং বেশিরভাগ ব্রাউজারগুলি আজকাল এটি সমর্থন করে।

এই জাতীয় কনফিগারেশন স্কুইডকনফ এ দেখতে পাবেন:

auth_param ntlm program /usr/lib/squid/squid_ldap_auth <parameters>

এটি এনটিএলএম ব্যবহার করে ব্যবহারকারীর শংসাপত্রগুলির জন্য (পাথ এ) জিজ্ঞাসা করবে, তারপরে একটি এলডিএপি সার্ভারের সাথে তাদের বৈধতা দেবে (পাথ বি); তবে এই "পরামিতিগুলি" আপনার এলডিএপি প্রয়োগ ও কনফিগারেশনের উপর কঠোরভাবে নির্ভর করে।

এটিও সহায়তা করতে পারে: http://www.cyberciti.biz/tips/howto-configure-squid-ldap-authentication.html


সত্য মনে হচ্ছে! তাহলে আপনি কোন পদ্ধতিটি অফার করেন? NTLM? Kerberos? এর মধ্যে কোনটি বেশিরভাগ ব্রাউজারে সমর্থিত এবং ইতিমধ্যে একটি 'প্রমাণীকরণকারী' রয়েছে যা এলডিপ সমর্থন করে?
ইসহাক

@ আইসাক, দয়া করে আরও ভালভাবে পড়ুন :-) পদ্ধতি এবং প্রমাণীকরণকারী প্রোগ্রামের মধ্যে কোনও সম্পর্ক নেই , সুতরাং যতক্ষণ না আপনার কাছে একটি প্রমাণীকরণকারী প্রোগ্রাম রয়েছে যা এলডিএপি সমর্থন করে, আপনি এটি আপনার পছন্দ মতো কোনও ক্লায়েন্ট প্রমাণীকরণ পদ্ধতি ব্যবহার করতে পারেন। এবং আমি ইতিমধ্যে এটির বুনিয়াদি প্রমাণীকরণ দিয়ে ব্যবহার করছি এমন ছাপের মধ্যে ছিলাম ... তাই না তাই? আপনি কি আপনার স্কুইড.কনফের আপেক্ষিক অংশটি পোস্ট করতে পারেন?
ম্যাসিমো

ধন্যবাদ। আমি প্রশ্নের আপডেট অংশে এটি ব্যাখ্যা করেছি । আমি আশা করি আমি ভুল নই! : - /
আইজাক

আমি জানি এটি একটি পুরানো পোস্ট, তবে auth_param ntlm program /usr/lib/squid/squid_ldap_auth <parameters>, ব্যবহারটি আমার পক্ষে কার্যকর নয়, স্কুইড ক্র্যাশ হয়ে যায় এবং ব্যবহারকারী যখনই প্রমাণীকরণের চেষ্টা করবেন তখনই এটি পুনরায় শুরু হবে। হয়তো ভুলটি ব্যবহার করার কারণে parameters, তবে আমি একই পরামিতিগুলি ব্যবহার করছি basicএবং ঠিক আছে works কোন ধারনা?
কাস্ত্রো রায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.