PDA

View Full Version : مشکل امنیتی با chmod 777



anubis_ir
یک شنبه 15 آبان 1384, 08:06 صبح
سلام

مشکلی که با هاست (لینوکسی) محترم دارم این است که در یک shared hosting ، همسایه ها (سایر سایت‌های موجود در این هاستینگ) می توانند به سادگی تمام زندگی من رو پاک کنند یا برعکس! (با آپلود یک اسکریپت php) خصوصا اگر chmod یک فولدر جهت آپلود فایل 777 شده باشد. این فولدر به سادگی توسط همسایه ناراحت در این هاست محترم قابل رایت است! (آدرس هاست محفوظ است!)
جهت حل این مشکل چه راهی رو پیشنهاد می کنید؟ به هاستینگ چی باید بگم تا متوجه این مشکل بشه. خودم برای فولدرهای 777 باید چکار کنم تا همسایه نتونه توش چیزی رایت کنه!!

مرسی

oxygenws
یک شنبه 15 آبان 1384, 10:37 صبح
اصولا نمی تونی کاری بکنی.
شاخه ای که 777 باشه، توسط همه خونده میشه.
اگر کمک بیشتری می خوای، **دقیقا** دلیل اینکه اون شاخه رو 777 کردی بهم بگو.

anubis_ir
یک شنبه 15 آبان 1384, 11:54 صبح
جهت آپلود فایل در آن توسط کاربر ثبت نام کرده درسایت (بوسیله یک اسکریپت php).

آیا در تمام shared hosting ها هم اینطوری است؟

oxygenws
یک شنبه 15 آبان 1384, 12:15 عصر
آره، در تمام share hosting ها همینطوریست.
اما برخی، تا حدودی امن ترند و دسترسی سخت تره، اما غیر ممکن نمی شه.

به هر حال، بهتره نذاری کسی فایل php آپلود کنه (با خود php) یا اینکه کلا ساختار آپلودت رو ببری روی MySQL.

در مورد دسترسی بقیه تو share hosting هم بهتره اگر PHP ات به صورت cgi نصب شده، دسترسی شاخه رو بکنی 700 (قاعدتا نباید با این حالت مشکلی داشته باشی) و اگر php سرورت به صورت module نصب شده، دسترسی رو بکنی 700 ولی اگر می تونی user و group شاخه و فایل ها رو بکنی user و group وب سرورت (معمولا یا apache است یا nobody)

با این کار ها میشه امنیت رو بالا برد، اما نهایتا برای بالاگذاری فایل، من بهت توصیه می کنم:
1- از پایگاه داده استفاده کنی.
2- اگر هم از فایل استفاده می کنی، آدرس دهی مستقیم نداشته باشی. (منظورم برای بازخوانی است)
3- اگر از فایل استفاده می کنی، حتما چک کنی که هر کس، هر فایلی رو نتونه بالاگذاری کنه، یعنی توسعهء فایل رو محدود کنی.

موفق باشی.

anubis_ir
یک شنبه 15 آبان 1384, 13:03 عصر
ممنون از پاسخ شما

anubis_ir
سه شنبه 17 آبان 1384, 07:45 صبح
سلام

الان مشکل دیگری پیدا کرده‌ام! در یک shared hosting ، همسایه می تونه تمام سورس کدهای php من رو ببینه. (با استفاده از یک اسکریپت php حاضر و آماده جهت این نوع موارد که در صورت نیاز می‌تونم اون رو اینجا ضمیمه کنم)
اگر سایت از دیتابیس مای اس کیوال بخواهد استفاده کند من مجبور هستم username و password یوزر تعریف شده جهت اتصال به دیتابیس مای اس کیوال رو برای مثال در یک فایل config.php قرار بدم.
خوب! مشکل اینجاست که محتویات این فایل به سادگی توسط همسایه غیرمحترم خوانده شده و می تواند باز هم با یک اسکریپت php دیگر کل دیتابیس من رو دامپ و یا دراپ کند! (و این متاسفانه اتفاق افتاده و رو به گسترش است!)
برای امن کردن این نوع داده‌های حساس (مشخصات کاربر تعریف شده جهت اتصال به دیتابیس) چه روشی رو در این نوع هاست‌ها پیشنهاد می کنید؟


با تشکر

oxygenws
سه شنبه 17 آبان 1384, 12:22 عصر
کافیست user و group فایلتون مربوطه به شما باشه و دسترسی اش رو محدود کنید (بستگی به تنظیمات سرورت می تونه فرق کنه، یا 400 یا 640 یا ...)

ضمن اینکه می تونی اینچنین فایل هایی رو در شاخه بالای www قرار بدی.

anubis_ir
سه شنبه 17 آبان 1384, 13:25 عصر
سلام

