ایمن سازی یا OpenSSH

الناز منشاری ۱۹ خرداد ۱۳۹۶ ۰ دیدگاه

 OpenSSH

ایمن سازی یا OpenSSH همانند پروتکل telnet عمل می‌کند و تعدادی عملیات را برای ایمن سازی ارتباط و محیط سیستم عامل بعنوان نصب SSH می‌توان مطرح کرد.

استفاده از نام کاربری و رمز عبور قوی

یکی از مهم ترین مسائلی که به آن باید توجه داشت جلوگیری از لو رفتن نام کاربری و رمز عبور است. به خاطر داشته باشید استفاده از نام کاربری و رمز عبور قوی طبق استانداردها سبب می‌شود امنیت بیشتر و امکان حدس زدن و یا شناختن آن بسیار کاهش یابد. برای ایجاد یک رمز عبور قوی لازم است تا از یک Password generator استفاده کنید و یا اگر خود می‌خواهید آن را انتخاب کنید نکات زیر را در آن رعایت کنید:

  • حداقل تعداد کاراکترها در آن 8 باشد.
  • استفاده از کاراکترهای Upper & Lower case در آن.
  • در آن هم از کاراکتر الفبا و هم از اعداد استفاده شود.
  • از کاراکترهای غیر الفبایی نیز در آن استفاده گردد.

جلوگیری از لاگین شدن root

تنظیمات مربوط به SSH در آدرس /etc/ssh/sshd_config می‌باشد بنابراین برای جلوگیری از ورود root دستورهای زیر را اجرا می‌نمائیم.

# Prevent root logins:

PermitRootLogin no

و سپس restart می‌کنیم:

service sshd restart

اگر نیازمند به دسترسی root داشتید می توانید در ابتدای دستورات مورد نظر خود از پیشوند Su استفاده کنید.

محدود کردن لاگین های کاربران

به یاد داشته باشید تنها به افرادی اجازه ورود به سیستم بدهید که نیاز دارند و از اعطای این حق به همه خودداری کنید.برای مشخص کردن کاربرانی که مجوز login کردن دارند ابتدا باید آن‌ها را تعریف کرد، به تنظیمات SSH در آدرس /etc/ssh/sshd_config بروید و نام کاربری کاربران را اضافه نمائید.

AllowUsers allice bob

غیرفعال کردن پروتکل 1

SSH دارای دو پروتکل می‌باشد که با نام‌های پروتکل ۱ و پروتکل ۲ شناخته می شود. پروتکل ۱ به نسبت دارای امنیت کمتری است و می‌بایست آن را غیرفعال نمائید مگر آن که بدانید مستقیماً به همان نیاز دارید. برای غیر فعال کردن این پروتکل باز به تنظیمات SSH در آدرس /etc/ssh/sshd_config می‌رویم و پروتکل را uncomment می‌کنیم:

# Protocol 2,1

 Protocol 2

 سپس sshd را restartمی‌کنیم.

استفاده از پورت‌های کمتر شناخته

به طور پیش‌فرض ssh برای دریافت کانکشن‌ها از پورت ۲۲ استفاده می‌کند؛اگر هکری بخواهد به سیستم شما نفوذ کند به راحتی می تواند با اسکن کردن پورت 22 به اطلاعات پی ببرد بنابراین لازم است تا پورت آن را از حالت پیش فرض به یکی از پورتهای دیگر تغییر دهیم. بسیاری از افراد پورت 2222 را بعنوان پورت جایگزین و یا 8080 را بعنوان پورت جایگزین برای http قرار می‌دهند. البته انتخاب پورت 2222 خیلی عاقلانه نیست چرا که بدلیل شباهت به پورت 22 هکرها حتماً آن را نیز اسکن می کنند. بهتر است پورتی را انتخاب کنید که کمتر شناخته شده باشد. برای این‌که تنظیمات پورت را تغییر دهید:

# Run ssh on a non-standard port:

Port 2345  #Change me

و سپس ssh را restart کنید. به یاد داشته باشید این تغییرات پورت را در فایروال و روترها نیز تأثیر گذار است و باید تغییراتی در آن‌ها نیز ایجاد کنید. برای مثال در CentOS 7 نیاز است تا تغییرات زیر در فایروال انجام گیرد:

