- starsec starsec
- 0 نظر
- 9357 بازدید
SSH مخفف Secure Shell است. یک پروتکل رمزنگاری شبکه که برای برقراری ارتباط امن در یک شبکه ناامن استفاده می شود.در این مقاله قصد داریم در مورد روش های امن سازی اتصال ssh به عنوان یکی از متداول ترین روش های اتصال از راه دور استفاده کنیم
SSH یک راه امن برای دسترسی و مدیریت دستگاه ها از راه دور، معمولاً با استفاده از یک رابط خط فرمان ارائه می کند. این ارتباط بین یک کلاینت و یک سرور را رمزگذاری می کند و از استراق سمع، ربودن اتصال و سایر حملاتی که می تواند داده ها را در حین انتقال به خطر بیندازد، جلوگیری می کند. SSH به طور گسترده برای مدیریت از راه دور، انتقال فایل و سایر خدمات شبکه ایمن استفاده می شود.
SSH به طور گسترده برای دسترسی ایمن به سرورهای لینوکس استفاده می شود. اکثر کاربران از اتصالات SSH با تنظیمات پیش فرض برای اتصال به سرور راه دور استفاده می کنند. با این حال، پیکربندی های پیش فرض ناامن نیز خطرات امنیتی مختلفی را به همراه دارند.
- غیرفعال سازی لاگین با کاربر root:
حساب root با دسترسی SSH با سیاست های امنتی در تناقض است . و به خصوص اگر از یک آدرس IP عمومی استفاده می کنید، هک رمز عبور کاربر root بسیار آسان تر است.برای غیرفعال سازی این مورد،ابتدا دسترسی SSH کاربر root را غیرفعال کنید و یک کاربربا دسترسی root و نام متفاوت ایجاد کنید . خاموش کردن دسترسی به سرور برای کاربر ریشه یک استراتژی دفاعی است که مانع از دستیابی مهاجمان به هدف خود یعنی نفوذ به سیستم می شود. به عنوان مثال، میتوانید کاربری با نام miniadmin به صورت زیر ایجاد کنید:
useradd -m miniadmin
passwd miniadmin
usermod -aG sudo exampleroot
– useradd:یک کاربر جدید ایجاد می کند و پارامتر -m پوشه ای را در زیرپوشه home برای کاربر مورد نظر ایجاد میکند.
– passwd: برای اختصاص رمز عبور به کاربر جدید است. به یاد داشته باشید که پسوردهایی که به کاربران اختصاص می دهید باید پیچیده و حدس زدن آنها دشوار باشد.
– usermod -aG sudo: کاربر تازه ایجاد شده را به گروه مدیریت اضافه می کند.
پس از فرآیند ایجاد کاربر، لازم است تغییراتی در فایل sshd_configایجاد کنید. می توانید این فایل را در /etc/ssh/sshd_configپیدا کنید. فایل را با هر ویرایشگر متنی باز کنید و تغییرات زیر را انجام دهید:
PermitRootLogin no
AllowUsers miniadmin
PermitRootLogin – :از دسترسی کاربرroot با استفاده از SSH از راه دور جلوگیری می کند.
– گنجاندن miniadmin در لیست AllowUsersمجوزهای لازم را به کاربر می دهد.
در نهایت سرویس SSH را با استفاده از دستور زیر راه اندازی مجدد کنید:
sudo systemctl restart ssh
اگر این کار انجام نشد و پیغام خطا دریافت کردید، دستور زیر را امتحان کنید. این ممکن است بر اساس توزیع لینوکس که استفاده می کنید متفاوت باشد.
sudo systemctl restart sshd
- تغییر پورت پیش فرض SSh
پورت پیش فرض اتصال SSH 22 است. البته همه مهاجمان این را می دانند و بنابراین برای اطمینان از امنیت SSH لازم است شماره پورت پیش فرض را تغییر دهید. اگرچه یک مهاجم به راحتی می تواندشماره پورت جدید را با اسکن nmap پیدا کند، هدف در اینجا دشوارتر کردن کار مهاجم است
برای تغییر شماره پورت، /etc/ssh/sshd_configرا باز کنید و تغییرات زیر را در فایل اعمال کنید:
Port 5922
بعد از این مرحله، سرویس SSH را دوباره با sudo systemctl راه اندازی مجدد ssh راه اندازی مجدد کنید. اکنون می توانید با استفاده از پورتی که به تازگی تعریف کرده اید به سرور خود دسترسی داشته باشید
اگر از فایروال استفاده می کنید، باید قوانین لازم را در آنجا نیز اعمال کنید. با اجرای دستور netstat -tlpn، می توانید ببینید که شماره پورت شما برای SSH تغییر کرده است.
- انسداد دسترسی کاربران با رمز عبور خالی
ممکن است کاربرانی بدون گذرواژه در سیستم شما وجود داشته باشند که ممکن است به طور تصادفی ایجاد کرده باشید. برای جلوگیری از دسترسی چنین کاربرانی به سرورها، می توانید مقدار خط PermitEmptyPasswordsرا در sshd_configتنظیم کنید.
PermitEmptyPasswords no
- محدود کردن تلاش برای ورود/دسترسی
بهطور پیشفرض، میتوانید با تلاش برای رمز عبور هر تعداد که میخواهید به سرور دسترسی داشته باشید. با این حال، مهاجمان میتوانند از این آسیبپذیری برای اعمال فشار به سرور استفاده کنند.شما می توانید به طور خودکار اتصال SSHرا پس از تعداد مشخصی از تلاش ها با تعیین تعداد تلاش های مجاز رمز عبور خاتمه دهید.
برای این کار، مقدار MaxAuthTriesرا در sshd_configفایل برابر با تعداد دفعات تلاش تنظیم کنید.
MaxAuthTries 3
- استفاده از SSH نسخه 2
نسخه دوم SSH به دلیل آسیب پذیری های فراوان در نسخه اول منتشر شد. بهطور پیشفرض، میتوانید با افزودن پارامتر پروتکل به sshd_config خود، سرور را برای استفاده از نسخه دوم فعال کنید. به این ترتیب، تمام اتصالات آینده شما از نسخه دوم SSH استفاده خواهند کرد.
Protocol 2
- غیرفعال سازی tcp port forwarding و x11 forwarding
مهاجمان می توانند سعی کنند با ارسال پورت از طریق اتصالات SSH به سیستم های دیگر شما دسترسی پیدا کنند. برای جلوگیری از این امر، میتوانید ویژگیهای AllowTcpForwarding و X11Forwarding را خاموش کنید.در فایل sshd_config تغییرات زیر را اعمال کنید
X11Forwarding no
AllowTcpForwarding no
- اتصال با کلید SSH
یکی از امن ترین راه ها برای اتصال به سرور خود استفاده از کلید SSH است. هنگامی که از کلید SSH استفاده می کنید، می توانید بدون رمز عبور به سرور دسترسی داشته باشید. علاوه بر این، می توانید با تغییر پارامترهای مربوط به رمز عبور در فایل sshd_config، دسترسی رمز عبور به سرور را به طور کامل خاموش کنید.
وقتی یک کلید SSH ایجاد می کنید، دو کلید وجود دارد: عمومی و خصوصی. کلید عمومی در سروری که میخواهید به آن متصل شوید آپلود میشود و کلید خصوصی در رایانهای که با استفاده از آن اتصال را برقرار میکنید، ذخیره میشود.
یک کلید SSH با دستور ssh-keygen در رایانه خود ایجاد کنید. قسمت گذرواژه را خالی نگذارید و رمز عبوری را که در اینجا وارد کرده اید به خاطر بسپارید.اگر آن را خالی بگذارید، فقط با فایل کلید SSH می توانید به آن دسترسی داشته باشید. با این حال، اگر رمز عبور تعیین کنید، می توانید از دسترسی مهاجمی که فایل کلیدی دارد جلوگیری کنید.به عنوان مثال، می توانید یک کلید SSH با دستور زیر ایجاد کنید:
ssh-keygen
- محدودیت IP برای اتصالات SSH
بیشتر اوقات، فایروال دسترسی را با استفاده از چارچوب های استاندارد خود مسدود می کند و هدف آن محافظت از سرور است. با این حال، این همیشه کافی نیست و باید این پتانسیل امنیتی را افزایش دهید.برای انجام این کار، فایل /etc/hosts.allow را باز کنید. با اضافاتی که به این فایل میکنید، میتوانید مجوز SSH را محدود کنید، یک بلوک IP خاص را مجاز کنید، یا یک IP واحد وارد کنید و همه آدرسهای IP باقیمانده را با دستور deny مسدود کنید.
در زیر یک نمونه از تنظیمات را مشاهده میکنید. پس از انجام این کارها، سرویس SSH را مانند همیشه راه اندازی مجدد کنید تا تغییرات ذخیره شوند.
sshd : 192.168.1.0/24 : ALLOW
- محدودیت اجازه دسترسی به کاربران و گروه ها
میتوانید فایل پیکربندی sshd را به گونهای پیکربندی کنید که به طور انتخابی به کاربران و گروهها اجازه ورود به سرور شما را بدهد. به طور پیش فرض، همه کاربران و گروه ها اجازه دسترسی دارند. وقتی سرور تولیدی را مدیریت میکنید که به جز سرورهایی که مجوز مناسب دارند، نباید به آن دسترسی داشته باشد، این یک خطر امنیتی است.در اینجا خطوطی هستند که باید اضافه کنید تا دسترسی SSH به کاربران و گروهها مجاز/غیر مجاز باشد:
AllowUsers: username sshuser@ip:port
AllowGroups: groupname
DenyUsers: username1 username2 sshuser@ip:port
DenyGroups: groupname
- تنظیم بازه زمانی Idle Timeout
اگر یک کاربر مورد اعتماد دسکتاپ خود را بدون مراقبت رها کند و در سرور شما وارد شده باشد، حمله کننده که به رایانه او دسترسی دارد می تواند از آن استفاده کرده و اقدامات مخربی را روی سرور شما انجام دهد.
ساده ترین راه برای مقابله با این، تنظیم یک بازه زمانی بیکار است. پس از یک دوره تعریف شده عدم فعالیت، سرور اتصال SSH به کاربر را قطع می کند تا از دسترسی ناخواسته در غیاب یا عدم فعالیت کاربر مورد اعتماد جلوگیری کند.در اینجا خطوطی هستند که باید به پیکربندی sshd خود اضافه کنید تا این تنظیمات را فعال کنید:
ClientAliveInterval 120
طبق دستور صادر شده در فایل کانفیگ، پس از 120 ثانیه عدم فعالیت، اتصال قطع خواهد شد. می توانید عدد مربوط به timeout را مطابق با سلیقه خود تغییر دهید.
- ساخت بنر هشدار
در حالی که این یک اقدام امنیتی فعال نیست، افزودن یک بنر هشدار میتواند یک تاکتیک روانشناختی مفید برای دفع مهمانهای ناخواسته و فرستادن دشمن در هنگام تلاش برای اتصال به سرور شما با نیت مخرب باشد.برای افزودن یک بنر هشدار سفارشی، ابتدا متن بنر را با دقت آماده کنید یا یکی از بنرهای عمومی را از اینترنت بگیرید و در یک فایل متنی ذخیره کنید. سپس این خط را به فایل کانفیگ خود اضافه کنید:
Banner /path/to/banner/banner.txt
- فعال سازی الگوریتم های MAC
MAC در زمینه SSH مخفف Message Authentication Code است. MAC یک الگوریتم رمزنگاری است که برای تأیید و تأیید انتقال داده بین مشتری و سرور استفاده می شود.مهم است که الگوریتمهای MAC قوی تنظیم کنید تا از یکپارچگی و محرمانه بودن دادههای خود اطمینان حاصل کنید که دو رکن کلیدی هستند. از امنیت سایبری این خطی است که باید به پیکربندی خود اضافه کنید:
MACs hmac-sha1,hmac-sha2-256,hmac-sha2-51
- تنظیم log level برای نظارت بر فعالیت های ssh
شما می توانید فعالیت SSH را در سطوح مختلف پرحرفی نظارت کنید. به طور پیش فرض، این ویژگی ممکن است خاموش باشد. توصیه میشود این ویژگی را روشن کنید و آن را روی سطح گزارش اولیه تنظیم کنید—INFO که فقط خطاها، پیامها، احراز هویت کلید، ورود به سیستم و فعالیت خروج کاربران.مطمئناً می توانید آن را به سطح پرمخاطب تری مانند VERBOSE یا DEBUG تغییر دهید اگر ترجیح می دهید . این خطی است که باید به فایل پیکربندی sshd خود اضافه کنید:
LogLevel INFO
اکنون، سرور SSH شما در یکی از مسیرهای زیر لاگ تولید میکند
/var/log/auth.log*/var/log/secure
میتوانید کل فایل لاگ را مشاهده کرده ویا از دستور grep برای فیلتر کردن محتویات استفاده کنید.
اهمیت امنیت سرور لینوکس
مسائل مربوط به امنیت داده ها و داده ها کاملاً دقیق است و باید توسط همه مدیران سرور در نظر گرفته شود. امنیت سرور یک موضوع بسیار حساس است زیرا تمرکز اصلی حملات سرورهای وب هستند و تقریباً تمام اطلاعات مربوط به یک سیستم را در خود دارند.
از آنجایی که اکثر سرورها بر روی زیرساخت لینوکس کار می کنند، آشنایی با سیستم لینوکس و مدیریت سرور بسیار مهم است.
امنیت SSH تنها یکی از راه های محافظت از سرورها است. ممکن است با توقف، مسدود کردن یا کند کردن حمله، آسیبی که وارد میکنید به حداقل برسد. جدا از تامین امنیت SSH، روش های مختلفی وجود دارد که می توانید برای ایمن سازی سرورهای لینوکس خود پیاده سازی کنید.
برای در یافت مشاوره در مورد ایمن سازی و hardening سیستمهای عامل، به قسمت خدمات امنیت شبکه (مشاوره امنیت) و یا مقاومسازی (امن سازی) (Hardening) مراجعه و یا از طریق این لینک با کارشناسان ما ارتباط بگیرید