انجمنهای فارسی اوبونتو
کمک و پشتیبانی => شبکه و سرویس دهندهها => نویسنده: esmaeelE در 17 اسفند 1402، 02:32 بظ
-
یک کاربر مخصوص sftp روی سامانه ساخته شده است.
adduser user
تنظیمات زیر برای sshd اعمال شدند.
/etc/ssh/sshd_config
Match User user
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ChrootDirectory /home/user/archive
ForceCommand internal-sftp
کارکرد این کاربر به شکل طبیعی و بدون مشکل انجام میشود و میتوان با کارخواه sftp به آن متصل شد و عملیات خواندن و نوشتن را انجام داد.
برای نمونه
sftp user@IP
پرسش
چطور میتوان تعداد نشستهایی که به طور همزمان با این کاربر فعال هستند را محدود به یک عدد کرد؟
به عبارتی هیچگاه تا پایان اتصال یک نفر و انجام عملیات با این کاربر خاص (user) شخص دیگری نتواند با این نام کاربری به سامانه ورود کند.
در تنظیمات sshd گزینههای MaxSessions و MaxStartups را اعمال کردم و موفقیتی حاصل نشد.
اطلاعات سامانه
# ssh -V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.11, OpenSSL 1.1.1f 31 Mar 2020
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
-
شاید بهتر باشه پایهایتر مساله رو بررسی کنیم. چرا نیاز دارید که بیش از یک نفر نتونه وصل بشه؟ بخصوص که ممکنه بعد از دریافت یا ارسال یک پرونده، نرمافزار شما ارتباط شما رو قطع کنه و با دستور بعدی، دوباره وصل بشه.
-
از زمانی که برای پاسخگویی اختصاص دادید سپاسگزارم.
در روز ۷ مارس حدود ساعت ۱۰ دسترسی به خدمت وب آپاچی روی یک ماشین بسیار کند شده بود.
دسترسی ssh با کندی به این ماشین برقرار شد.
# uptime
10:10:16 up 16 days, 1:13, 8 users, load average: 1375.25, 404.68, 144.44
تا کنون چنین عددی را برای load average ندیده بودم.
htop پرشدن و فعال شدن swap را نشان نمیداد. حافظه هم کمتر از نصف پر بود.
دسترسیهای سایر کاربران را به این ماشین با تغییر رمز ورود متوقف کردم.
لاگهای چند ساعت اخیر را برای بررسی بیشتر ذخیره کردم. تنها چیز مشکوک تعداد نشستها ایجاد شده برای این کاربر(store) بود.
از این کاربر برای کپی کردن یکسری فایل روی سرور استفاده میشود و دسترسی محدودی تنها برای کپی کردن و خواندن از یک آدرس خاص دارد.
شمار نشستهای ایجاد شده برای آن حدود 6200 عدد برای ساعتهای منتهی به ایجاد مشکل است.
در اینجا چند خط نخست را قرار دادم.
# head new_session
Mar 07 08:41:33 server systemd-logind[930]: New session 1027 of user store.
Mar 07 08:41:55 server systemd-logind[930]: New session 1028 of user store.
Mar 07 08:46:10 server systemd-logind[930]: New session 1029 of user store.
Mar 07 08:58:36 server systemd-logind[930]: New session 1030 of user root.
Mar 07 08:59:54 server systemd-logind[930]: New session 1031 of user store.
Mar 07 08:59:55 server systemd-logind[930]: New session 1032 of user store.
Mar 07 08:59:55 server systemd-logind[930]: New session 1033 of user store.
Mar 07 08:59:56 server systemd-logind[930]: New session 1034 of user store.
Mar 07 08:59:56 server systemd-logind[930]: New session 1035 of user store.
Mar 07 08:59:57 server systemd-logind[930]: New session 1036 of user store.
به نظرم رسید که شاید این دو مسئله به هم مرتبط باشند یا اینکه باید به روشی از افزایش شمار نشستهای یک کاربر جلوگیری کرد.
حال دو پرسش
* ارتباطی بین تعداد نشستهای کاربر که با ssh کارمیکند با کندشدن سامانه میتوان متصور بود. و اینکه محدودسازی آن مزیتی دارد یا خیر؟
* به طور کلی در مورد مسئلهٔ کند شدن سرور به این شکل چه نکاتی را باید بررسی کنم تا از تکرار این مورد جلوگیری شود؟
-
تعیین تعداد نشستهای SSH همزمان؛ برای یک یا گروهی از کاربران در یک سیستم.
نکته: روش زیر باعث محدودیت برای همهی ورود-نشستهای چندگانه به ازای هر کاربر/گروهی
در سیستم میشود. یعنی هر برنامه/سرویسی که از نشستهای همزمان پشتیبانی میکند؛ و البته
با فرض اینکه قواعد امنیتی pam برای آن فعال باشد.
اکنون لازم است تا تنظیم درون فایل /etc/security/limits.conf را به صورت اضافه کنید(بسته به نیازتان
هر خط را بیافزایید):
## محدود کردن یک کاربر خاص
@MyUserName hard maxlogins 1
## محدود کردن یک گروه خاص
@MyGroupName hard maxlogins 1
## محدود کردن همه کاربران سیستم
* hard maxlogins 1
همچنین ضروری است تا در فایل /etc/pam.d/sshd این خط فعال باشد:
session required pam_limits.so
-
اگر کاربرد این کاربر تنها انتقال فایل است، پیشنهاد میکنم برای اون کاربر، تنها سرویس SFTP را فعال کنید. احتمالا این مشکل رو حل بکنه.
Match User store
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp