نوشته‌ها

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

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

 

Mosh و Tmux چیست؟

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

Mosh ابزاری است با این قابلیت که SSH را از تغییرات شبکه آگاه کند و Tmux به ترمینال شما اجازه می‌دهد که یک شل را بین لاگین‌های مختلف نگه دارید یا حتی آن را به اشتراک بگذارید.

برای معرفی از Mosh شروع کنیم. Mosh یه پروژه متن باز است که باعث میشود SSH بر روی رومینگ و اتصالات متناوب کار کند. با استفاده از Mosh شما می‌توانید کامپیوتر خود را از یک شبکه سیمی به یک شبکه بی سیم تغییر دهید و اتصال‌تون بر قرار خواهد ماند؛ حتی این امکان وجود داره که لپتاپ‌تون رو در حالی که به شبکه متصل هست در حالت sleep قرار بدید و وقتی که دوباره به شبکه متصل می‌شود، خواهید توانست از ترمینال استفاده کنید. اگر اتصال به شبکه را از دست بدهید Mosh به شما اطلاع خواهد داد. هم‌چنین اگر سرور به آرامی پاسخ می‌دهد، mosh تا زمانی که اتصال بهبود پیدا کند، دستوراتی که تایپ می‌کنید را برای‌تان به نوعی ذخیره میکند.

نصب Mosh تقریبا خیلی ساده است بوده و مدیریت پکیج توزیع های مختلف لینوکس،  Mosh را در خود جای داده اند. هم چنین Mosh بر روی گوگل کروم نیز موجود است.

 

نصب Mosh روی لینوکس

برای مثال، برای نصب روی اوبونتو طبق دستورهای زیر عمل می‌کنیم:

Sudo apt install mosh

البته سرور نیز بایستی Mosh server را نصب داشته باشد. مزیتی که در اینجا داریم این است که برای نصب می‌توان از حالت یوزر نیز استفاده کرد و لزومی برای روت بودن وجود ندارد.

 

استفاده از Mosh

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

mosh username@server

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

نصب و استفاده از Tmux

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

علاوه بر این ما تنها می‌توانیم در یک زمان مشخص فقط یک کار مشخص در ترمینال انجام دهیم و مثلا اگر بخواهید یک editor ران کنید، کل ترمینال شما مشغول خواهد شد.

Tmux راه حلی برای این مشکلات است. تی‌ماکس به عنوان یک مالتیپلکسر ترمینال عمل کرده و به شما اجازه می‌دهد تا در یک پنجره چندین ترمینال اجرا کنید. دقیقا مثل یک تب جدید برای ترمینال ولی بسیار منعطف تر.

به وسیله تی‌ماکس شما میتوانید از یک session لاگ اوت شوید و بعد که بازمی‌گردید دوباره از همان جا شروع به کار کنید. می‌توانید چندین پنجره ترمینال داشته باشید. می‌توانید یک برنامه را در یک پنجره ادیت کنید و در یک پنجره دیگر آن را تست کنید.

نصب Tmux بسیار آسان است. برای مثال برای نصب روی اوبونتو کافی است طبق زیر عمل کنیم:

Sudo apt install tmux

وقتی که تی‌ماکس نصب شد تنها با دستور زیر آن را اجرا می‌کنیم:

tmux

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

برای مثال یکی از ویژگی‌های جالبی که تی ماکس ارائه می‌دهد امکان ترک session و بازگشت دوباره به آن است. برای این کار کافی است کلید ctrl+D را بزنید و برای بازگشت دوباره کافی است از دستور tmux attach استفاده کنید و می‌بینید که دوباره به همان session بازگشته اید.

ویژگی بالا این امکان را می‌دهد که تا زمانی که سرور ما روشن است session نیز همراه آن باشد و از بین نرود.

 

ترکیب Mosh‌ و Tmux

قدرت اصلی در یک session ریموتی وقتی به دست ما میرسد که این دو نرم افزار را با هم ترکیب کنیم.

با استفاده از Mosh از هر نقطه‌ای به سرور وصل خواهیم بود و دیگر نگران این که اتصال تا چه حد پایدار است نیستیم و با استفاده از Tmux، اگر در حال اجرای دستوری هستیم می‌توانیم Session‌ خود را ببندیم و بعدا بدون آن که چیزی از بین رفته باشد به آن بازگردیم.

ترکیب این دو با یکدیگر،‌ به ما بیشترین توان قابل اطمینان بودن و منعطف بودن در یک کانکشن ریموتی را خواهد داد.

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

نصب و پیکربندی این ابزار روی سرورهای لینوکس بسیار آسان است. در ادامه، آموزش نصب و تنظیم آن روی لینوکس اوبونتو ۱۸.۰۴ را خواهید خواند. البته این آموزش برای توزیع های دیگر سرور لینوکس هم کم و بیش همینگونه است.

نصب

برای نصب این ابزار کافی است در ترمینال دستور زیر را وارد کنید:

sudo apt-get install denyhosts -y

پیکربندی

اولین کاری که باید پس از نصب انجام دهید، اضافه کردن آی پی های مجاز است؛ در غیر این صورت ممکن است دسترسی خودتان به سرور را هم بلاک کنید. ابتدا فایل مربوطه را باز کرده، سپس آی پی های مجاز را در انتهای آن اضافه کنید:

sudo nano /etc/hosts.allow
sshd: [IP 1]
sshd: [IP 2]
sshd: [IP 3]

بعد از اضافه کردن آی پی ها، فایل را ذخیره کرده و آن را ببندید. برای تغییر تنظیمات این ابزار فایل زیر را باز کنید:

sudo nano /etc/denyhosts.conf

در این مرحله می‌توانید تنظیمات امنیتی مختلف را تغییر دهید، به عنوان مثال آپشن زیر تعداد لاگین‌های ناموفقی که باعث بلاک شدن کاربر می‌شود را مشخص می‌کند:

DENY_THRESHOLD_INVALID = 5

همچنین می‌توانید با استفاده از آپشن زیر، ایمیلی که می‌خواهید هشدارها به آن ارسال شود را تعیین کنید:

ADMIN_EMAIL =

توجه داشته باشید که این ابزار به صورت پیشفرض از پورت ۲۵ لوکال برای ارسال ایمیل استفاده می‌کند. در صورت نیاز به تغییر، می‌توانید از تنظیمات زیر استفاده کنید:

SMTP_HOST =
SMTP_PORT =
SMTP_FROM =

بعد از انجام تنظیمات مورد نظر، یک بار سرویس denyhosts را ریست و فعال کنید:

sudo systemctl restart denyhosts
sudo systemctl enable denyhosts

بررسی لاگ

ابزار denyhosts به صورت پیشفرض رخدادها را لاگ می‌کند، برای مشاهده لاگ‌های امنتیی به صورت  بلادرنگ، از دستور زیر استفاده کنید:

tail -f /var/log/auth.log

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