با پرمیشن صحیح وردپرس را امن کنید

اول بگم که این بحث فقط در مورد وردپرس نیست، در مورد هر برنامه تحت وبی که نوشتید هم صادقه، شاید از دروپال استفاده کنید و یا جوملا اما نکته اینه که خودم از وردپرس استفاده میکنم و از تم دیفالت وردپرس هم بهره می‌برم و می‌تونم بگم پرمیشن ها چطوری تنظیم بشه هم امنیت رو خیلی بالا برده باشید و هم اینکه سایت و وبلاگتون بدون هیچ مشکلی بالا بیاد. اما با کمی بازی می‌تونید این قاعده و این روش رو جاهای دیگه هم پیاده کنید.

نکات این راهنما روی هاست‌های  که به صورت شیر و اشتراکی استفاده میشن بیشتر به کار میاد.در هاست شیر تعداد زیادی وبلاگ و سایت متعلق به کاربران مختلف وجود داره و عموما تنظیمات طوری صورت میگیره که صاحب یک وبلاگ سر از کار وبلاگ دیگه در نیاره و یه جورایی ایزوله باشن کاربرا، بنابراین اگر دسترسی به یک سرور کامل دارید و مثلا وردپرس رو مستقیم از مخازن نصب کردید و خودتون یکه و تنها روی سرور هستید احتمالا لازم نیست خیلی نگران باشید!

فرض این راهنما بر اینه که سرور لینوکس ببن چند ده نفر آدم شیر شده و هر کدوم از اونها وبلاگ و سایت‌های خودشون رو می‌تونن داشته باشن. یکی از سیستم‌های معروفی که اغلب مدیر سرور برای مدیریت فله‌ای وبلاگ و سایت استفاده می‌کنه سی‌پنل که روی سرور لینوکس، نصب میکنه و بعد فرت و فرت فضا می‌فروشه تا جایی که سرور اشباع میشه و رم و پردازشگر دیگه تا حد خرخره و جون کندن کار میکنن!

احتمالا اگه هزینه کمی می‌دید برای میزبانی وبلاگ و سایتتون و از اون مهمتر مثلا سی پنل دارید و یا دایرکت ادمین! بدین معنی که روی سرور لینوکس غیر از شما کلی آدم دیگه هم هست (احتمالا).  سی پنل برای هر کاربری که مقداری فضا باید بهش متعلق بگیره  یه فولدر توی پوشه خونگی لینوکس به اسم اون کاربر می‌سازه و به صورت پیشفرض تنظیمات رو طوری قرار می‌ده که یک کاربر از محتویات پوشه کاربر دیگه مطلع نشه. بنابراین وقتی وارد سی پنل می‌شید توقع نداشته باشید بتونید محتویات پوشه کاربر دیگه رو ببنید :)

حالا یه نیم نگاهی داشته باشیم به پروسه نصب وردپرس!‌ وقتی وردپرس رو نصب میکنید به صورت دیفالت مجوز فایل wp-config.php روی ۶۴۴ تنظیم میشه. همینطوره بقیه فایل‌های داخل وردپرس! مجوز فولدرها هم ۷۵۵ تنظیم میشه.

wp-config.php فایل خیلی خیلی حساس و مهمیه! با این مجوز شما دارید دو دستی یوزر و پسورد دیتابیس و بنابراین کل زندگی تون رو به راحتی تقدیم میکنید به هکرای خیلی خیلی ناشی! و باید ناراحت باشید از این موضوع که احتمالا به زودی حتی یه هکر ترک هم می‌تونه سایت و وبلاگتون رو هک کنه!

بیاییم ببینیم چه کارایی میشه انجام داد با این مجوز. فرض کنید یکی از همسایه ها یه خورده کنجکاوه.  همسایه منظور کسی  که روی همین سروری که وبلاگتون موجوده، سایت و وبلاگ داره بعلاوه دسترسی به ترمینال. این ادم در حالت عادی نمی‌تونه محتویات پوشه home لینوکس رو ببینه چون به صورت صحیح توسط سی پنل  پرمیشن صحیح دارن(مگه اینکه خیلی مسئول سرور ناشی باشه و دستی تغییر داده باشه).  این ادم برای اینکه بفهمه چه کسایی کنارش هستن (دایرکتوری های موجود در پوشه home رو ببینه) می تونه بره سایتای تبدیل دامین به آی‌پی (+) و برای مثال آدرس وبلاگم رو وارد کنه و آی‌پی سرور رو در بیاره و بعد بره سراغ موتور جستجوی بینگ و خیلی ساده کل سایتایی که روی سرور میزبانی میشن رو در بیاره (+)

واو خیلی جالبه! :) همین اول کار توی لیست موتور جستجو یکی از وبلاگای بیگناه رو می‌بینم که هک شده!‌

wow

می‌شه حدس زد که اسم پوشه خونگی این کاربر روی سرور ikkco باشه و یا حتی مثلا پوشه خونگی وبلاگ خودم novid باشه‌:) و بعد با فرض اینکه طرف یه زمانی وردپرس استفاده می‌کرده، اون آدم بازیگوش میاد یه شورتکات ساده می‌سازه!

و حالا چون فایل مجوز ۶۴۴ داره  خیلی راحت یوزر و پسوردتون خونده میشه و این ادم میتونه وصل شه به دیتابیس و کلی کارای جالب کنه.

همینجا میشه نتیجه گرفت که اگه موقع نصب وردپرس، اون رو مستقیم اکسترکت نکنید و مثلا برید داخل یه پوشه به اسم nnnovid این کار رو کنید کار هکر رو کلی سخت کردید! کاری که خیلی ها اون رو انجام نمی‌دن.

trojan

اینجا فرض رو بر این گذاشتیم که کاربر دسترسی به ترمینال داره ولی حقیقت خیلی دردناک تر از این حرفاست :) هکرها خیلی راحت تر از اینکه تصور کنید با استفاده از فایل‌های php خیلی کم حجم موسوم به شل دسترسی به قسمت‌های مختلف سیستم خواهند داشت. فرض کنید فایل php شل یوزر و مالکش novid و اسمش هم wp-search.php باشه، باید که خیلی خیلی  خوره وردپرس باشید تا اینکه متوجه شید به صورت پیشفرض اصلا همچین فایلی رو وردپرس وجود نداره :) می‌تونه این فایل لابه لای تم رایگانی باشه که خیلی خوشحال اون رو پیدا کردید! اما غافل از اینکه این یک تله ست و تم حاوی فایل شل!

در اینصورت هکر کافیه وارد ادرس www.novid.ir/wp-search.php بشه. هر کاری رو که تصور کنید، این هکر می‌تونه با این شل انجام بده.  از رفتن به دایرکتوری ها مختلف، دیدن کل فایل های کاربر novid لیست گرفتن، در اوردن یوزر و پسورد و همونجا وصل شدن به دیتا بیس از داخل شل، حتی روش ها و تکنیک های معروف اکسپلویت کردن با استفاده از حفره های موجود یک نسخه خاص وردپرس و غیره و غیره. هکر می‌تونه حتی کل پروسه های در حال اجرای سرور رو ببینه!‌ می تونه با مشاهده پروسه‌های در حال اجرا یوزرهای دیگه رو ببینه :) هکر سایت بالا می‌تونه اسم من رو در بیاره و بعد توی بخشی که وجود داره دایرکتوری من رو بزنه و قصد خوندن اطلاعاتم رو داشته باشه! اما همه این کارها تا زمانی که شل تحت یوزر و گروپ novid نباشه و فایل ها و فولدرهای وردپرسی هم پرمیشن صحیح داشته باشن منتفی میشه! هکر دست خالی بر می گرده!

یکی از این شل های خوشگل رو از سروری که زیر دستم بود و یه گروه ترک اون رو برام سوغاتی اورده رو اپلود میکنم تا بگیرید و ببینید این شل ها چطورین، نسخه‌های متنوعی وجود داره از این شل‌ها، این شل به محض اجرا شدن کلی ایمیل برای صاحبش می‌فرسته! پس احتمال داره با اولین اجرا یوزر و پسورد دیتابیستون برای مثال فرستاده شده باشه برای صاحب اثر :)‌ تنها راه از کار انداختنش روی سرور دادن مجوز chmod 000 به فایله و یا باز کردن سورس و  پیدا کردن ایمیل و عوض کردنش به مال خودتون :)

hacks

دقت کنید اگه مالک این فایل (شل) novid باشه حتی می تونه محتویات wp-config با مجوز ۴۰۰ رو هم بخونه! پس اگر یکی از این شل ها رو داشته باشید حتی با پرمیشن صحیح هم امنیت معنی نداره! علت اینه که در هاست های شیر برای اینکه پروسه های php که هر یوزر استفاده میکنه رو بتونن به تفکیک ببینن و هم اینکه هر کاربر از کاربر دیگه ایزوله و جدا باشه ( به شرط پرمیشن صحیح)‌ از suphp و suexec استفاده می‌کنن. کاری که این ها انجام میدن اینه که اجازه میدن فایل php با مجوز کاربر عادی هم اجرا بشه! دقت کنید در حالت عادی تنها کسی که مجوز اجرای فایل php رو داره آپاچی و بنابراین اگه در حالت عادی یه شل با مجوز novid روی سرور سبز بشه عملا کاری نمی تونه کنه.  پس در صورتیکه هاست شیر  داشته باشید و suphp و suexec داشته باشید قادر هستید تمام فایل‌های php رو با مجوز ۴۰۰ هم اجرا کنید :)

مجوز ۴۰۰ این حسن رو داره که اگه مطمئن باشید که پاک پاکید خیالتون راحته که اگه همسایه بغلی‌ یکی از ین شل‌ها رو داشته باشه نمی‌تونه بهتون آسیبی بزنه، می‌تونید گاهگاهی  یک بار بک اپ کامل از وبلاگتون رو ذخیره کنید و بعد با آنتی ویروس چک کنید. در صورتیکه فایل مشکوکی پیدا نکرد یعنی پاکید :) یا وقتی که تم خاصی رو از نت می گیرید اون رو اول اسکن کنید و بعد روی سرور اپلود کنید.

حالا این مقدمات رو گفتم که بریم سر اصل مطلب و اینکه شما می تونید با خیال راحت کل فایل‌های php رو ۶۰۰ و یا ۴۰۰ تبدیل کنید :) با مجوز ۴۰۰ حتی خودتون هم نمی‌تونید تغییری در فایل‌ها ایجاد کنید (که در حالت عادی با فرض اینکه طراح و برنامه نویس نیستید هیچ وقت این نیاز رو نخواهید داشت)! یک راه اینه که فایل حساس wp-config رو ۴۰۰ بگذارید و بقیه رو ۶۰۰ تا زمانایی که وردپرس رو اپدیت میکنید مشکلی از این بابت نداشته باشید :) یه راه هم اینه که هر بار نسخه جدیدی میاد برید مجوزها رو موقتی ۶۰۰ کنید و بعد از آپدیت به نسخه جدید اون رو ۴۰۰ کنید.

اگه فایل های php رو ۴۰۰ کردید و سایتتون داون شد مطمئن باشید که سروری که هستید از suphp استفاده نمیکنه اما با تقریب خیلی بالایی بهتون اطمینان میدم اکثریت سرورهای هاستینگ شیر در ایران از این روش استفاده میکنن! در صورت داون شدن سایت فقط فایل wp-config رو ۴۰۰ بگذارید باشه و بقیه همون ۶۴۰ برگردونید و باز اگه جواب نداد ۶۴۴ بذارید باشن. اما wp-config رو بیشتر از ۴۰۰ ندید هیچ وقت (جز زمانایی که قراره پسورد و یوزر دیتابیس عوض بشه)‌

