سایت خود را از هکرها محافظت کنید
ممکن است شما فکر کنید محتوای سایت شما ارزش هک کردن ندارد اما وب سایت ها همیشه در خطر هک شدن هستند. اکثر تجاوزات امنیتی برای دزدیدن داده های شما یا ایجاد اختلال در وب سایت شما انجام نمی شوند، بلکه در آنها تلاش می شود از سرور شما به عنوان مرکز ارسال ایمیل های اسپم استفاده کرده و یا وب سرور موقتی ایجاد می شود که معمولا فایل های غیرقانونی در آن قرار داده می شوند.هک کردن معمولا توسط اسکریپت های خودکار انجام می شود که در اینترنت جست و جو کرده و به دنبال مشخص کردن مسایل امنیتی شناخته شده در نرم افزارهاست. در بخش زیر 10 نکته برای حفظ امنیت آنلاین شما و سایتتان بیان می شود:
1. نرم افزارها را به روز نگه دارید
ممکن است این مسئله واضح به نظر برسد اما اطمینان از آپدیت بودن تمامی نرم افزارها برای امنیت سایت شما امری حیاتی است. این مسئله در سیستم عامل سرور و هر نوع نرم افزاری که در وب سایت کار می کند مانند CMS یا فروم صدق می کند. وقتی سوراخ های امنیتی در نرم افزار پیدا شود، هکرها سریعا تلاش می کنند از آنها سوء استفاده کنند.
اگر شما از روش های هاست مدیریت شده استفاده می کنید، نباید بسیار نگران به روز کردن سیستم امنیتی سیستم عامل باشید زیرا شرکت هاست باید به فکر آپدیت کردن باشد.
اگر شما از نرم افزار شخص ثالث مانند CMS یا فروم را استفاده می کنید، شما باید مطمئن شوید که سریعا از پچ های امنیتی استفاده می کنید. اکثر فروشندگان لیست ایمیل یا فیدRSS دارند که تمام مسایل امنیتی در آنها توضیح داده می شود. ورد پرس، اومبراکو، و بسیاری از CMS های دیگر در زمان وارد شدن به برنامه نیاز به آپدیت کردن را اعلام می کنند.
2. تزریق SQL
حملات تزریق SQL زمانی رخ می دهند که فرد مهاجم از فیلد فرم وب یا پارامترهای URL برای دست پیدا کردن یا دستکاری بانک داده شما استفاده می کند. وقتی شما از Transact SQL استاندارد استفاده می کنید، قرار دادن کد مهاجم بدون شناخته شدن در کواری شما بسیار ساده است. این کد میتواند جدول ها را تغییر داده، داده ها را جمع آوری کرده و داده ها را حذف کند. شما می توانید با همیشه قرار دادن کواری های پارامتریزه شده به راحتی از این مسئله پیشگیری کنید. اکثر زبان این خصوصیات را داشته و اجرای آنها بسیار ساده است.
3. XSS
اسکریپت های بین سایتی زمانی است که فرد مهاجم سعی می کند در جاوا اسکریپت یا سایر کدهایاسکریپت به فرم وب وارد شده و تلاش می کند کدهای مخرب را برای بازدیدکنندگان سایت شما اجرا کند. در زمان ساختن فرم همیشه مطمئن شوید که داده های ثبت شده را چک کرده و تمام HTML ها را انکود کنید.
4. پیام های خطا
مواظب مقدار اطلاعاتی که در پیام های خطا ارائه می کنید باشید. برای مثال اگر شما فرم لاگین در وب سایت دارید، باید در مورد زبانی که در زمان توضیح ناتوانی در ورود و نیاز به تلاش دوباره استفاده می کنید، باشید. شما باید از پیام های ژنریک مانند " کلمه عبور یا نام کاربری غیر صحیح" استفاده کرده و مشخص نکنید که او نیمی از اطلاعات را صحیح وارد کرده است. اگر مهاجم سعی کند با نیروی قوی و اجبار سعی کند نام کاربری و کلمه عبور را بدست آورده و پیام خطا مشخص کند که یکی از بخش ها درست است، مهاجم با دانستن این مسئله بر بخش های غلط تمرکز می کند.
5. اعتبار سنجی سمت سرور/ فرم سرور
اعتبار سنجی باید همیشه در جستجوگر و سمت سرور انجام شود. جستجوگر می تواند مشکلات ساده مانند بخش های الزامی که خالی مانده اند و یا زمان هایی که شما تنها متن را به صورت عدد وارد می کنید تشخیص دهد. البته احتمال بایپس این مشکلات وجود دارد و شما باید مطمئن شوید که این اعتبار سنجی دقیق بوده و اعتبار سنجی عمیق تر سمت سرور از وارد کردن کدگذاری ها یا اسکریپت های مخرب در بانک داده ها جلوگیری کرده و در نتیجه از بروز نتایج ناخواسته در وب سایت شما پیشگیری می شود.
6. کلمات عبور
هر کسی می داند که باید از کلمات عبور پیچیده استفاده کند، اما این بدین معنا نیست که افراد همیشه چنین کاری انجام می دهند. بسیار مهم است که شما از کلمات عبور قوی برای سرور و ادمینوب سایت استفاده کنید اما این مسئله نیز اهمیت دارد که کاربران شما نیز از کلمات عبور مناسب استفاده کرده تا امنیت اکانت های آنها نیز حفظ شود.
اگرچه ممکن است کاربران از چنین مسئله ای خوششان نیاید، اما الزام استفاده از کلمات عبور قوی مانند استفاده از حداقل 8 حرف شامل حروف بزرگ و اعداد به حفاظت طولانی مدت اطلاعات کمک می کند.
کلمات عبور باید همیشه به صورت مقادیر کدگذاری شده ذخیره شده و ترجیحا بهتر است از الگوریتم های هایهشینگ مانند SHA استفاده شود. استفاده کردن از این روش بدین معناست که وقتی که شما اعتبار کاربران را می سنجید تنها مقادیر کدگذاری شده را با هم مقایسه می کنید. برای امنیت بیشتر می توانید کلمات عبور را با استفاده از سالت های جدید در هر کلمه عبور آنها را سالت کنید.
در زمانی که کسی شما را هک کرده و کلمات عبور را می دزدد، استفاده کردن از کلمات عبور هش شده می تواند باعث محدود شدن صدمات شوند زیرا باز کردن کدها امکان پذیر نخواهد بود. بهترین کاری که فرد می تواند انجام دهد حمله دیکشنری یا حمله اجباری قوی است که همان حدس زدن ترکیب های متفاوت تا زمان رسیدن به رمز اصلی است. وقتی از پسوردهایسالت استفاده می کنید فرآیند شکستن اعداد بزرگ رمز عبور بسیار کندتر می شود زیرا هر حدس باید به صورت جداگانه برای هر سالت + پسوردهش شود که به معنای بار محاسباتی بسیار سنگین است.
خوشبختانه بسیاری از CMS ها مدیریت کاربری با توانایی های امنیتی ارائه می کند که فرد می تواند آنها را تغییر دهد، البته بعضی از تنظیمات یا ماژول های اضافی برای استفاده کردن از کلمات عبور سالت شده (قبل از دروپال 7) یا برای تنظیم حداقل قدرت پسوردالزامی هستند. اگر شما از .NET استفاده می کنید، پس بهتر است از ارائه کنندگان خدمات عضویت استفاده کنید زیرا آنها قابل تنظیم بوده، امنیت قوی داشته و کنترل های از پیش ساخته شده برای لاگین و تنظیم کلمه عبور به حالت اولیه دارند.
7. آپلود کردن فایل ها
هر نوع توانایی آپلود کردن فایل برای کاربران می تواند خطرات زیادی برای شما به همراه داشته باشد، حتی اگر آپلود کردن کار ساده عوض کردن آواتار باشد. خطر در این مسئله نهفته است که فایل آپلود شده هر چقدر هم که ظاهر بی خطری داشته باشد، می تواند حاوی اسکریپتی باشد که در زمان اجرا شدن در سرور شما باعث در دسترس قرار گرفتن کامل وب سایت شما می شود.
اگر در سایتتان قابلیت آپلود کردن فایل قرار می دهید، باید بسیار مواظب باشید. اگر شما به کاربران اجازه می دهید عکس آپلود کنند، نمی توانید تنها به اکستنشن فایل بسنده کرده و یا نوع فایل را بررسی کنید زیرا فایل های عکس به راحتی قابل ساختن بوده و احتمال تقلبی بودن یا مهاجم بودن فایل بسیار زیاد است. حتی باز کردن فایل و خواندن هدر آن، یا استفاده کردن از عملکرد برای چک کردن اندازه عکس نیز نمی توانند فایل های تقلبی را تشخیص دهند. اکثر فرمت های اکثر به کاربر اجازه می دهند اطلاعاتی را در بخش کامنت ذخیره کند. این بخش می تواند حاوی کد PHP باشد که در سرور اجرا شده و آن در دسترس مهاجم قرار می دهد.
یکی از روش تغییر نام فایل در زمان آپلود است تا مطمئن شوید که اکستنشن فایل واقعی است یا اینکه می توانید تأییدیه های فایل را تغییر دهید برای مثال از chmod 0666 استفاده کنید تا هیچ فایلی در سرور قابل اجرا نباشد. اگر از *nix استفاده می کنید، می توانید یک htaccess file بسازید که تنها به شما اجازه می دهد به دسته فایل ها دسترسی داشته و بنابراین خطرات فایل های دو اکستنشن که در بخش قبل گفته شد دیگر وجود نخواهد داشت.
در آخر، راه حل پیشنهادی برای پیشگیری از دسترسی مستقیم به فایل های آپلود شده است. بدین روش هر فایلی که در وب سایت شما آپلود شده است در یک فولدر خارج از وب روت یا در پوشه ای خاص در بانک داده ها ذخیره می شود. اگر فایل های شما به طور مستقیم قابل دسترسی نباشند، شما باید اسکریپتی برای انتخاب کردن فایل های از فولدر شخصی یا هندلر HTTP در .NET) ساخته تا فایل ها را به جستجوگر منتقل کند. تگ های عکس دارای خصوصیت src هستند که URL مستقیم عکس محسوب نمی شود، بنابراین src شما می تواند اسکریپت انتخاب فایل را مهیا کرده و شما بتوانید محتوای درست را از هدر HTTP بیرون بکشید.
8. امنیت سرور
اکثر ارائه کنندگان خدمات هاستینگ خود مسئول تنظیماتسرورتان هستند، اما اگر شما در حال هاست کردن وب سایت در سرور خود هستید باید چندین نکته را حتما بررسی کنید.
مطمئن شوید که یک فایروال نصب شده و در حال بلوک کردن تمام پورت های غیر الزامی است. در صورت امکان یک DMZ (منطقه دمتریالیزه شده) تنظیم کنید که تنها دسترسی خارجی از طریق پورت 80 و 443 را قبول می کند. البته این کار در زمان هایی که شما از داخل شبکه به سرور دسترسی نداشته باشید، قابل انجام نیست زیرا شما باید پورت ها را باز کنید تا اینکه بتوانید فایل ها را آپلود کرده و یا از خارج از شبکه وارد با استفاده از SSH یا RDP وارد سرور شوید.
اگر اجازه می دهید فایل ها از اینترنت آپلود شوند، تنها از روش های امنیتی ترانسپرنت مانند SFTP یا SSH برای سرور خود استفاده کنید.
در صورت امکان بانک داده های خود را در سروری متفاوت با سرور خودتان فعال کنید. این کار بدین معناست که بانک داده های سرور به صورت مستقیم از دنیای خارج قابل دسترسی نبوده و تنها وب سرور شما می تواند به آن دسترسی داشته باشد. این کار باعث کاهش خطر سوء استفاده از بانک داده های شما می شود.
در آخر فراموش نکنید که دسترسی فیزیکی به سرور شما باید تنها به شما و کارمندان مورد اعتمادتان محدود باشد.
9. SSL
SSLپروتکلی است که برای ایجاد امنیت در اینترنت استفاده می شود. استفاده کردن از تأییدیه امنیتی در زمان هایی که اطلاعات شخصی بین وب سایت و وب سرور یا بانک داده در حال انتقال است، یکی از هوشمندانه ترین کارها محسوب می شود. مهاجمین همیشه به دنبال این نوع اطلاعات بوده و اگر رسانه ارتباطی امن نباشد، آنها می توانند این اطلاعات را ضبط کرده و برای دسترسی به حساب و داده های شخصی استفاده کنند.
10. ابزار امنیتی
بعد از انجام تمام ملاحظات امنیتی شما باید امنیت عملکردی واقعی آن را تست کنید. موثرترین راه برای چنین کاری استفاده از ابزاهای امنیتی است. این کار تست نفوذ یا پنتستینگ نام دارد.
محصولات تجاری و مجانی زیادی وجود دارند که می توانند به شما در این کار کمک کنند. آنها بر پایه اسکریپتهایی عمل می کنند که هکر ها برای کارهای خود استفاده کرده و در نتیجه می توانند نقاط ضعف سیستم ایمنی شما را نشان دهند.
برای مثال شما می توانید از ابزار مجانی زیر استفاده کنید:
Netsparker (مدل جامعه آزاد و آزمایشی). برای تست کردن XSS و تزریق SQL مناسب است.
OpenVAS. این برنامه ادعا می کند که پیشرفته ترین اسکنر امنیتی اپن سورس محسوب می شود. بر تست کردن نقاط ضعف شناخته شده بسیار مناسب بوده و در حال حاضر بیش از 25000 اسکن دارد. البته تنظیم کردن آن کمی مشکل بوده و به سرور OpenVAS. نیز دارد که در *nix. کار می کند. OpenVAS. بسیار مانند Nessus است قبل از اینکه کلوزسورس شود.
نتایج تست های خود کار می توانند ترسناک باشند زیرا نشان دهنده مشکلات احتمالی هستند. مهم ترین مسئله، اول تمرکز کردن بر مسایل حیاتی است. هر مسئله که به صورت طبیعی گزارش داده می شود، توضیحی خوبی از نقاط ضعف احتمالی شماست. احتمالا بعضی از رسانه ها یا مشکلات ضعیف اهمیت زیادی برای شما نخواهند داشت.
اگر می خواهید یک قدم فراتر رفته می توانید از مراحل دیگر پیروی کرده و به صورت دستی سعی کنید سایت را بوسیله تغییر دادن مقادیر POST/GET مورد حمله قرار دهید. یک پروکسی دیباگینگ می تواند به شما کمک کند زیرا به شما اجازه می دهد مقادیر درخواست HTTP بین جستجوگر و سرور را تغییر دهید. یک نرم افزارهای مجانی به Fiddler می تواند نقطه شروع مناسبی برای شما باشد.
خب، برای تغییر دادن درخواست چه کاری باید انجام دهید؟ اگر شما صفحاتی دارید که تنها برای کاربر لاگ این شده قابل رویت است، پس بهتر است پارامترهای URL مانند id کاربر یا کوکی های را تعویض کرده و ببینید که آیا جزئیات کاربر دیگر قابل مشاهده است یا خیر. یکی دیگر از حیطه ها که ارزش تست کردن دارد فرم ها هستند. شما می توانید با تغییر دادن مقادیر POST ببینید می توانید کدی را برای اجرای XSS در اسکریپت سمت سرور وارد کنید یا خیر.
امیدوارم این نکات به شما در امن نگاه داشتن اطلاعات و سایت کمک کرده باشد. خوشبختانه اکثر CMS ها خصوصیات امنیتی ویژه ای دارند اما باز هم بهتر است در مورد نقاط ضعف امنیتی رایج اطلاعاتی داشته باشید تا بتوانید از امن بود سرور خود اطمینان حاصل کنید.
همین طور ماژول های مفید زیادی مانند Security Review در Drupal و WP Security Scan برای CMS ها وجود دارند که می توانند در از بین بردن نقاط ضعف امنیتی کمک کنند.