80 এবং 443 পোর্টে আবদ্ধ হওয়ার জন্য নন-রুট প্রক্রিয়াটি মঞ্জুর করবেন?


104

কোনও ইউজারল্যান্ড প্রোগ্রামকে 80 এবং 443 পোর্টে আবদ্ধ করার জন্য কার্নেল প্যারামিটারটি টিউন করা সম্ভব?

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

মূল সুবিধার সাথে জড়িত ম্যালওয়্যারটি অপসারণ করার চেয়ে 80 বন্দরটিতে অনিরাপদ প্রক্রিয়াটি কী শুনছে তা বোঝার চেষ্টা করার চেয়ে আমি অনেকটা চেষ্টা করব।


1
দেখুন serverfault.com/questions/268099 এবং stackoverflow.com/questions/413807 । সংক্ষিপ্ত উত্তর হলো 'না'।
সামি লাইন

10
দীর্ঘ উত্তর হ্যাঁ হ্যাঁ .. সুতরাং সংক্ষিপ্ত উত্তর ধরণের হ্যাঁও হওয়া উচিত।
বিটি

4
সংক্ষিপ্ত উত্তর হল হ্যাঁ।
জেসন সি

উত্তর:


163

আমি নিশ্চিত নই যে এখানে অন্যান্য উত্তর এবং মন্তব্যগুলি কী উল্লেখ করেছে। এটি বরং সহজেই সম্ভব। দুটি বিকল্প রয়েছে, উভয়ই প্রক্রিয়াটিকে রুটে উন্নীত না করে স্বল্প সংখ্যাযুক্ত বন্দরগুলিতে অ্যাক্সেসের অনুমতি দেয়:

বিকল্প 1: CAP_NET_BIND_SERVICEএকটি প্রক্রিয়াটিতে স্বল্প সংখ্যাযুক্ত বন্দর অ্যাক্সেস দেওয়ার জন্য ব্যবহার করুন :

এর সাহায্যে আপনি setcapকমান্ডের মাধ্যমে নিম্ন-সংখ্যাযুক্ত বন্দরগুলিতে বাঁধতে একটি নির্দিষ্ট বাইনারি স্থায়ী অ্যাক্সেস দিতে পারবেন :

sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/binary

ই / আই / পি অংশ সম্পর্কে আরও তথ্যের জন্য দেখুন cap_from_text

এটি করার পরে, /path/to/binaryস্বল্প সংখ্যাযুক্ত বন্দরগুলিতে আবদ্ধ হতে সক্ষম হবে। নোট করুন যে আপনাকে অবশ্যই setcapবাইনারি নিজেই একটি সিমিলিংকের পরিবর্তে ব্যবহার করতে হবে ।

বিকল্প 2: authbindসূক্ষ্ম ব্যবহারকারীর / গোষ্ঠী / বন্দর নিয়ন্ত্রণ সহ এককালীন অ্যাক্সেস দেওয়ার জন্য ব্যবহার করুন :

authbind( Man পৃষ্ঠা ) টুল এই জন্য অবিকল বিদ্যমান।

  1. authbindআপনার প্রিয় প্যাকেজ ম্যানেজার ব্যবহার করে ইনস্টল করুন ।

  2. প্রাসঙ্গিক বন্দরগুলিতে অ্যাক্সেস দেওয়ার জন্য এটি কনফিগার করুন, যেমন সমস্ত ব্যবহারকারী এবং গোষ্ঠী থেকে 80 এবং 443 এর অনুমতি দেওয়ার জন্য:

    sudo touch /etc/authbind/byport/80
    sudo touch /etc/authbind/byport/443
    sudo chmod 777 /etc/authbind/byport/80
    sudo chmod 777 /etc/authbind/byport/443
    
  3. এখন আপনার কমান্ড কার্যকর করুন authbind(allyচ্ছিকভাবে নির্দিষ্টকরণ --deepবা অন্যান্য যুক্তি, ম্যান পৃষ্ঠাটি দেখুন) এর মাধ্যমে:

    authbind --deep /path/to/binary command line args
    

    যেমন

    authbind --deep java -jar SomeServer.jar
    

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