اما فایل های دیگه غیر از php مثل .htaccess  و عکس ها رو باید بتونید با مجوز ۴۰۴ درست کنید. علت اینکه مجوز گروپ رو ۴ میدید اینه که این دسته فایل ها دیگه با suphp و suexe اجرا نمی‌شن و بنابراین باید توسط other قابلیت خوندن داشته باشن تا آپاچی بتونه به اونها دسترسی داشته باشه :) تمام css های تم و فایل متفرقه xml و اینجور چیزها شامل این قانون میشه.

پس نتیجه میشه چیزی مثل این

pr

The short URL of the present article is: https://www.novid.ir/MiRIW

16 دیدگاه

  1. ایده‌ات عالی بود!
    یک قالب وردپرس بسازیم توش شل باشه! چرا به فکر خودم نرسیده بود؟
    حالا جدا از ایده‌ات پست عالی بود دلم واسه اینجور پست‌هات تنگ شده بود.

  2. خوب بود نوید جان
    ولی با این جمله‌ی «حتی یه هکر ترک هم می‌تونه سایت و وبلاگتون رو هک کنه!» مشکل دارم!
    مگه هکرای ترک خیلی ضعیفن؟

    1. نه نه :) ولی چون هکرای ترک حمله کردن بودن به سروری که دستم بود دل پری داشتم ازشون :))) اسکرین شات دومی هم همین مال ترکاست ولی کلا با رعایت یه سری نکات خیلی ساده میشه جلوی هکای اینجوری رو گرفت! فارغ از اینکه طرف چه ملیتی داره اینجور هک کردن و دیفیس شدنا واقعا کار سختی نیست! خلاقیت بالایی هم نمی طلبه

  3. سلام من می خوام sshرو نصب و باهاش کار کنم-open ssh server رو نصب کردم- کلید عمومی و اختصاصی و……. ولی هیچ نتیجه ای نگرفتم

  4. درود

    مفید و جالب بود …

    تاحالا به مجوز ۴۰۴ فکر نکرده بودم !

    سپاس بابت توضیحات روان شما

    —-
    اون قسمت اکسترکت کردن محتویات وردپرس تو پوشه nnnovid را متوجه نشدم .
    منظور شما اینه که وردپرس در دایرکتوری دیگری غیر از روت نصب بشه ؟

    1. بله بله دقیقا :) اینطوری به راحتی نمی‌تونن حدس بزنن مسیر درست وردپرس رو که کجا نصب شده

  5. salam
    man site daram midonam moshkele permision dare
    mishe ye zahmat bekeshi baram dorost konid
    vaghean lotf mikonid
    kheyli kare bozorgi anjam midid
    man vaghean shaba khabam nemibare ke nakone site ro suspend konan be khatere inke moshkele permision dare
    man khodam balad nistam va inja karmandam va age dobare moshkeli pish biad mano ekhraj mikonan
    merc
    montazere javabam

  6. عالیییییییییییییییی بود ، خیلی ممنون .کاش گوگل پلاس داشتید مطالب تون رو شر میکردیم.
    اون قسمت اکسترکت کردن محتویات وردپرس تو پوشه nnnovid را متوجه نشدم .
    منظور شما اینه که وردپرس در دایرکتوری دیگری غیر از روت نصب بشه ؟
    بعد مشکلی پیش نمیاد؟
    حالا اگه نکرده باشیم و بخواهیم واسه یه سایتی که تموم شده ، اینکارو انجام بدیم میشه؟
    لطفا راهنمایی کنید
    با تشکر

  7. سلام
    من تازه با وبلاگ فوق العاده ات آشنا شدم و یکی یکی دارم مطالبت رو می خونم و لذت می برم
    راستی یه سوال من وردپرس رو با centminmod بالا میارم نظرت راجع بهش چیه؟
    موفق باشی

  8. سلام
    قسمت اکسترکت کردن محتویات وردپرس تو پوشه nnnovid را متوجه نشدم .
    ممکنه یکم واضح تر توضیح بدید!
    خیلی ممنون

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *