امنیت در وردپرس

ارسال شده توسط حامد صفا در ۳ شهریور, ۱۳۸۷ ساعت ۱۲:۵۷

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

http://bradblogging.com/wp-content/uploads/2008/05/wp-security.png

اگر شما هم از نسخه وردپرس شخصی بر روی هاست خود استفاده می کنید لازم است اقدامات امنیتی را در این زمینه به کار برید

۱- همیشه از آخرین ورژن ورد پرس استفاده کنید
همواره می توانید از نسخه جدید وردپرس در بخش مدیریت وردپرس با پیغامی کوچکی که نمایش داده می شود باخبر شوید . سعی کنید در اولین فرصت اقدام به به روز آوری نسخه وردپرس خود کنید . به روز آوری وردپرس ساده است . ابتدا پیشنهاد می کنیم از طریق PhpMyAdmin یک نسخه پشتیبان از دیتابس خود تهیه کنید . سپس تمامی پلاگینهای وردپرس خود را غیر فعال کرده و سپس تمامی فایلهای نسخه جدید وردپرس را به جز شاخه wp-content با نسخه قبلی جایگزین کنید.
سپس با ورود مجدد به بخش مدیریت و تایید پیغام Upgrade دیتابیس ،‌ مجددا پلاگینهای مربوطه را فعال کنید.
اگر همین مراحل ساده نیز برایتان مشقت دارد ، نگران نباشید . با استفاده از پلاگین  Wordpress Automatic upgrade می توانید  به وردپرس خود این امکان را بدهید تا بلافاصله پس از انتشار نسخه جدید وردپرس ، به صورت اتوماتیک وردپرستان تمام مراحل آپدیت را به صورت خودکار انجام دهد . (دانلود فایل فشرده وردپرس + انتقال به هاست شما + خارج کردن ورد پرس از حالت فشرده  + غیرفعال کردن پلاگینها + جایگزینی فایلهای جدید وردپرس + فعال سازی مجدد پلاگینها اقداماتی است که این پلاگین به صورت اتوماتیک انجام میدهد)
گناهکار عزیز قبلاً مقاله کاملی در رابطه با شیوه نصب و استفاده از این پلاگین در وبلاگش تهیه کرده است(مشاهده مطلب)

۲- ورژن نسخه فعلی را نمایش ندهید
پوسته های وردپرس (themes) به صورت پیش فرض در صفحه header.php خود کدی دارند که نسخه وردپرس مورد استفاده قرار گرفته را مشخص می سازد. پس از استاتیک شدن کدها ، از طریق دیدن source صفحه استاتیک این ورژن قابل تشخیص است. خوب اگر شما فرد تنبلی باشید و وردپرس خود را به روز رسانی نکرده باشید این نمایش نسخه قدیمی ، وسوسه ای شیرین برای هکرها خواهد بود تا از حفره های فسیل شده وردپرس شما ، تونلی جهت رفت و آمد و دید و بازدیدهای خود بسازند !
کافیست خط زیر را در header.php ، پوسته خود پیدا کنید.

<meta name=”generator” content=”WordPress <?php bloginfo(’version’); ?>” />

سپس آنرا باخط زیر عوض کنید.

<meta content="WordPress" name="generator" />

3- نام جداول (Table) را در دیتابیس تغییر دهید.

یکی از بهترین روشهای جلوگیری از حملات SQL Injection های احتمالی از وبلاگتان ، تغییر دادن نام Table ها در دیتابیس است که از حالت پیشفرض خارج شده و قابل حدس زدن نباشد .

- برای این کار ابتدا از دیتابیس خود یک نسخه پشتیبان با پسوند SQL تهیه کنید

-از فایل SQL خود یک کپی بگیرید و در جای دیگری از هارد دیسک خود نگاه دارید (برای این منظور که اگر در حین انجام عملیات مشکلی تو دیتابیس‌تون ایجاد کنید به راحتی بتونید اون رو به حالت اولیه بازگردانید ، البته نگران نباشید اگه مرحله به مرحله و کمی دقت مراحل فوق را انجام دهید مشکلی پیش نخواهد آمد)

- فایل SQL را در سیستم خود با استفاده از Notepad باز کنید .

- حالا تمامی عبارات _wp را با نام دلخواه عوض کنید به طور مثال _shahv

برای این کار می بایست از دستور Replace استفاده کنید . اگر با notepad ویندوز اقدام به بازگشایی فایل دیتابیس خود نموده اید از کلیدهای ترکیبی Ctrl+H استفاده کنید .

