آموزش محدود کردن دسترسی SSH در لینوکس

زمان مطالعه: 4 دقیقه

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

محدود کردن دسترسی SSH
محدود کردن دسترسی SSH

چرا باید دسترسی SSH را محدود کنیم؟

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

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

در چنین شرایطی بهتر است دسترسی SSH فقط برای حساب‌هایی که واقعاً به آن نیاز دارند فعال باشد. این کار علاوه بر کاهش دسترسی‌های غیرضروری، مدیریت کاربران سرور را نیز ساده‌تر می‌کند.

روش‌های محدود کردن دسترسی SSH

فایل اصلی تنظیمات سرویس SSH معمولاً در مسیر زیر قرار دارد:

				
					/etc/ssh/sshd_config
				
			

در این فایل می‌توانید قوانین مختلفی برای نحوه دسترسی کاربران به SSH تعریف کنید.

چهار گزینه مهم برای کنترل کاربران عبارت‌اند از:

  • AllowUsers اجازه اتصال SSH فقط به کاربران مشخص
  • AllowGroups اجازه اتصال SSH فقط به اعضای گروه‌های مشخص
  • DenyUsers جلوگیری از اتصال SSH کاربران مشخص
  • DenyGroups جلوگیری از اتصال SSH اعضای گروه‌های مشخص

در ادامه هرکدام را بررسی می‌کنیم.

محدود کردن SSH برای کاربران مشخص با AllowUsers

اگر می‌خواهید فقط چند کاربر مشخص اجازه ورود از طریق SSH داشته باشند، AllowUsers یکی از ساده‌ترین روش‌هاست.

ابتدا فایل تنظیمات SSH را باز کنید:

				
					sudo nano /etc/ssh/sshd_config
				
			

در این فایل خط زیر را اضافه کنید:

				
					AllowUsers user1 user2
				
			

در این مثال فقط کاربران user1 و user2 اجازه ورود از طریق SSH خواهند داشت.

اگر بخواهید فقط یک کاربر اجازه دسترسی داشته باشد، می‌توانید بنویسید:

				
					AllowUsers user1
				
			

پس از ذخیره فایل، قبل از اعمال تنظیمات بهتر است صحت پیکربندی را بررسی کنید.

محدود کردن SSH برای گروه‌های مشخص با AllowGroups

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

برای مثال، ابتدا یک گروه ایجاد کنید:

				
					sudo groupadd sshusers
				
			

این دستور گروهی با نام sshusers ایجاد می‌کند.

حالا می‌توانید یک کاربر را به این گروه اضافه کنید:

				
					sudo usermod -aG sshusers username
				
			

در این دستور، username را با نام کاربری موردنظر جایگزین کنید.

سپس در فایل تنظیمات SSH این خط را اضافه کنید:

				
					AllowGroups sshusers
				
			

با این تنظیم، فقط اعضای گروه sshusers اجازه اتصال از طریق SSH را خواهند داشت.

این روش زمانی کاربرد بیشتری دارد که بخواهید دسترسی SSH را بر اساس نقش یا گروه کاربران مدیریت کنید.

جلوگیری از ورود کاربران مشخص با DenyUsers

گاهی ممکن است بخواهید بیشتر کاربران سیستم بتوانند از SSH استفاده کنند، اما دسترسی یک یا چند کاربر خاص را مسدود کنید.

برای این کار می‌توانید از DenyUsers استفاده کنید:

				
					DenyUsers username
				
			

برای چند کاربر نیز می‌توانید نام آن‌ها را در یک خط قرار دهید:

				
					DenyUsers user1 user2 user3
				
			

در این حالت کاربران مشخص‌شده اجازه ورود از طریق SSH را نخواهند داشت.

با این حال، اگر هدف شما این است که فقط تعداد محدودی کاربر به SSH دسترسی داشته باشند، معمولاً استفاده از AllowUsers یا AllowGroups انتخاب مستقیم‌تری برای تعریف کاربران مجاز است.

محدود کردن دسترسی SSH بر اساس آدرس IP

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

در sshd_config می‌توان از الگوی زیر استفاده کرد:

				
					AllowUsers username@192.168.1.10
				
			

در این مثال، کاربر username فقط در صورتی می‌تواند از طریق SSH متصل شود که اتصال از IP مشخص‌شده انجام شود.

برای چند IP نیز می‌توان قوانین متناسبی تعریف کرد. برای مثال:

				
					AllowUsers username@192.168.1.10 username@192.168.1.20
				
			

البته اگر IP کاربر ثابت نباشد، این روش می‌تواند باعث شود در زمان تغییر IP، دسترسی SSH قطع شود.

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

محدود کردن ورود مستقیم کاربر Root

یکی از تنظیمات مهم SSH مربوط به ورود مستقیم کاربر root است.

اگر مدیریت سرور را با یک کاربر معمولی دارای دسترسی sudo انجام می‌دهید، می‌توانید ورود مستقیم Root از طریق SSH را غیرفعال کنید.

در فایل:

				
					/etc/ssh/sshd_config
				
			

گزینه زیر را پیدا کنید:

				
					PermitRootLogin no
				
			

اگر این گزینه وجود ندارد، می‌توانید آن را اضافه کنید.

با این تنظیم، ورود مستقیم کاربر root از طریق SSH غیرفعال می‌شود و کاربران باید با حساب کاربری مجاز خود وارد سرور شوند.

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

نحوه اعمال و بررسی تنظیمات SSH

پس از تغییر فایل sshd_config نباید بلافاصله اتصال فعلی SSH را ببندید.

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

بررسی صحت تنظیمات SSH

قبل از راه‌اندازی مجدد سرویس، ابتدا پیکربندی را بررسی کنید:

				
					sudo sshd -t
				
			

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

اگر خطایی نمایش داده شد، ابتدا همان خطا را در sshd_config اصلاح کنید و سپس دوباره دستور بالا را اجرا کنید.

راه‌اندازی مجدد سرویس SSH

پس از اینکه از صحت تنظیمات مطمئن شدید، می‌توانید سرویس SSH را راه‌اندازی مجدد کنید:

				
					sudo systemctl restart ssh
				
			

در برخی توزیع‌های لینوکس ممکن است نام سرویس sshd باشد:

				
					sudo systemctl restart sshd
				
			

اگر مطمئن نیستید سرویس SSH در سیستم شما با چه نامی اجرا می‌شود، وضعیت سرویس را بررسی کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

هاستvpsسرور اختصاصی