اعلان SSH به سبک در یک پنجره ترمینال در لپ تاپ.
Eny Setiyowati / Shutterstock.com

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

SSH Basics Security

SSH مخفف Secure Shell است. نام "SSH" به صورت متناوب مورد استفاده قرار می گیرد به معنای خود پروتکل SSH یا ابزارهای نرم افزاری است که به سرپرستان سیستم و کاربران امکان می دهد با استفاده از آن پروتکل اتصالات ایمن را به کامپیوترهای از راه دور برقرار کنند.

پروتکل SSH پروتکل رمزگذاری شده است که برای ارائه اتصال امن از طریق شبکه ناامن ، مانند اینترنت. SSH در لینوکس بر روی یک نسخه قابل حمل از پروژه OpenSSH ساخته شده است. این در یک مدل کلاسیک سرور مشتری انجام می شود ، با یک سرور SSH اتصالات مشتریان SSH را می پذیرد. مشتری برای اتصال به سرور و برای نمایش جلسه به کاربر از راه دور استفاده می شود. سرور اتصال را می پذیرد و جلسه را اجرا می کند.

در پیکربندی پیش فرض خود ، یک سرور SSH برای درگاه های ورودی در پورت 22 پروتکل کنترل انتقال (TCP) گوش فرا می دهد. زیرا این استاندارد است ،

بازیگران تهدید ربات هایی را راه اندازی می کنند که طیف وسیعی از آدرس های IP را جستجو می کنند و به دنبال پورت های باز هستند. سپس از درگاه ها سؤال می شود که آیا آسیب پذیری هایی وجود دارند که می توانند مورد سوء استفاده قرار بگیرند. فکر کردن ، "من امن هستم ، اهداف بزرگتر و بهتری از من وجود دارد تا افراد بد به هدف بپردازند." ربات ها بر اساس هرگونه شایستگی اهداف را انتخاب نمی کنند. آنها به صورت متدنی به دنبال سیستم هایی هستند که بتوانند آنها را نقض کنند.

اگر سیستم خود را تأمین نکرده اید ، خود را قربانی معرفی کنید.

Security Friction

اصطکاک امنیتی تحریک کننده – از هر درجه ای – است که کاربران و هنگامی که اقدامات امنیتی را اجرا می کنید دیگران تجربه خواهند کرد. ما خاطرات طولانی داریم و می توانیم به یاد داشته باشیم کاربران جدید را با سیستم رایانه ای معرفی می کنیم و با شنیدن آنها با صدای وحشت زده سؤال می کنیم که آیا واقعاً باید هر بار وارد یک گذرواژه شوند. به اصلی. این مسئله اصطکاک امنیتی بود.

(اتفاقاً ، اختراع رمز عبور به Fernando J. Corbató ، یکی دیگر از چهره های پانتئون دانشمندان رایانه اختصاص دارد که کار ترکیبی آن به شرایطی منجر شد که منجر به تولد یونیکس شد. .)

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

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

این مراحل حرف آخر در SSH نیست امنیت ، اما آنها شما را از تنظیمات پیش فرض و بدون اصطکاک بیش از حد پیش می برد.

از SSH Protokoll نسخه 2

استفاده کنید. در سال 2006 ، پروتکل SSH از نسخه 1 به نسخه 2 به روز شد. یک ارتقاء قابل توجه بود تغییرات و پیشرفتهای زیادی به ویژه درمورد رمزگذاری و امنیت وجود دارد ، که نسخه 2 با نسخه 1 سازگار نیست. برای جلوگیری از اتصال از سرویس گیرندگان نسخه 1 ، می توانید تصریح کنید که رایانه شما فقط اتصالات را از سرویس گیرندگان نسخه 2 می پذیرد. [19659006] برای این کار ، پرونده / etc / ssh / sshd_config را ویرایش کنید. ما این کار را در طول مقاله انجام خواهیم داد. هر زمان که نیاز به ویرایش این پرونده داشته باشید ، این دستور استفاده است:

 sudo gedit / etc / ssh / sshd_config 

 sudo gedit / etc / ssh / sshd_config در یک پنجره ترمینال

:

 پروتکل 2 

 sshd_config در gedit با ویرایش های برجسته شده

و پرونده را ذخیره کنید. ما می خواهیم روند SSH را آغاز کنیم. باز هم ، ما این کار را در طول مقاله انجام خواهیم داد. این دستور استفاده در هر مورد است:

 sudo systemctl restart sshd 

 sudo gedit / etc / ssh / sshd_config در یک پنجره ترمینال

اجازه دهید بررسی کنیم که تنظیم جدید ما قابل اجرا است. ما به یک دستگاه دیگر می پردازیم و سعی خواهیم کرد SSH را بر روی دستگاه تست خود قرار دهیم. و ما از گزینه -1 (protokola 1) برای مجبور کردن دستور ssh برای استفاده از پروتکل نسخه 1.

 ssh -1 [email protected] 

 ssh -1 dave@howtogeek.local در یک پنجره ترمینال

عالی ، درخواست اتصال ما رد می شود. بیایید اطمینان حاصل کنیم که هنوز می توانیم با پروتکل 2 ارتباط برقرار کنیم. برای اثبات واقعیت از گزینه -2 (پروتکل 2) استفاده خواهیم کرد.

 ssh -2 [email protected] 

 ssh -2 dave'howtogeek.local در یک پنجره ترمینال

این واقعیت که سرور SSH درخواست رمز عبور ما را می دهد ، نشانگر مثبت این است که اتصال ایجاد شده است و شما در حال تعامل با سرور هستید. در واقع ، به دلیل اینکه مشتریان مدرن SSH به طور پیش فرض از پروتکل 2 استفاده می کنند ، لازم نیست پروتکل 2 را تا زمانی که مشتری ما به روز باشد ، مشخص کنیم.

 ssh [email protected] 

 ssh dave@howtogeek.local در یک پنجره ترمینال

و ارتباط ما پذیرفته شده است. بنابراین ، این تنها اتصال های ضعیف و ضعیف پروتکل 1 است که رد می شوند.

اجتناب از بندر 22

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

برای پیکربندی پورت غیر استاندارد ، پرونده پیکربندی SSH خود را ویرایش کنید:

 sudo gedit / etc / ssh / sshd_config [19659041] پرونده پیکربندی SSH در gedit با ویرایش های برجسته شده " width="646" height="342" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> 

hash # را از ابتدای خط "Port" خارج کنید و "22" را با شماره درگاه مورد نظر خود جایگزین کنید. پرونده پیکربندی خود را ذخیره کنید و دکمه SSH را مجدداً راه اندازی کنید:

 sudo systemctl restart sshd 

بگذارید ببینیم چه تاثیری داشته است. از طریق رایانه دیگر ، از دستور ssh برای اتصال به سرور خود استفاده خواهیم کرد. فرمان ssh پیش فرض استفاده از پورت 22:

 ssh [email protected] 

 ssh dave@howtogeek.local در یک پنجره ترمینال

اتصال ما رد شد . بیایید دوباره پورت 470 را امتحان کنیم و با استفاده از گزینه -p (port) گزینه:

 ssh -p 479 [email protected] 

 ssh -p 479 dave@howtogeek.local را در یک پنجره ترمینال

اتصال ما پذیرفته شده است.

اتصالات فیلتر با استفاده از بسته های TCP

TCP Wrappers آسان برای درک لیست کنترل دسترسی است. این امکان را به شما می دهد تا ارتباطات را بر اساس ویژگی های درخواست اتصال ، مانند آدرس IP یا نام میزبان ، حذف و مجاز کنید. از لفافهای TCP باید با فایروال درست پیکربندی شده استفاده شود و نه به جای آن. در سناریوی خاص ما ، می توانیم با استفاده از بندهای TCP موارد را به میزان قابل توجهی تشدید كنیم.

بسته های TCP قبلاً روی دستگاه Ubuntu 18.04 LTS نصب شده بود كه برای تحقیق در این مقاله استفاده شده بود. برای نصب روی فدورا باید از این دستور استفاده کنید:

 sudo yum install tcp_wrappers 

 sudo yum نصب tcp_wrappers را در یک پنجره ترمینال [19659006] برای نصب روی Manjaro ، از این دستور استفاده کنید:

 sudo pacman -Syu tcp-wrappers 

 sudo pacman -Syu tcp-wrappers در یک پنجره ترمینال