با تشکر از پاسخ شما. سطح دسترسی 640 اصلا برای حالت من (یک یوزر استفاده کننده از یکی از هاست‌های فروخته شده) مناسب نیست و دسترسی read را برای شخص مهاجم (همسایه ای در همان هاست) روی سورس مهیا می‌کند.
سطح دسترسی 400 (یا 600) خیلی خوب است چون دسترسی read مهاجم را (بعنوان یوزر local) حذف می‌کند. اما در همین حالت امکان include کردن فایل config.php در اسکریپت هم حذف می‌شود و پیغام عدم توانایی استفاده از این فایل ظاهر می‌شود. در مورد فولدرهای بالای www هم به همین صورت. (چون به نظر اسکریپت‌ها تحت مجوز local اجرا می‌شوند و نه تحت مجوز owner)


با تشکر از حسن توجه شما

oxygenws
چهارشنبه 18 آبان 1384, 20:50 عصر
یه phpinfo به من بدید.

anubis_ir
پنج شنبه 19 آبان 1384, 12:44 عصر
سلام

ضمیمه شد.

oxygenws
پنج شنبه 19 آبان 1384, 13:15 عصر
برای این مورد، امنیت سرورت پایینه!
باید گزینه openbase_dir فعال باشه، که نیست.
از طریق آپاچی (htaccess یا httpd.conf) می شه روی اکانت ها فعال بشه.

mikhak
دوشنبه 17 مهر 1385, 10:09 صبح
پیشنهاد میکنم به این آدرس هم ه سر بزنید ببینید متاسفانه چقدر ما عقده ای داریم

http://www.iranyad.com/ftopict-1801.html

hamidreza66
چهارشنبه 01 آبان 1387, 19:23 عصر
سلام دوستان
من یکم توضیح درمورد permission ها میخوام
البته آشنایی دارم و میدونم چطوره اما یه چیزو دقیق نمیدونم
ما واسه permissionها سه گروه کاربری داریم
1-Owner
2-Group
3-Other
اینجا منظور از group و other یعنی چی؟
البته خودم یه حدسی میزنم، group کسایی که از سایت من دیدن میکنند.
و other کسایی هستند که خارج از سایت من هستند (مثل کسی که از فایلهای من داره برای بلاگش استفاده میکنه و لینک میده)
سوال بعدی من، برای آپلود کاربران چه permission لازم هست، حتماً باید 777 باشه؟

حامد مصافی
چهارشنبه 01 آبان 1387, 21:31 عصر
هر کاربر عضو یک گروه است.
owner صاحب (به طور پیش فرض سازنده) فایل است.
منظور از group تمام کاربرانی است که در گروه اصلی کاربر صاحب فایل قرار دارند.
other به بقیه کاربران اشاره می کند.


نه آپلود (نوشتن فایل) و خواندن فایل توسط ماژول php که به طور پیش فرض با کاربر www-data و گروه www-data شناسایی میشه انجام میگیره. پس نیازی به مجوز دهی به سایرین نیست.

hamidreza66
شنبه 04 آبان 1387, 11:40 صبح
هر کاربر عضو یک گروه است.
owner صاحب (به طور پیش فرض سازنده) فایل است.
منظور از group تمام کاربرانی است که در گروه اصلی کاربر صاحب فایل قرار دارند.
other به بقیه کاربران اشاره می کند.


نه آپلود (نوشتن فایل) و خواندن فایل توسط ماژول php که به طور پیش فرض با کاربر www-data و گروه www-data شناسایی میشه انجام میگیره. پس نیازی به مجوز دهی به سایرین نیست.

من تازه کارم میشه بهتر توضیح بدی؟

1- صاحب فایل از چه طریقی به فایل دسترسی داره؟ چطور مشخص میشه من صاحب فایل هستم یا دیگری؟ یعنی اگه من با ftp وارد بشم owner حساب میشم یا برای ورود owner راه دیگه ای هم هست؟
من برای آپلود تو سایتم پرمیژن فولدم 777 بود اما نشد آپلود کنم اما وقتی که owner رو از webserver به you تغیر دادم تونستم آپلود کنم.

2- فرض من صاحب فایل هستم، ازکجا بفهمم زیر گروه های من کیا هستن و از چه طریقی به فایل دسترسی دارند؟ یا یکی بیاد تو سایت من جزء کدوم گروه قرار میگیره؟ کسی که اسکریپت ها رو رو سرور من اجرا میکنه (حالا چه هکر چه بازدید کننده) جزء کدوم گروه هست؟ کسی که اسکریپ ها رو اجرا نکنه و فقط یه قسمت استاتیک رو ببینه جزء کدوم گروهه؟

3- بقیه کاربران منظور چه کسایی با چه جور دسترسی هایی هستند؟
یکی که داره از فایلهای سرور من استفاده میکنه (مثلاً واسه بلاگش از فایلهای من استفاده میکنه) جزء کدوم گروه هست؟

hamidreza66
یک شنبه 05 آبان 1387, 21:44 عصر
کسی جواب منو نمیده؟

حامد مصافی
یک شنبه 05 آبان 1387, 22:17 عصر
1- سازنده فایل مادامی که با دستور chown صاحب فایل تغییر نکنه، صاحب فایل محسوب میشه.

2- با دستور زیر:

getent group <goupname>

3- بقیه کاربران یعنی تمام افرادی که شامل موارد فوق نیستند.