محدود کردن دسترسی به سرور لینوکسی از طریق SSH میتواند تاثیر بسزایی در برقراری امنیت سرور شما داشته باشد. شما از طریق فایل تنظیمات SSH قادر هستید که تنها به کاربران خاصی مجوز دسترسی به سرور را بدهید و تامنیت سرور خود را تا حد زیادی بالا ببرید. به عنوان مثال شما برای انجام کارهای مربوط به سرور خود باید حتما دسترسی root داشته باشید. ما توصیه میکنیم دسترسی root روی سرور را از طریق SSH ببندید و به جای آن با یک کاربر معمولی SSH بزنید و سپس در محیط سرور به یوزر root لاگین کنید. این امر گرچه مرحله اتصال شما به سرور را یک مرحله بیشتر میکند اما امنیت را به طور چشمگیری بالا میبرد.
بیشتر بخوانید:
تمامی توضیحاتی که در این مقاله آورده میشود با ویرایش فایل اصلی مربوط به تنظیمات اس اس اچ به شکل زیر انجام میشود:
1 |
[root@arshatech ~]# vim /etc/ssh/sshd_config |
دادن مجوز به کاربران یا گروها
شما میتوانید از طریق فایل کانفیگ ssh به یک کاربر و یا گروهی از کاربران مجوز برقراری ارتباط ssh را بدهید. برای دادن مجوز به یک کاربر کافیست فایل کانفیگ را باز کرده و در انتهای آن عبارت زیر را وارد کنید:
1 |
AllowUsers user1 |
همچنین برای دادن مجوز به چند کاربر میتوانید نام چند کاربر را وارد کنید:
1 |
AllowUsers user1 user2 |
همانطور که میدانید در لینوکس هر کاربر عضو یک گروه است. اگر میخواهید به تمامی کاربرانی که عضو گروه خاصی هستند مجوز دسترسی به ssh را بدهید به صورت زیر عمل کنید:
1 |
AllowGroups group1 |
شما میتوانید به صورت زیر به همه کاربران بیش از یک گروه نیز مجوز لازم را بدهید:
1 |
AllowGroups group1 group2 |
بعد از تغییرات داده شده حتما سرویس sshd را ری استارت کنید:
1 |
[root@arshatech ~]# systemctl restart sshd |
حالا بدلیل اینکه کاربر root فاقد مجوز برای برقراری ارتباط اس اس اچ است و نام آن در لیست آورده نشده است در صورت تلاش حتی اگر رمز عبور را بدرستی وارد کند ناموفق خواهد بود:
1 |
root@arshatech:~# ssh root@1.2.3.4 |
1 2 |
root@1.2.3.4's password: Permission denied, please try again. |
عدم مجوز به برقراری ارتباط SSH به کاربران یا گروه ها
علاوه بر اینکه شما میتوانید به یک کاربر خاصی مجوز برقراری ارتباط اس اس اچ را بدهید میتوانید آن را نیز از کاربر بگیرید تا کاربر مورد نظر نتواند ارتباط ssh برقرار کند.
برای این کار کافیست مجددا فایل کانفیگ مربوط به اس اس اچ را باز کرده و در انتهای آن خط زیر را وارد کنید:
1 |
DenyUsers user1 |
در صورت نیاز به گرفتن مجوز از بیش از یک کاربر نیز کافیست نام سایر کاربران را وارد کنید:
1 |
DenyUsers user1 user2 |
همچنین شما میتوانید مجوز برقراری ارتباط ssh را نیز از کاربران یک گروه خاص بگیرید:
1 |
DenyGroups group1 |
و یا این کار را برای بیش از یک گروه انجام دهید:
1 |
DenyGroups group1 group2 |
سپس در انتها فایل را بسته و سرویس sshd را ری استارت کنید:
1 |
[root@arshatech ~]# systemctl restart sshd |
حالا بدلیل اینکه کاربر user1 فاقد مجوز برای برقراری ارتباط ssh است در صورت تلاش حتی اگر رمز عبور را بدرستی وارد کند ناموفق خواهد بود:
1 |
root@arshatech:~# ssh user1@1.2.3.4 |
1 2 |
arshatech@1.2.3.4's password: Permission denied, please try again. |
نکته جالب این است که شما میتوانید به صورت تلفیقی نیز از این قابلیت استفاده کنید. یعنی بعنوان مثال اگر در بخش AllowGroups نام یک گروه را برای دادن مجوز برقراری ارتباط ssh وارد کنید تمامی کاربران آن گروه قادر به ارتباط خواهند بود. حال کافیست در خط بعد نام کاربری را که در گروه مد نظر شماست در بخش DenyUsers وارد کنید. حال خواهید دید که همه کاربران عضو یک گروه به جز کاربر خاصی که وارد کرده اید قادر به برقراری ارتباط ssh خواهند بود.
گرفتن مجوز دسترسی root
یکی از مسائلی که باید به آن توجه کنید این است که دسترسی کاربر root برای برقراری ارتباط ssh یک ریسک امنیتی خواهد بود. چرا که کاربر root یک کاربر شناخته شده است و روزانه ممکن است هزاران بار توسط هکرها مورد حملات brute force قرار بگیرد. پس بهتر است که این کاربر مجوز برقراری اس اس اچ را نداشته باشد. برای این کار کافیست به مسیر تنظیمات سرویس sshd بروید:
1 |
[root@arshatech ~]# vim /etc/ssh/sshd_config |
و خط زیر را به انتهای آن اضافه کنید:
1 |
PermitRootLogin no |
فراموش نکنید که در انتها حتما باید سرویس sshd را ری استارت کنید:
1 |
[root@arshatech ~]# systemctl restart sshd |