خانه » آموزش » آموزش وردپرس » امنیت وردپرس – بخش اول

امنیت وردپرس – بخش اول

به گزارش گروه تحقیقاتی وب سایت نوگل باغ ؛ در دنیای اینترنت امنیت از اهمیت بسیاری زیادی برخوردار است. گرچه متاسفانه اینطور به نظر میرسد که این روزها ما به “امنیت” فقط و فقط به طور شفاهی اهمیت میدهیم و پای عمل که میرسد از کنار خیلی مسائل به سادگی میگذریم. افراد زیادی را میبینم که از پایین بودن امنیت وردپرس حرف میزنند و چون این وسط سایت هایشان یکی دو باری هم هک شده است از این شکایت میکنند که وردپرس ضعف های امنیتی زیادی دارد و برای همین آن را سیستم مدیریت محتوای مناسبی نمیدانند. البته میپذیریم که هر اسکریپیتی باگ های خاص خودش را دارد اما اینکه ما بخش مدیریت اسکریپتمان را برای همه باز بگذاریم و رمزمان از ۱۲۳۴۵ آن طرف تر نرود و تازه یوزرمان هم همان admin آشنای همیشگی باشد و عملا سایتمان را به امان خدا رها کرده باشیم و بعد که هک شدیم بیاییم و تقصیر را گردن اسکریپت بیاندازیم واقعا بی انصافی است. به نظر شخصی من و البته به نظر میلیون ها نفر دیگر در سراسر جهان، وردپرس واقعا قدرتمند است، خوب پس بیایید این بار با هم ضد گلوله کردن وردپرسمان را یاد بگیریم. اینکه در این مقاله امنیت وردپرس را هدف میگیرم دلیلش نا امنی وردپرس نیست، بلکه دلیلش این است که این اسکریپت طرفداران بسیار زیادی دارد و راحت میتوان گفت از هر ۱۰ نفری که میخواهند یک سایت راه بیاندازند دست کم ۶ نفرشان مطمئنند که باید وردپرس را انتخاب کنند.

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

در هنگام نصب:
اگر قرار به رعایت امنیت است، باید اولین آجر را نیز که همان نصب وردپرس است درست بگذاریم. حتما همه شنیده اید که شاعر میگوید : “خشت اول چون نهد معمار کج، تا سریا میرود دیوار کج” سریا هم میدانم با ث است.
میخواستم ببینم حواستان هست یا نه!!! خوب حالا ببینیم در زمان نصب چه نکاتی را باید رعایت کنیم:

۱ – یوزر Admin نسازید!
در کدام قانونی نوشته شده که اسم مدیر باید حتما Admin باشد؟ کمی خلاق باشید و در زمان نصب وردپرس برای مدیر یک نام کاربری عجیب و غریب در نظر بگیرید که در هیچ کجای دنیا شناخته شده نباشد. مثلا جای ادمین، نام G67BnMol0oOl1i را انتخاب کنید. استفاده از نامی غیر از نام Admin برای مدیر، باعث میشود هکر ها مجبور شوند علاوه بر پسورد شما، نام کاربریتان را هم حدس بزنند. (البته ۱۰۰ درصد نه با مغزشان، بلکه با نرم افزار) و اگر شما رئیس سازمان CIA نباشید، احتمالا شکستن چنین ترکیبی با یک کامپیوتر خانگی، اگر پسوردتان را هم در نظر بگیریم خیلی خیلی وقت میخواهد! خیلی خیلی.…

اگر کار از کار گذشته و قبلا این یوزر را ساخته اید…
اشکالی ندارد، بگذارید با هم نامش را عوض کنیم. به روش پیچیده اش کاری ندارم ولی ساده ترین روش این است:
– یک مدیر جدید در وردپرستان ایجاد کنید.
– با مدیر جدید لاگین کرده و مدیر قبلی را پاک کنید
– حواستان باشد که نوشته های مدیر قبلی را پاک نکنید و در هنگام پاک کردن مدیر قبلی، نوشته هایش را به نام کاربری جدیدتان نسبت دهید.

۲ – پیشوند جداول دیتابیس
در زمان نصب وقتی وردپرس از شما میپرسد که مایلید پیشوند جداول دیتابیستان به چه صورت باشد. اگر شما در این بخش تغییری ایجاد نکنید به طور پیشفرض، پیشوند جداول شما معادل wp_ خواهد بود. خوب اگر به دنبال امنیت هستید در زمان نصب حتما پیشوند جداول را به پیشوند پیچیده تری تغییر دهید چون وگرنه برای همه کاملا واضح است که پیشوند جداول یک سایت وردپرسی باید wp_ باشد. مثلا بیایید و عبارت W9b0Om_ را به عنوان پیشوند جداول انتخاب کنید.
حالا اگر نصب تمام شده و کار از کار گذشته شما دو راه پیش رو دارید. اول اینکه از طریق phpMyAdmin پیشوند ها را تغییر دهید که من این روش را توصیه نمیکنم و دوم اینکه منتظر قسمت دوم همین مقاله بمانید تا آنجا بهترین روش را به شما اموزش دهم.

