কার্নেল মোড ওয়েব সার্ভার: একটি চৌকস অপ্টিমাইজেশন বা একটি সুরক্ষা দুঃস্বপ্ন?


28

আমি হ্যাকার নিউজ থ্রেডটি পড়ছিলাম যেখানে এক ব্যবহারকারী ২০১১ সাল থেকে একটি লিঙ্ক পোস্ট করেছেন যা ব্যাখ্যা করেছে যে আইআইএস অন্যান্য অন্যান্য (* নিক্স) ওয়েব সার্ভারের চেয়ে অনেক দ্রুত । অন্য একজন ব্যবহারকারী জবাব দেয়, ব্যাখ্যা করে যে আইটিআইএস HTTP.sys নামে একটি কার্নেল মডিউল পেয়ে এই সুবিধাটি লাভ করে । আমার জানা মতে, 2015 এর বেশিরভাগ জনপ্রিয় ওয়েব সার্ভারগুলি এটি করে না।

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

সফ্টওয়্যার ইঞ্জিনিয়ারের দৃষ্টিকোণ থেকে (ওয়েব সার্ভারগুলির জন্য কোনও গ্রাহকের বিপরীতে), কার্নেল মোডে চালিত একটি স্মার্ট পারফরম্যান্স সিদ্ধান্ত? কার্নেল মোড সার্ভারকে গ্রাহকের জন্য নিট মুনাফা করার ক্ষেত্রে অ্যাপ্লিকেশন বিকাশের ক্ষেত্রে সুরক্ষা উদ্বেগ প্রশমিত করা যেতে পারে?


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

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

2
যে কেউ কারও মনে করে যে কার্নেল মোড ওয়েব সার্ভারের পারফরম্যান্স উন্নতি করতে পারে কারণ এর প্রসঙ্গে সুইচ নেই সেগুলি পড়তে হবে: প্রতিটি প্রোগ্রামারদের জানা উচিত লেটেন্সি নম্বর । লিনাক্সে সম্পূর্ণ প্রসঙ্গের স্যুইচটির প্রায় 3000ns ( উত্স ) খরচ হয় , তবে অনেকগুলি সিস্টেমে আসলে পুরো কনটেক্সট সুইচ দরকার হয় না এবং 50ns এর চেয়ে কম যেতে পারে, উইন্ডোজের জন্য আমার সংখ্যা নেই। এটি ২ য় / ৩ য় কলামের পাশাপাশি রয়েছে। উপসংহার: নেটওয়ার্কের অনুরোধ এবং ডিস্ককে ছোট করুন, প্রসঙ্গের স্যুইচগুলির বিষয়ে চিন্তা করবেন না worry
মিথ্যা রায়ান

উত্তর:


24

প্রক্সি-ফরোয়ার্ডার হিসাবে এইচটিটিপি.সাইস এত কোনও ওয়েব সার্ভার নয়। এটি অনেকগুলি ওয়েব সার্ভারগুলিকে একটি উইন্ডোজ বাক্সে সহাবস্থান করার অনুমতি দেওয়ার জন্য ডিজাইন করা হয়েছে, যাতে আপনি আইআইএস কোনও ওয়েব সাইট চালাচ্ছেন, তবে বেশ কয়েকটি ডাব্লুসিএফ পরিষেবাগুলি HTTP / REST বা SOAP ইন্টারফেসের সাথে চলতে পারে, যা সবগুলি স্ট্যান্ডার্ড পোর্টে on উইন্ডোজটিতে অল্প অল্প জিগ্লাস না করে অ্যাপাচি চালাতে পারবেন না, অ্যাপাচি এই রেজিস্ট্রেশন সিস্টেমটির সাথে কাজ করার জন্য কোনও পরিবর্তন করা হয়নি , লজ্জাজনক এটি অ্যাপ্লিকেশনগুলিতে আরও স্বচ্ছ হয়নি এবং এতে ookুকে পড়ার জন্য বেশ কিছু জটিল পরিবর্তন প্রয়োজন)।

