HSTS و امن سازی دسترسی به سایت و جلوگیری از کلاهبرداری
نوشته : -
ایجاد در : شنبه ۲۷ بهمن ۹۷ ۱۲:۲۵ مجموعه : مقالات امتیاز : 4 بازدید : 1313

HTTP Strict Transport Security (HSTS) مکانیزم انتقال اطلاعات با امنیت بالا در سطح سیاست های وب web policy است که به حفظ اطلاعات منتقل شده در دنیای وب در برابر حملات شنود و جمع آوری اطلاعات و ربودن کوکی ها cookie hijacking کمک میکند.
اگر شما مالک یک وبسایت باشید احتمالا گواهینامه SSL را فعال کردهاید و قفل امنیتی سبز رنگ ایمن بودن وبسایتتان، در هنگام بارگذاری بر بالای مرورگر خودنمایی میکند. با این حال ممکن است شما فراموش کرده باشید تا قابلیت امنیتی انتقال مستحکم HTTP (HTTP Strict Transport Security) را نیز به کار بگیرید. این ویژگی به HSTS مشهور است.
HTTPS چیست؟
در ابتدا لازم است در مورد HTTPS یا همان پروتکل امن انتقال ابرمتن بیشتر بدانید. این پروتکل نسخه ایمن HTTP محسوب میشود. رمزگذاری در آن با استفاده از برقراری پروتکل امنیتی لایه انتقال که به SSL مشهور است، انجام و به همراه یک گواهی SSL مورد تایید قرار میگیرد. بنابراین زمانی که شما از یک سایت HTTPS استفاده میکنید، اطلاعات رد و بدل شده بین شما و وبسایت، رمزگذاری میشود. این کار کمک میکند تا از شما در مقابل سرقت اطلاعات که با شیوه موسوم به حمله مرد میانی یا MITM رخ میدهد، محافظت گردد. لایه حفاظتی اضافی نیز این قابلیت امنیتی را بهبود میبخشد تا شهرت وبسایت شما دچار خدشه نگردد!
در واقع اضافه کردن یک گواهی SSL بسیار ساده است و بسیاری از شرکتهای خدمات میزبانی وب به صورت رایگان به شما آن را ارایه میدهند. با این حال پروتکل HTTPS نیز دارای برخی نقایص است که HSTS میتواند به حل این کاستیها کمک نماید.
HSTS چیست؟
خیلی ساده HSTS یک واکنش یا پاسخ اولیه است که به مرورگر اطلاع میدهد پروتکل امن HTTPS فعال بوده و امکان دسترسی به وبسایت تنها از طریق این پروتکل امن امکانپذیر است. این فرمان سبب میگردد مرورگر شما تنها از طریق نسخه مجهز به پروتکل HTTPS به وبسایت مورد نظر و دیگر بخشهای آن متصل گردد.
اما اهمیت این فرمان به مرورگر، زمانی بیش آشکار میشود که شما گواهینامه SSL را نیز برای وبسایت خود تهیه کرده و پروتکل HTTPS را فعال کردهاید ولی به طور اتفاقی هنوز وبسایت شما از طریق پروتکل ناامن HTTP در دسترس باشد و کاربران بتوانند از آن آدرس وارد سایت شوند. این واقعه بسیار شایع است و حتی اگر شما تنظیمات را به صورتی تغییر دهید که به دایرکت دائمی 301 منتقل شود، باز هم مشکل پابرجا خواهد بود. بنابراین در اینجاست که HSTS وارد عمل شده و در صورت وجود نسخه امن HTTPS، مرورگر را ملزم به استفاده از آن مینماید.
این پروتکل اجازه میدهد تا وب سرورها از طریق شناسایی مرورگرها ( یا سایر agent های کاربر) تنها اجازه تبادل اطلاعات از طریق HTTPS داشته باشند و امکان ارتباط HTTP وجود نخواهد داشت. در حقیقت کاربران ملزم به استفاده از پروتکل HTTPS خواهند بود.
هنگامی که HSTS فعال میشود دو موضوع اتفاق می افتد:
– همیشه از https استفاده خواهد شد حتی اگر آدرس را بصورت http وارد کنید.
– حدف قابلیت انتخاب کاربر برای ورود به سایت هایی که گواهی SSL invalid دارند.
مهمترین آسیب پذیری که SSL-stripping man-in-the-middle نام دارد با استفاده از hsts قابل جلوگیری خواهد بود. این حمله در سال ۲۰۰۹ اتفاق افتاد (حتی برای TLS) که توسط آن درخواست اتصال https به اتصال http تبدیل میشد. استفاده این مکانیزم امکان قرار گیری هکرها در میان ارتباط شما با سایت مقصد و مشاهده اطلاعات و داده های رد و بدل شده را نخواهد داد.
تدوین اطلاعات و قوانین HSTS کمی با مشکل روبهرو بود و به طول انجامید به همین دلیل گوگل پیگیری استفاده همگانی از آن را در سال 2016 رها کرد، بدین سبب است که اغلب افراد و مدیران وبسایتها از وجود آن بیاطلاع هستند. با این حال باید بدانید که فعال نمودن HSTS سبب جلوگیری از حملات به پروتکل SSL و ربوده شدن کوکیها میشود. این دو مشکل از مهمترین نقاط ضعف و پاشنه آشیل وبسایتهایی است که قابلیت SSL خود را فعال نمودهاند ولی فاقد قابلیت HSTS هستند. به علاوه، افزون بر بالارفتن ضریب ایمنی، وجود HSTS با حذف یکی از مراحل پردازش بارگیری وبسایت، سبب افزایش سرعت بالا آمدن سایت خواهد شد!
انهدام SSL یا SSL Stripping چیست؟
اگر چه پروتکل HTTPS نسبت به HTTP یک پیشرفت عظیم بود ولی در هر حال این پروتکل امن نیز در مقابل هک شدن رویینتن نیست و هکرها میتوانند بر آن هم غلبه نمایند. بیدفاع شدن و انهدام SSL توسط یک حمله MITM، در وبسایتهایی که از فرایند ریدایرکت برای فرستادن کاربران از HTTP به نسخه HTTPS وبسایت استفاده میبرند، بسیار رایج است! ریدایرکت دائمی (301) و موقت (302) اساسا به این شکل کار میکند:
یک کاربر آدرس google.com را در نوار آدرس مرورگر خود تایپ میکند.
به صورت پیشفرض مرورگر تلاش میکند ابتدا آدرس http://google.com را بارگذاری نماید.
مدیر سایت Google.com به طور دایمی (301) آن آدرس را به آدرس امن https://google.com هدایت کرده است.
مرورگر دایرکت را یافته و این بار به جای آن آدرس https://google.com را بارگذاری مینماید.
ولی با استفاده از تاکتیک انهدام SSL، هکر میتواند از فرصت بدست آمده در بین مرحله 3 و 4 برای مسدود کردن فرمان دایرکت و متوقف کردن مرورگر به منظور بارگذاری نسخه امن HTTPS وبسایت استفاده نماید. در این شرایط همچنان به یک نسخه بدون رمزگذاری و ناامن دسترسی دارید و به سادگی تمام اطلاعات شما قابل سرقت خواهد بود. هکر حتی میتواند شما را به وبسایتی کاملا مشابه با سایت مورد نظر هدایت کرده و تمامی اطلاعاتی که شما وارد میکنید (از جمله شماره حساب بانکی و رمز اینترنتی آن و …) را بدست آورد بدون آنکه شما متوجه ناامن بودن سایت جعلی شوید!
البته گوگل قدمهایی برداشته است تا مرورگر کروم بتواند جلوی برخی از این ریدایرکتهای ناامن و تقلبی را بگیرد. با این حال مطمئنترین راه فعال کردن و استفاده از قابلیت HSTS برای تمام وبسایتهای مهم و حتی شخصی خودتان است.
چگونه HSTS میتواند جلوی انهدام SSL را بگیرد؟
فعال کردن HSTS مرورگر را مجبور میکند نسخه ایمن یک وبسایت را بارگیری نماید و هرگونه ریدایرکت و تماس دیگری را برای باز کردن اتصال HTTP نادیده بگیرد و مشکل آسیبپذیری فرایند ریدایرکت را که با هدایت کدهای 301 و 302 وجود دارد، برطرف کند. با این حال نکته ناخوشایند ماجرا در استفاده از HSTS این است که مرورگر مورد استفاده کاربر، باید حداقل یکبار قبل از به کارگیری همیشگی از این ویژگی، واکنش و فرمان HSTS را دیده باشد. این بدین معناست که حداقل یکبار باید وبسایت فرایند ریدایرکت HTTP به HTTPS را انجام دهد!
به همین علت حتی در وبسایتهای مجهز به HSTS نیز برای بار اولین این آسیبپذیری وجود دارد. برای مقابله با این تهدید بالقوه، مرورگر کروم لیستی از وبسایتهایی که دارای HSTS فعال هستند را در اختیار دارد و پیش از بارگذاری نسبت به اعمال این مورد اقدام مینماید. به علاوه کاربران حرفهای که دارای دانش فنی کافی در این زمینه هستند نیز خودشان میتوانند وبسایتهای مجهز به HSTS فعال را به این لیست بیافزایند.
نحوه فعال سازی HSTS :
ابتدا وارد تنظیمات وب سرور تان شوید (Apache یا Nginx ) و خط زیر را در آن اضافه نمایید و یک باز سرویس وب سرور تان را Restart کنید :
Header always set strict-transport-security: "max-age=31536000; includeSubDomains preload"
در سیستم عامل ویندوز
در صورت امکان شما باید ویژگی(۲) HSTS را فعال کنید برای اینکه مرورگرها فقط با پروتکل HTTPS بتوانند با سایت شما ارتباط برقرار کنند.
۱) پنجره IIS Manager را باز کنید و ‘HTTP Response Headers’ را انتخاب کنید.
۲) بر روی دکمه Add مطابق شکل زیر کلیک کنید.
۳) اطلاعات خواسته شده را به صورت زیر در پنجره مربوطه وارد کنید.
strict-transport-security max-age=31536000; includeSubdomains |
---|
۴) روی OK کلیک کنید.