راهنمای امنیت WordPress

وبگارد / نسخه ۲۰۲۰

مقدمه


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

آیا WordPress امن است؟

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

برخی از آسیب پذیری های منتشر شده :

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

اقدامات اولیه برای امنیت وردپرس #بالا

به روز رسانی وردپرس :

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

نحوه فعال سازی آپدیت اتوماتیک وردپرس:
  • قدم ۱ - از طریق FTP یا SFTP به سایت متصل شوید .
  • قدم ۲ - فایل wp-config.php را باز کنید ، این فایل در روت اصلی سایت وجود دارد .
  • قدم ۳ - خط زیر را به انتهای صفحه اضافه کنید:

                                        define('WP_AUTO_UPDATE_CORE', true );

به روز رسانی افزونه ها#بالا

اگر شما پلاگین های خود را به روز رسانی نکنید و یا از پلاگین هایی که به روز رسانی نمی شوند یا تیم پشتیبانی ندارد استفاده کنید به زودی وب سایت شما هک خواهد شد این افزونه های درهای نفوذ به وب سایت شما هستند و تنها کافیه یکی از این افزونه ها به روز رسانی نشده باشد و یا آسیب پذیری روی آنها کشف شود. مهاجم می تواند به راحتی به سایت شما نفوذ کند وردپرس دارای ساختار مشخصی می باشد و پلاگین ها در مسیر :/wp-content/plugins/ بارگذاری می شود . این یعنی اگر پلاگین نصب کنید داخل پوشه plugins یک دایرکتوری به نام پلاگین ایجاد می شود. لیست این پلاگین ها به صورت عمومی می باشد و مهاجم می تواند اسم تمام پلاگین های را در این دایرکتوری جستجو کند و لیست پلاگین های شما را کشف کند .

اسکنر سایت وردپرس :

در مثال زیر نمونه ای از نتیجه اسکن امنیت وردپرس با استفاده از اسکنر سایت وبگارد به صورت رایگان را مشاهده می کنید.

در این وبسایت از پلاگین WP-Statistics که یکی از پر طرفدار ترین پلاگین های مربوط به وردپرس می باشد استفاده می کند که این پلاگین به شما کمک می کند وبسایت و کاربران خود را رسد کنید وب سایت هدف از WP-Statistics ورژن 12.0.7 استفاده کرده که این نسخه یک نسخه قبل از اخرین نسخه می باشد . در این نسخه یک آسیب پذیری از نوع sql Injection وجود دارد که مهاجم با سو استفاده از این آسیب پذیری می تواند به بانک اطلاعاتی وب سایت دسترسی پیدا کند و وب سایت شما را هک کند اطلاعات فنی این آسیب پذیری و نحوه سو استفاده از این آسیب پذیری به صورت عمومی منتشر شده است جزئیات فنی این آسیب پذیری در سایت Sucuri منتشر شده است

شروع اسکن سایت اطلاعات بیشتر

دریافت هشدار در هنگام اختلال و از دسترس خارج شدن سایت#بالا

سرویس uptime robot

Uptime Robot هر 5 دقیقه 1 بار سایت شما را مانیتور می کند و اگه سایت در دسترس نباشد و یا با خطایی مواجه شده باشد شما رو از طریق ایمیل مطلع میکنه. سرویس Uptime Robot رایگان بوده و اجازه میدهد تا ۵۰ سایت برای هر نام کاربری رایگان می باشد در ویدیو زیر نحوه ثبت نام و مانیتورینگ سایت توسط سرویس آپ تایم ربات ارائه شده است

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


تهیه نسخه پشتیبانی از سایت #بالا

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

3) VaultPress

افزونه VaultPress با چند کلیک به صورت خودکار و لحظه ای میتوانید پشتیبان گیری در فضای ابر را انجام دهید. این افزونه تجاری می باشد

2) Backwpup

یک افزونه رایگان است که به شما امکان می دهد پشتیبان گیری کامل وردپرس را به صورت رایگان ایجاد کنید و آن را در ابر (Dropbox ، Amazon S3 ، Rackspace و غیره) ، FTP ، ایمیل یا رایانه خود ذخیره کنید.

1) UpdraftPlus

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

تیم وبگارد می تواند برای شما خدمات راه کارهای پشتیبان گیری بر روی ابر آمازون و ابر آروان ارائه دهد که به صورت لحظه ای از بانک اطلاعاتی و تمامی فایل های شما بک آپ تهیه شود.

محافظت از سایت با https#بالا

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

مرکز ماهر به منظور تسهیل فرایند درخواست و دریافت گواهینامه SSL از LetsEncrypt CA ایجاد شده است. در این سامانه شما میتوانید برای وبسایت یا سامانه‌های خود گواهینامه SSL معتبر بصورت رایگان دریافت نمایید. این گواهینامه‌ها توسط موسسه‌ی LetsEncrypt CA* صادر می‌گردد. برای این منظور مجموعه ابزاری تهیه گردیده است که بر حسب نیاز، کاربر میتواند با استفاده از آن تمامی مراحل دریافت، نصب، پیکربندی و صدور مجدد گواهینامه‌ی SSL را به صورت خودکار انجام دهد. با استفاده از ابزار تحت وب (آنلاین) سامانه نیز کاربر میتواند تنها با چند کلیک و بعد از احراز مالکیت دامنه، گواهینامه SSL را دریافت نماید.