۳ – نمایش عمومی نامتان را در وردپرس تغییر دهید.
وردپرس به صورت پیشفرض نام کاربری شما ( که مدیر هستید) را در نوشته هایتان به نمایش میگذارد. این اصلا خوب نیست. یعنی حتی اگر شما یوزری به نام ادمین هم نداشته باشید، یک نفر به سادگی میتواند به نگاه به نویسنده ی پست هایتان بفهمد که نام کاربری شما چیست. راه حل این مشکل بسیار ساده است. کافی است در وردپرس به شناسنامه تان مراجعه کنید و با وارد کردن نام و نام خانوادگیتان در این بخش، نمایش عمومی نامتان را از نام کاربریتان به نام / نام خانوادگی یا لقبتان تغییر دهید.

useradmin

راهنما : با ایستادن روی نامتان در نوار بالایی مدیریت وردپرس، میتوانید به شناسنامه تان دسترسی داشته باشید.

۴ – نگذراید وردپرس لینکی به یوزر نیم شما در نوشته ها و به طور کلی طرف کاربران به نمایش بگذارد.
اگر فکر میکنید با انجام مرحله ی شماره ۲ کارتان به اتمام رسیده در اشتباهید. وردپرس عزیز لطف میکند و نام نویسنده را به یوزرش لینک میکند. البته این مسئله ممکن است در قالب های مختلف متفاوت باشد اما شما در این زمینه دو انتخاب دارید. اول اینکه با دست کاری قالبتان به طور کامل لینک نویسنده را حذف کنید. در وبلاگهایی که دارای یک نویسنده هستند این مسئله چندان هم مهم نیست اما اگر بیش از یک نویسنده داشته باشید، این مسئله کارایی بلاگتان را از بین خواهد برد. بنابراین برای حل این مشکل به شیوه ی زیر عمل کنید:

– افزونه ی Edit Author Slug را روی وردپرستان نصب کنید.
– به شناسنامه تان در وردپرس مراجعه کنید و در بخش edit author slug لینک جدیدی به یوزرتان اختصاص دهید.
به این شکل دیگر نام کاربری واقعی شما در لینک نویسنده به نمایش در نخواهد آمد و کسی به این سادگی ها قادر نخواهد بود نام کاربری واقعی شما را پیدا کند.

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

– یک نام کاربری و یک کلمه ی عبور مناسب که علاوه بر دارا بودن امنیت مناسب، فقط و فقط از حروف و اعداد (بزرگ و کوچک مهم نیست) تشکیل شده باشد برای خود انتخاب کنید.
– روی اینجا کلیک کنید و در صفحه ای که برایتان باز میشود، در قسمت یوزر نیم، نام کاربری ای که انتخاب کرده اید و در قسمت پسورد، کلمه ی رمزی که انتخاب کرده اید را وارد کرده و سپس روی دکمه submit کلیک کنید. به سایر تنظیمات کاری نداشته باشید چون ما قصد نداریم از همه ی کد هایی که این سایت به ما میدهد استفاده کنیم و فقط و فقط به یوزر نیم و پسوردی که هش میکند احتیاج داریم.
– محتوایی که این سایت در بخش .htpasswd به شما تحویل میدهد را در ذخیره کنید.
– در هاست خود به یک فولدر قبل ازpublic_html بروید. (در cpanel همان Home و در دایرکت ادمین یک فولدر پس از فولدر نام دامنه) در این جا یک فولدر با یک نام عجیب و غریب بسازید. منظورم از عجیب و غریب چیزی است هر کسی نتواند حدس بزند ولی لازم نیست از علامات و … استفاده کنید.
– در این فولدر یک فایل بسازید با نام .htpasswd (نامش مهم نیست ولی نقطه ی اولش را لازم داریم، برای سادگی کارتان به همین .htpasswd اکتفا کنید.)
– حالا به فولدر ادمین وردپرس بروید (wp-admin). در این فولدر یک فایل با نام .htaccess ایجاد کنید و کد زیر را البته با تغیرات لازم در آن قرار دهید :

 

در کدی که در بالا برایتان نوشتم لازم است به جای user نام کاربری خودتان در هاستی که دارید را قرار دهید و بجای samplefolder نام فولدری که ساختید و فایل .htpasswd را در آن قرار دادید. (البته توجه کنید شاید مسیر شما بجای home از مسیر دیگری آغاز شود، مثلا home3، home2 و ….) قسمت آخر را هم به هیچ عنوان فراموش نکنید چون اگر دسترسی به فایل admin-ajax.php را مجاز نکنید بعدا در پنل مدیریت چیزی جز آشفتگی نسیبتان نخواهد شد.
– خوب حالا اگر این مراحل را درست طی کرده باشید در زمان ورود به مدیریت باید با یک پیام روبرو شوید که از شما تقاضای نام کاربری و پسورد میکند. اینجا کافی است نام کاربری و پسوردی که به تازگی برای خود انتخاب کرده اید را وارد کنید تا بتوانید به صفحه ی ورود به بخش مدیریت بروید. مثل شکل زیر:

