কীভাবে একটি কাস্টম SELinux লেবেল তৈরি করবেন


11

আমি একটি পরিষেবা / একক বাইনারি অ্যাপ্লিকেশন লিখেছি যা আমি ফেডোরা 24 এ চালানোর চেষ্টা করছি, এটি সিস্টেমড ব্যবহার করে চলবে, বাইনারিটি স্থাপন করা হয়েছে /srv/bot

আমি যে পরিষেবাটি / অ্যাপটি লিখেছি সেগুলির এই ডিরেক্টরিতে ফাইলগুলি তৈরি / খোলার / পঠন এবং পুনরায় নামকরণের প্রয়োজন।

আমি প্রথম সেলইনাক্সের উপর ভিত্তি করে একটি নতুন নীতি তৈরি শুরু করেছি : একটি ডিরেক্টরিকে কোনও নির্দিষ্ট ডিরেক্টরিতে কোনও ফাইল তৈরি করার অনুমতি দেয় allow

তবে যখন আমার অ্যাপটির নতুন নামকরণের প্রয়োজন হয়েছিল, তখন আউটপুটটিতে একটি সতর্কতা ছিল:

#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;

আমি আশেপাশে গুগল করেছিলাম এবং জানতে পেরেছিলাম যে বেসের ধরণের চেয়ে আমার আরও নির্দিষ্ট এসইএলিনাক্স লেবেল ব্যবহার করা উচিত তবে অনলাইনে সমস্ত উদাহরণ আপনাকে httpd / nginx / ইত্যাদি থেকে বিদ্যমান লেবেলগুলি দেখায়।

আমি কি কেবল নিজের অ্যাপের জন্য কাস্টম লেবেল তৈরি করতে পারি?

আমার ধারণাটি মাইয়াপ_ভর_টি, ব্যবহারের মতো কিছু তৈরি করা use

semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot

এবং একটি কাস্টম .ppফাইল যা এই কাস্টম প্রকারটি ব্যবহার করবে

এটির সমাধানের আরও ভাল উপায় যদি হয় তবে তাও কার্যকর।

ধন্যবাদ

হালনাগাদ

আরও অনুসন্ধান করার পরে আমি মনে করি আমি যা করতে চাই তার জন্য উপযুক্ত শব্দটি নতুন তৈরি করা typesযা আমাকে https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3036916 এ নিয়েছে

যা মূলত বলে, চালাও

sepolgen /path/to/binary

এবং আমি একটি টেমপ্লেট পেতে সক্ষম হয়েছি যা আমি তারপরে একটি পিপি ফাইল এবং লোডের মধ্যে সংকলন করতে পারি, এখনও কিছু ত্রুটি পেতে পারি তবে মনে হয় আমি যা করতে চাই তার কাছাকাছি।

যদি আমি এটি কাজ করতে পাই তবে আমি এই পোস্টটি আপডেট করব

উত্তর:


11

দৌড়ের সূচনা পয়েন্ট সহ

sepolgen /path/to/binary

যা আপনাকে দেয়:

app.fc
app.sh
app.if
app.spec
app.te

SELinux file contextআপনার প্রোগ্রাম / ডেমন ফাইলগুলি ধারণ করে এমন কোনও পিতৃ ডিরেক্টরিতে প্রয়োগ করার জন্য একটি নতুন তৈরি করতে আপনি app.te ফাইল সম্পাদনা করুন এবং যুক্ত করুন:

type app_var_t;
files_type(app_var_t)

প্রথম লাইনটি নতুন প্রকারটি ঘোষণা করে এবং দ্বিতীয় লাইনটি একটি ম্যাক্রো কল করে যা কিছু যাদু করে এবং এটিকে একটি ফাইল টাইপ করে তোলে (আপনি কোনও ফাইল বা ডিরেক্টরিতে কোনও প্রসেস কনটেক্সট লাইন অ্যাপ_েক্সেক_টি ব্যবহার করতে পারবেন না) দেখা যায়, আরও জন্য " সেলইনক্স প্রকার পুনর্বিবেচিত" দেখুন বিভিন্ন ধরণের তথ্য

একবার আপনার প্রকারটি ঘোষিত হয়ে গেলে, আপনাকে এসইএলিনাক্সকে বলতে হবে যে আপনার অ্যাপ্লিকেশনটি এটি ব্যবহার করার অনুমতি দিয়েছে, আমার ক্ষেত্রে আমি যুক্ত করেছি