এটি যেভাবে কাজ করে তা হ'ল আপনি এটির সাথে সম্পর্কিত ইউআরএল এবং তার সাথে সম্পর্কিত অ্যাপ্লিকেশনটি রেজিস্টার করুন, উত্তর 80 বন্দরটিতে কোনও HTTP অনুরোধ করা হলে, http.sys তা গ্রহণ করে তবে সেই URL টার্গেটটি পরিচালনা করতে যে কোনও অ্যাপ্লিকেশনটিতে নিবন্ধিত হয়ে অনুরোধটি পাস করে।


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


11
কার্নেল মোডে সম্পূর্ণ সার্ভারের প্রাথমিক সুবিধা হ'ল স্ট্যাটিক ফাইলগুলি সরবরাহ করা: এটি ব্যবহারকারী মোডে স্যুইচ না করেই করা যেতে পারে। ক্যাশে করাও সম্ভব।
জুলাই

3
আমি মনে করি HTTP.sys এমন সময় থেকে যেখানে সিপিইউ চক্রটি অনেক বেশি দুষ্প্রাপ্য ছিল ... এমনকি ছোট স্ট্যাটিক ফাইলগুলি সরবরাহ করার সময়ও (এটি HTTP.sys এর পক্ষে সবচেয়ে সুবিধাজনক ক্ষেত্রে) একটি সম্পূর্ণ ব্যবহারকারী মোড এইচটিটিপি সার্ভার সম্ভবত বেশিরভাগ নেটওয়ার্ককে সর্বাধিক আউট করবে ।
usr

4
@ ইউএসআর এইচটিপি.সাইস একটি অপেক্ষাকৃত নতুন জিনিস, যা উইন্ডোজ সার্ভার ২০০৩ সালে প্রবর্তিত হয়েছিল। আমি যথেষ্ট নিশ্চিত যে এটি সেখানে রয়েছে যাতে আপনি একই সাথে অনেকগুলি ওয়েব এপিআই সার্ভিসগুলি পোর্ট ৮০ এ শুনতে পারেন।
gbjbaanb

2
@gbjbaanb একটি ব্যবহারকারী মোড সার্ভার এটির জন্যও অনুমতি দিতে পারে। উইন্ডোজ মেমরি ভাগ করে নেওয়ার ক্ষমতা (বাফারদের জন্য) এবং সকেট হ্যান্ডেলকে আলাদা প্রক্রিয়াতে পাস করার ক্ষমতা রাখে।
usr

1
@ জেমসমিশ্রা আমার মনে, হ্যাঁ এরপরে সিপিইউগুলি সম্ভবত> 10x কম শক্তিশালী ছিল। এছাড়াও, সুরক্ষা মানসিকতা আসলে সেখানে ছিল না। আজ এটি একটি খারাপ কল।
usr

14

Http.sys শুধুমাত্র কার্নেল-মোড ওয়েব সার্ভার উপলব্ধ নয়: লিনাক্স অধীনে রয়েছে Tux । যেমন আপনি সঠিকভাবে সনাক্ত করেছেন, সুরক্ষা হ'ল এই ধরণের সার্ভারগুলির সাথে উদ্বেগ, যার ফলে টাক্সকে মূললাইন লিনাক্স কার্নেলের অন্তর্ভুক্ত করা হয়নি (এবং আমি বিশ্বাস করি যে সাম্প্রতিক কার্নেল সংস্করণগুলির জন্য আপডেট করা হয়নি)।

এর চেয়ে ভাল সমাধান হ'ল একটি অপারেটিং সিস্টেম ব্যবহার করা যা প্রক্রিয়া সুরক্ষা কার্যকর করার জন্য হার্ডওয়্যার সুরক্ষার উপর নির্ভর করে না, যেমন মাইক্রোসফ্টের এককতা: এই জাতীয় সুরক্ষা কোনও ঝুঁকি ছাড়াই কার্নেল মোড সার্ভারের দক্ষতা অর্জনের অনুমতি দেয়। দুর্ভাগ্যক্রমে, এই নীতির উপর ভিত্তি করে কোনও উত্পাদন প্রস্তুত অপারেটিং সিস্টেমগুলি ২০১৫ সালের হিসাবে উপলব্ধ নেই এবং এএফআইকে কেউই গুরুত্ব সহকারে একটির উপরও কাজ করছে না (এককত্বতা প্রকল্পটি বাতিল করা হয়েছিল)।


