ভার্চুয়াল হোস্টে আলাদা ব্যবহারকারী কনফিগার করা কি এনজিনেক্সে সম্ভব?
কিছুটা এইরকম
server {
user myprojectuser myprojectgroup;
...
}
ভার্চুয়াল হোস্টে আলাদা ব্যবহারকারী কনফিগার করা কি এনজিনেক্সে সম্ভব?
কিছুটা এইরকম
server {
user myprojectuser myprojectgroup;
...
}
উত্তর:
না, কারণ একটি এনজিএনএক্স কনফিগারেশনের সমস্ত সার্ভার স্তঞ্জগুলি একই কর্মী প্রক্রিয়া থেকে প্রস্তুত করা হয়। তদ্ব্যতীত, সুরক্ষার দৃষ্টিকোণ থেকে, আপনি এটির মতো চালানো আরও ভাল , কারণ এর অর্থ হ'ল সামগ্রীটি স্বয়ংক্রিয়ভাবে ওয়েবসার্ভার দ্বারা লিখিত হয় না (যেমন একটি অনুপস্থিত মূর্খতা chmod -R 0777
), যাতে এনজিনেক্সে দুর্বলতা থাকলে, সামগ্রীর কোনওটিই নয় ঝুঁকিতে আছে.
www-data
ভোস্ট 0710
সেটআপ করবেন তখন ডকুমেন্টটিকে একটি গোষ্ঠী এবং গোপনীয়তা দিন (যেহেতু এনজিনেক্স কনফিগার করার জন্য এটির মূল প্রয়োজন, আপনার অটোমেশনটিও প্রয়োজনীয় অনুমতিগুলি সেট করে রাখার সমস্যা নেই)। তারপরে ডক্রোটের বিষয়বস্তু কেবল o+x
ডিরেক্টরি এবং o+r
ফাইলের জন্য হওয়া দরকার ।
www-data
, পিএইচপি স্ক্রিপ্ট বা সিজি-বিন প্রক্রিয়া পরিবেশন করতে পারে এমন প্রতিটি ব্যবহারকারী ব্যবহারকারীর অ্যাক্সেসযোগ্য যে কোনও ফাইল অ্যাক্সেস করতে পারে www-data
। এটি যে config.php.inc
কোনও অংশীদারি মেশিনে বা এর অনুরূপ ডেটাবেস পাসওয়ার্ড সংরক্ষণ করে এমন কারও কাছে এটি স্পষ্ট নয় বলে মনে হয় ।
peter
এবং john
। তারা তাদের ওয়েব পৃষ্ঠাগুলি হোস্ট করছে ~/public_html
। উপরে বর্ণিত লোকেদের দ্বারা বর্ণিত একটি ভিন্ন পদ্ধতির উপস্থিতি অনুপস্থিত, একটি। Php স্ক্রিপ্টের ওয়েব সার্ভারের মতো একই অনুমতি রয়েছে যেমন এটি এর অধীনেও কার্যকর হয় www-data
। এর অর্থ হ'ল, ওয়েব সার্ভার এবং পিএইচপি ইন্টারপ্রেটারের মতো এটি অন্য কোনও। Php স্ক্রিপ্টটি পড়তে পারে।
হ্যাঁ। অতিরিক্ত সুরক্ষার জন্য এটি সম্ভব এবং প্রস্তাবিত (নীচে কেন দেখুন)।
আপনি পিএইচপি-এফপিএম ব্যবহার করছেন তা বিবেচনা করে (আপনি সম্ভবত এটি সবচেয়ে সাধারণ হিসাবে), আপনি প্রতিটি ডোমেনের জন্য একটি পৃথক ব্যবহারকারীর মালিকানাধীন একটি স্পুল তৈরি করতে পারেন।
পিএস: আমি এখানে বিস্তারিত ধাপে ধাপে টিউটোরিয়াল লিখেছি:
https://learnwithdaniel.com/2019/06/user-per-virtual-host-nginx/
1. স্পুলস তৈরি করুন:
স্পুলগুলিতে যুক্ত করুন /etc/php/7.0/fpm/pool.d/www.conf
বা .conf
প্রতিটি নতুন স্পুলের জন্য একটি নতুন ফাইল তৈরি করুন।
স্পুল # 1 (myuser1):
[myprojectuser1]
user = myuser1
group = myprojectgroup
..
listen = /run/php/myuser1.sock
...
listen.owner = www-data
listen.group = www-data
স্পুল # 2 (myuser2):
[myprojectuser2]
user = myuser2
group = myprojectgroup
..
listen = /run/php/myuser2.sock
...
listen.owner = www-data
listen.group = www-data
পিএস: আপনার শ্রবণ.আপনার / শুনুন.আরূপ একই nginx ব্যবহারকারীর কাছে রাখুন (সাধারণত www- ডেটা )।
2. প্রতিটি স্পুলকে তার সার্ভার ব্লকে বরাদ্দ করুন (অ্যাপাচি ব্যবহারকারীদের জন্য ভার্চুয়াল হোস্ট):
হোস্ট 1:
server {
...
location ~ \.php$ {
fastcgi_pass unix:/run/php/myuser1.sock;
}
...
}
হোস্ট 2:
server {
...
location ~ \.php$ {
fastcgi_pass unix:/run/php/myuser2.sock;
}
...
}
এফপিএম এবং এনজিআইএনএক্স পরিষেবা পুনরায় চালু করুন
sudo /etc/init.d/php7.0-fpm restart
sudo service nginx restart
পরীক্ষামূলক:
একটি pinfo.php (বা যে কোনও নাম) ফাইল তৈরি করুন যা বর্তমান প্রক্রিয়া ব্যবহারকারীকে দেখায়:
<?php
echo str_replace("\n", '<br>', shell_exec('ps -u -p '.getmypid()));
বা বাশের মাধ্যমে pinfo.php ফাইলটি তৈরি করুন :
echo "<?php echo str_replace(\"\\n\", '<br>', shell_exec('ps -u -p '.getmypid()));" > pinfo.php
তারপরে আপনার ব্রাউজারে " http: //.../pinfo.php " খুলুন ।
একাধিক ব্যবহারকারী কেন ব্যবহার করবেন (সুরক্ষার কারণ):
আপনি যদি আপনার সমস্ত ওয়েবসাইট একই ব্যবহারকারীর অধীনে (www- ডেটা ) চালনা করেন তবে একটি পিএইচপি কল সিস্টেমে () / পাস্ত্র্রু () / এক্সিকিউটেড () সমস্ত ওয়েবসাইটে অ্যাক্সেস পাবে! এনজিআইএনএক্স আপনাকে এর বিরুদ্ধে রক্ষা করবে না। পিএইচপি কেবল একটি উদাহরণ, তবে যে কোনও জনপ্রিয় ওয়েবসার্ভার ভাষার অনুরূপ কল রয়েছে। হ্যাকার হিসাবে, আপনি সমস্ত ওয়েবসাইটের মধ্যে নেভিগেট করতে " এলএস .. " এবং যে কোনও ফাইলে (নিজস্ব ওয়েবসাইটের ফাইল সহ) নিজের কোড লিখতে " সিপি / প্রতিধ্বনি / এমভি " করতে পারেন। এমনকি সার্ভারের সমস্ত ওয়েবসাইট একই ব্যক্তির মালিকানাধীন (প্রাক্তন আপনি) প্রতিটি ওয়েবসাইটকে আলাদা ব্যবহারকারীর সাথে চালনা করার পরামর্শ দেওয়া হয়, কারণ এটি আপনার অন্যান্য ওয়েবসাইটগুলিতে অ্যাক্সেস করা থেকে হ্যাকার / ভাইরাস (প্রাক্তন ওয়ার্ডপ্রেস ভাইরাস) রোধ করবে।
উপরের দিকে ইভানের মন্তব্যের জবাবে এবং এটি ওপিতে প্রযোজ্য বলে মনে হচ্ছে। দুটি জিনিস:
আবেদন নথি রুট ভালো কিছু হবে /blah/peterWeb/html
এবং /blah/johnWeb/html
। এনজিআইএনএক্স এবং অ্যাপাচি 2 উভয়ই ডিরেক্টরিতে www-ডেটা চালিয়ে গেলেও একজনকে অন্য ডিরেক্টরিতে প্রবেশ করতে বা পরিচালনা করতে দেয় না।
প্রতিটি ডিরেক্টরি ট্রি তাদের নিজস্ব ব্যবহারকারীর অনুমতিতে স্থাপন করে প্রতিটি ব্যবহারকারীকে ইউএনআইএক্স সিস্টেমে ssh / লগইন করতে এবং তাদের ডিরেক্টরিগুলি প্রতিটিের জন্য ব্যক্তিগত রাখার অনুমতি দেয় - কেবল প্রতিটি ব্যবহারকারীকে www-ডেটা গ্রুপে রাখবেন না। আপনি যদি সম্মত হন তবে আপনার বাক্যটি:
পিএইচপি স্ক্রিপ্ট বা সিজি-বিন প্রক্রিয়া পরিবেশন করতে পারে এমন প্রতিটি ব্যবহারকারী www-ডেটা ব্যবহারকারীর কাছে অ্যাক্সেসযোগ্য যে কোনও ফাইল অ্যাক্সেস করতে পারে।
আরও নিখুঁত হিসাবে লিখিত হতে পারে:
যে অ্যাপ্লিকেশন / এনগিনেক্স সার্ভার (www-ডেটা) হিসাবে আপনি একই গ্রুপে রেখেছেন এমন প্রতিটি ব্যবহারকারী তার অ্যাক্সেসযোগ্য যে কোনও ফাইলে (যা পিএইচপি স্ক্রিপ্ট চালানো সহ) যা খুশি করতে পারে (যা মূলত ওয়েবে সমস্ত কিছু হতে পারে) সার্ভার)।
সম্পাদনা 1: কিছু সার্ভার অ্যাডমিন সমস্যার সমাধান করার জন্য আমি আরও এই বিষয়টির দিকে নজর রেখেছি। ইভানের তথ্যটি কতটা সঠিক ছিল সে সম্পর্কে আমি অসচেতন ছিলাম! আপনি যদি ব্যবহারকারীদের একটি ভাগ করে নেওয়া হোস্টিং কনফিগারেশনে স্ক্রিপ্টগুলি আপলোড এবং চালানোর ক্ষমতা দিতে চান তবে সাবধান হন। এখানে একটি পদ্ধতি । আমি এই দুর্বলতাটি বুঝতে পেরেছি তা নিশ্চিত করার জন্য ইভানের কাছে টুপি টিপুন।
www-data
। যদি জনি কোনও স্ক্রিপ্ট তৈরি করতে পারে এবং এটি www-data
চালিয়ে যেতে পারে (যা নির্দোষ সেটআপগুলিতে সে করতে পারে), তবে জনিটির স্ক্রিপ্ট পিটারের স্ক্রিপ্টগুলি পড়তে এবং সেগুলি আবার জোনির কাছে প্রেরণ করতে পারে। দলগুলির সাথে এটির কোনও সম্পর্ক নেই। যথাযথ সমাধানটি হল suPHP (যদি নির্লজ্জভাবে সেটআপ করা হয় তবে খারাপ, খারাপভাবে লিখিত কোড হিসাবে এই ব্যবহারকারীর সমস্ত ফাইলই বিপন্ন করে তোলে), বা একটি জেল, বা ব্যবহারকারী হিসাবে অতিরিক্ত ওয়েব ব্যবহারকারীকে ডেডিকেটেড করা উচিত Proper