allow app_t app_var_t:dir { add_name remove_name write search};
allow app_t app_var_t:file { unlink create open rename write read };

এই দুটি লাইনই মূলত বলেছে, আমার অ্যাপ্লিকেশনটির ডোমেন যা অ্যাপ_টি টাইপ করুন, প্রসঙ্গটি দিয়ে অনুসন্ধান / ইত্যাদি ডিরেক্টরি লিখুন app_var_tএবং প্রসঙ্গে অ্যাপ_ভর_t দিয়ে ফাইল / খুলতে / মুছুন / ইত্যাদি ফাইল তৈরি করতে দিন

ধাঁধার শেষ অংশটি কোনওভাবে সেলইনাক্সকে জানানো হয় যে কোন ফোল্ডার (গুলি) এবং ফাইল (গুলি) প্রতিটি ধরণের পাওয়া উচিত, আপনি app.fcফাইলটি (এফসি => ফাইলের প্রসঙ্গ) সম্পাদনা করে এটি করেন

এই ফাইলটিতে আমার ক্ষেত্রে কেবল দুটি লাইন রয়েছে:

/srv/bot/app        --  gen_context(system_u:object_r:app_exec_t,s0)
/srv/bot(/.*)?          gen_context(system_u:object_r:app_var_t,s0)

প্রথম সারিরটি সরাসরি আমার সার্ভারগুলিতে স্থাপন করা বাইনারিটির দিকে নির্দেশ করে, তাই এটি অ্যাপ_এক্সেক_টি প্রসঙ্গ পায় context

দ্বিতীয় লাইনের অর্থ:

ডিরেক্টরি / এসআরভি / বট এবং অ্যাপ্লিকেশন-ডিআর / এসআরভি / বটের ভিতরে থাকা সমস্ত ফাইলে অ্যাপ_ভার_টি প্রয়োগ করুন

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

আমার এখন একটি কার্যনির্বাহী নীতি রয়েছে, আমি আমার অ্যাপ্লিকেশনটিকে কাস্টম নীতি দিয়ে মোতায়েন করতে পারি এবং এটি সমস্ত কার্যকর। (আমার নীতিটি .teফাইলে আরও অনেক এন্ট্রি রয়েছে তবে এটি এই প্রশ্নের ক্ষেত্রের বাইরে))

অতিরিক্ত পড়ার উপাদান যা আমাকে এই সমাধান পেতে সহায়তা করেছে:

সেপলজেন দিয়ে জিনিসগুলি সহজ করে তোলা

আপনি কেবল অন্ধভাবে -M Mydomain নিরীক্ষণ করার আগে ভাবেন

রেড হাট বিকাশকারীদের জন্য সেলিনাক্স (লং পিডিএফ)

একটি এস্লিনাক্স মডিউল (1): প্রকার ও নিয়ম

নমুনা নীতি (বিশেষত postgresql)

ফাইল কনটেক্সট ফাইলগুলি বোঝা



sepolgen /path/to/binaryআমার জন্য একটি সিনট্যাক্স ত্রুটি থুথু দেয়। আমি RHEL 7.6 এ আছি। আমি মনে করি sepolgen --application /path/to/binaryযদি আপনার লক্ষ্যটি কোনও নির্দিষ্ট অ্যাপ্লিকেশনের জন্য কোনও নীতি লেখার জন্য হয় তবে এটি সঠিক সিনট্যাক্স ??
jayhendren

তোমার .teফাইল যখন মডিউল কম্পাইল আমার জন্য একটি বাক্য গঠন ত্রুটি ছোঁড়া: app.te:5:ERROR 'This block has no require section.' at token 'files_type' on line 5:। এবং আমি যদি একটি requireবিভাগ যুক্ত করি তবে আমি পেয়েছি:ERROR 'syntax error' at token 'files_type' on line 13:
jayhendren

দুঃখিত, ফেডোরা মেশিনটি পরীক্ষা করার জন্য আমার আর অ্যাক্সেস নেই, তবে এটি 24 বছরের সংস্করণ থেকে সিনট্যাক্সটি পরিবর্তিত হতে পারে।
fmpwizard
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.