18 روش 100٪ تضمینی برای افزایش امنیت وردپرس

امنیت وردپرس چگونه است و چطور آن را بالا ببریم؟
فهرست این محتوا: پنهان
برای امتیاز به این نوشته کلیک کنید!
[کل: 5 میانگین: 4.2]

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

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

بنابراین اگر می‌خواهید که به صورت رایگان از بهترین روش های بالا بردن امنیت در وردپرس بهره‌مند شوید، تا پایان این مقاله از وبلاگ سون هاست با من همراه باشید تا ۱۸ تا از نکات، افزونه‌ها و ابزار مختلفی که به شما در رسیدن به این هدف کمک می‌کند را معرفی کنم.

امنیت وردپرس چگونه است؟ آیا امن است؟

به خودی خود نمی‌توان گفت که یک سیستم امنیت بالا و صد در صدی دارد، چه برسد به اینکه بگوییم وردپرس امنیت بسیار بالایی دارد. مسئله امنیت به چند بخش تقسیم می‌شود که بخش کوچکی از آن را سیستم و کدنویسی ان تشکیل می‌دهد، در حالی که بخش دیگر ان که بیشتر به دلیل اشتباهات و نکاتی که شاید اسم آنها را «سوتی دادن» بگذاریم باعث هک یک سایت می‌شود.

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

اصلا به این موضوع فکر کردید که بعد از خرید هاست، وقتی از FTP استفاده نمی‌کنید، چه لزومی دارد که اکانت FTP در هاست شما تعریف شده باشد؟

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

دلیل هک گسترده سایت های وردپرسی چیست؟

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

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

خوشتان بیاید یا نه، برای یک بار هم که شده واقع بین باشید و چند لحظه همین حالا فکر کنید:

آیا ارزش دارد که بخاطر این مبلغ، حاصل ماه‌ها تلاشی که روی سایت می‌کنید را یک شبه نابود کنید؟

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

می‌توانم بگویم که بیش از ۸۰ درصد هک سایت‌های وردپرسی که در ایران رخ می‌دهد عدم توجه به همین مسئله است. تنها ۲۰ درصد از موارد وجود دارند که به دلیل پیاده سازی نکردن راهکارهای افزایش امنیت در وردپرس رخ می‌دهد که در ادامه به معرفی 18 تا از روش‌های بالا بردن امنیت سایت وردپرس می‌پردازم.

18 روش 100٪ تضمینی برای افزایش امنیت وردپرس

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

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

از یک هاست با امنیت بالا استفاده کنید

هاست بستر اصلی سایت شما را تشکیل می‌دهد و تا زمانی که امنیت بالایی نداشته باشد، امکان هک شدن سایت شما و کلیه سایت‌هایی که روی یک سرور قرار دارند فراهم است.

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

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

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

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

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

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

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

نکات اولیه شامل چیزهایی است که خو شما باید آنها را رعایت کنید. در ادامه چند مورد از این‌ها را در قالب چک لیست ذکر می‌کنم.

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

بکاپ گیری وردپرس را به صورت منظم انجام دهید

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

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

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

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

لزوما احتیاجی نیست همیشه به‌روز باشید، اما آپدیت وردپرس را جدی بگیرید

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

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

غیرفعال کردن اجرای فایل های PHP

یکی از روش‌هایی که با استفاده از ان شاید بتوان فایل‌های php را در دایرکتوری wp-content/uploads آپلود کرد با انجام برخی باگ‌ها در برخی افزونه‌ها ممکن است وجود داشته باشد. به عنوان نمونه چند سال قبل یکی از هکرها توانسته بود کدهای php را با قرار دادن در اطلاعات فایل تصاویر در یک سایت قرار داده و آن را هک کند.

برای جلوگیری از  چنین مواردی می‌توانید با قرار دادن قطعه کد زیر در فایل htaccess. از این کار جلوگیری کنید.

<Directory "/var/www/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>

امنیت صفحه ورود به وردپرس را برای حملات بروت فورس بالا ببرید

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

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

الف) استفاده از کپچا وردپرس

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

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

ب) استفاده از ورود دو مرحله‌ای

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