پس از پایان عملیات Replace فایل را ذخیره کنید .

- سپس به phpmyAdmin در کنترل پنل هاست مراجعه کنید و تمامی table های موجود در دیتابیس وردپرس خود را حذف کنید . (توجه داشته باشید خود دیتابیس را حذف نکنید)

-  سپس فایل Sql که بر روی هارد دیسک خود داشتید و آن را ویرایش کرده بودید را از بخش Import وارد دیتابیس خود در phpmyAdmin‌ کنید .

- سپس می بایست تغییر کوچکی در فایل wp-config.php وردپرس خود بدهید . این فایل دقیقا در Root شاخه ای است که وردپرس خود را نصب کرده اید و اگر وردپرس را خودتان نصب کرده اید حتما با آن اشنایی دارید . فایل فوق را ویرایش کرده و در خطی که عبارت :

$table_prefix = ‘wp_’;

نوشته شده است را با نامی که تغییر داده بودید عوض کنید . به طور مثال با توجه به مثالی که در بالا زدیم به جای خط بالا می بایست عبارت زیر را به کار برید :

$table_prefix = ’shahv_’;

- پس از انجام این کار به صورت اتوماتیک وردپرس تمامی پلاگینهای Active را غیر فعال (Deactivate) می کند . پس به بخش پلاگین وردپرس مراجعه کرده و مجدداً پلاگینهای مورد نیاز را فعال کنید .

کار تمام است .

۴-از فایلهای مهم وردپرس محافظت کنید

فایل wp-config.php را به وسیله برنامه Zend Guard 5 کد کنید. (می توانید برای بقیه فایل های مهم نیز این کار را انجام دهید) کار این برنامه کد کردن سورس های php است تا نتوان از محتویات آن آگاه شد. تا لحظه نگارش این مقاله ، برای ورژن ۵ این برنامه Decoder ای نوشته نشده است.

نسخه Trial نرم افزار Zend Guard 5 را می توانید از سایت نرم افزار دانلود کنید ، با کمی جستجو در اینترنت کِـرک ان را نیز خواهید یافت .

۵- تنها از پلاگین های مطمئن و معتبر استفاده کنید. از پلاگین ها فقط در زمان نیاز واقعی استفاده کنید
همواره سعی کنید از پلاگینهای معتبر و تایید شده سایت وردپرس استفاده کنید (پلاگینهای وردپرس) . پلاگینهای متفرقه که در سایتهای دیگر ارائه می شوند ممکن است دارای باگهای فراوانی باشند که امنیت وبلاگ شما را تهدید کنند .
علاوه بر آنکه تنها پلاگینهایی که بر روی سایت وردپرس قرار دارند قابلیت آپدیت اتوماتیک از طریق پنل مدیریتی وردپرس را دارا هستند .

۶- استفاده از فایل های htaccess. در موارد مورد نیاز :
با استفاده از فایل های htaccess. می توان امنیتی بالاتر را پی ریزی کرد. برای مثال با قرار دادن یک htaccess. مناسب در فولدر Wp-admin دریافت دو مرحله ای پسورد باعث افزایش امنیت می شود.  از موارد استفاده دیگر در فولدر هایی همچون فولدر: Image یا Plugins و … می باشد.

به طور مثال برای این کار در Cpanel می بایست وارد بخش شوید و اقدام به تعریف نام کاربری و کلمه عبور برای شاخه wp-admin کنید .

همچنین با قرار دادن یک htaccess. مناسب از تهدیدی با نام دایرکتوری لیستینگ در امان خواهید بود.

با قرار دادن فایل htaccess. مناسب، وقتی کاربری که فولدر خاصی را که نیاز به دیدن ندارد درخواست می کند، (در مواقعی که mod_rewrite فعال باشد برای تمام فولدر هایی که موجود است مانند پلاگین یا ایمیج و چه موجود نباشد مانند /shahvartest/ و هرچیز دیگر، تمام در خواست ها)، ریدایرکت شده و به صفحه اصلی میرود. از فواید آن علاوه بر جلوگیری از دایرکتوری لیستینگ، می توان به عدم توانایی مهاجم به وجود داشتن یا نداشتن فولدر ها و فایل ها اشاره کرد.

http://www.dannyfoo.com/blog/wp-content/uploads/2008/01/wordpress-lock.jpg

۷- انتخاب Permission مناسب فایل ها و فولدر ها در سرور.

