কোন ব্যবহারকারী অ্যাপাচি এবং পিএইচপি হিসাবে চলতে হবে? / Var / www ফাইলগুলির কী অনুমতি থাকতে হবে?


41

আমি কেবল একটি উবুন্টু ১১.১০ বাক্স কাটিয়েছি এবং তারপরে বাক্সে apt-get install apache2 php5অ্যাপাচি 2 এবং পিএইচপি 5 ইনস্টল করতে দৌড়েছি । এখন এটি একটি "ওয়েব সার্ভার" হিসাবে কাজ করছে এবং এটি "এটি কাজ করে!" পাতা। এখন আমি সুরক্ষা জোরদার করার চেষ্টা করছি এবং লিনাক্স ওয়েব সার্ভার সম্পর্কে আমার নিম্নলিখিত প্রশ্নগুলি রয়েছে:

  1. কে আপাচে চলবে?
  2. এই ব্যবহারকারীর কোন গ্রুপে থাকতে হবে?
  3. কোন প্যাকেজ (গুলি) পিএইচপি (এবং অ্যাপাচি?) ফাইলগুলির মালিক হিসাবে চালাতে পারে? (ভাগ করা ওয়েব হোস্টগুলির মত) আমার কি এই প্যাকেজগুলি ব্যবহার করা উচিত? এগুলি কি কোনও ছোট সিস্টেমে বজায় রাখা সহজ / সম্ভাব্য?
  4. ওয়েবে অ্যাপাচি চলমান থাকা ফাইল এবং ফোল্ডারগুলির জন্য ডিফল্ট অনুমতিগুলি কী হওয়া উচিত www-data? ব্যবহারকারী হিসাবে অ্যাপাচি / পিএইচপি চলমান?

আমি ডিফল্ট সেটআপ পরীক্ষায় নিম্নলিখিত জিনিসগুলি করেছি:

ফাইল স্ট্রাকচার

যখন আমি cd /এবং ls -alসামগ্রীর একটি তালিকা করি, আমি দেখতে পাই /var:

drwxr-xr-x 13 root root  4096 2012-02-04 20:47 var/

যদি আমি cdভিতরে যাই varএবং ls -alআমি দেখতে পাই:

drwxr-xr-x  2 root root  4096 2012-02-04 20:47 www/

পরিশেষে, ভিতরে /var/wwwআমি দেখতে পেয়েছি:

drwxr-xr-x  2 root root 4096 2012-02-04 20:47 ./
drwxr-xr-x 13 root root 4096 2012-02-04 20:47 ../
-rw-r--r--  1 root root  177 2012-02-04 20:47 index.html

আমার মূল কথাটি হ'ল এখন পর্যন্ত এই সমস্ত ফাইলের অন্তর্ভুক্ত root:root, ফাইলগুলির 644 এর অনুমতি রয়েছে এবং ডিরেক্টরিতে 755 এর অনুমতি রয়েছে।

অ্যাপাচি এর অনুমতি

আমি যদি /var/www/test.phpবিষয়বস্তুগুলির সাথে রুট হিসাবে কোনও ফাইল তৈরি করি :

<?php echo shell_exec('whoami');

এবং সেই ফাইলটি একটি ব্রাউজারে লোড করুন এটি আমাকে বলে www-data, যা /etc/apache2/envvarsফাইলের মতো:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

আমি যদি ps aux | grep -i apacheনিম্নলিখিতগুলি দেখতে পাই:

root      1916  1.2 104664  7488 Ss   20:47 /usr/sbin/apache2 -k start
www-data  1920  0.8 105144  5436 S    20:47 /usr/sbin/apache2 -k start
www-data  1921  1.0 105144  6312 S    20:47 /usr/sbin/apache2 -k start
www-data  1922  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start
www-data  1923  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start
www-data  1924  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start
www-data  1925  0.7 104688  4624 S    20:47 /usr/sbin/apache2 -k start

তাহলে আপাচে কে চলছে? দেখে মনে হচ্ছে সম্ভবত প্রথম প্রক্রিয়াটি হ'ল root, /etc/init.d/apacheসিস্টেমটি যখন শুরু হয়েছিল তখন স্ক্রিপ্ট থেকে এবং অন্যটি যেমন www-dataপ্রথম থেকেই তৈরি হয়েছিল। এটা কি ঠিক?

পরবর্তী, আমি যদি টাইপ করি groups www-dataতবে আমি দেখতে পাই www-data : www-data- সুতরাং এটি কেবলমাত্র www-dataগ্রুপে রয়েছে বলে মনে হচ্ছে । আমি অনুমান করছি এটি স্ট্যান্ডার্ড অনুশীলনও।

ভাগ করা হোস্টিং এবং সুরক্ষা

সুতরাং আমি যদি জিনিসগুলি সঠিকভাবে বুঝতে পারি, যদি আপাচি চলমান থাকে www-dataএবং আমি যদি অ্যাপাচি ডিরেক্টরিটি পড়তে সক্ষম হয় তবে xবিটটি বিশ্ব (অন্যান্য) গোষ্ঠী ( o+x) এর জন্য সেট করা দরকার এবং এটি সমস্ত পিতামাতার উপরও সেট করা দরকার সমস্ত উপায়ে চেইন ( www, var) পর্যন্ত ডিরেক্টরি। এবং আমি যদি আপাচি কোনও ফাইল থেকে পড়তে সক্ষম হতে চাই তবে o+rবিট সেট করা দরকার।

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

আমি দুটি প্যাকেজ শুনেছি suphpএবং phpsuexecএটি ব্যবহারকারীর ফাইলগুলি একটি ভাগ করা সিস্টেমে "তাদের হিসাবে" পরিবেশন করার অনুমতি দেয় deal এর অন্যতম বৈশিষ্ট্য হ'ল এটি ওয়েব অ্যাপ্লিকেশনগুলিকে (ওয়ার্ডপ্রেসের মতো) ফাইল তৈরি এবং সংশোধন করার অনুমতি দেয় - থিম, প্লাগইন এবং সফ্টওয়্যার আপগ্রেড করার জন্য খুব সহায়ক। অবশ্যই ম্যানুয়ালি এই জিনিসগুলি করা আরও সুরক্ষিত তবে উপরে বর্ণিত প্যাকেজগুলির মধ্যে একটির সাথে সম্ভবত কোনও আপস করা যেতে পারে? অথবা সম্ভবত chownওয়ার্ডপ্রেস ডিরেক্টরি গোষ্ঠীটি অন্তর্ভুক্ত করে www-dataএবং গোষ্ঠীতে স্টিকি বিট সেট করতে ব্যবহার করে g+s?

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

প্রশ্নগুলিতে ফিরে যান

  1. কে আপাচে চলবে?
  2. এই ব্যবহারকারীর কোন গ্রুপে থাকতে হবে?
  3. কোন প্যাকেজ (গুলি) পিএইচপি (এবং অ্যাপাচি?) ফাইলগুলির মালিক হিসাবে চালাতে পারে? (ভাগ করা ওয়েব হোস্টগুলির মত) আমার কি এই প্যাকেজগুলি ব্যবহার করা উচিত? এগুলি কি কোনও ছোট সিস্টেমে বজায় রাখা সহজ / সম্ভাব্য?
  4. ওয়েবে অ্যাপাচি চলমান থাকা ফাইল এবং ফোল্ডারগুলির জন্য ডিফল্ট অনুমতিগুলি কী হওয়া উচিত www-data? ব্যবহারকারী হিসাবে অ্যাপাচি / পিএইচপি চলমান?

উত্তর:


17
  1. মূল নয়
  2. মূল নয়
  3. SuEXEC
  4. নির্ভর করে। ফাইলগুলির জন্য 644 এবং ফোল্ডারগুলির জন্য 755 একটি নিরাপদ ডিফল্ট।

আপনি php file ফাইল / ফোল্ডারের বিষয়বস্তু সম্পাদনা করতে সক্ষম না হওয়া পর্যন্ত কোনও কিছুর মালিকানা www-ডেটাতে পরিবর্তন করবেন না