সিঙ্গুলারিটি পদ্ধতির সাথে বড় সমস্যাটি হ'ল এর অর্থ এই যে জেআইটিটিতে সহজেই সুবিধাগুলি বাড়ানো যেতে পারে।
কোডসইনচাউস

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

10

এইচটিটিপি.সাইস কম ঝুঁকিপূর্ণ, কারণ এটি তৃতীয় পক্ষের সরবরাহিত কোনও কাইপ চালাতে পারে না।

Http.sys কয়েকটি কাজ করে।

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

  • এটি স্ট্যাটিক ফাইলগুলি সরাসরি উইন্ডোজ ফাইল ক্যাশে থেকে পরিবেশন করে। কোনও প্রসঙ্গের স্যুইচ নেই বলে এটি ছোট ফাইল স্ট্যাটিক ফাইলগুলির জন্য দুর্দান্ত গতিপথ সরবরাহ করে।

  • এটি কোনও অ্যাপ্লিকেশন থেকে আউটপুটকে ক্যাশে করবে এটি কোনও এইচটিটিপি অনুরোধের কাছে পাঠিয়ে দেবে এবং ক্যাশেড ফলাফলটি ফিরিয়ে দেবে। অ্যাপ্লিকেশনটি ক্যাচিং কতক্ষণ চলবে (যদি থাকে) তার সম্পূর্ণ নিয়ন্ত্রণে।

HTTP.sys সাধারণ কাজগুলি খুব দ্রুত করতে ডিজাইন করা হয়েছে, ব্যবহারকারীর স্পেসে থাকা সমস্ত প্রক্রিয়াতে অন্য সবকিছু পাস করার সময়।

মন্তব্যে জবাবে ড

"কম ঝুঁকি, কারণ এটি তৃতীয় পক্ষের সরবরাহিত কোনও কোড চালাতে পারে না" - এগুলি তারা সর্বদা বলে, এবং এটি প্রায় কখনও সত্য নয়।

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

যদি কোনও HTTP.sys ঝুঁকি হ্রাস করে, কারণ "নিম্ন স্তরের" ওয়েব পরিবেশন এবং অ্যাপ্লিকেশন কোডের নীচে এরকম স্পষ্ট বিভাজন রয়েছে।

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


1
ব্যবহারকারীমড অ্যাপ্লিকেশনগুলি প্রায়শই টাইপসেফ ভাষায় রচিত হয় যা বেশিরভাগ মেমরির দুর্নীতি ভিত্তিক বাগগুলি বাতিল করে দেয় (এগুলি সাধারণত দূরবর্তী কোড প্রয়োগের দিকে পরিচালিত করে)।
CodeInChaos

3
আমি নিশ্চিত নই যে আমি এই যুক্তিটি কিনেছি যে আমি যদি মাইক্রোসফ্টকে কার্নেল কোড লিখতে বিশ্বাস করি, তবে কার্নেল মোড ওয়েব সার্ভার কোড লিখতে তাদের বিশ্বাস করা এটি একটি ছোট জাম্প। আমি একটি তথ্য সুরক্ষার দৃষ্টিকোণ থেকে মোটামুটি নিখুঁত, তবে আমি কল্পনা করেছি যে HTTP.sys এ ইন্টারনেট থেকে আরও দূরে কোনও ডিভাইস ড্রাইভার বা কার্নেলের কিছু অংশের চেয়ে বাফার ওভারফ্লোকে অস্ত্র প্রয়োগ করা আরও সহজ হবে।
জেমস মিশ্র
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.