دو پرونده در آن وجود دارد. یکی لیست مجاز را نگه می دارد و دیگری لیست رد شده را نگه می دارد. لیست انکار را با استفاده از:

 sudo gedit /etc/hosts.denyociation19659044ولوژ19459051 واژه های اسکو gedit /etc/hosts.deny را در یک پنجره ترمینال ویرایش کنید " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> 

با این کار باز خواهد شد ویرایشگر با پرونده انکار بارگذاری شده در آن.

 پرونده hosts.deny بارگذاری شده در gedit

شما باید خط اضافه کنید:

 ALL: ALL 

و پرونده را ذخیره کنید. . همه دسترسی هایی که مجاز نیستند را مسدود می کند. اکنون باید ارتباطاتی را که می خواهید بپذیرید مجوز دهیم. برای انجام این کار ، شما باید پرونده اجازه را ویرایش کنید:

 sudo gedit /etc/hosts.allowولو19659044 قراردادن19459055 უფლებებიsudo gedit /etc/hosts.allow در یک پنجره ترمینال " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> 

این باز خواهد شد ویرایشگر gedit با اجازه پرونده بارگذاری شده در آن.

 پرونده hosts.allow بارگیری شده در gedit با ویرایش های برجسته

ما به نام Daemon SSH اضافه کردیم ، SSHD ، و آدرس IP رایانه ای که ما می خواهیم به آنها امکان برقراری ارتباط را بدهیم. پرونده را ذخیره کنید ، و اجازه دهید ببینیم محدودیت ها و مجوزها در دسترس هستند.

ابتدا سعی خواهیم کرد از رایانه ای که در پرونده [hostesallall] موجود نیست ، وصل کنیم: :

 اتصال SSH توسط بستن TCP

قطع شد. اکنون ما سعی خواهیم کرد از طریق IP آدرس 192.168.4.23:fare19659006 طرفداری19459061 برقSSH که از طریق بسته های TCP بسته می شود از دستگاه متصل شویم. " width="646" height="77" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>

اتصال ما پذیرفته شده است.

مثال ما در اینجا کمی وحشیانه است. فقط یک کامپیوتر واحد می تواند وصل شود. بندهای TCP کاملاً متنوع و انعطاف پذیرتر از این هستند. این برنامه از نام های میزبان ، کارتهای عادی و ماسک های زیر شبکه پشتیبانی می کند تا اتصالات مربوط به آدرس های IP را بپذیرد.

رد درخواست های اتصال بدون رمز ورود

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

تنظیمات پیش فرض برای SSH درخواست های اتصال را بدون رمز عبور می پذیرد. ما می توانیم آن را به راحتی تغییر دهیم و اطمینان حاصل کنیم که همه اتصالات تأیید شده اند.

ما باید پرونده پیکربندی SSH را ویرایش کنیم:

 sudo gedit / etc / ssh / sshd_config 

 پرونده پیکربندی SSH لود شده در gedit با ویرایشهای highlgihted

از طریق پرونده بروید تا خطی که با "#PermitEmptyPasswords no" می خوانید را مشاهده کنید. hash # را از ابتدای خط خارج کرده و پرونده را ذخیره کنید. راه انداز SSH را مجدداً راه اندازی کنید:

 sudo systemctl restart sshd 

از کلیدهای SSH به جای گذرواژه استفاده کنید

کلیدهای SSH وسیله ایمنی برای ورود به سرور SSH را فراهم می کنند. گذرواژه‌ها را می توان حدس زد ، کرک کرد یا اجباری بی رحمانه. کلیدهای SSH برای چنین نوع حمله باز نیست.

وقتی کلید SSH تولید می کنید ، یک جفت کلید ایجاد می کنید. یکی کلید عمومی و دیگری کلید خصوصی است. کلید عمومی روی سرورهایی که می خواهید به آنها متصل شوید نصب شده است. کلید خصوصی ، همانطور که از نام آن پیداست ، روی رایانه شخصی شما ایمن نگه داشته می شود.

کلیدهای SSH به شما امکان می دهند اتصالات خود را بدون پسوردی برقرار کنید که به طور پیش فرض از امنیت بیشتری برخوردار باشد ، از اتصالی که از تأیید اعتبار استفاده می کند.