برای فایلها و فولدهای های مختلف وردپرس خود سطح  دسترسی های مناسب برگزینید . تصویر زیر سطح دسترسی های مناسب را برای فایلها و فولدرهای مختلف وردپرس نمایش می دهد :
»» خیلی مهم: بر روی هیچ Folder و فایلی دسترسی ۷۷۷ قرار ندهید.
با انتخاب یک هاستینگ خوب از شر تهدیداتی که از جانب سرور می باشد در امان می مانید ، در حقیقت با استفاده از یک سرور امن تا حدودی این مرحله انجام شده است .

۸- یک IDS نصب و راه اندازی کنید .

IDS سر واژه کلمات Intrusion Detection System است ، به این مفهوم که سیستم مدیریت کشف د‌خـو‌ل سر زده ! یا به زبان عامیانه همان دزدگیر . (اطلاعات بیشتر در مورد IDS)

چند مدل IDS برای وردپرس وجود دارد . البته همگی به غیر از یکی غیر رسمی است ! تنها افزونه رسمی (تقریبا) افزونه WP IDS است که از موتور PHP IDS برای این کار استفاده میکند که پایدار و قدرتمند نیز است. کار این سیستم ها به این صورت است که ورودی های که به سمت هسته وردپرس برای پردازش فرستاده میشود را کنترل میکند و برسی میکند که این ورودی آیا مجاز بوده است یا خیر ، در صورت مجاز بودن ان را به هسته برای پردازش ارسال میکند در غیر اینصورت ان ورودی را حذف میکند ، با استفاده از این گونه افزونه ها وردپرس شما در برابر بیشتر حملات XSS injection مقاوم میشود و نفوذگر با مشکلات جدی مواجه میشود ، حتی اگر هسته وردپرس هم حفره ترمیم نشده داشته باشد برای نفوذگر مشکلات جدی پیش خواهد آمد ، فقط برای استفاده از افزونه معرفی شده بالا سرور شما باید دارای PHP نسخه ۵/۱/۶ به بعد باشد ، نکته دیگر هم در استفاده از این افزونه این است که پوشه محتوی فایل های افزونه باید مجوز ۷۷۷را دارا باشد . میتوانید آخرین نسخه فعلی این افزونه را از اینجا دانلود کنید . توجه کنید که همیشه از آخرین فـ‌یـلتر استفاده کنید . (+)

اگر از PHP نسخه ۴ استفاده می کنید می توانید از افزونه دیگری با نام PHPIDS استفاده کنید .

۹- تغییر دادن نام کاربری Admin:

همانطور که می دانید بعد از نصب وردپرس ، نام کاربری مدیر ثابت و کلمه admin می باشد و در حالت معمول و با استفاده از امکانات وردپرس قادر به تغییر نام کاربری admin نیستید . همین نکته باعث شده می شود که بوسیله ی حمله  password guessing ، وردپرس مورد تهدید قرار گیرد.

اما از طریق PhpMyadmin به راحتی قادرید تا نام کاربری Admin‌ را با نام کاربری دلخواه عوض کنید .

روش کار نیز ساده است پس از ورود به PhpMyadmin دیتابیس مربوط به وردپرس خود را انتخاب کنید .

سپس جدول wp_users را انتخاب کنید و پس از انتخاب user_login و انتخاب نام کاربری admin و ویرایش آن ، یک نام کاربری دلخواه برای User مدیر در نظر بگیرید .

راهنمای تصویری کاملی از این آمورش توسط وبلاگ p30help تهیه شده است که آن را می توانید از این آدرس دریافت کنید . (+)

۱۰- کلمات عبور خود را مشکل کنید

استفاده از یک کلمه عبور ساده و یا استفاده از نامتان و یا نام وبلاگتان به عنوان کلمه عبور لقمه آماده ای است برای هکر که به راحتی و از طریق حمله ای با نام Brute Force به بخش مدیریت وبلاگ دسترسی پیدا کند و ….

همیشه سعی کنید یک کلمه عبور مشکل و غیر قابل حدس زدن انتخاب کنید و از ترکیب حروف و اعداد برای کلمه عبور خود استفاده کنید . اگر وبلاگی دارید که چند نفر نویسنده دارد ، بهتر است به جای اینکه به همه نویسنده ها دسترسی مدیر بدهید تنها یک نفر با دسترسی admin‌ داشته باشید ، به بقیه user‌ها دسترسی Editor بدهید که اگر آنها از نام کاربری و کلمه عبور خود مراقبت نکنند هکر دسترسی به بخشهای حیاتی مثل فایل Index.php نداشته باشد .