এটির কি আসলেই rwxঅনুমতি দরকার ?
ম্যাট

অপশন 1 এ ক্রিয়াকলাপটি ফিরিয়ে আনতে, আপনি কি পুনরায় কমান্ডটি -pইন্টাড ব্যবহার করে চালাবেন +eip?
eugene1832

5
সাবধান থাকুন যে, সেটক্যাপের সাহায্যে আপনি যদি এক্সিকিউটেবলকে ওভাররাইট করে থাকেন তবে আপনি (যেমন: পুনর্নির্মাণ করুন) এটির সুবিধাগুলি প্রদান করেন তবে এটি তার অধিকারযুক্ত বন্দরের স্থিতিটি হারাবে এবং আপনাকে আবার এটির অধিকার দিতে হবে: |
রজারডপ্যাক

1
এমন কিছু যা আমার সাথে বেহালার ছিল; আমি একটি সিএসভি সার্ভিস চালানোর চেষ্টা করছিলাম, এটি রুবি ব্যবহারকারী একটি রুবি চালায়। আপনাকে সংস্করণেsetcap অনুমতি দিতে হবে - নির্দিষ্ট রুবি এক্সিকিউটেবল , যেমন/usr/bin/ruby1.9.1
ক্রিশ্চিয়ান রোনডাও

3
আমার সন্দেহ আছে যে ফাইলগুলি chmod77 the7 এ যুক্ত byportকরা ভাল ধারণা। আমি ছোটো থেকে permisions দান দেখা করেছি 500থেকে 744। আমি আপনার পক্ষে কাজ করে এমন সীমাবদ্ধতমটিকে আটকে দেব।
পেরে

28

ডেল হ্যাগলুন্ড স্পট অন রয়েছে। সুতরাং আমি ঠিক একই জিনিস বলতে যাচ্ছি কিন্তু একটি ভিন্ন উপায়ে, কিছু নির্দিষ্টকরণ এবং উদাহরণ সহ। ☺

ইউনিক্স এবং লিনাক্স ওয়ার্ল্ডে সঠিক কাজটি হ'ল:

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

উচ্চ ঝুঁকি কোথায় রয়েছে সে সম্পর্কে আপনার ভুল ধারণা রয়েছে। উচ্চ ঝুঁকি হ'ল নেটওয়ার্ক থেকে পড়া এবং যা পড়া হয় না তার উপর অভিনয় করে সকেট খোলার সাধারণ কাজগুলিতে, এটি একটি বন্দরে আবদ্ধ করে রাখা এবং কল করা listen()। এটি এমন একটি পরিষেবার অংশ যা প্রকৃত যোগাযোগ করে যা উচ্চ ঝুঁকিপূর্ণ। যে অংশগুলি খোলার, bind()এবং listen()এবং এমনকি (কিছুটা হলেও) যে অংশটি accepts()উচ্চ ঝুঁকি নয় এবং এটি সুপারভাইজারের অধীনে চালানো যেতে পারে। accept()নেটওয়ার্কে অবিশ্বস্ত অপরিচিতদের নিয়ন্ত্রণে থাকা ডেটা ( ক্ষেত্রে সোর্স আইপি অ্যাড্রেসগুলি বাদ দিয়ে) তারা ব্যবহার করে না এবং কাজ করে না ।

এই কাজ করার অনেক উপায় আছে।

inetd

ডেল হ্যাগলুন্ড যেমন বলেছেন, পুরানো "নেটওয়ার্ক সুপারস্টার" এটি inetdকরে। যে অ্যাকাউন্টের অধীনে পরিষেবা প্রক্রিয়াটি চালিত হয় সেগুলির মধ্যে অন্যতম কলাম inetd.conf। এটি শ্রবণ অংশ এবং ড্রপিং সুবিধাগুলি পৃথক দুটি পৃথক প্রোগ্রামে ভাগ করে না, ছোট এবং সহজে শ্রুতিমধুর করে তোলে, তবে এটি একটি মূল exec()প্রক্রিয়া কোডকে একটি পৃথক প্রোগ্রামে পৃথক করে, কোনও পরিষেবা প্রক্রিয়াতে এটি একটি উন্মুক্ত ফাইল বর্ণনাকারীর সাহায্যে প্রসারিত সকেটের জন্য

