SSH یک پروتکل جهانی است که برای دسترسی به سرورهای راه دور استفاده می شود. در اینجا نحوه تقویت اتصالات SSH خود در لینوکس برای حداکثر امنیت آورده شده است.
SSH به طور گسترده برای دسترسی ایمن به سرورهای لینوکس استفاده می شود. اکثر کاربران از اتصالات SSH با تنظیمات پیش فرض برای اتصال به سرور راه دور استفاده می کنند. با این حال، پیکربندی های پیش فرض ناامن نیز خطرات امنیتی مختلفی را به همراه دارند.
حساب ریشه سرور با دسترسی SSH باز ممکن است در خطر باشد. و به خصوص اگر از یک آدرس IP عمومی استفاده می کنید، هک رمز عبور ریشه بسیار آسان تر است. بنابراین، لازم است در مورد امنیت SSH بدانید.
در اینجا نحوه ایمن سازی اتصالات سرور SSH خود در لینوکس آورده شده است.
1. ورود کاربران ریشه را غیرفعال کنید
برای این کار ابتدا دسترسی SSH کاربر روت را غیرفعال کنید و یک کاربر جدید با امتیازات ریشه ایجاد کنید. غیرفعال کردن دسترسی به سرور برای کاربر ریشه یک استراتژی دفاعی است که مانع از دستیابی مهاجمان به هدف خود یعنی نفوذ به سیستم می شود. به عنوان مثال، می توانید یک کاربری با نام exampleroot به صورت زیر ایجاد کنید:
useradd -m exampleroot
passwd exampleroot
usermod -aG sudo exampleroot
در اینجا توضیح مختصری در مورد دستورات فوق آورده شده است:
- useradd یک کاربر جدید ایجاد می کند و پارامتر -m یک پوشه در زیر فهرست اصلی برای کاربری که ایجاد کرده اید ایجاد می کند.
- دستور passwd برای اختصاص رمز عبور به کاربر جدید است. به یاد داشته باشید که پسوردهایی که به کاربران اختصاص می دهید باید پیچیده و حدس زدن آنها دشوار باشد.
- usermod -aG sudo کاربر تازه ایجاد شده را به گروه مدیریت اضافه می کند.
پس از فرآیند ایجاد کاربر، لازم است تغییراتی در فایل sshd_config ایجاد شود. می توانید این فایل را در /etc/ssh/sshd_config پیدا کنید. فایل را با هر ویرایشگر متنی باز کنید و تغییرات زیر را اعمال کنید:
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
AllowUsers exampleroot
خط PermitRootLogin از دسترسی کاربر ریشه با استفاده از SSH جلوگیری می کند. گنجاندن exampleroot در لیست AllowUsers مجوزهای لازم را به کاربر می دهد.
در نهایت سرویس SSH را با استفاده از دستور زیر راه اندازی مجدد کنید:
sudo systemctl restart ssh
اگر این کار انجام نشد و پیغام خطا دریافت کردید، دستور زیر را امتحان کنید. این ممکن است بر اساس توزیع لینوکس مورد استفاده شما متفاوت باشد.
sudo systemctl restart sshd
2. تغییر درگاه پیش فرض SSH
پورت اتصال پیش فرض SSH 22 است. البته همه مهاجمان این را می دانند و بنابراین برای اطمینان از امنیت SSH لازم است شماره پورت پیش فرض را تغییر دهید. اگرچه مهاجم می تواند به راحتی شماره پورت جدید را با اسکن Nmap پیدا کند، اما هدف در اینجا دشوارتر کردن کار مهاجم است.
برای تغییر شماره پورت، /etc/ssh/sshd_config را باز کنید و تغییرات زیر را در فایل اعمال کنید:
Include /etc/ssh/sshd_config.d/*.conf
Port 5922
بعد از این مرحله سرویس SSH را دوباره با sudo systemctl restart ssh ریستارت کنید. اکنون می توانید با استفاده از پورتی که به تازگی تعریف کرده اید به سرور خود دسترسی داشته باشید.
اگر از فایروال استفاده می کنید، باید قوانین لازم را در آنجا نیز اعمال کنید. با اجرای دستور netstat -tlpn، می توانید ببینید که شماره پورت شما برای SSH تغییر کرده است.
3. دسترسی کاربران با رمزهای عبور خالی را مسدود کنید
ممکن است کاربرانی بدون رمز عبور در سیستم شما وجود داشته باشند که ممکن است به طور تصادفی آنها را ایجاد کرده باشید. برای جلوگیری از دسترسی چنین کاربرانی به سرورها، می توانید مقدار خط PermitEmptyPasswords در فایل sshd_config را روی no تنظیم کنید.
PermitEmptyPasswords no
4. محدود کردن تلاش برای ورود/دسترسی
بهطور پیشفرض، میتوانید با تلاش برای رمز عبور هر تعداد که میخواهید به سرور دسترسی داشته باشید. با این حال، مهاجمان میتوانند از این آسیبپذیری برای اعمال فشار به سرور استفاده کنند.
شما می توانید به طور خودکار اتصال SSH را پس از تعداد مشخصی از تلاش ها با تعیین تعداد تلاش های مجاز رمز عبور قطع کنید.
برای این کار، مقدار MaxAuthTries را در فایل sshd_config تغییر دهید.
MaxAuthTries 3
5. استفاده از SSH نسخه 2
نسخه دوم SSH به دلیل آسیب پذیری های فراوان در نسخه اول منتشر شد. به طور پیش فرض، می توانید با افزودن پارامتر Protocol به فایل sshd_config، سرور را فعال کنید تا از نسخه دوم استفاده کند.
به این ترتیب، تمام اتصالات آینده شما از نسخه دوم SSH استفاده خواهند کرد.
Include /etc/ssh/sshd_config.d/*.conf
Protocol 2
6. TCP Port Forwarding و X11 Forwarding را خاموش کنید
مهاجمان می توانند سعی کنند با ارسال پورت از طریق اتصالات SSH به سیستم های دیگر شما دسترسی پیدا کنند. برای جلوگیری از این امر، می توانید ویژگی های AllowTcpForwarding و X11Forwarding را در فایل sshd_config غیرفعال کنید.
X11Forwarding no
AllowTcpForwarding no
7. اتصال با کلید SSH
یکی از امن ترین راه ها برای اتصال به سرور استفاده از کلید SSH است. هنگامی که از کلید SSH استفاده می کنید، می توانید بدون رمز عبور به سرور دسترسی داشته باشید. علاوه بر این، می توانید با تغییر پارامترهای مربوط به رمز عبور در فایل sshd_config، دسترسی رمز عبور به سرور را به طور کامل خاموش کنید.
هنگامی که یک کلید SSH ایجاد می کنید، دو کلید وجود دارد: عمومی و خصوصی. کلید عمومی در سروری که میخواهید به آن متصل شوید آپلود میشود و کلید خصوصی در رایانه ذخیره میشود که با استفاده از آن اتصال را برقرار خواهید کرد.
یک کلید SSH با دستور ssh-keygen در رایانه خود ایجاد کنید. فیلد Passphrase را خالی نگذارید و رمزی را که در اینجا وارد کرده اید به خاطر بسپارید.
اگر آن را خالی بگذارید، فقط با فایل کلید SSH می توانید به آن دسترسی داشته باشید. با این حال، اگر یک رمز عبور تعیین کنید، میتوانید از دسترسی مهاجمی که فایل کلیدی دارد جلوگیری کنید.
به عنوان مثال، می توانید یک کلید SSH با دستور زیر ایجاد کنید:
ssh-keygen
8. محدودیت IP برای اتصالات SSH
بیشتر اوقات، فایروال دسترسی را با استفاده از چارچوب های استاندارد خود مسدود می کند و هدف آن محافظت از سرور است. با این حال، این همیشه کافی نیست و باید این پتانسیل امنیتی را افزایش دهید.
برای این کار فایل /etc/hosts.allow را باز کنید. با اضافههایی که به این فایل میکنید، میتوانید مجوز SSH را محدود کنید، یک بلوک IP خاص را مجاز کنید، یا یک IP واحد وارد کنید و تمام آدرسهای IP باقیمانده را با دستور deny مسدود کنید.
در زیر تعدادی از تنظیمات نمونه را مشاهده خواهید کرد. پس از انجام این کارها، سرویس SSH را مانند همیشه راه اندازی مجدد کنید تا تغییرات ذخیره شوند.
9. به طور انتخابی اجازه دسترسی به کاربران و گروه ها را بدهید
میتوانید فایل پیکربندی sshd را طوری پیکربندی کنید که به طور انتخابی به کاربران و گروهها اجازه دهد یا گروهها را از SSH-ing وارد سرور شما کند. به طور پیش فرض، همه کاربران و گروه ها اجازه دسترسی دارند. زمانی که سرور تولیدی را مدیریت میکنید که به جز سرورهایی که دارای مجوز مناسب هستند، نباید به آن دسترسی داشته باشد، این یک خطر امنیتی است.
در اینجا خطوطی هستند که باید اضافه کنید تا دسترسی SSH به کاربران و گروهها مجاز/غیر مجاز باشد:
AllowUsers: username sshuser@ip:port
AllowGroups: groupname
DenyUsers: username1 username2 sshuser@ip:port
DenyGroups: groupname
10. بازه زمانی Idle Timeout را تنظیم کنید
اگر یک کاربر مورد اعتماد دسکتاپ خود را بدون مراقبت رها کند و در سرور شما وارد شده باشد، دشمنی که به رایانه او دسترسی دارد می تواند از آن استفاده کرده و اقدامات مخربی را روی سرور شما انجام دهد.
ساده ترین راه برای مقابله با این، تنظیم یک بازه زمانی بیکار است. پس از یک دوره معین عدم فعالیت، سرور اتصال SSH به کاربر را قطع می کند تا از دسترسی ناخواسته در غیاب یا عدم فعالیت کاربر مورد اعتماد جلوگیری کند.
برای روشن کردن این تنظیمات باید خطوطی را به پیکربندی sshd خود اضافه کنید:
ClientAliveInterval 120
طبق دستور صادر شده در فایل کانفیگ، پس از 120 ثانیه عدم فعالیت، اتصال قطع خواهد شد. می توانید شماره را مطابق با سلیقه خود تغییر دهید.
11. یک بنر هشدار اضافه کنید
در حالی که این یک اقدام امنیتی فعال نیست، افزودن یک بنر هشدار میتواند یک تاکتیک روانشناختی مفید برای دفع مهمانهای ناخواسته و فرستادن دشمن در هنگام تلاش برای اتصال به سرور شما با نیت مخرب باشد.
برای افزودن یک بنر هشدار سفارشی، ابتدا متن بنر را با دقت آماده کنید یا یکی از بنرهای عمومی را از اینترنت بگیرید و در یک فایل متنی ذخیره کنید. سپس این خط را به فایل کانفیگ خود اضافه کنید:
Banner /path/to/banner/banner.txt
12. الگوریتم های MAC قوی را اجرا کنید
MAC در زمینه SSH مخفف Message Authentication Code است. MAC یک الگوریتم رمزنگاری است که برای تأیید و تأیید انتقال داده بین مشتری و سرور استفاده می شود.
مهم است که الگوریتمهای MAC قوی برای اطمینان از یکپارچگی و محرمانه بودن دادههای خود، که دو رکن کلیدی امنیت سایبری هستند، تنظیم کنید. این خطی است که باید به پیکربندی خود اضافه کنید:
MACs hmac-sha1,hmac-sha2-256,hmac-sha2-512
13. LogLevel را برای نظارت بر فعالیت SSH تنظیم کنید
شما می توانید فعالیت SSH را در سطوح مختلف پرحرفی نظارت کنید. به طور پیش فرض، این ویژگی ممکن است خاموش باشد. توصیه میشود این ویژگی را روشن کنید و آن را روی سطح ورود به سیستم اولیه تنظیم کنید—INFO که فقط خطاها، پیامها، احراز هویت کلید، ورود به سیستم و فعالیتهای خروج از سیستم کاربران را ثبت میکند.
اگر ترجیح می دهید مطمئناً می توانید آن را به سطح پرمخاطب تری مانند VERBOSE یا DEBUG تغییر دهید. این خطی است که باید به فایل پیکربندی sshd خود اضافه کنید:
LogLevel INFO
اکنون، سرور SSH شما دادههای اصلی گزارش را تولید میکند که میتوانید با پیمایش و خواندن فایل /var/log/auth.log* در ماشینهای مبتنی بر Debian/Ubuntu و فایل /var/log/secure در RHEL/CentOS بخوانید. /فدورا.
میتوانید کل فایل لاگ را مشاهده کرده و با sshd به قسمتها بروید یا از دستور grep برای فیلتر کردن محتویات استفاده کنید و فقط لاگهای sshd را بخوانید.
اهمیت امنیت سرور لینوکس
مسائل مربوط به امنیت داده ها و داده ها کاملاً دقیق است و باید توسط همه مدیران سرور در نظر گرفته شود. امنیت سرور یک موضوع بسیار حساس است زیرا تمرکز اصلی حملات سرورهای وب هستند و تقریباً تمام اطلاعات مربوط به یک سیستم را در خود دارند.
از آنجایی که اکثر سرورها بر روی زیرساخت لینوکس کار می کنند، آشنایی با سیستم لینوکس و مدیریت سرور بسیار مهم است.
امنیت SSH تنها یکی از راه های محافظت از سرورها است. ممکن است با توقف، مسدود کردن یا کند کردن حمله، آسیبی که وارد میکنید به حداقل برسد. جدا از تامین امنیت SSH، روش های مختلفی وجود دارد که می توانید برای ایمن سازی سرورهای لینوکس خود پیاده سازی کنید.