۱۱- نسخه پشتیبان تهیه کنید

سعی کنید هرچند وقت یک بار یک نسخه پشتیبان از دیتابیس خود تهیه کنید تا اگر بنا به هر علتی سایت مورد حمله واقع شد و اطلاعتان حذف شد قادر باشید بلافاصله نسبت به بازگرداندن آن اقدام کنید . سایت وردپرس راهنمای کاملی را برای تهیه Backup‌ از وردپرس تان در کنترل پنلهای مختلف هاستینگ تهیه دیده است (مشاهده)

اگر این کار نیز برایتان مشقت دارد پلاگین WordPress Database Backup چاره ساز شما است .

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

این پلاگین قادر است تا به صورت روزانه و یا هفتگی و یا ماهانه یک نسخه پشتیبان از اطلاعات شما تهیه کرده و به ایمیل شما ارسال کند . حتما شما هم یک ایمیل در یاهو و یا گوگل دارید که نمی دونید با این همه فضایی که در اختیارتون قرار میده چه کار کنید …

به تازگی مهرداد عزیز در این پست اطلاعات کاملی را در رابطه با این پلاگین درج کرده است (مشاهده)

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

»‌ با رعایت هر ۱۱ بند شرح داده شده می توانید امنیت وبلاگ وردپرسی خود را تا حد بسیار زیادی بالا ببرید .

نویسندگان:
حامد صفا
مصطفی عزیزی

پانوشت :

» سعی کردم همه مطالب رو با زبانی ساده و کامل توضیح بدهم و اگر دوستانی در همان رابطه نوشته بودند برای کسب اطلاعات بیشتر به همان مقاله لینک داده شد . در هر حال اگر سوال و یا مشکلی داشتید در بخش نظرات همین مطلب پاسخگوی شما هستم .

» راستی شما که بر روی هاست خود وردپرس دارید تا به امروز چند مورد از این ۱۱ بند را رعایت می کردید؟


مربوط به وردپرس | ۱۸ نظر »



۱۸ نظر مربوط به مطلب [امنیت در وردپرس]

  1. ارسال شده توسط mehrdadNo Gravatar در ۳ شهریور ۱۳۸۷

    ممنون
    مرسی
    عالی بود

    پاسخ به اين نظر

  2. ارسال شده توسط معاونNo Gravatar در ۳ شهریور ۱۳۸۷

    اسم ان شخص حامد صفا نیست ، بلکه امیر اشتیانی ، سیاره یک باگ داره که مانی ان هنوز درست نکرده و ان هم این که اسامی اشخاص اشتباه نشون میده … به مطلب اصلی در سیاره مراجعه کنید و روی لینک نویسنده کلید کنید انگاه خواهید دید …

    موفق باشید

    پاسخ به اين نظر

    حامد صفاNo Gravatar به اين نظر پاسخ داد در  شهریور ۳م, ۱۳۸۷ ۱۱:۴۸ ب.ظ:

    دوست عزیز
    آره من خودمم هم مدتی هست متوجه شدن سیاره یه مشکلی داره برای اسمها

    ارمزو هم که رفتم سیاره دیدم فید شاهوار رو علامت سوال نشون میده؟
    فکر می کنید دلیلش چی باشه ؟
    شما هم فید شاهوار رو به صورت علامت سوال در سیاره می بینید ؟

    پاسخ به اين نظر

  3. ارسال شده توسط مهردادNo Gravatar در ۳ شهریور ۱۳۸۷

    خسته نباشی خیلی عالی بود

    پاسخ به اين نظر

    حامد صفاNo Gravatar به اين نظر پاسخ داد در  شهریور ۳م, ۱۳۸۷ ۱۱:۴۵ ب.ظ:

    خواهش مهرداد جان
    وظیفه بود
    ;)

    پاسخ به اين نظر

  4. ارسال شده توسط kianNo Gravatar در ۴ شهریور ۱۳۸۷

    آقا سپاسگذارم
    عالی بود

    پاسخ به اين نظر

  5. ارسال شده توسط مهدیNo Gravatar در ۴ شهریور ۱۳۸۷

    حامد جان بسیار مطلب عالی بود
    فقط در مورد گزینه ی ۳ می تونم بگم که بوسیله ی پلاگین wp-security-scan در زیر مجموعه ی Database می تونند براحتی اسم جداول شون رو بدون این دردسرها تغییر بدن ، البته گرفتن یک نسخه پشتیبان از دیتابیس قبل از این کار ، دیگه نیاز به گفتن نداره
    از آدرس زیر هم می تونند که این پلاگین رو دریافت کنند.
    http://semperfiwebdesign.com/plugins/wp-security-scan
    خسته نباشی

    پاسخ به اين نظر

    حامد صفاNo Gravatar به اين نظر پاسخ داد در  شهریور ۴م, ۱۳۸۷ ۸:۲۷ ب.ظ:

    مهدی جان
    ممنون از لطفت

    اما بر خلاف چیزی که این افزونه ادعا کرده قادر به تغییر نام تیبل ها نیست
    کافیه یه اسم دلخواه بزنید و تایید کنید تا با پیغام خطا مبنی بر اینکه قادر به انجام چنین کاری نیست مواجه شوید
    البته همونجا یه لینک بهتون میده که ارجاعتون میده به یک سایت خارجی که اموزش تغییر دیتابیس رو به همون روشی که اموزش فارسی در مطلب قرار داده شده توضیح داده
    افزونه Wp-Security رو من رو سایتهای مختلفی تست کردم رو هیچ کدوم برای من این بخشش کار نکرد

    موفق باشید

    پاسخ به اين نظر

  6. ارسال شده توسط مهدیNo Gravatar در ۱۱ مهر ۱۳۸۷

    متاسفانه توی هاست من برای نصب وردپرس باید مجوز پوشه ها رو به ۷۷۷ تغییر بدم. این کار مشکل امنیتی ایجاد میکنه؟
    راه حلی برای رفع این قضیه وجود داره؟

    پاسخ به اين نظر

    حامد صفاNo Gravatar به اين نظر پاسخ داد در  مهر ۱۱م, ۱۳۸۷ ۸:۴۰ ق.ظ:

    ۱۰۰% مشکل امنیتی داره
    یک هکر به راحتی می تواند به اطلاعات سایت شما دسترسی پیدا کرده و آنها را حذف کند

    پاسخ به اين نظر

  7. ارسال شده توسط سيناNo Gravatar در ۲۱ آبان ۱۳۸۷

    خیلی جالب بود موفق باشید

    پاسخ به اين نظر

  8. ارسال شده توسط عليNo Gravatar در ۵ بهمن ۱۳۸۷

    درود. بنده از وردپرس ۲٫۷ استفاده می کنم. در صورتی که برای فولدر uploads دسترسی ۷۷۷ رو تعریف نکنم وردپرس اجازه آپلود فایل رو بهم نمیده و بهمین دلیل مجبور شدم ۷۷۷ بذارم. سایتم با همین مشکل هک شد(هکر یک اسکریپت به داخل اون فولدر فرستاده بود و…). حالا چیکار کنم که ۷۷۷ نباشه و بتونم عکس ها و فایل هام رو مستقیما از قسمت آپلود وردپرس بفرستم؟
    لطفا هرچه سریعتر کمکم کنید.
    سپاس

    پاسخ به اين نظر

    حامد صفاNo Gravatar به اين نظر پاسخ داد در  بهمن ۷م, ۱۳۸۷ ۲:۲۴ ق.ظ:

    @علی, دوست عزیز
    دسترسی فولدر uploads باید در حالت ۷۵۵ باشه

    پاسخ به اين نظر

  9. ارسال شده توسط رضاNo Gravatar در ۲۳ تیر ۱۳۸۸

    سلام
    جالب بود دستتون درد نکنه .
    اما یه سوال اگه من بخوام کاربران نتونن استایل قالبم رو ببین باید چه کار کنم ؟؟؟
    مثل استایل سایت خودتون
    http://www.shahvar.net/wp-content/themes/rhea/style.css

    با تشکر

    پاسخ به اين نظر

  10. ارسال شده توسط سورانNo Gravatar در ۲۴ شهریور ۱۳۸۸

    سلام جالب بود.مرسی

    پاسخ به اين نظر

  11. ارسال شده توسط HesamNo Gravatar در ۱۲ بهمن ۱۳۸۸

    ممنون اما مطالب بالا بار ها به صورت پراکنده منتشر شده بود

    پاسخ به اين نظر

  1. 2 بازتاب

  2. شهریور ۶, ۱۳۸۷: 55_لینک داغ – 1387.6.6 – Foxlink 21 « لینکهای داغ از سراسر وب
  3. مهر ۲۵, ۱۳۸۷: ابزار های وبلاگ (45 لینک) « لینکهای داغ از سراسر وب

نظر دهيد

Google
 

آيا مي دانستيد كه :

وزن کل موریانه هاى جهان ده برابر وزن کل انسانها است