درخواست اتصال دهید ، رایانه از راه دور از نسخه اصلی کلید عمومی خود برای ایجاد یک پیام رمزگذاری شده که به رایانه شما ارسال می شود ، استفاده می کند. از آنجا که با کلید عمومی شما رمزگذاری شده است ، کامپیوتر شما می تواند آن را با کلید خصوصی شما رمزگذاری نکند.

رایانه شما سپس اطلاعاتی را از این پیام استخراج می کند ، خصوصاً شناسه جلسه ، آن را رمزگذاری می کند و آن را به سرور ارسال می کند. اگر سرور بتواند آن را با کپی کردن کلید عمومی شما رمزگشایی کند ، و اگر اطلاعات داخل پیام مطابق با سرور ارسال شده برای شما باشد ، تأیید می شود که اتصال شما از طرف شما انجام می شود.

در اینجا ، اتصال برقرار می شود. سرور در 192.168.4.11 ، توسط کاربر با کلیدهای SSH. توجه داشته باشید که از آنها رمز عبور خواسته نشده است.

 ssh [email protected] 

 درخواست SSH توسط کلید SSH در یک پنجره ترمینال تأیید می شود

کلیدهای SSH مقاله را به خود اختصاص می دهند . به راحتی ، ما یکی را برای شما داریم. در اینجا چگونگی ایجاد و نصب کلیدهای SSH آورده شده است.

مرتبط: نحوه ساخت و نصب کلیدهای SSH از شل لینوکس

تأیید اعتبار کلمه عبور غیرفعال شده

البته ، پسوند منطقی استفاده از کلیدهای SSH این است که اگر همه کاربران از راه دور مجبور شوند آنها را تصدیق کنند ، می توانید تأیید رمز عبور را کاملاً خاموش کنید.

ما باید پرونده پیکربندی SSH خود را ویرایش کنیم:

 sudo gedit / etc / ssh / sshd_config 

 ویرایشگر gedit با پرونده پیکربندی ssh بارگذاری شد ، و ویرایش های برجسته شده

از طریق پرونده بروید تا زمانی که خطی را مشاهده کنید که با "#PasswordAuthentication بله." شروع شود. هش را حذف کنید # از آغاز خط ، "بله" را به "نه" تغییر دهید و پرونده را ذخیره کنید. راه انداز SSH را مجدداً راه اندازی کنید:

 sudo systemctl restart sshd 

غیرفعال کردن X11 Forwarding

حمل و نقل X11 به کاربران از راه دور امکان می دهد تا در یک جلسه SSH برنامه های گرافیکی را از سرور خود اجرا کنند. به دست یک بازیگر تهدید یا کاربر مخرب ، رابط کاربری گرافیکی می تواند اهداف بدخیم آنها را آسان تر کند.

یک مانتر استاندارد در امنیت سایبر این است که اگر دلیل خاموشی ندارید که آن را روشن کنید ، آن را خاموش کنید. ما این کار را با ویرایش پرونده پیکربندی SSH خود انجام می دهیم:

 sudo gedit / etc / ssh / sshd_config 

 ویرایشگر gedit با پرونده پیکربندی ssh بارگذاری شده ، و ویرایش های برجسته

پرونده را تا زمانی که خطی با "# X11Fwardwarding no" شروع شود را مشاهده کنید. هش # را از ابتدای خط خارج کرده و پرونده را ذخیره کنید. راه انداز SSH را مجدداً راه اندازی کنید:

 sudo systemctl restart sshd 

مقدار غیر فعال کردن مدت زمان کار را تنظیم کنید

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

تعیین حد مجاز زمان بسیار امن تر است. اگر دوره غیرفعال با محدودیت زمانی مطابقت داشته باشد ، اتصال SSH کاهش می یابد. یک بار دیگر ، پرونده پیکربندی SSH شما را ویرایش می کنیم:

 sudo gedit / etc / ssh / sshd_config 

 ویرایشگر gedit با پرونده پیکربندی SSH بارگذاری شده و ویرایش های برجسته شده

