اگر با فناوریهای ابری آشنا باشید، احتمالا با عبارت کلیدهای SSH مواجه شدهاید. کلید SSH (Secure Shell) در واقع یک نوع اعتبار دسترسی است که در پروتکل SSH استفاده میشود. پروتکل SSH در پلتفرمهای زیرساخت به عنوان سرویس (IaaS- Infrastructure as a Service) بسیار مهم هستند. در این مقاله از اَبر دِراک به بررسی کلیدهای SSH و تاثیر آنها بر افزایش امنیت سرور ابری میپردازیم.
پروتکل SSH چگونه به وجود آمد؟
تاتلو یلونن (Tatu Ylonen) محقق دانشگاه هلسینکی برای اولین بار در حین یک حمله شنود ترافیک شبکه (sniffing attack struck)، پروتکل SSH را توسعه داد. در این نوع حمله بستههای داده عبوری از شبکه رهگیری میشوند. با رهگیری این بستههای داده مهاجمان به اطلاعات حساسی مانند اطلاعات حساب، رمزهای عبور و …. دسترسی پیدا میکنند. این حمله که هزاران اعتبار را تحت تاثیر قرار داد، به انگیزه تاتلو یلونن برای پیدا کردن راهی برای افزایش امنیت شبکه تبدیل شد و در نهایت به ایجاد پروتکل SSH منجر گردید. این پروتکل برای ورود به یک سیستم از راه دور استفاده میشود. پروتکل SSH از رمزنگاری پیشرفتهای استفاده میکند که کاربران را قادر میسازد تا وظایف خود را به راحتی از راه دور انجام دهند. با استقبال روزافزون از راهحلهای ابری و رونق کار کردن از راه دور مبحث امنیت ابری نیز اهمیت ویژهای پیدا کرد.
برای استفاده از پروتکل SSH و دسترسی به سیستمها از راه دور باید نرمافزارهای خاصی را بر روی سیستم خود نصب کنید. در واقع برای ارتباط بین دو سیستم از راه دور با استفاده از پروتکل SSH باید بر روی هر دو سیستم نرمافزار خاصی را نصب کرد تا آنها بتوانند از راه دور با یکدیگر ارتباط برقرار کنند. کلید SSH در واقع یک روش احراز هویت است که به کاربران اجازه میدهد تا به اتصالات رمزگذاری شده بین سیستمها دسترسی داشته باشند.
در پروتکل SSH برای ایجاد ارتباط بین دو سیستم از یک جفت کلید استفاده میشود. این جفت کلید در دو نوع کلید خصوصی (private key) و کلید عمومی (public key) هستند. این دو کلید برای رمزگذاری و رمزگشایی دادههای انتقالی بین دو سیستم استفاده میشوند. در واقع کلید عمومی مانند یک قفل عمل میکند که تنها با کلید خصوصی میتوان آن را باز کرد. در پروتکل SSH به هر کاربر برای ورود به سیستم یک جفت کلید اختصاص مییابد. دادههای ارسالی به وسیله کلید عمومی رمزگذاری میشود و در مقصد با کمک کلید خصوصی این دادهها رمزگشایی میشوند.
شروع کار با کلیدهای SSH
برای شروع کار با کلیدهای SSH ، ابتدا باید یک کلید SSH ایجاد کنید. برای این کار میتوانید دستور زیر را در ترمینال سیستم خود وارد کنید:
ssh-keygen
این دستور یک کلید SSH برای شما ایجاد میکند. شما میتوانید محل ذخیره کلید SSH خود را به طور دلخواه تغییر دهید؛ اما کلیدهای SSH به طور پیشفرض در دایرکتوری ~/.ssh قرار میگیرند. پس از ایجاد کلید SSH، شما باید کلید عمومی خود را به سرور مورد نظرتان ارسال کنید. برای این کار، شما باید محتوای کلید عمومی خود را در فایل ~/.ssh/authorized_keys قرار دهید. محتوای کلید عمومی معمولا با پسوند .pub ذخیره میشود.
در اینجا میتوانید محتوای کلید عمومی خود را با دستور زیر در کلیپبورد کپی کرده و در فایل authorized_keys قرار دهید:
cat ~/.ssh/id_rsa.pub | ssh username@remote_server “mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys”
در این دستور، id_rsa.pub نام فایل کلید عمومی شماست. Username را باید با نام کاربری SSH سرور خود جایگزین کنید. remote_server نشانی IP یا نام دامنه سرور شماست. در نهایت، برای اتصال به سرور با استفاده از کلیدهای SSH ، دستور زیر را در ترمینال خود وارد کنید:
ssh username@remote_server
در این دستور، username باید با نام کاربری SSH سرور جایگزین شود. به جای remote_server باید نشانی IP یا نام دامنه سرور خود را قرار دهید. پس از وارد کردن این دستور، شما باید درخواست رمز عبور SSH سرور مورد نظرتان را وارد کنید. سپس با موفقیت به سرور SSH متصل خواهید شد.
فرآیند احراز هویت SSH
در فرآیند احراز هویت SSH مجوز دسترسی فرد یا دستگاهی که قصد ورود به سرور را دارد بررسی میشود. در این فرآیند ابتدا باید کاربر یا دستگاه مورد نظر از طریق SSH به سیستم متصل شود. سیستم میزبان اطلاعات مربوطه که شامل نام کاربری، رمز عبور و کلید عمومی SSH میشود را به سرور ارسال میکند. سرور از طریق کلید عمومی، احراز هویت خود را به سیستم میزبان ارسال می کند. سیستم میزبان، با استفاده از کلید خصوصی، احراز هویت دستگاه دیگر را بررسی و تأیید می کند. در صورت تأیید احراز هویت، ارتباط بین دستگاهها ایجاد شده و کاربر یا دستگاه مورد نظر، به سرور دسترسی خواهد داشت.
این فرآیند احراز هویت SSH به دلیل استفاده از کلید عمومی و خصوصی SSH، بسیار ایمن است. در فرآیند احراز هویت SSH، مشتری و سرور از طریق یک الگوریتم رمزنگاری عمومی-خصوصی به نام RSA به هم متصل میشوند. رمزنگاری RSA برای امنیت انتقال دادهها به صورت آنلاین استفاده میشود. در این نوع رمزنگاری کلید خصوصی که برای رمزگشایی استفاده میشود کاملا محرمانه است و باعث میشود که هکرها نتوانند به محتوای بستههای داده انتقالی دست پیدا کنند. در این روش مدیریت کلید خصوصی SSH از اهمیت زیادی برخوردار است.
در فرآیند احراز هویت SSH، کاربر با استفاده از کلید خصوصی خود، یک درخواست به سمت سرور ارسال میکند تا سرور احراز هویت او را تایید کند. سرور پس از دریافت درخواست، یک چالش به مشتری میدهد که باید با استفاده از کلید خصوصی خود آن را رمزگشایی نماید. در صورت موفقیتآمیز بودن چالش احراز هویت، سرور به مشتری اجازه میدهد تا به سیستم وارد شود و از آن استفاده کند.
نحوه مدیریت کلیدهای SSH
با توجه به اینکه کلیدهای SSH امکان دسترسی به داراییهای حیاتی یک سازمان را فراهم میکنند، مدیریت صحیح آنها از اهمیت زیادی برخوردار است. مدیریت این کلیدها به صورت دستی بسیار دشوار است. این کلیدها باید به گونهای نگهداری شوند که ضمن امنیت بالا، کاربران بتوانند به راحتی به آنها دسترسی داشته باشند.
در ادامه مدیریت کلیدهای SSH را از مرحله تولید کلیدها به ترتیب توضیح میدهیم:
تولید کلید SSH
ابتدا باید کلیدهای SSH را برای هر کاربر به صورت جداگانه تولید کرد. این مرحله همانگونه که در بالا توضیح داده شد، معمولا با استفاده از دستور ssh-keygen انجام می شود.
ذخیره کلیدهای SSH
کلیدهای تولید شده برای هر کاربر باید در مسیر خاصی در سیستم ذخیره شوند. به طور معمول کلید خصوصی و عمومی به ترتیب در فایلهای ~/.ssh/id_rsa و ~/.ssh/id_rsa.pub ذخیره میشوند.
ارسال کلید عمومی SSH
کلید عمومی SSH برای هر کاربر باید به سرور یا سرورهایی که قرار است از آن استفاده شود، ارسال گردد. برای این کار میتوان از دستور ssh-copy-id استفاده کرد.
محافظت از کلید خصوصی SSH
کلید خصوصی SSH بسیار حساس است و باید در محیطی که امنیت آن تضمین شده باشد ذخیره شود. بهترین راه برای این کار استفاده از یک کتابخانه محلی است که باعث میشود برای هر بار استفاده از کلید SSH نیازی به وارد کردن رمز عبور نباشد.
مدیریت دسترسی ها
برای مدیریت دسترسی به سرورها و سرویسهای مختلف، میتوان کلیدهای SSH را در فایلهای مجزایی قرار داد و دسترسیهای هر کلید را به دقت تعریف کرد. همچنین میتوان از سیستم های مدیریت هویت و دسترسی مانند LDAP و Active Directory برای مدیریت دسترسیها استفاده کرد.
افزایش امنیت سرور ابری با استفاده از کلید SSH
برای افزایش امنیت سرور ابری میتوان از کلیدهای SSH برای برقراری ارتباط بین کلاینت و سرور مجازی استفاده کرد. با استفاده از کلید SSH میتوان اطمینان حاصل کرد که فردی که به سرور ابری متصل میشود اجازه دسترسی به منابعی که از طریق SSH قابل دسترسی هستند، را دارد. به این صورت کلید SSH به افزایش امنیت سرور ابری کمک میکند و از حملات نفوذ و دسترسی غیرمجاز جلوگیری میکند. به طور کلی، استفاده از کلید SSH به عنوان یک روش امنیتی برای ارتباطات ابری به شدت توصیه میشود.
برای آشنایی بیشتر با مفاهیم امنیت در شبکه میتوانید این مقاله را مطاله نمایید
سوالات متداول
کلید SSH چیست و چگونه کار میکند؟
کلید SSH برای دسترسی به سرور از راه دور و از طریق اتصال SSH استفاده میشود. کلیدهای SSH شامل یک جفت کلید عمومی و خصوصی هستند. کلید عمومی در سرور نگهداری میشود و کلید خصوصی نزد کاربر میماند. سرور با ارسال یک پیام رمزگذاری شده با استفاده از کلید عمومی، کاربر را احراز هویت می کند.
کاربرد کلیدهایSSH چیست؟
کلیدهای SSH مانند رمزهای عبور امنی هستند که دسترسی کاربران به داراییهای یک شبکه را کنترل میکنند. این کلیدها امنیت سرورهای ابری را افزایش میدهند و در عین حال باعث راحتی کار کردن با سرورهای ابری میشوند.
کلیدهای SSH در چه مواردی مفید هستند؟
کلیدهای SSH یک پروتکل ارتباط شبکهای است که دو سیستم کامپیوتری را قادر میسازد تا با یکدیگر ارتباط برقرار کنند و دادهها را بین خود به اشتراک بگذارند.