password -firefox

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

چرا سطح دسترسی فایل .htaccess را عوض نمیکنیم؟ 
اگر به دنبال ضد گلوله به معنای واقعی میگردید که خوب باید دسترسی این فایل را هم روی ۴۴۴ بگذارید که نوشتن روی آن به این سادگی ها امکان پذیر نباشد اما در نظر بگیرید که این کار ممکن است در کارکرد بعضی پلاگین های امنیتی و یا پلاگین سئو که در وردپرستان نصب کرده اید تداخل ایجاد کند. تصمیم با خودتان است!

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

۸ – حواستان به پوسته های خبیث باشد! 
واقعیت این است که در ۹۹ درصد موارد وقتی افراد یک سایت وردپرسی را استارت میزنند، برای شروع کار خود از پوسته های رایگان استفاده میکنند و از آنجایی که گربه هم محض رضای خدا موش نمیگیرد، به سادگی میتوان گفت که اگر در گوگل به دنبال پوسته های رایگان بگردید شاید از هر ۱۰ پوسته ۷ تای آنها یک جای کارشان میلنگد و اکثرشان پر از کد های base64 هستند. کد های base64 همیشه مخرب نیستند ولی از طرفی هم اگر چیزی برای مخفی کردن نداریم پس چه لزومی دارد که آن را کد کنیم؟ وقتی کدش میکنیم یعنی یک جای کار میلنگد. برای این که پوسته ی خود را محک بزنید و از سلامت آن اطمینان حاصل کنید کافی است افزونه ی Theme Authenticity Checker را روی وردپرستان نصب کنید. این افزونه به شما اجازه میدهد تک تک پوسته هایی که روی سایتتان نصب کرده اید را به دنبال کد های مخرب شناخته شده جستجو کنید و حتی در مواردی در پوسته ها بهبود ایجاد کنید.

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

۹ – به وردپرستان نمک بزنید… 
باور کنید شوخی نمیکنم. وردپرس بدون نمک مثل سالاد بدون سس است! تعریف salt در کانفیگ وردپرستان به شما کمک میکند که سایت خود را در برابر حملات هکر ها چندین برابر امن تر کنید. salt ای که شما تعریف میکنید در رمز گذاری کلیه ی ارتباطات، ذخیره ی فایل ها و کوکی های ذخیره شده روی سیستم های کاربران به کار خواهد رفت و همه چیز را امن تر خواهد نمود. در عین حال گاهی هم وردپرس salt ای که شما تعریف کرده اید را با یک استرینگ طولانی دیگر در هم می آمیزد و با ترکیب این دو، به بهترین شکل اطلاعات محرمانه ی شما را رمزگذاری میکند تا دسترسی به آنها به این سادگی ها ممکن نشود. حالا این salt را کجا تعریف کنیم؟
– به فایل کانفیگ وردپرستان مراجعه کنید (wp-config.php)
– در این فایل به دنبال کد های زیر بگردید :

 

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

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

۱۱- HTML را در نظرات غیر فعال کنید.
یکی از هکر های عزیز همین چند وقت پیش دوره افتاده بود و با همین HTML های مثلا دوست داشتنی و از طریق ارسال نظر در وردپرس دیگران را هک میکرد و دیگران مات و مبهوت میمانند که چه شد که اینطوری شد! بله اینطوریا بود که اونطوریا شد! اصلا و اصلا به صلاح نیست که شما به کاربرانتان اجازه ارسال HTML در نظرات بدهید. به طور پیشفرض اگر یک کاربر از تگ های HTML در نظرش استفاده کند، قالب شما آن بخش از نظر را که دارای کد HTML هست با همین زبان تفسیر کرده و نتیجه ی آن را به نمایش میگذارید اما اگر شما از قبل استفاده از HTML را در نظرات ممنوع کرده باشید، هر گار کاربر یکی از تگ های این زبان را در نظرش به کار ببرد، نتیجه به جای اینکه تفسیر شود، به عنوان تکست ساده به نمایش در خواهد آمد. خوب پس همین حالا دست به کار شوید به شیوه ی زیر استفاده از HTML را در نظرات وبسایتتان ممنوع کنید:

– در بخش مدیریت وردپرس از منوی “نمایش” زیر منوی “ویرایشگر” را انتخاب کنید تا به محل ویرایش فایل های قالبتان هدایت شوید.
– فایل functions.php را برای ویرایش انتخاب نمایید و کد زیر را به آن اضافه کنید :

 

– تغییرات را در فایل مورد نظر ذخیره کنید.
خوب حالا هر کسی که در نظرات شما HTML ارسال کند، نتیجه اش نمایش کد های درهم و برهم HTML خواهد بود و نه اجرا و تفسیر این کد ها.

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

برای مطالعه بخش دوم مقاله روی اینجا کلیک کنید

درباره شــهریاری

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

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

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