بلکه یک فرم دیگر نمایش داده می‌شود که باید در ان رمز یک بار مصرف ورود دو مرحله ای را وارد کنید. این رمز یک بار مصرف معمولا ۶ رقمی است که نهایتا ۳۰ ثانیه اعتبار دارد و بعد از گذشت ۳۰ ثانیه اعتبار استفاده از ان از دست می‌رود که باید یک رمز دیگر تولید کنید. حالا این رمزها چگونه تولید می‌شوند:

  1. یکی از روش‌ها استفاده از برنامه‌های موبایل همچون google authenticator و microsoft authenticator است. کافی است افزونه مرتبط با این ابزار را در وردپرس نصب کرده و تنظیمات آن را انجام دهید. در این صورت در این برنامه‌ها در هر ۳۰ ثانیه یک کد ورود تولید می‌شود که با استفاده از انها می‌توانید در سایت لاگین کنید.
  2. یکی دیگر از روش‌ها هم تولید رمز توسط وردپرس و ارسال ان به ایمیل مدیر سایت است. بعد از وارد کردن نام کاربری و رمز عبور که روی دکمه ورود کلیک می‌کنید، یک ایمیل به عنوان اطلاعیه ورود برای مدیریت سایت ارسال می‌شود و درون ایمیل هم کد ورود قرار داده شده است. تا زمانی که دسترسی به این کد فراهم نباشد نیز امکان ورود به پیشخوان وردپرس فراهم نیست.

ج) محدودیت در تعداد دفعات تلاش برای ورود به مدیریت وردپرس

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

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

دانلود افزونه Limit Login Attempts Reloaded

د) محدود کردن امکان ورود با آدرس ایمیل یا نام کاربری

وردپرس به صورت پیشفرض امکان ورود از طریق نام کاربری و ایمیلی که برای آن نام کاربری وجود دارد را فراهم کرده است. یعنی شما در فیلد Username می‌توانید نام کاربری یا آدرس ایمیل ثبت شده برای ان نام کاربری را وارد کرده و در نهایت پس از وارد کردن رمز به پیشخوان وردپرس وارد شوید.

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

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

//remove wordpress authentication
remove_filter('authenticate', 'wp_authenticate_username_password', 20);

در صورتی که تمایلی به استفاده از کد ندارید می‌توانید از افزونه Force Login استفاده کنید.

دانلود افزونه Force Login وردپرس

غیرفعال کردن ویرایش فایل ها از پیشخوان وردپرس

وردپرس برای اینکه دسترسی ساده‌تری را برای شخصی سازی قالب و افزونه در اختیار مدیریت سایت قرار دهد در بخش افزونه‌ها و قالب دارای یک ویرایشگر است. شما با مراجعه به مسیرهای نمایش> ویرایشگر پوسته یا افزونه‌ها> ویرایشگر افزونه قادر هستید به پوسته‌ها و افزونه‌ها دسترسی داشته و کدنویسی فایل‌ها را تغییر دهید.

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

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

define('DISALLOW_FILE_EDIT', true);

استفاده از CDN کلودفلر

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

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

  • قابلیت‌هایی در کلودفلر قرار داده شده که با استفاده از آن می‌توانید یک سری شرایط برای رفتار درخواست‌هایی که به سایت شما ارسال می‌شوند تعیین کنید. به عنوان نمونه می‌توانید مشخص کنید اگر بازدید کنندگانی از آی پی کشورهای X، Y، Z و… به سایت مراجعه کردند، یا به صورت کلی دسترسی به سایت نداشته باشند یا اینکه با پر کردن کپچا مشخص کنند که کاربر واقعی هستند.
  • یا برای نمونه می‌توانید آدرس دایرکتوری wp-admin یا wp-login.php را در کلودفلر تعریف کرده و تعیین کنید که صرفا ip کشور ایران اجازه دسترسی به این صفحه را داشته باشد. یا اینکه همیشه برای دسترسی به این دو آدرس که شامل آدرس ورود به سایت است، باید کپچا کلودفلر را پر کنید.

رمزگذاری روی پوشه wp-admin

علاوه بر ابزاری که کلودفلر برای محافظت از صفحات مدیریتی و ورود به وردپرس فراهم کرده است، شما می‌توانید از ابزار هاست نیز برای محافظت از این دایرکتوری‌ها استفاده کنید.

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

برای استفاده از این ویژگی در هاست دایرکت ادمین هم کافی است وارد DirectAdmin شده و روی File Manager کلیک کرده و سپس به ترتیب مراحل زیر را دنبال کنید.

  1. به مسیر نصب وردپرس رفته و روی protect موجود جلوی پوشه wp-admin کلیک نمایید.
  2. در قسمت اول یک نام وارد کنید، در قسمت دوم نام کاربری را تایپ کنید.
  3. در دو قسمت بعد هم پسورد خود را قرار دهید.
  4. گزینه Protection Enabled را فعال کنید.
  5. در نهایت روی دکمه Save کلیک نمایید.