دریافت گواهی SSL به صورت رایگان : https://letsencrypt.cert.ir/register

اضافه کردن رمز دو مرحله ای برای ورود به پنل مدیریت WordPress #بالا

مکانیزم ورود دو مرحله ای به گونه ای است که شما برای ورود به بخش مدیریت ، نام کاربری و رمز عبورد و یک رمز یک با مصرف وارد می کنید . این رمز یکبار مصرف توسط ابزار Google Authenticator App یا به موبایل شما پیامک زده می شود. برای ایجاد رمز دو مرحله ای وردپرس ما افزونه Two Factor Authentication را به شما معرفی می کنیم

استفاده از WAF برای امنیت وردپرس#بالا

فایروال وبگارد

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


All In One WordPress Security

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


محدودیت تعداد تلاش برای ورود به پنل مدیریت #بالا

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

تغییر پوشه پیش فرض مدیریت wp-admin #بالا

صفحه ورود مدیریت وردپرس به صورت پیش فرض در مسیر wp-admin می باشد شما با استفاده از افزونه
HC Custom WP-Admin URL قادر به تغییر آدرس ورود به مدیریت وردپرس یعنی wp admin و wp-login.php هستید

غیر فعال کردن قابلیت تغییرات فایل #بالا

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

شما می توانید به اضافه کردن خط زیر به انتهای فایل wp-config.php این کار را انجام دهید:

                                        // Disallow file edit
                                        define('DISALLOW_FILE_EDIT', true );
                                

جلوگیری از اجرای فایل های php در دایرکتوری uploads#بالا

یکی دیگر از راه ها برای افزایش امنیت وردپرس جلوگیری از اجرای فایل های php در دایرکتوری wp-content/uploads/ می باشد. برای این کار لازم است یک فایل به نام .htaccess در دایرکتوری /wp-content/uploads/ ایجاد کنید و اطلاعات زیر را در فایل وارد کنید :


                              
                                    
                                    deny from all
                                     
                                

غیر فعال کردن نمایش لیست فایل ها#بالا

همین حالا مسیر زیر را در سایت وردپرس خود باز کنید :http://YourSite.ir/wp-content/uploads/

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


                              
             Options -Indexes
                                

اسکن و شناسایی کدهای مخرب در سایت WordPress#بالا

هکرها همیشه راهی برای دسترسی مجدد به سایت شما ایجاد می کنند. خیلی وقت ها هکر ها شما را هک می کنند و کدهای Backdoor و شلر ها را درون سایت و بین کد های شما قرار می دهند که هر زمان اراده کنند به تمام بانک اطلاعاتی و سوری کد شما دسترسی پیدا کنند. خیلی وقت ها شما هک می شوید ، اما هدف اطلاعات شما نیست و از سرور های شما برای مقصود دیگه مانند حملات DDOS به سایت های دیگر ، Crypto mining و …. استفاده می شود. به شما پیشنهاد می کنم که حتما سایت وردپرس را اسکن کنید و اگر سایت شما به کد های مخرب آلوده شده است شناسایی و حذف نمایید.

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

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

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

          find /Your-Web-Directory/wp-content/uploads/ -type f -mtime -n -name '*.php' 
                                
معمولا در فایل های مخرب از توابع php زیر استفاده می شود :
  • base64
  • str_rot13
  • gzuncompress
  • eval
  • exec
  • system
  • assert
  • stripslashes
  • preg_replace (with /e/)
  • move_uploaded_file

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

غیر فعال کردن api مربوط به افشای اطلاعات کاربر#بالا

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

https://YourSite.ir/wp-json/wp/v2/users <

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

برای این کار در فایل functions.php در پوشه پوسته وردپرس سایت کد زیر را اضافه کنید :
add_filter( 'rest_endpoints', function( $endpoints ){
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P<\id>[\d]+)'] ) ) {
        unset( $endpoints['/wp/v2/users/(?P<\id>[\d]+)'] );
    }
    return $endpoints;
});

اگر از قابلیت Rest Api وردپرس استفاده نمی کنید پیشنهاد می شود به صورت کامل غیر فعال شود. برای این کار در فایل functions.php در پوشه پوسته وردپرس سایت کد زیر را اضافه کنید :

add_filter('rest_enabled', '_return_false');
add_filter('rest_jsonp_enabled', '_return_false');
                                

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

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

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

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

اگر وب سایت خود را بررسی کردید و کد های مخرب در سایت شناسایی کردید از کارشناسان ما مشاوره رایگان دریافت کنید !

امنیت بخش مدیریت WordPress#بالا

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

  • صفحه پنل مدیریت را از مسیر پیش فرض WP-Admin تغییر دهید
  • از نام کاربری Admin و administrator برای مدیریت استفاده نکنید
  • کافیست از رمز عبور ۸ کارکتری استفاده کنید که شامل عدد ، حرف بزرگ و حرف کوچک باشد
  • فعال کردن رمز دو مرحله ای برای ورود به پنل مدیریت