আপনি অন্য যে কোনও বিষয় নির্বিশেষে: ফোল্ডারগুলিকে ব্যবহারকারীদের ফাইল খুঁজে পাওয়ার জন্য অনুমতিগুলি পড়তে এবং সম্পাদন করতে হবে; ফাইলগুলি পড়ার জন্য ব্যবহারকারীদের পড়ার অনুমতি প্রয়োজন। জিনিসগুলি পরিবর্তন করার সময় যদি আপনি কোনও অনুমতি ত্রুটি পান - তবে আপনি এই মৌলিকভাবে প্রয়োজনীয় অনুমতিগুলি সরাতে সক্ষম হয়েছেন।

আপনি যদি আপনার পিএইচপি অ্যাপ্লিকেশনটির মাধ্যমে কোনও ফাইল না লিখে থাকেন তবে আপনি নিজের মালিকানাধীন ফাইলগুলি রেখে যেতে পারেন: আপনি। এই পরিস্থিতিতে বিশ্বের অনুমতি (xx4 / 5) হ'ল এটি প্রযোজ্য।

যদি আপনি নিজের মালিকানাধীন ফাইলগুলি ছেড়ে দেন: আপনি 644 ফাইল ফাইলের অনুমতি সহ (ফাইল) এর অর্থ হ'ল কেবলমাত্র আপনি ওয়েবসাইট ফাইলগুলি সম্পাদনা করতে পারবেন - www-ডেটা আপনি নয় - তাই এটি ফাইলগুলি সম্পাদনা করতে পারে না।

আপনি যদি অ্যাপাচি + আপনার অ্যাক্সেসকে সীমাবদ্ধ রাখতে চান এবং অন্য সমস্ত অ্যাক্সেসকে আটকান chown -R you:www-data *। 640 ফাইলের অনুমতি এবং 750 ফোল্ডারের অনুমতি সহ আপনি সম্পাদনা করতে পারবেন, www-ডেটা পড়তে পারে - কারণ তখন অ্যাপাচি গ্রুপ অনুমতি (x4 / 5x) পড়ে।

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

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


10

সুতরাং আমি যদি জিনিসগুলি সঠিকভাবে বুঝতে পারি, যদি অ্যাপাচি www-ডেটা হিসাবে চলমান থাকে এবং আমি যদি আপাচি একটি ডিরেক্টরি পড়তে সক্ষম হতে চাই তবে এক্স বিটটি বিশ্বের (অন্যান্য) গোষ্ঠী (ও + এক্স) জন্য সেট করা দরকার এবং এটিও চেইন (www, var) এর সমস্ত উপায়ে সমস্ত পিতামাতার ডিরেক্টরিতে সেট করা দরকার। এবং আমি যদি আপাচি কোনও ফাইল থেকে পড়তে সক্ষম হতে চাই তবে ও + আর বিট সেট করা দরকার।

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

chown -R cwd:www-data /var/www/cwd.com
chmod 750 /var/www/cwd.com

এখন কেবলমাত্র গ্রুপের সদস্যরা www-dataপড়তে পারবেন /var/www/cwd.com। এবং কেবল আপনি (সিডব্লিউডি) এটি লিখতে পারেন। আপনি যদি নিজের অ্যাপ্লিকেশনগুলিকে (অ্যাপাচি এর মাধ্যমে) সেই ডিরেক্টরিতে ফাইল লিখতে / সংশোধন করার অনুমতি দিতে চান তবে আপনি এটিকে 770 এ chmod করতে পারেন।

আমি মনে করি এটি আপনার সমস্ত বিষয়কে কভার করে, আমি দেখতে পাচ্ছি যে ব্যবহারকারী অ্যাপাচি পরিবর্তনের কোনও কারণ চলছে না।


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

@ সিডব্লিউড আপনি কি এইটা খুঁজে পেয়েছেন?
রিকি বয়েস

@ cwd এই আমার কাছে সঠিক প্রশ্ন ছিল। এজন্যই আমি এটি জিজ্ঞাসা করেছি: সার্ভারফল্ট.কোয়েশনস
নন্দকুমার এডামানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.