از طریق پرونده بروید تا زمانی که خطی را که با "#ClientAliveInterval 0" شروع می شود مشاهده کنید تا هش # را از آغاز خط خارج کنید ، رقم 0 را به مقدار دلخواه خود تغییر دهید. ما 300 ثانیه استفاده کرده ایم ، که 5 دقیقه است. فایل را ذخیره کنید ، و دکمه SSH را مجدداً راه اندازی کنید:

 sudo systemctl restart sshd 

محدودیتی را برای تلاشهای رمز عبور تنظیم کنید

تعیین محدودیت در تعداد تلاش های تأیید اعتبار می تواند به خنثی کردن رمزعبور و حملات بی رحمانه کمک کند. پس از تعیین تعداد درخواست تأیید اعتبار ، کاربر از سرور SSH جدا می شود. به طور پیش فرض ، هیچ محدودیتی وجود ندارد.

باز هم ، ما باید فایل پیکربندی SSH را ویرایش کنید:

 sudo gedit / etc / ssh / sshd_config 

 ویرایشگر gedit با پرونده پیکربندی ssh بارگذاری شده ، و ویرایش های برجسته

پرونده را مرور کنید تا خطی را که با "#MaxAuthTries 0" شروع می شود مشاهده کنید. hash # را از ابتدای خط خارج کنید ، رقم 0 را به مقدار دلخواه خود تغییر دهید. ما در اینجا 3 مورد استفاده کرده ایم هنگام انجام تغییرات ، پرونده را ذخیره کنید و دکمه SSH را مجدداً راه اندازی کنید:

sudo systemctl restart sshd

ما می توانیم این کار را با تلاش برای اتصال و وارد کردن عمداً رمزعبور نادرست آزمایش کنیم.

 ] کاربر پس از دو نتیجه ضعف تأیید هویت در یک پنجره ترمینال قطع شده است

توجه داشته باشید که به نظر می رسد شماره MaxAuthTries یک بیشتر از تعدادی از تلاش های کاربر مجاز است. پس از دو تلاش بد ، کاربر آزمون ما از هم جدا شده است. این با MaxAuthTries تنظیم شده است:

غیرفعال کردن Root Log Ins

ورود به سیستم به عنوان ریشه در رایانه لینوکس این کار بد است. شما باید به عنوان یک کاربر عادی وارد شوید و از sudo برای انجام کارهایی که نیاز به امتیازات اصلی دارند استفاده کنید. حتی بیشتر از این ، نباید اجازه دهید root به سرور SSH خود وارد شود. فقط کاربران معمولی مجاز به اتصال هستند. اگر آنها نیاز به انجام یک کار اداری دارند ، باید از sudo نیز استفاده کنند. اگر مجبور به ورود به یک کاربر root هستید ، حداقل می توانید آنها را مجبور به استفاده از کلیدهای SSH کنید.

برای آخرین بار ، ما می خواهیم پرونده پیکربندی SSH خود را ویرایش کنیم:

 sudo gedit / etc / ssh / sshd_config 

 ویرایشگر gedit با پرونده پیکربندی ssh بارگذاری شده است ، و ویرایش ها برجسته شده است

به پرونده بروید تا وقتی خط را شروع می کنید با "#PermitRootLogin qedexe-password" هش # را از ابتدای خط حذف کنید.

  • اگر می خواهید از ورود به سیستم ریشه به هیچ وجه جلوگیری کنید ، "پسورد ممنوع" را با "نه" جایگزین کنید.
  • اگر می خواهید. برای اجازه دادن به ورود به سیستم root ، اما آنها را مجبور به استفاده از کلیدهای SSH می کنیم ، "qedex-password" را در جای خود بگذارید.

تغییرات خود را ذخیره کنید و Daemon SSH را مجدداً راه اندازی کنید:

  sudo systemctl restart sshd  [19659087] The Ultimate Step 

البته ، اگر شما به هیچ وجه به SSH احتیاج ندارید که روی رایانه شما اجرا شود ، مطمئن شوید که آن غیرفعال است.

 sudo systemctl Stop sshd 
 sudo systemctl disd sshd 

اگر پنجره را باز نمی کنی ، هیچ کس نمی تواند داخل شود.

</p>
<pre>بهترین راهها برای ایمن سازی سرور SSH<br />