কেন একটি প্রদত্ত আইপি: পোর্টে ওয়েব সার্ভার শুরু করার জন্য সুডোর প্রয়োজন?


9

আমি আমার ডেবিয়ান বাক্সে পাইথন ভিত্তিক ওয়েবসভার সেটআপ করছি।

সেটআপ:

  • ডেবিয়ান ওএস ভিএম ভিত্তিক, তবে আমি ভার্চুয়ালবক্সটি NAT থেকে ব্রিজেডে স্যুইচ করেছি।
  • ভিএম সেটআপের আইপি = 192.168.1.7(আমার রাউটারের অ্যাডমিন স্ক্রিনে বা ifconfig)।
  • আমি সফলভাবে আমার রাউটারের পোর্ট ফরওয়ার্ডিং ssh এবং এইচটিটিপি উভয়ের জন্য সেটআপ করেছি।
  • আমি dyndns.com ব্যবহার করে আমার রাউটারের গতিশীল ডিএনএস সফলভাবে সেট আপ করেছি।

আমি যে নির্দিষ্ট পাইথন ওয়েবসভারটি ব্যবহার করছি তা নির্বিশেষে (জ্যাঙ্গো, চেরিপি, স্ট্যান্ডার্ড লাইব্রেরি), আমাকে ব্যবহার করে ওয়েবসভার @ 192.168.1.7:80 শুরু করতে হবে sudo। অন্যথায় বন্দরে প্রবেশের অনুমতি না পাওয়ার বিষয়ে আমি একটি ত্রুটি পেয়েছি। কোনও ওয়েবসারভার টিউটোরিয়াল sudoকোনও আইপি: পোর্ট নির্দিষ্ট করার সময় ব্যবহার করার প্রয়োজনের কথা উল্লেখ করে না।

প্রশ্ন: sudoএই ওয়েব সার্ভারগুলি শুরু করার জন্য আমাকে কেন ব্যবহার করতে হবে? এটি কি এমন ইঙ্গিত যা আমার ব্যবহার করা উচিত নয় 192.168.1.7? বা আমি কোথাও কোথাও একটি কনফিগার ফাইল সেট করছি না?

উত্তর:


11

কেবল রুট অনুমোদনের প্রক্রিয়াগুলি সুবিধাজনক বন্দরগুলিতে শুনতে পারে can এটি একটি স্ট্যান্ডার্ড ইউনিক্স সুরক্ষা সম্মেলন।


80-এ সুডো ব্যবহার করে ওয়েব সার্ভারগুলি চালু করা কি সাধারণ? অথবা কোনও পোর্ট> 1024 (উদাঃ 8000, 8080) ব্যবহার করার জন্য কি অন্য কোনও কৌশল আছে?
বেগবি 100

@ বেগবি 100 হ্যাঁ উচ্চ বন্দরগুলিতে ওয়েব সার্ভারগুলি চালানো বেশ সাধারণ বিষয়। তবে এটি বেশিরভাগ ওয়েব সার্ভারগুলির জন্য ব্যবহৃত হয় যা ইন্টারনেটে প্রকাশ্যে অ্যাক্সেসযোগ্য নয় বা এমন মেশিনে চলছে যেখানে ব্যবহারকারীদের রুট অনুমতি নেই। ডেভলপমেন্ট এবং টেস্টিংয়ের জন্য ব্যবহৃত ওয়েব সার্ভারগুলি অননুমোদিত বন্দরগুলিতে প্রায় একচেটিয়াভাবে চালিত হয়।
আসুন_আমি_দেখুন

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

14

এটি এমন স্ট্যান্ডার্ড আচরণ যা অ-সুবিধাবঞ্চিত ব্যবহারকারীদের সুবিধামুক্ত বন্দরগুলিতে (1024 এর নীচে বন্দর নম্বর) আবদ্ধ করার অনুমতি নেই। সুতরাং একটি অ্যাপ্লিকেশন যা উদাহরণস্বরূপ 80 বন্দরটিতে বাঁধাই করতে চায় এই বন্দরে বাঁধার জন্য বিশেষত (সাধারণত এটি রুট হিসাবে চালানো মানে) চালাতে হবে।

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

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

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

- (internet request) ----> (port 80)[Firewall] ------> (port 8080)[Webserver]

কখনও কখনও এই পুনর্নির্দেশ সহজভাবে iptablesNAT নিয়ম ব্যবহার করে করা হয় :

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

এটি 8080 পোর্টে একটি অনিবদ্ধ অ্যাপ্লিকেশন শোনার অনুমতি দেয় যখন 80 পোর্টের জন্য সমস্ত আগত অনুরোধগুলি কেবল 8080 বন্দরটিতে পুনর্নির্দেশ করা হয়েছে।

তবে আধুনিক লিনাক্স কার্নেলগুলি ব্যবহার করার আরও একটি সম্ভাবনা রয়েছে: ক্ষমতা ব্যবহার করুন।

setcap CAP_NET_BIND_SERVICE=+ep /some/webserver/binary

এটি binaryরুটবিহীন ব্যবহারকারীদের থেকে শুরু করার পরেও সুবিধাভোগী বন্দরগুলিতে আবদ্ধ হওয়ার অনুমতি দেয় । দেখুন man capabilitiesআরো বিস্তারিত জানার জন্য।


ক্ষমতাগুলি কি পসিক্সের অংশ, বা কেবল লিনাক্স নির্দিষ্ট?
28_11

@Let_Me_Be আমি বুঝতে হিসাবে থেকে en.wikipedia.org/wiki/Capability-based_security POSIX ক্ষমতা ভিত্তিক ধারণা সংজ্ঞায়িত, কিন্তু এটা কি লিনাক্স বাস্তবায়িত হয়েছে ভিন্ন। সুতরাং আমি মনে করি CAP_NET_BIND_SERVICE এর মতো লিনাক্স ক্ষমতাগুলি কেবল লিনাক্স-নির্দিষ্ট।
স্কাইবিয়ম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.