امنیت یکی از مفاهیمی است که می توان گفت در علوم کامپیوتر جایگاهی ویژه داشته است و هزینه های بسیار زیادی برای آن شده است. در این بین اینترنت و همینطور کامپیوتر ها موفق به این شده اند که یک امنیت نسبی و قابل قبول را برای خود فراهم کنند. در این زمینه باید گفت که در خیلی از مواقع استفاده از تکنولوژی های امنیتی می تواند باعث شود تا بعضی از کاربرد ها دچار تغییراتی شوند. یکی از این کاربرد ها مشکل برقرار کردن امنیت در ارتباطات است که برای بعضی از سرور ها مانند سرور های اشتراکی با دردسر هایی همراه است که می تواند این کار را غیر قابل انجام کند. در اینجاست که خیلی از مکانیزم های مختلف برای هماهنگ سازی امنیت و سیستم ها ارائه می شوند و این سیستم های دیگر هستند که باید خود را با سطوح و استاندارد های امنیتی همراه کنند. در این مقاله با بررسی اینکه SNI چیست قصد داریم تا یکی دیگر از این موارد را معرفی کنیم.
در مورد مفاهیم امنیتی ما همیشه با پیچیدگی های زیادی روبرو بوده ایم و باید گفت که به علت پیچیدگی ها و همینطور انشعابات زیادی که امنیت دارد پیدا کردن موضوعات و مفاهیم در آن کمی می تواند گمراه کننده باشد. در صورتی که بخواهیم بگوییم که SNI چیست و یک تعریف مشخص از آن را ارائه دهیم لازم است کمی در مورد حوزه امنیتی رمزنگاری و اینکه چه کاربرد هایی دارد و در کجا به کار می آید صحبت کنیم تا این موضوع را که مکانیزم کار SNI چیست و وقتی که از آن استفاده می کنیم در مورد کدام یک از بخش های امنیت که یک حوزه بسیار گسترده در اینترنت و وب است صحبت می کنیم. در ادامه این موضوع که نقش امنیت چیست و در چه حوزه هایی می تواند فعالیت داشته باشد صحبت خواهیم کرد.
فهرست عناوین
رمزگذاری و نقش امنیتی آن
وقتی صحبت از امنیت در سیستم های کامپیوتری در میان باشد اولین چیزی که به نظر ما می آید و می توان گفت که مصداق اصلی امنیت می باشد یک آنتی ویروس پر دردسر است که لازم استیک لایسنس هم برای آن تهیه کنیم و آن را دوره ای آپلود کنیم و حتی در بعضی از مواقع به فایل های فید ما هم گیر بدهد و وقتی هم که سیستم خود را روشن می کنیم، نیاز باشد که صبر کنیم تا این آنتی ویروس بالا بیاید و کار خود را شروع کند. اما در این مورد باید گفت که این تنها بخش بسیار بسیار کوچکی از کاری است که در امنیت سیستم های کامپیوتری انجام می گیرد.
وقتی که خیلی از سیستم ها به اینترنت متصل نبود و ما با استفاده از دیسک ها و فلش ها اطلاعات را جابجا می کردیم این موضوع در جای خود اهمیت بسیار بالایی داشت. اما وقتی که اینترنت گسترده شد و آنقدر خود را به زندگی ما نزدیک کرد که تمامی مبادلات مالی و مهم از طریق آن انجام بگیرد، وقت آن رسیده بود که با مکانیزم های امنیتی بسیار بسیار بزرگتری روبرو شویم. مواردی که می توانند تضمین کننده این باشند که کاری که سیستم های بستر اینترنت و سایت ها برای ما انجام می دهند واقعا آن کاری است که انجام میگیرد.
اینترنت حوزه های امنیتی بسیار زیادی دارد و می توان گفت هک سرویس ها و اکانت های شخصی، هک شدن سایت ها، حملاتی که باعث می شوند سرویس های اینترنتی و سایت ها به صورت کلی از کار بیفتد، حملاتی که به منظور کلاهبرداری انجام می گیرد و همینطور موارد بسیار پیچیده تری که از ترکیب اینها پیش می آیند بخشی از مواردی هستند که امنیت در اینترنت با آنها مواجه است.
وقتی موردی به این پیچیدگی بخواهد برطرف شود، لازم است که یک دسته بندی برای آن ارائه شود و سوال بزرگ با کوچکتر شدن قابل درک تر خواهد بود و بهتر حل می شود. یکی از دسته های بزرگی که می توان از آن به عنوان یکی از جنبه های مهم امنیت یاد کرد، امنیت در انتقال اطلاعات است. خیلی از حملات اینترنتی در پی این هستند که اطلاعات شما را در بین راه شنود کرده و همان زمان که شما در حال انتقال اطلاعات حساب خود و یا پسورد های خود هستید آنها را به صورت حاضر و آماده بدست بیاورند.
این آسیب پذیری در رسانه های انتقال باعث شد که هزینه های زیادی به صنایع کامپیوتری و همینطور کاربران آسیب دیده وارد شود. اما بعد از گذشت مدتی رمزنگاری ها به میان آمدن و پروتکل ها و قواعدی را برای حفاظت از داده ها ایجاد کردند که اساس آنها رمزگذاری و همینطور نامفهوم کردن داده ها برای کسانی بود که اجازه خواندن این داده ها را نداشتند.
در صورتی که شما به دنبال الگوریتم هایی که برای این کار ارائه شده اند بگردید می توانید به طیف وسیعی از آنها دسترسی داشته باشید که باید گفت با استفاده از این الگوریتم ها است که اینترنت فضای خود را امن نگه می دارد. البته اگر به سراغ الگوریتم های مختلف بروید متوجه این موضوع خواهید شد که برای باز کردن این الگوریتم ها و رمزنگاری ها روش های مخلتفی هم وجود دارد به همین منظور در اینترنت از این روش ها به صورت ترکیبی استفاده می شود. در ادامه معروف ترین الگوریتم ها و مکانیزم هایی که برای برقراری امنیت از آنها استفاده می شود را ارائه خواهیم کرد و به طور کامل آن را بررسی می کنیم.
انواع رمزنگاری در ارتباطات اینترنتی
برای اینکه شما یک ارتباط امن و کامل را داشته باشید مکانیزم های رمزنگاری متعددی وجود دارد که می توان از آنها استفاده کرد. در ابتدای شروع به کار اینترنت این مکانیزم ها از روش هایی بسیار ساده استفاده می کردند که با استفاده از چند روش ساده و برنامه های معمولی رمزگشایی تمامی این موانع قابل برداشت بودند و با همین امنیت پایین خیلی از رمز ها لو رفته و تبعات زیادی را برای کاربران و استفاده کنندگان از اینترنت داشت. اما بعد از مدتی همین موضوع باعث شد تا دانشمندان در زمینه امن سازی بیشتر فضای اینترنت دست به کار شده و خیلی از مکانیزم هایی که ما آنها را به عنوان مکانیزم های اصلی رمزگذاری در اینترنت می شناسیم را ابداع کنند.
به طور کلی می توانیم بگوییم که دو نوع پروتکل و دو نوع روش اصلی برای برقراری امنیت در ارتباطات اینترنتی وجود دارد که می توان آنها را موفقیت آمیز دانست و باید گفت که کار خود را به خوبی انجام داده اند. قبل از اینکه به بررسی این موضوع که SNI چیست بپردازیم لازم است که این دو رمزنگاری را به صورت کلی بررسی کنیم.
رمزنگاری SSL
SSL را می توان یکی از پایه ای ترین تکنولوژی هایی معرفی کرد که از آن برای امن کردن یک ارتباط اینترنتی استفاده می شود. در واقع وقتی که شما از SSL استفاده کنید، کلیه بسته هایی که در بستر اینترنت ارسال می کنید و ممکن است که پیام های شما برای یک سایت باشد و یا یک سایت برای شما اطلاعاتی را ارسال کنید، به وسیله کلید های قوی ای رمزگذاری شده که تنها مرورگری که این ارتباط را ایجاد کرده قادر به شناسایی و باز کردن آن است و کسی در بین راه از این اطلاعات سو استفاده نمی کند و حتی اگر خط شما هم شنود بشود، باز هم اطلاعاتی که در اختیار هکر قرار می گیرد هیچ چیز قابل استفاده ای پیدا نخواهد کرد و فقط هش هایی بزرگ را خواهد دید که امکان تحلیل آنها و پیدا کردن داده اصلی به این سادگی ها وجود ندارد.
این تکنولوژی که در مقاله SSL چیست به صورت کامل آن را بررسی کردیم از سال ۱۹۹۳ تا ۱۹۹۶ به عنوان بهترین و کاربردی ترین تکنولوژی در برقراری امنیت شناخته می شد و تقریبا توانسته بود کار را به صورتی دنبال کنند که آسیبی به سایت های استفاده کننده از آن نرسد و اطلاعات به هیچ وجه فاش نشود. اما در سال ۱۹۹۶ با پیشرفته تر شدن سیستم ها و امکان رمزگشایی این الگوریتم کمی اوضاع به هم ریخت و SSL دیگر در خیلی از سیستم ها کارایی سابق را نداشت. به همین صورت مسیر تکامل را در پیش گرفته و محصولی دیگر به نام TLS از روی آن ساخته شد که در ادامه آن را به صورت کامل معرفی خواهیم کرد.
رمزگذاری های TLS
یکی دیگر از رمزگذاری ها و سرویس هایی که می تواند امنیت یک ارتباط را برای ما برقرار کند TLS نام دارد که از روی ورژن سوم از SSL ساخته شده است و شباهت زیادی با SSL دارد. در صورتی که بخواهیم به صورت خلاصه بگوییم که TLS چه پروتکلی است، می توانیم بگوییم که این پروتکل در واقع همان پیشرفته شده و چند مرحله ای شده پروتکل SSL می باشد که توسط شرکت و افراد دیگری ارائه شده است و به خاطر این که پروتکل SSL توسط شرکت Netscape ارائه شده بود این تغییر نام روی آن اعمال شد تا به نظر برسد که چیز متفاوتی است. اما همان پروتکل بود که تنها بعضی از ویژگی های جدید به آن اضافه شده بود.
در مورد اینکه این پروتکل به چه صورتی کار می کند و جزئیات آن به چه صورت است، در مقاله TLS چیست به صورت کامل صحبت کردیم و دیدیم که این پروتکل می تواند چه کارایی هایی را برای ما داشته باشد. اما در مورد اینکه SNI چیست و همینطور این موضوع که ارتباط این پروتکل ها و SNI چیست در ادامه به صورت مفصل صحبت می کنیم.
SNI چیست
اکنون ما دقیقا می دانیم که امنیت در اینترنت از کجا شروع شده و برای اینکه ارتباطات در اینترنت امن باقی بماند چه تلاش هایی انجام شده است و اوضاع به چه صورتی می باشد. اکنون نوبت به این رسیده است که در مورد اینکه SNI چیست صحبت کنیم.
در پاسخ به این سوال که SNI چیست می توانیم بگوییم که SNI یا همان Server Name Indicator یکی از المان هایی است که تعیین می کند وقتی که ارتباطی با یک سرور برقرار شد این ارتباط می تواند مربوط به کدام یک از سرویس ها و سایت هایی باشد که روی یک سرور کار می کنند.
در واقع باید در پاسخ به این سوال که SNI چیست گفت که این مکانیزم یکی از روش هایی است که با استفاده از آن می توانیم به سایت هایی که روی هاست های اشتراکی قرار گرفته اند سرویس دهی کنیم و با استفاده از آن می توانیم یک تفکیک کامل از اینکه کدام پیام مربوط به کدام هاست است را داشته باشیم.
برای اینکه درک کاملی از اینکه SNI چیست داشته باشیم بهتر است کمی در مورد ساز و کار هاست های اشتراکی صحبت کنیم.
سیستم کاری هاست های اشتراکی
در مورد اینکه هاست های اشتراکی چیست باید گفت که هاست اشتراکی سرویس میزبانی است که در آن روی یک سرور تعداد زیادی هاست ایجاد می شود که هر کدام از آنها میزبانی یک سایت را بر عهده دارند. یعنی هر کدام از این هاست ها برنامه ای هستند که فضای ذخیره سازی مورد نیاز برای سایت را در اختیار آن قرار داده و همینطور یک وب سرور را برای آن مدیریت می کنند که می تواند به درخواست هایی که برای آن ارسال می شود پاسخ دهند.
در هاست های اشتراکی سرور یک IP مشخص دارد و وقتی که بسته ای برای سرور می رسد، سرور این بسته را بررسی کرده و آن را برای وب سرور هاستی که بسته برای آن ارسال شده است می فرستد. تا اینجای کار همه چیز خوب و مرتب انجام می شود اما وقتی که سایت ها از SSL و TLS برای امنیت ارتباطات خود استفاده کنند، آنچه که به سرور می رسد در واقع یک بسته رمزنگاری شده است که سرور اصلی نمی تواند آن را رمزگشایی کرده و متوجه این موضوع شود که مربوط به کدام سایت می باشد.
در اینجاست که این بسته ها دراپ شده و به سایت نمی رسند. در صورتی که بخواهیم بگوییم SNI چیست می توان گفت که در واقع SNI یک مقدار است که این بسته های رمزگذاری شده با SSL و TLS آن را با خود وارد سرور کرده و سرور می تواند با استفاده از آن این موضوع که بسته ها مربوط به کدام سایت می باشند را تشخیص دهد.
در ادامه به صورت کامل این مورد که روش فعالسازی SNI چیست را با هم بررسی می کنیم.
روش فعالسازی SNI چیست
در مورد اینکه چطور می توان SNI را مورد استفاده قرار داد و روش فعال کردن آن روی هاست های اشتراکی چیست باید گفت که لازم است که یک افزونه از طریق کنترل پنل نصب شود. برای این کار به دسترسی های سطح بالا نیاز است که معمولا این سطح از دسترسی در هاست های اشتراکی داده نمی شود و باید گفت که بهترین راه برای اینکه بتوانید این امکان را برای سایت خود فعال کنید این است که به پشتیبانی هاست خود پیام دهید.
البته در مورد اینکه وضعیت راه اندازی SNI چیست باید گفت که معمولا خیلی از هاست های اشتراکی مانند هاست لینوکس که به شما SSL رایگان هم می دهند از قبل این موضوع را در نظر گرفته و شما نیازی نیست که برای استفاده از SNI کاری را انجام دهید.
مزایای استفاده از SNI
جهت نصب ssl نیاز به آی پی اختصاصی می باشد. یعنی هر اکانت جهت فعال کردن ssl روی هاست خود باید آی پی اختصاصی داشته باشد مگر اینکه روی سرور مورد نظر SNI فعال باشد. فعال بودن SNI تحت اختیارات شرکت میزبان است و میتواند به صورت رایگان این امکان را ارائه کند و یا در قبال فعال کردن این دسترسی هزینه ای دریافت کند.
بنابراین دو مزیت اصلی استفاده از SNI به صورت زیر است:
- برای تهیه SSL نیازی به پرداخت هزینه برای آی پی اختصاصی نیست
- کاهش و صرفه جویی در استفاده های بی مورد از IPv4
نکته: در صورت فعال نبودن SNI روی سرور اگر اقدام به نصب ssl از طریق گزینهی SSL Certificates کنید، خطایی که در تصویر مشخص هست را دریافت خواهید کرد.
در کنترل پنلهای Cpanel و Plesk قابلیت SNI بصورت پیشفرض فعال است. در ادامه نحوهی فعال کردن آن روی دایرکت ادمین توضیح داده میشود.
نحوه ی فعال کردن SNI در سرور های مجازی دایرکت ادمین
در دایرکت ادمین برای نصب ssl در یک اکانت هاست باید روی گزینه ی ssl certificate کلیک کنید. چنانچه SNI روی سرور فعال باشد شما دسترسی جهت نصب خواهید داشت و در غیر این صورت این گزینه خطای دسترسی می دهد و شما امکان نصب ssl نخواهید داشت. در این مورد باید دسترسی را ایجاد کنید
ابتدا SSH سرور را باز کنید. در صورتی که با نحوه برقراری ارتباط ssh آشنا نیستید مقاله برقراری ارتباط SSH با سرور را بررسی نمائید.
جهت فعال کردن SNI در سرور های مجازی دایرکت ادمین باید دسترسی را در فایل directadmin.conf اضافه کنید. فایل directadmin.conf در مسیر زیر قرار دارد:
/usr/local/directadmin/conf/directadmin.conf
جهت ویرایش فایل از دستور nano استفاده کنید و دستور زیر را در ترمینال سرور اجرا کنید.
nano /usr/local/directadmin/conf/directadmin.conf
در فایل باز شده باید دسترسی enable_ssl_sni برابر با 1 ست شده باشد. چنانچه گزینه ی enable_ssl_sni در فایل موجود نبود،باید به صورت زیر در فایل اضافه کنید:
در نهایت با کلید های Ctrl+x و سپس Y فایل را ذخیره کنید.
اکنون باید سرویس directadmin را یک بار ریست کنید. برای این منظور کد زیر را در ترمینال اجرا کنید:
service directadmin restart
با انجام این موارد دسترسی ssl cerfificate روی هاست های سرور فعال میشود و امکان نصب ssl فراهم میشود.
نتیجه گیری
در این مقاله به بررسی این موضوع که SNI چیست و می تواند چه کاری را برای ما انجام دهد پرداختیم. در مورد اینکه SNI چیست می توان گفت که یکی از ابزار هایی است که در هاست های اشتراکی امکان استفاده از الگوریتم های رمزنگاری قوی مانند SSL و TLS را فراهم می کند و می توان گفت که استفاده از آن یکی از موارد مهم برای هاست های اشتراکی می باشد و قرار است این موضوع که هر بسته به کدام سایت مربوط می شود را تعیین کند. در صورتی که شما از یک هاست اشتراکی استفاده می کنید و با فعال کردن SSL روی سایت خود کاربران شما با ارور مواجه می شوند بهتر است که از پشتیبانی هاست خود درخواست کنید که این ویژگی را برای شما فعال کند.