امن کردن دسترسی SSH

بررسی اجمالیپروتکل SSH، تقریباً برای همه توزیع های لینوکسی پروتکل مدیریت از راه دور پیش فرض است. SSH با استفاده از رمزگذاری داده ها، محرمانگی و یکپارچگی را فراهم می کند و رمزهای عبور را دیگر به صورت متنی ساده از طریق شبکه ارسال نمی کند. با این وجود، پیکربندی پیش فرض SSH می تواند سرور را در معرض خطر امنیتی قرار دهد.به همین دلیل چند مرحله ساده برای امن‌تر کردن سرور SSH را در این مطلب مطرح می‌کنیم که می تواند خطر را به طرز چشمگیری کاهش دهد.sshپیش نیازهادر این مطلب فرض بر این است که شما قبلاً سرور RHEL / CentOS را نصب و راه اندازی کرده اید.۱. غیرفعال کردن Root Loginsاستفاده از کاربر root برای ورود به سیستم از طریق SSH توصیه نمی شود. بهترین روش استفاده از کاربر عادی برای ورود به سرور و استفاده از دستور sudo برای انجام وظیفه ای است که به root نیاز دارد. برای غیرفعال کردن ورود کاربر root به سیستم از طریق SSH ، پرونده etc/ssh/sshd_config را به شکل زیر تغییر دهید و سرویس SSH را مجدداً راه اندازی کنید.#vim /etc/ssh/sshd_config PermitRootLogin no #systemctl restart sshd۲. ورود کاربران به سیستم را محدود کنیدبطور پیش فرض، کلیه کاربران معتبر در سیستم قادر به دسترسی به سرور هستند. به دلایل امنیتی، ما باید این دسترسی را فقط برای کاربرانی که نیاز به دسترسی SSH دارند محدود کنیم. پارامتر AllowUsers و به دنبال آن یک لیست جداگانه از نام کاربری ها را به پرونده etc/ssh/sshd_config اضافه کنید. در مثال زیر ، فقط دو کاربر "nix" و "jamshid" وجود دارند که می توانند از طریق SSH به سرور وصل شوند.$sudo vim /etc/ssh/sshd_config AllowUsers nix jamshid $sudo systemctl restart sshd۳. پروتکل 1 را غیرفعال کنیداستفاده از پروتکل 1 SSH از امنیت کمتری برخوردار است. ما باید آن را غیرفعال کنیم و همیشه از پروتکل 2 استفاده کنیم. پرونده etc/ssh/sshd_config را ویرایش کرده و سرویس SSH را به شرح زیر مجدداً راه اندازی کنید.$sudo vim /etc/ssh/sshd_config Protocol 2 $sudo systemctl restart sshd۴. پورت پیش فرض را تغییر دهیدپورت 22 درگاه پیش فرض SSH برای اتصالات ورودی است. یک روش مؤثر تغییر درگاه پیش فرض SSH است، با این کار قسمتی از حملات که توسط روبات ها انجام می‌شود را خنثی می‌کنید.$sudo vim /etc/ssh/sshd_config Port 2223 $sudo systemctl restart sshdاکنون باید SELinux را بررسی کنیم که اجرای دستور زیر، درگاه های sshd که مجاز به گوش دادن هستند را نمایش می‌دهد.$sudo semanage port -l | grep ssh ssh_port_t tcp 22برای اینکه sshd بتواند به درگاه جدید 2223 گوش دهد، باید یک قانون به SELinux اضافه کنیم و سرویس SSH را به شرح زیر محدد راه اندازی کنیم.$sudo semanage port -a -t ssh_port_t -p tcp 2223 $sudo systemctl restart sshd۵. فایروال را پیکرپندی کنیدبرای تقویت امنیت، باید فایروال رو تنظیم نماییم تا دسترسی به پورت تغییر یافته 2223 فقط از طریق آدرسهای IP مجاز محدود شود. پس از تغییرات قوانین فایروال لازم است که فایروال را reload کنید.firewall-cmd --permanent --zone=public --add-rich-rule=' rule family=&quotipv4&quot source address=&quot1.2.3.4/32&quot port protocol=&quottcp&quot port=&quot2223&quot accept'firewall-cmd --reload۶. فاصله زمانی اتصال را محدود کنیداگر دوره اتمام اتصال SSH در سرور تنظیم نشده باشد، یک خطر امنیتی است. در بسیاری موارد، افراد بدون قفل کردن رایانه خود آن را ترک می‌کنند و SSH هنوز به سرور متصل است. بنابراین، این می تواند مشکل ساز شود. پرونده etc/ssh/sshd_config را ویرایش کنید و مدت زمان را بر حسب ثانیه تغییر دهید.$sudo vim /etc/ssh/sshd_config ClientAliveInterval 300 ClientAliveCountMax 0 $sudo systemctl restart sshd۷. حداکثر "عدم تأیید اعتبار" را محدود کنیدمحدود کردن حداکثر عدم تأیید هویت با SSH روش خوبی برای متوقف کردن حملات brute-forcing است. اگر کاربر رمز ورود نادرست را N-1 بار از N بار را به اشتباه وارد کند ، اتصال SSH قطع خواهد شد.$sudo vim /etc/ssh/sshd_config MaxAuthTries 5 $sudo systemctl restart sshd۸. آدرس گوش دادن را محدود کنیدپیکربندی پیش فرض SSH به تمام اینترفیس‌های موجود گوش می دهد. اگر چندین اینترفیس‌ در سرور وجود دارد که با آدرس های مختلف IP پیکربندی شده اند، همیشه بهتر است فقط با استفاده از آدرس IP مدیریت، کاربر را برای ورود به سرور محدود کنید.$sudo vim /etc/ssh/sshd_config ListenAddress 192.168.10.112 $sudo systemctl restart sshd۹. پشتیبانی از فایل های Rhosts را غیرفعال کنیدفایل rhosts کنترل می‌کند که سرور برای دسترسی SSH به سایر سرورها با یک حساب کاربری خاص به آنها اعتماد دارند. اگر سروری به سرور دیگری اعتماد کند، آنگاه به کاربر مشخص شده امکان دسترسی SSH به سرور های قابل اعتماد را بدون نیاز به وارد کردن رمز عبور می دهد.$sudo vim /etc/ssh/sshd_config IgnoreRhosts yes $sudo systemctl restart sshd۱۰. غیرفعال کردن Empty Passwordsدر بعضی موارد ، ممکن است یک حساب کاربری خاص روی سرور رمز عبوری تنظیم نکرده باشد یا دارای رمز خالی باشد. بهتر است همیشه دسترسی این کاربران از طریق SSH به سرور را غیرفعال کنید.$sudo vim /etc/ssh/sshd_config PermitEmptyPasswords no $sudo systemctl restart sshd۱۱. تأیید هویت مبتنی بر میزبان را غیرفعال کنیدتأیید هویت مبتنی بر میزبان به میزبان اجازه می دهد از طرف همه یا برخی از کاربران میزبان خاص تأیید هویت کنند. این حسابها می توانند همه حسابهای یک سیستم یا زیرمجموعه مشخص شده باشند. این نوع احراز هویت می تواند برای مدیریت cluster مفید باشد.$sudo vim /etc/ssh/sshd_config HostbasedAuthentication no $sudo systemctl restart sshd۱۲. فعال کردن Informational Log Levelخوب است که سرور SSH را پیکربندی کنید تا اطلاعات سطح INFO را ثبت کند. از آنجا که SSH یک نقطه ورود به سرور است، توصیه می شود تا حد امکان log سیستم جمع‌آوری شود، بنابراین در هنگام بروز مشکل، اطلاعات جامعی را داریم.$sudo vim /etc/ssh/sshd_config LogLevel INFO $sudo systemctl restart sshd۱۳. کاهش حداکثر تعداد اتصالات همزمانکاهش حداکثر تعداد اتصالات همزمان به Daemon SSH می تواند در مقابل حمله brute-force کمک کننده باشد. تنظیم MaxStartups 4 به سرور ssh می گوید فقط 4 کاربر می توانند همزمان وارد سیستم شوند.$sudo vim /etc/ssh/sshd_config MaxStartups 4 $sudo systemctl restart sshd۱۴. کاهش Grace Timeهنگامی که ما سعی می کنیم از طریق SSH به یک سرور راه دور وصل شویم، پیکربندی پیش فرض برای ورود به ما 2 دقیقه زمان خواهد داد. اگر کاری را انجام ندهیم یا نتوانیم با موفقیت در مدت 2 دقیقه وارد سیستم شویم، SSH قطع خواهد شد. زمان پیش فرض 2 دقیقه برای موفقیت در ورود به سیستم بسیار زیاد است. آن را به 1 دقیقه کاهش دهید.$sudo vim /etc/ssh/sshd_config LoginGraceTime 1m $sudo systemctl restart sshd۱۵.غیرفعال کردن رمزعبور SSHتا زمانی که از رمزهای عبور قوی استفاده می کنید ، لازم نیست که ورود با استفاده از رمز را برای سرور خود غیرفعال کنید. با این حال ، اگر دوست دارید می توانید آن را غیرفعال کنید و از کلید SSH برای ورود به سرور خود استفاده کنید.$sudo vim /etc/ssh/sshd_config PasswordAuthentication no $sudo systemctl restart sshdاگر با کلید های SSH آشنایی ندارید، میتوانید مطلب "احراز هویت مبتنی بر SSH key در لینوکس" را دنبال نمایید.نتیجه گیریدر این مطلب، تکنیک های که برای ایمن سازی سرور SSH لازم بود مطرح شد. این پست تقریباً تمام کارهایی را که اکثر کاربران برای hardening سرور SSH انجام می دهند را شامل می شود. اگر سؤال یا پیشنهادی دارید، مواردی وجود دارد که می‌توان به این مطلب اضافه نمود را می توانید در قسمت نظرات بگذارید.اگر این مطلب را دوست داشتید آن را ❤️ کنید و به دوستان خود معرفی کنید. باعث خوشحالی خواهد بود که نظر و تجربه خود را در قسمت نظرات به اشتراک بگذارید.