نکته: از آنجایی که ممکن است با قرار دادن این رمز در بخش فرانت اند سایت از کاربران برای مشاهده برخی فرم‌ها و صفحات این رمز درخواست شود، باید امکان مشاهده فایل admin-ajax.php وردپرس که مربوط به درخواست‌های آژاکسی است را مستثنی کنید.

برای این منظور کافی است یک فایل با نام htaccess. داخل پوشه wp-admin ایجاد کنید، دقت کنید که این فایل از فایل htaccess. داخل public_html جداست سپس قطعه کد زیر را درون این فایل قرار داده و ذخیره کنید.

<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
<Files/>

امکان نمایش دایرکتوری و فایل‌های مهم در هاست را غیرفعال کنید

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

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

برای غیرفعال کردن این ویژگی کافی است قطعه کد زیر را در انتهای فایل htaccess. خود قرار دهید. با قرار دادن این کد دیگر امکان مشاهده دایرکتوری فایل‌های هاست فراهم نیست و با مراجعه به آنها خطای 403 forbidden نمایش داده خواهد شد.

Options All -Indexes

از پروتکل امن HTTPS استفاده کنید

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

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

غیرفعال کردن xml-RPC

قابلیت XML-RPC این امکان را خواهد داد که بتوانید یک سری کارها را در سایت وردپرسی خود به کمک برخی ابزار انجام دهید. به عنوان نمونه برای مدیریت سایت خود در گوشی تلفن همراه می‌توانید با نصب برنامه وردپرس روی گوشی اندروید یا ios دسترسی ساده‌تر و بهتری برای نوشتن یا مدیریت بخش‌های مختلف سایت داشته باشید.

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

add_filter('xmlrpc_enabled', '__return_false');

یا اینکه می‌توانید با کلیک روی دکمه زیر به کمک افزونه غیرفعال کردن xml-rpc این ویژگی را در وردپرس که امکان اتصال از راه دور را برای سایت فراهم می‌کند، غیرفعال کنید.

Disable XML-RPC-API

دسترسی سایت به برخی کشورها را محدود کنید

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

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

  • روسیه
  • چین
  • هند
  • ترکیه
  • سنگاپور

بیشتر افرادی که از حملات دیداس برای ضربه زدن به سایتی استفاده می‌کنند از آی‌پی این کشورها برای حملات استفاده می‌شود. شاید باورتان نشود که در طول یک روز طبق گزارشات کلودفلر بیش از ۲ میلیون اتک را داشتم که سهم بیشترشان از ip این کشورها بود.

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

غیرفعال کردن تزریق اسکریپت Script Injections در وردپرس

یکی از مشکلاتی که بیشتر باعث هک سایت‌های وردپرسی می‌شود تزریق کدهای اسکریپت درون فایل‌های php است. ما در وردپرس برای افزونه‌ها انواع فایل‌های php و حتی فایل‌هایی با فرمت‌های مختلف دیگر داریم که به دلیل رعایت نکردن برخی نکات ساده ممکن است به شکلی امکان تزریق کدها در این فایل‌ها فراهم شود.

در این حالت هکرها می‌توانند با تزریق کدهای Script Injections به راحتی یک راه ورود از در پشتی برای خود تعریف کرده و سایت شما را هک کنند. برای غیرفعال کردن این امکان کافی است کد زیر را درون فایل htaccess. خود قرار داده و ذخیره کنید.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

با قرار دادن این قطعه کد، فایل htaccess. اجازه تزریق کدهای اسکریپت را درون فایل‌های php نخواهد داد.

از افزونه‌های امنیتی وردپرس برای مانیتور کاربران استفاده کنید

اگر در سایت شما چندین نویسنده فعالیت دارند، به منظور بررسی رفتار و فعالیت‌هایی که در سایت دارند بهتر است که از یک افزونه برای بررسی رفتار آنها استفاده کنید.