$ firewall-cmd --add-port 2345/tcp

$ firewall-cmd --add-port 2345/tcp --permanent

در سیستم عامل‌های CentOS 6 و بالاتر نیاز است تا selinux ، Labeling را نیز تنظیم کنید.

$ semanage port -a -t ssh_port_t -p tcp 2345 #Change me

برای شناساندن پورت ssh به کلاینت نیز از دستور زیر استفاده می‌کنیم:

ssh -p 2345 myserver

فیلتر کردن SSH در فایروال

اگر شما تنها به یک IP برای دسترسی Remote دارید بهتر است تا دیگر ارتباط‌ها را در فایروال مثلا توسط Iptable‌ها  فیلتر کنید:

iptables -A INPUT -p tcp -s 72.232.194.162 --dport 22 -j ACCEPT

اگر شما نمی‌توانید آدرس IP مبدأ را محدود کنید و می‌بایست که پورت SSH را باز بگذارید، در آن صورت استفاده از Iptable‌ها می‌توانند جلوی حمله‌ی  Brute-force attack  را با مسدود کردن لاگین‌های تکراری از یک IP آدرس بگیرند.

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh --rsource iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT

دستور اولIP‌هایی که ورود و یا سعی بر ورود می‌کنند را رکورد و نگه‌داری می‌کند و دستور دوم چک می‌کند که ‌IP ورودی در۶۰ ثانیه بیش از ۴ باز قصد ورود نداشته باشد، آن‌گاه اجازه دسترسی به آن داده می‌شود.

استفاده از کلیدهای عمومی و خصوصی

استفاده از کلیدهای رمز دار شده برای احراز هویت دو هدف اصلی را تأمین می‌کند، اول این‌که دیگر نیازی به وارد کردن رمز عبورهای سخت و طولانی نیست و ثانیاً بدون وجود کلید خصوصی (private) دیگر نمیتوان احراز هویت کرد و وارد شد در صورتیکه قبلا با داشتن رمز عبور هر کسی می‌توانست به سیستم وارد شود و خطر حمله‌های تشخیص رمز نیز کاهش می‌یابد.

ابتدا یک جفت کلید public/private را در کلاینت خود ایجاد کنید و سپس آن را با سرور به اشتراک بگذارید. توجه داشته باشید هر کلاینتی که نیاز به برقراری ارتباط با سرور داشته باشد نیاز به داشتن این کلید دارد.

ssh-keygen -t rsa

این دستور سبب ایجاد دو فایل مخفی با نام‌هایid_rsa  (کلید خصوصی) و id_rsa.pub (کلید عمومی) در دایرکتوری ~/..ssh می‌سازد.

توجه داشته باشید بهتر است تا این کلید رمز گردد وگرنه کلید به دست هر کسی بیفتد و سیستم شما دسترسی پیدا کند می‌تواند با سرور ارتباط برقرار کند.

پس از آن برای private key حق و مجوز تعریف کنید:

chmod 700 ~/.sshchmod 600 ~/.ssh/id_rsa

پس از آن کلید عمومی را بر روی سرور ذخیره کنید و authorized_key را نصب کنید:

cat id_rsa.pub >> ~/.ssh/authorized_keys

و نهایتاً اگر StrictModes در /etc/ssh/sshd_config بعنوان پیش فرض Y تعریف شده باشد نیاز است تا حقوق دسترسی آن را مشخص نمائید:

chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys

مطمئن شوید قسمت‌های درستی از SELinux تنظیم شده‌اند:

restorecon -Rv ~/.ssh

برای غیرفعال کردن password به طور کامل میتوان از دستور زیر استفاده کرد:

# Disable password authentication forcing use of keys

PasswordAuthentication no

استفاده از پرسش های متداول

برای مثال در ابتدای برای ورود سوال پرسیده می‌شود که: سیستم عامل CentOS از ورژن X و ورژن پیش از آن Y استفاده می‌کند. ورژن X دارای یک نقص است، آن را به روز‌رسانی کنم؟

در پاسخ باید جواب منفی داده شود چرا که طبق صورت سوال ورژن X آخرین نسخه است و بعد از آن ورژن جدیدی نیامده است.

فناوران شبکه سینداد (آهنگ نوآوری)

سینداد یعنی هدیه‌ی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.