নিরীক্ষণের অসুবিধা এতটা সমস্যা নয়, যেহেতু কেবলমাত্র একটি প্রোগ্রাম অডিট করতে হয়। inetdএর বড় সমস্যাটি এত বেশি নিরীক্ষণ করা নয় বরং এটি সাম্প্রতিক সরঞ্জামগুলির তুলনায় এটি সহজ সূক্ষ্ম রানটাইম পরিষেবা নিয়ন্ত্রণ সরবরাহ করে না।

ইউসিএসপিআই-টিসিপি এবং ডিমনটোল

ড্যানিয়েল জে বার্নস্টেইনের ইউসিএসপিআই-টিসিপি এবং ডেমনটোলস প্যাকেজগুলি একযোগে এটি করার জন্য ডিজাইন করা হয়েছিল। বিকল্পভাবে ব্রুস গুয়েন্টারের সমতুল্য সমতুল্য ডিমনটোলস-এনকোয়ার টুলসেট ব্যবহার করতে পারেন ।

সকেট ফাইল বর্ণনাকারী খোলার এবং সুবিধাভোগী স্থানীয় বন্দরটিতে আবদ্ধ করার প্রোগ্রামটি tcpserverইউসিএসপিআই-টিসিপি থেকে। এটি listen()এবং উভয়ই করে accept()

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

একটি সার্ভিস runস্ক্রিপ্ট যেমন উদাহরণস্বরূপ ( নাল আইডেন্ট পরিষেবা সরবরাহ করার জন্য এটি ডামিআইডেন্টডের জন্য একটি):

#!/bin/sh -e
exec 2>&1
exec \
tcpserver 0 113 \
setuidgid nobody \
dummyidentd.pl

জখলাবার

আমার নশ প্যাকেজটি এটি করার জন্য ডিজাইন করা হয়েছে। setuidgidঅন্যদের মতো এটিরও একটি ছোট্ট ইউটিলিটি রয়েছে। এক সামান্য পার্থক্য হল যে এটি দিয়ে ব্যবহারযোগ্য হয় systemd-style "LISTEN_FDS" পরিষেবা সেইসাথে সঙ্গে UCSPI-বিভিন্ন TCP সেবা, তাই ঐতিহ্যগত tcpserverপ্রোগ্রাম দুটি পৃথক প্রোগ্রাম দ্বারা প্রতিস্থাপিত হয়: tcp-socket-listenএবং tcp-socket-accept

আবার একক-উদ্দেশ্যমূলক ইউটিলিটিগুলি একে অপরের স্পন এবং চেইন লোড। ডিজাইনের একটি আকর্ষণীয় কীর্তি হ'ল যে কোনওটির পরে listen()কিন্তু তার আগেও সুপারভাইজার সুবিধাগুলি বাদ দেওয়া যায় accept()। এখানে এর জন্য একটি runস্ক্রিপ্ট qmail-smtpdপ্রকৃতপক্ষে ঠিক তা করে:

#!/bin/nosh
fdmove -c 2 1
clearenv --keep-path --keep-locale
envdir env/
softlimit -m 70000000
tcp-socket-listen --combine4and6 --backlog 2 ::0 smtp
setuidgid qmaild
sh -c 'exec \
tcp-socket-accept -v -l "${LOCAL:-0}" -c "${MAXSMTPD:-1}" \
ucspi-socket-rules-check \
qmail-smtpd \
'

প্রোগ্রাম সুপার-ইউজার এর পৃষ্ঠপোষকতায় পরিচালিত ছোট পরিষেবাতে অজ্ঞেয়বাদী শৃঙ্খল-লোড সরঞ্জাম fdmove, clearenv, envdir, softlimit, tcp-socket-listen, এবং setuidgid। যে বিন্দুটি shশুরু হয়েছিল, সকেটটি খোলা এবং smtpবন্দরের সাথে আবদ্ধ এবং প্রক্রিয়াটিতে আর সুপারস সুবিধা নেই।

s6, s6- নেটওয়ার্কিং, এবং সম্পাদনা

লরেন্ট বেরকোটের এস and এবং এস-নেটওয়ার্কিং প্যাকেজগুলি একযোগে এটি করার জন্য ডিজাইন করা হয়েছিল। কমান্ডগুলি কাঠামোগতভাবে daemontoolsএবং ইউসিএসপিআই-টিসিপি-র অনুরূপ ।

runস্ক্রিপ্ট একই হবে, এর প্রতিকল্পন ছাড়া s6-tcpserverজন্য tcpserverএবং s6-setuidgidজন্য setuidgid। তবে, একইসাথে এম বারকোটের এক্সিলাইন টুলসেট ব্যবহার করাও চয়ন করা যেতে পারে ।

ওয়েইন মার্শালের মূল থেকে হালকাভাবে সংশোধিত এফটিপি পরিষেবার একটি উদাহরণ এখানে দেওয়া হয়েছে, এতে প্রকাশক, এস 6, এস 6-নেটওয়ার্কিং এবং পাবলিক ফাইল থেকে এফটিপি সার্ভার প্রোগ্রাম ব্যবহার করা হয় :

#!/command/execlineb -PW
multisubstitute {
    define CONLIMIT 41
    define FTP_ARCHIVE "/var/public/ftp"
}
fdmove -c 2 1
s6-envuidgid pubftp 
s6-softlimit -o25 -d250000 
s6-tcpserver -vDRH -l0 -b50 -c ${CONLIMIT} -B '220 Features: a p .' 0 21 
ftpd ${FTP_ARCHIVE}

ipsvd

জেরিট পেপের আইপিএসভিডি হ'ল আরেকটি টুলসেট যা ucspi-tcp এবং s6- নেটওয়ার্কিংয়ের মতো একই লাইন ধরে চলে। সরঞ্জাম chpstএবং tcpsvdএই সময়, কিন্তু তারা একই জিনিস করে, অধিক ঝুঁকিসম্পন্ন কোডটি পড়া, প্রক্রিয়াকরণ, এবং অনির্ভরযোগ্য ক্লায়েন্টদের দ্বারা নেটওয়ার্কের মাধ্যমে পাঠানো কিছু লেখার আছে এখনও একটি পৃথক প্রোগ্রাম রয়েছে।

এখানে এম Pape উদাহরণ চলমান fnordএকটি runস্ক্রিপ্ট:

#!/bin/sh
exec 2>&1
cd /public/10.0.5.4
exec \
chpst -m300000 -Uwwwuser \
tcpsvd -v 10.0.5.4 443 sslio -v -unobody -//etc/fnord/jail -C./cert.pem \
fnord

systemd

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

সঙ্গে systemdএক একটি সকেট যে সংজ্ঞায়িত করতে কনফিগারেশন ফাইল তৈরি করে systemdউপর শোনেন এবং একটি পরিষেবা যা systemdশুরু হয়। পরিষেবা "ইউনিট" ফাইলটির সেটিংস রয়েছে যা সেটিকে ব্যবহারকারীর হিসাবে চালিত করে সেবার সাথে পরিষেবা প্রসেসকে নিয়ন্ত্রণ করতে পারে great

যে ব্যবহারকারীটি অ-সুপারইউজার হিসাবে সেট করা হয়েছে, systemdএটি সকেটটি খোলার, একে কোনও বন্দরে আবদ্ধ করার, এবং প্রসেস 1-এ সুপারসউজার হিসাবে কল করার listen()(এবং, প্রয়োজন হলে accept()), এবং পরিষেবা প্রক্রিয়াটির সমস্ত কাজ করে it spawns অতি ব্যবহারকারী সুযোগ সুবিধা ব্যতীত চলে।


2
প্রশংসার জন্য ধন্যবাদ. এটি কংক্রিট পরামর্শগুলির একটি দুর্দান্ত সংগ্রহ। +1 টি।
ডেল হ্যাগলুন্ড

11

আমি বরং একটি ভিন্ন পদ্ধতির আছে। আমি একটি node.js সার্ভারের জন্য 80 পোর্ট ব্যবহার করতে চেয়েছিলাম। নোড.জেএস কোনও নন-সুডো ব্যবহারকারীর জন্য ইনস্টল হওয়ার পরে আমি এটি করতে পারিনি। আমি সিমলিংকগুলি ব্যবহার করার চেষ্টা করেছি, তবে এটি আমার পক্ষে কার্যকর হয়নি।

তখন আমি জানতে পারি যে আমি একটি বন্দর থেকে অন্য বন্দরে সংযোগগুলি ফরোয়ার্ড করতে পারি। সুতরাং আমি 3000 বন্দরটিতে সার্ভারটি শুরু করেছি এবং 80 বন্দর থেকে 3000 বন্দরে পোর্ট এগিয়ে রেখেছি।

এই লিঙ্কটি আসল কমান্ডগুলি সরবরাহ করে যা এটি করতে ব্যবহৃত হতে পারে। এখানে আদেশগুলি -

স্থানীয় হোস্ট / লুপব্যাক

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 3000

বহিরাগত

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

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


6
বাক্স থেকে চিন্তা করার জন্য +1
রিচার্ড ওয়াইজম্যান

4

আপনার প্রবৃত্তিগুলি পুরোপুরি সঠিক: একটি বৃহত জটিল প্রোগ্রামকে রুট হিসাবে চালানো একটি খারাপ ধারণা, কারণ তাদের জটিলতা তাদের বিশ্বাস করা শক্ত করে।

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

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

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

এই বিচ্ছেদ অর্জনের এই দুটি প্রধান উপায়।

  1. একটি একক প্রোগ্রাম যা মূল হিসাবে শুরু হয়। এটি প্রথম যেটি করে তা হ'ল প্রয়োজনীয় সকেট তৈরি করা, যতটা সম্ভব সহজ এবং সীমাবদ্ধ। তারপরে, এটি সুবিধাগুলি বাদ দেয়, এটি নিজেকে একটি নিয়মিত ব্যবহারকারী মোড প্রক্রিয়াতে রূপান্তরিত করে এবং অন্যান্য সমস্ত কাজ করে। সুবিধাগুলি সঠিকভাবে বাদ দেওয়া জটিল, সুতরাং দয়া করে এটি করার সঠিক উপায়টি অধ্যয়নের জন্য সময় নিন।

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

[1] http://en.m.wikedia.org/wiki/Privilege_separation


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

3

সহজ সমাধান: লিনাক্সের সমস্ত সুবিধাযুক্ত বন্দরগুলি সরান

উবুন্টু / ডেবিয়ানের উপর কাজ করে:

#save configuration permanently
echo 'net.ipv4.ip_unprivileged_port_start=0' > /etc/sysctl.d/50-unprivileged-ports.conf
#apply conf
sysctl --system

(নন-রুট অ্যাকাউন্ট সহ ভার্চুয়ালবক্সের জন্য ভাল কাজ করে)

এখন, সুরক্ষার বিষয়ে সতর্ক থাকুন কারণ সমস্ত ব্যবহারকারী সমস্ত বন্দরকে আবদ্ধ করতে পারেন!


যে চালাক। একটি ছোট নীট: কনফিগারেশনটি 80 এবং 443 খোলে, তবে এটি অন্যান্য সমস্ত পোর্টও খুলবে। অন্যান্য বন্দরগুলিতে অনুমতিগুলি শিথিল করা পছন্দসই নয়।
jwww
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.