افزونه simple history این امکان را به شما خواهد داد تا رفتارهای مختلف نویسندگان و سایر مدیران سایت را بررسی کنید که شامل ایجاد نوشته جدید، تغییرات در فایل‌ها، مدیریت فایل‌ها و… است. کلیه این گزارشات در قالب یک لاگ در افزونه ثبت شده و می‌توانید به صورت لحظه‌ای ببینید که هر کاربری در زمان‌های خاص چه کارهایی انجام داده است. کافی است افزونه را با کلیک روی دکمه زیر نصب کرده و از آن استفاده کنید.

دانلود افزونه simple history

سطح دسترسی در هاست خود را بررسی کنید

سیستم مدیریت محتوای وردپرس دارای یک سری فایل و پوشه است که با نصب آن روی هاست هر یک از این پوشه‌ها و فایل‌ها دارای یک نوع دسترسی هستند که به سه گروه زیر دسته بندی می‌شوند.

  • 755 یا 750 برای دایرکتوری ها (پوشه‌ها)
  • 644 یا 640 برای فایل‌ها
  • 600 برای فایل wp-config.php

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

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

نمایش پیغام خطا در وردپرس را شخصی سازی کنید

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

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

error_reporting(0);
@ini_set('display_errors', 0);

جمع بندی و کلام آخر

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

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

  • Hossein

    سلام
    قسمتی که نوشتید (می‌توانید آدرس دایرکتوری wp-admin یا wp-login.php را در کلودفلر تعریف کرده و تعیین کنید که صرفا ip کشور ایران اجازه دسترسی به این صفحه را داشته باشد.) من هرچی در کلاد فلر در قسمت custom rule و فایروال گشتم نتونستم بفهمم این حالت رو چطوری باید فعال کنی.
    میشه در مورد این حالت یک کم با جزییات بیشتر توضیح بدید.
    با تشکر

    • عباس صادقی

      سلام حسین جان، لطفا به تصویر زیر و مراحلی که در ادامه توضیح دادم دقت کنید.

      • ابتدا یک نام برای رول خودمون تعریف می‌کنیم.
      • یک فیلد از نوع URI Path تعریف می‌کنیم و مقدارش رو روی wp-login.php قرار میدیم. دقت کن که برای wp-admin مجددا طبق همین توضیحات (با اندکی تغییر) باید یک رول دیگه تعریف کرد.
      • با کلیک روی دکمه And این رول رو طوری شرط گذاری می‌کنیم که اگر شرط دوم هم همزمان با شرط اول برقرار بود این اتفاق بیفته. حالا شرط دوم چیه؟
      • تو شرط دوم یک فیلد از نوع Country مشخص می‌کنیم و با قرار دادن روی does not equal مشخص می‌کنیم که اگر هر کشوری غیر از ایران بود، این حالت اجرا بشه.
      • در نهایت Then رو روی حالت Block قرار میدیم.
      • ذخیره می‌کنیم.
      • تا اینجا ما مشخص کردیم که اگر آدرس wp-login.php بود و آی پی ایران نبود، این شرط برقرار باشه که صفحه ورود وردپرس در دسترش نباشه.
        حالا برای wp-admin هم به همین ترتیب عمل می‌کنید. با این تفاوت که:

        این مقدار admin-ajax.php برای اینه که یک سری درخواست های وردپرس در فرانت اند نیازمند این فایله که اگر چنین درخواست‌هایی داشتید، مشکلی برای کاربران پیش نیاد.

      • Hossein

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

        فقط یک سوال: اگه برای پوشه wp-admin رمز بگذاریم، باز هم باید کد

        Order allow,deny
        Allow from all
        Satisfy any

        را قرار بدیم.
        (چون در کلود فلر فعال شده برام سوال شد)

        • عباس صادقی

          خواهش می‌کنم حسین جان. بله باز هم باید این کد رو قرار بدین. فایل htaccess. تنظیماتش ارتباطی با کلودفلر نداره و فایل admin-ajax.php وردپرس برای اینه که یک سری درخواست‌های سمت کاربر رو که ممکنه در قالب شما یا افزونه‌ای استفاده شده باشه به صورت آژاکسی بررسی و دیتا مناسب رو از سرور برای کاربر ارسال کنه. اگر این کد رو قرار ندین کاربر با خطای admin-ajax.php مواجه میشه.

  • Hossein

    منظورم کدی هست که admin-ajax.php را مستثنی میکنه

  • محمد احمدی اکبری

    دمت گرم عباس جان، عالی

  • جمال غفاری

    عالی و بی‌نظیر بود
    مدتهاست که دنبال همچین مقاله جامع و کاملی بودم ‌
    دست مریزاد عباس جان