Skip to main content
مهمترین لاگ فایل های سرور لینوکس که باید در مانیتورینگ مورد توجه قرار گیرد

مهمترین لاگ فایل های سرور لینوکس که باید در مانیتورینگ مورد توجه قرار گیرد

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

آموزش ارتباط SSH به سرور لینوکس با گوشی اندروید

فرض کنید با خانواده خود به تعطیلات رفته اید. درست در همین زمان از شرکت با شما تماس می گیرند و می گویند وب سرور با مشکل مواجه شده است! اگر تنها وسیله الکترونیکی که با خود به همراه دارید یک گوشی موبایل اندرویدی باشد و وب سرور به ابزار...
Read More
آموزش ریموت زدن به سرور لینوکسی با SSH و VNC

آموزش ریموت زدن به سرور لینوکسی با SSH و VNC

ریموت زدن به سرور لینوکسی به شیوه های مختلفی انجام می شود. دو روش مهم آن از طریق SSH و VNC است. در این مقاله قصد داریم روش ریموت زدن به سرور لینوکسی را به صورت کامل و جامع و با استفاده از این دو روش به شما آموزش دهیم....
Read More
ویژگی های توزیع اوبونتو

ویژگی های توزیع اوبونتو

اوبونتو (Ubuntu) یک سیستم عامل مبتنی بر لینوکس است که Open Source (منبع باز) بوده و کاملا رایگان است. شما می توانید این سیستم عامل را بر روی رایانه شخصی خود یا سرورهای خصوصی مجازی نصب و استفاده کنید. اوبونتو در سال 2004 توسط یک شرکت بریتانیایی به نام Canonical...
Read More
آشنایی با توزیع های مختلف سیستم عامل لینوکس

آشنایی با توزیع های مختلف سیستم عامل لینوکس

اگر اسم لینوکس را شنیده باشید احتمالا نام توزیع لینوکس (Linux distributions) هم به گوشتان خورده است. برای استفاده از لینوکس بر روی رایانه یا سرور، ابتدا باید یک توزیع مناسب برای آن انتخاب کنید. برای اینکه کمی بیشتر با این مفهوم آشنا شوید بهتر است ابتدا توضیح کاملی در...
Read More
کرنل پنیک، چگونه هنگام kernel panic پنیک نزنیم؟

کرنل پنیک، چگونه هنگام kernel panic پنیک نزنیم؟

در دنیای آی تی، لینوکس در همه جا استفاده می‌شود. حتما امروز هم از لینوکس استفاده کرده‌اید، حتی اگر متوجه آن نشده باشید. اگر اطلاعات کافی در مورد لینوکس داشته باشید، قاعدتا باید بدانید که لینوکس در واقع یک کرنل است. کرنل قسمت اصلی سیستم عامل است که وظیفه ارتباط...
Read More
۱۰ دستور لینوکسی دیگر که لازم است بدانید

۱۰ دستور لینوکسی دیگر که لازم است بدانید

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

بیست دستور سرور لینوکس که بایستی بدانید

اگر به دنبال افزایش اطلاعات خود به عنوان یک ادمین سرورهای لینوکس هستید، این ۲۰ دستور لینوکس به کارتان خواهد آمد. در این بخش از این مقاله ابتدا ده مورد از این دستورها را با هم بررسی می‌کنیم.هم‌اکنون در دنیایی که مملو از ابزارهای جدید و محیط‌های نرم‌افزاری مختلف است،...
Read More
فعال‌سازی رمز تایید دو مرحله‌ای برای SSH

فعال‌سازی رمز تایید دو مرحله‌ای برای SSH

معرفی احراز هویت دو مرحله‌ای یا همان 2FA یک روش احراز هویتی است که برای احراز نیاز به بیشتر از یک فاکتور هویتی دارد. احراز هویت دو عاملی به این صورت است که هر کاربر برای ورود به یک اکانت علاوه بر یوزرنیم و پسورد خود نیاز به یک عامل...
Read More

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

لاگ فایل لینوکس چیست؟

لاگ فایل ها مجموعه‌ای از سوابق هستند که لینوکس برای پیگیری رویدادهای مهم توسط مدیران نگهداری می ‌کند. آن ها حاوی پیام هایی در مورد سرور، از جمله هسته (کرنل)، سرویس ها و نرم افزارهای در حال اجرا بر روی آن هستند. لینوکس یک مخزن متمرکز از Log Flieها آماده می ‌کند که می‌ توانند در زیر فهرست /var/log قرار گیرند.

لاگ فایل های تولید شده در یک محیط لینوکس معمولاً به چهار دسته مختلف طبقه بندی می شوند:

  • Application Logs
  • Event Logs
  • Service Logs
  • System Logs

چرا باید لاگ فایل‌ های لینوکس را مانیتور کنیم؟

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

به طور خلاصه، Log fileها به شما این امکان را می ‌دهند تا مشکلات آتی سیستم را قبل از وقوع پیش‌ بینی کنید.

کدام لاگ فایل های لینوکس باید نظارت شوند؟

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

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

/var/log/messages

لاگ فایل لینوکس /var/log/messages

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • این فایل گزارش (Log File) شامل گزارش‌ های عمومی فعالیت سیستم است.
  • عمدتاً برای ذخیره پیام های اطلاعاتی و غیر بحرانی سیستم استفاده می شود.
  • در سیستم های مبتنی بر دبیان، دایرکتوری /var/log/syslog به همین منظور عمل می کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • در اینجا می ‌توانید خطاهای non-kernel boot، خطاهای سرویس مربوط به اپلیکیشن و پیام ‌هایی که در هنگام راه ‌اندازی سیستم ثبت می ‌شوند را ردیابی کنید.
  • این اولین لاگ فایلی است که مدیران لینوکس باید بررسی کنند که آیا مشکلی پیش آمده است یا نه.
  • به عنوان مثال، شما با مشکلی در کارت صدا مواجه شده اید. برای بررسی اینکه آیا مشکلی در فرآیند راه ‌اندازی سیستم رخ داده است یا نه، شما می ‌توانید به پیام‌ های ذخیره شده در این فایل نگاهی بیندازید.

/var/log/auth.log

لاگ فایل لینوکس /var/log/auth.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

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

چگونه می توان از این گزارش ها استفاده کرد؟

فکر می کنید که یک نقض امنیتی در سرور شما رخ داده است؟ یک فایل جاوا اسکریپت مشکوک در جایی که نباید باشد پیدا کرده اید؟ اگر چنین است، پس این لاگ فایل را سریعا پیدا کنید!

  • تلاش های ناموفق برای ورود را بررسی کنید.
  • حملات brute-force و سایر آسیب ‌پذیری‌ های مربوط به مکانیسم مجوز کاربر را بررسی کنید.

/var/log/secure

لاگ فایل لینوکس /var/log/secure

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

سیستم های مبتنی بر RedHat و CentOS از این لاگ فایل به جای /var/log/auth.log استفاده می کنند.

  • این گزارش عمدتا برای ردیابی استفاده از سیستم های مجوز به کار برده می شود.
  • تمام پیام های مربوط به امنیت از جمله خرابی های احراز هویت را ذخیره می کند.
  • همچنین SSH logins، sudo logins و سایر خطاهای ثبت ‌شده توسط دیمون سرویس ‌های امنیتی سیستم را ردیابی می‌ کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • همه رویدادهای احراز هویت کاربر در اینجا ثبت می شوند.
  • این فایل گزارش می ‌تواند اطلاعات دقیقی درباره تلاش ‌های غیرمجاز یا ناموفق برای ورود به سیستم ارائه دهد.
  • می تواند برای شناسایی تلاش های احتمالی هک بسیار مفید باشد.
  • همچنین اطلاعات مربوط به ورودهای موفق را ذخیره می کند و فعالیت های کاربران معتبر را ردیابی می کند.

/var/log/boot.log

لاگ فایل لینوکس /var/log/boot.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • اسکریپت راه اندازی اولیه سیستم، /etc/init.d/bootmisc.sh، تمام پیام های bootup را به این لاگ فایل ارسال می کند.
  • این لاگ فایل، مخزن اطلاعات مربوط به بوت شدن و پیام های ثبت شده در طول فرآیند راه اندازی سیستم است.

چگونه می توان از این گزارش ها استفاده کرد؟

  • باید این فایل گزارش را بررسی کنید تا مسائل مربوط به خاموش شدن غیرمنتظره، راه اندازی مجدد برنامه ریزی نشده یا خرابی در راه اندازی را متوجه شوید.
  • این فایل می تواند برای تعیین مدت زمان توقف سیستم، ناشی از خاموش شدن غیرمنتظره مفید باشد.

/var/log/dmesg

لاگ فایل لینوکس /var/log/dmesg

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • این فایل گزارش شامل پیام های Kernel ring buffer است.
  • اطلاعات مربوط به دستگاه های سخت افزاری و درایورهای آن ها در فایل ثبت می شود.
  • همانطور که هسته، دستگاه های فیزیکی مرتبط با سرور را در طول فرآیند بوت شناسایی می کند، وضعیت دستگاه، خطاهای سخت افزاری و سایر پیام های عمومی را نیز ضبط می کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • این لاگ فایل بیش تر برای مشتریان سرور اختصاصی مفید است.
  • اگر سخت افزار خاصی به درستی کار نمی کند یا شناسایی نمی شود، می توانید برای عیب یابی به این فایل گزارش اعتماد کنید.
  • یا اینکه می توانید یک سرور مدیریت شده از زمین هاست خریداری کنید و ما آن را برای شما نظارت می کنیم.

/var/log/kern.log

فایل /var/log/kern.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

این یک لاگ فایل بسیار مهم است زیرا حاوی اطلاعات ثبت شده توسط کرنل یا هسته است.

چگونه می توان از این گزارش ها استفاده کرد؟

  • ایده آل برای عیب یابی خطاها و هشدارهای مربوط به هسته.
  • گزارش ‌های کرنل می‌ توانند برای عیب ‌یابی یک هسته سفارشی ‌سازی شده مفید باشند.
  • همچنین می تواند در رفع اشکالات سخت افزاری و مشکلات اتصال مفید باشد.

/var/log/faillog

فایل /var/log/faillog

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

این فایل حاوی اطلاعاتی درباره تلاش های ناموفق برای ورود به سیستم است.

چگونه می توان از این گزارش ها استفاده کرد؟

این گزارش می تواند یک فایل مفید برای کشف هرگونه تلاش برای نقض امنیتی شامل هک نام کاربری/رمز عبور و حملات brute-force باشد.

/var/log/cron

فایل /var/log/cron

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

این لاگ فایل اطلاعات مربوط به cron jobها را ثبت می کند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • هر زمان که یک cron job اجرا می شود، این File log تمام اطلاعات مربوطه از جمله اجرای موفقیت آمیز و پیام های خطا در صورت خرابی را ثبت می کند.
  • اگر با cron برنامه ریزی شده خود مشکل دارید، باید این فایل گزارش را بررسی کنید.

لاگ فایل لینوکس /var/log/yum.log

لاگ فایل لینوکس /var/log/yum.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

شامل اطلاعاتی است که هنگام نصب بسته جدید با استفاده از دستور yum ثبت می شود.

چگونه می توان از این گزارش ها استفاده کرد؟

  • نصب اجزای سیستم و بسته های نرم افزاری را پیگیری کنید.
  • پیام های ثبت شده را در اینجا بررسی کنید تا ببینید آیا بسته به درستی نصب شده است یا خیر.
  • به شما کمک می کند تا مشکلات مربوط به نصب نرم افزار را عیب یابی کنید.

فرض کنید سرور شما غیرعادی رفتار می کند و شما مشکوک هستید بسته نرم افزاری که اخیراً نصب شده دلیل اصلی این مشکل باشد. در چنین مواقعی، می‌ توانید این لاگ فایل را بررسی کنید تا بسته ‌هایی را که اخیراً نصب شده‌اند، بررسی کنید و برنامه دارای مشکل را شناسایی کنید.

/var/log/maillog یا /var/log/mail.log

فایل /var/log/maillog یا /var/log/mail.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

همه گزارش ‌های مربوط به سرور ایمیل در اینجا ذخیره می ‌شوند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • اطلاعات مربوط به postfix، smtpd، MailScanner، SpamAssassain یا هر سرویس مرتبط دیگری که در سرور ایمیل اجرا می شود را در این قسمت مشاهده می کنید.
  • تمام ایمیل هایی که در یک دوره خاص ارسال یا دریافت شده اند را ردیابی می کنید.
  • مشکلات تحویل نامه ناموفق را بررسی می کنید.
  • اطلاعاتی در مورد تلاش های احتمالی ارسال هرزنامه که توسط سرور ایمیل مسدود شده است را دریافت می کنید.
  • منشاء ایمیل دریافتی را با بررسی دقیق این لاگ فایل ردیابی می کنید.

لاگ فایل لینوکس var/log/httpd/

لاگ فایل لینوکس var/log/httpd/

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • این فهرست شامل لاگ های ثبت شده توسط سرور آپاچی است.
  • اطلاعات ورود به سیستم سرور آپاچی در دو لاگ فایل مختلف ذخیره می شود – error_log و access_log.

چگونه می توان از این گزارش ها استفاده کرد؟

  • error_log حاوی پیام های مربوط به خطاهای httpd مانند مشکلات حافظه و سایر خطاهای مربوط به سیستم است.
  • این جا قسمتی است که سرور آپاچی رویدادها و سوابق خطاهایی را که هنگام پردازش درخواست ‌های httpd با آن مواجه می‌ شوند را می‌نویسد.
  • اگر مشکلی در وب سرور آپاچی پیش بیاید، این گزارش را برای تشخیص مشکل بررسی کنید.
  • علاوه بر فایل error-log، Apache یک لیست جداگانه از access_log نیز دارد.
  • تمام درخواست های دسترسی دریافت شده از طریق HTTP در فایل access_log ذخیره می شوند.
  • به شما کمک می کند تا هر صفحه ارائه شده و هر فایل بارگذاری شده توسط آپاچی را پیگیری کنید.
  • نشانی IP و شناسه کاربری همه کلاینت هایی را که درخواست اتصال به سرور می کنند را ثبت می کند.
  • اطلاعات مربوط به وضعیت درخواست‌ های دسترسی را ذخیره می ‌کند. اینکه آیا پاسخی با موفقیت ارسال شده است یا درخواست منجر به شکست شده است؟

/var/log/mysqld.log یا /var/log/mysql.log

فایل /var/log/mysqld.log یا /var/log/mysql.log

چه چیزی در این لاگ فایل لینوکس ثبت شده است؟

  • همانطور که از نام آن پیداست، این لاگ فایل MySQL است.
  • همه پیام‌ های اشکال‌ زدایی، شکست و موفقیت مربوط به دیمون [mysqld] و [mysqld_safe] در این فایل ثبت شده‌اند.
  • RedHat،CentOS  و Fedora گزارش‌ های MySQL را در /var/log/mysqld.log ذخیره می ‌کنند، در حالی که دبیان و اوبونتو ورود به دایرکتوری /var/log/mysql.log را حفظ می‌ کنند.

چگونه می توان از این گزارش ها استفاده کرد؟

  • از این گزارش می توانید برای شناسایی مشکلات هنگام شروع، اجرا یا توقف mysqld استفاده کنید.
  • اطلاعاتی در مورد اتصالات کلاینت به دایرکتوری داده MySQL دریافت می کنید.
  • همچنین می ‌توانید پارامتر «long_query_time» را برای ثبت اطلاعات مربوط به query locks و slow running queries تنظیم کنید.

نکته آخر

در حالی که نظارت و تجزیه و تحلیل تمام لاگ فایل های تولید شده توسط سیستم می تواند کار دشواری باشد، می توانید از یک ابزار نظارتی متمرکز برای ساده سازی فرآیند بررسی گزارش ها استفاده کنید.

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

فرض کنید با خانواده خود به تعطیلات رفته اید. درست در همین زمان از شرکت با شما تماس می گیرند و می گویند وب سرور با مشکل مواجه شده است! اگر تنها وسیله الکترونیکی که با خود به همراه دارید یک گوشی موبایل اندرویدی باشد و وب سرور به ابزار از راه دوری مانند TeamViewer متصل نباشد، آیا باز هم می توانید به سرور لینوکسی ریموت بزنید؟ SSH به لینوکس با اندروید روشی است که در این شرایط می توانید از آن استفاده کنید.

ارتباط SSH چیست؟

برای پاسخ به این پرسش ابتدا باید بدانیم که ارتباط SSH به چه معناست؟ SSH یا اتصال پوسته ایمن (Secure Shell Protocol) یک پروتکل ارتباطی شبکه ای است که دو دستگاه هوشمند را قادر می سازد تا با یکدیگر ارتباط برقرار کنند و داده ها را به اشتراک بگذارند. یکی از ویژگی های ذاتی ssh این است که داده ها را به صورت رمزگذاری شده در شبکه منتقل می کند؛ این موضوع اهمیت ویژه ای در شبکه های ناامن دارد.

SSH اغلب برای “ورود به سیستم” و انجام عملیات از راه دور در رایانه ها استفاده می شود، اما ممکن است برای انتقال داده نیز استفاده شود.

چطور می توان بین سرور لینوکس و گوشی اندروید ارتباط SSH ایجاد کرد؟

حالا می توانیم به بحث اصلی بازگردیم و روش اتصال SSH به لینوکس با اندروید را توضیح دهیم. اگر شما با سرور LAMP (Linux Apache MySQL PHP) سروکار دارید، خوش شانس هستید و فقط کافی است یک برنامه SSH روی گوشی اندروید خود نصب کنید. سپس به راحتی می توانید به آن سرور متصل می شوید و آن را عیب یابی کنید.

برنامه های SSH بسیاری در گوگل پلی موجود هستند که می توانید از آنها برای این منظور استفاده کنید. ما در این آموزش قصد داریم تا از برنامه Telnet/SSH Simple Client استفاده کنیم. محیط کاربری ساده و بدون ابزارهای اضافی، این برنامه را به یک رابط SSH ایده آل تبدیل کرده است.

در ادامه مراحل نصب و راه اندازی این برنامه اندرویدی را بررسی می کنیم.

نصب و راه اندازی اتصال SSH با کمک برنامه Telnet/SSH Simple Client

آموزش نصب

  • ابتدا فروشگاه Google Play را در گوشی Android خود باز کنید.
  • برنامه telnet ssh client را جستجو کنید.
  • برنامه را نصب کنید.
  • فهرست مجوزها را بخوانید و روی Accept ضربه بزنید تا فرایند نصب کامل شود.
  • بعد از اتمام نصب، آیکون برنامه روی صفحه گوشی شما ظاهر می شود. اگر آیکون برنامه برای شما ظاهر نشد، منوی سرچ برنامه ها را باز کنید و عبارت Telnet را سرچ کنید تا آیکون مورد نظر پیدا شود.

آموزش راه اندازی

به محض باز کردن برنامه، با یک رابط کاربری ساده روبه رو خواهید شد.

محیط اولیه برنامه Telnet/SSH Simple Client
محیط اولیه برنامه Telnet/SSH Simple Client

اتصال به سرور SSH آسان است. تنها کاری که باید انجام دهید این است که نام میزبان (یا آدرس IP) را وارد کنید و شماره پورت را انتخاب کنید. سپس Telnet یا SSH را انتخاب کنید و عمودی یا افقی بودن صفحه را مشخص کنید.

باید توجه داشته باشید، وقتی روی Telnet یا SSH ضربه می زنید، شماره پورت به طور خودکار تغییر نمی کند. شما باید به صورت دستی آن را تغییر دهید. اگر مطمئن نیستید، پورت پیش فرض Secure Shell برابر 22 و پورت پیش فرض Telnet برابر 23 است.

هنگامی که روی Connect ضربه بزنید، نام کاربری و رمز عبور از شما خواسته می شود.

نام کاربری و رمز عبور را وارد کنید
نام کاربری و رمز عبور را وارد کنید

دوباره روی دکمه Connect ضربه بزنید، و نام خود را در اعلان ترمینال سرور پیدا کنید.

SSH به لینوکس با اندروید

هنگامی که به اعلان ترمینال رسیدید، می توانید دستورات را همان طور که انتظار دارید ارسال کنید. برای این کار کافی است دستور را تایپ کنید و روی دکمه ارسال ضربه بزنید.

نکته ای که باید به آن توجه داشته باشید این است که در این برنامه گزینه [Ctrl] که برای دستورات فرار (escape commands) استفاده می شود، وجود ندارد.

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

جمع بندی

در این مقاله ابتدا در رابطه با اهمیت و لزوم اتصال SSH به لینوکس با اندروید صحبت کردیم و با تعریف اتصال SSH ذهن شما را برای بررسی آموزش نحوه انجام این اتصال آشنا کردیم. سپس بیان کردیم که برای این اتصال به یک نرم افزار کارآمد نیاز داریم. در ادامه با بررسی نحوه نصب و راه اندازی برنامه اندرویدی Telnet/SSH Simple Client به شما نشان دادیم که چطور می توانید از راه دور و وقتی در تعطیلات هستید، سرورهای خود را مدیریت کنید.

 آیا شما تجربه مشابهی در ارتباط SSH به لینوکس با اندروید دارید؟ نظر خود را در انتهای مقاله با ما به اشتراک بگذارید.

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

SSH چیست؟

Secure Shell که گاهی به آن Secure Socket Shell نیز گفته می شود، پروتکلی است که به شما امکان می دهد با استفاده از یک رابط مبتنی بر متن، به صورت ایمن به یک کامپیوتر راه دور یا یک سرور متصل شوید. هنگامی که یک اتصال SSH ایمن ایجاد شد، یک Session ایجاد شده و شما می توانید با تایپ دستورات در کلاینت در رایانه محلی خود سرور را دستکاری کنید. مدیران سیستم و شبکه بیشتر از این پروتکل استفاده می کنند و همچنین هرکسی که نیاز به مدیریت یک کامپیوتر از راه دور به شیوه ای بسیار امن دارد، این پروتکل رو انتخاب می کند. پروتکل SSH دارای دو نسخه ارتباط سرور SSH و سرویس گیرنده یا کلاینت SSH است.

نحوه فعال کردن اتصال SSH برای ریموت زدن به سرور لینوکسی

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

نحوه نصب کلاینت OpenSSH

قبل از شروع به نصب کلاینت SSH، مطمئن شوید که این برنامه قبلاً روی سیستم نصب نشده باشد. بسیاری از توزیع های لینوکس در حال حاضر یک کلاینت SSH دارند. برای ماشین‌های ویندوز، می‌توانید PuTTY یا هر کلاینت دیگری را به انتخاب خود نصب کنید تا به سرور دسترسی پیدا کنید.

برای بررسی اینکه آیا کلاینت در سیستم مبتنی بر لینوکس شما موجود است یا خیر، باید:

ترمینال SSH را دانلود کنید. می توانید “Terminal” را جستجو کنید یا CTRL + ALT + T را روی صفحه کلید خود فشار دهید. سپس دستور زیر را تایپ کنید و در ترمینال کلید Enter را فشار دهید.

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

[email protected]:~$ ssh

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [[email protected]]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[[email protected]]hostname [command]

[email protected]:~$

این بدان معناست که شما آماده اتصال از راه دور به یک ماشین فیزیکی یا مجازی هستید. در غیر این صورت، باید کلاینت OpenSSH را نصب کنید:

دستور زیر را برای نصب کلاینت OpenSSH بر روی کامپیوتر خود اجرا کنید:

sudo apt-get install openssh-client

در صورت درخواست، رمز عبور Super user خود را وارد کنید. سپس Enter را بزنید تا نصب کامل شود.

اکنون می‌توانید به هر ماشینی که برنامه سمت سرور روی آن است، SSH کنید، مشروط بر اینکه از امتیازات لازم برای دسترسی و همچنین نام میزبان یا آدرس IP برخوردار باشید.

نحوه نصب سرور OpenSSH

برای پذیرش اتصالات SSH، یک ماشین باید بخش سمت سرور Toolbox نرم افزار SSH را داشته باشد.

اگر ابتدا می خواهید بررسی کنید که آیا OpenSSH در سرور اوبونتو رایانه راه دوری که نیاز به پذیرش اتصالات SSH دارد موجود است، می توانید سعی کنید به میزبان محلی متصل شوید:

ترمینال را روی دستگاه سرور باز کنید. می توانید “Terminal” را جستجو کنید یا CTRL + ALT + T را روی صفحه کلید خود فشار دهید. عبارت ssh localhost را تایپ کنید و کلید اینتر را بزنید.

برای سیستم‌هایی که سرور SSH نصب نشده است، پاسخ مشابه این خواهد بود:

[email protected]:~$ ssh localhost
ssh: connect to host localhost port 22: Connection refused [email protected]:~$

در صورت وجود موارد فوق، باید برنامه سمت سرور OpenSSH را نصب کنید. ترمینال را باز بگذارید و برای نصب سرور SSH دستور زیر را اجرا کنید:

sudo apt-get install openssh-server ii.

در صورت درخواست، رمز عبور Super User خود را وارد کنید.

Enter و Y را برای اجازه دادن به نصب پس از درخواست فضای دیسک وارد کنید. فایل های پشتیبانی مورد نیاز نصب می شوند و سپس می توانید با تایپ این دستور بررسی کنید که آیا سرور SSH روی دستگاه اجرا می شود یا خیر:

sudo service ssh status

اگر سرویس SSH اکنون به درستی اجرا شود، پاسخ در ترمینال باید شبیه به این باشد:

[email protected]:-$ sudo service ssh status
• ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
Active: active (running) since Fr 2018-03-12 10:53:44 CET; 1min 22s ago Process: 1174 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCES

Main PID: 3165 (sshd)

راه دیگر برای آزمایش اینکه آیا سرور OpenSSH به درستی نصب شده است و اتصالات را می پذیرد، این است که دستور ssh localhost را دوباره در ترمینال خود اجرا کنید.

نحوه ریموت زدن به سرور لینوکسی با SSH

اکنون که کلاینت و سرور OpenSSH را بر روی هر دستگاهی که نیاز دارید نصب کرده اید، می توانید یک ارتباط راه دور ایمن با سرورهای خود برقرار کنید. برای انجام این کار:

ترمینال SSH را روی دستگاه خود باز کنید و دستور زیر را اجرا کنید:

ssh [email protected]_ip_address

اگر نام کاربری در دستگاه محلی شما با نام کاربری در سروری که می‌خواهید به آن متصل شوید مطابقت دارد، فقط می‌توانید تایپ کنید: ssh host_ip_address و سپس کلید Enter را بزنید.

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

هنگامی که برای اولین بار به یک سرور متصل می شوید، از شما پرسیده می شود که آیا می خواهید به اتصال خود ادامه دهید یا خیر. فقط yes را تایپ کنید و Enter را بزنید. این پیام فقط یک بار ظاهر می شود زیرا سرور راه دور در دستگاه محلی شما شناسایی نشده است.

اکنون یک فینگر پرینت ECDSA اضافه شده است و شما به سرور راه دور متصل هستید. اگر رایانه ای که می خواهید از راه دور به آن متصل شوید در همان شبکه است، بهتر است به جای آدرس IP عمومی از آدرس IP خصوصی استفاده کنید. در غیر این صورت، فقط باید از آدرس IP عمومی استفاده کنید.

علاوه بر این، مطمئن شوید که می‌دانید پورت TCP صحیح OpenSSH برای درخواست‌های اتصال به آن گوش می‌دهد و تنظیمات ارسال پورت درست است. اگر کسی پیکربندی فایل sshd_config را تغییر نداده است، پورت پیش‌فرض 22 است. همچنین می توانید شماره پورت را بعد از آدرس IP میزبان اضافه کنید.

[email protected]:~$ ssh [email protected] –p7654 [email protected]’s password:

The authenticity of host '185.52.53.222 (185.52.53.222)' can't be established. ECDSA key fingerprint is SHA256:9lyrpzo5Yo1EQAS2QeHy9xKceHFH8F8W6kp7EX2O3Ps. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ' 185.52.53.222' (ECDSA) to the list of known hosts. 

[email protected]:~$

مراحل بعدی SSH

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

برخی از تنظیمات ویرایش فایل پیکربندی sshd عبارتند از:

  1. پورت پیش‌فرض TCP را در جایی که دیمون SSH در حال گوش دادن است، تغییر دهید. آن را از 22 به چیزی بسیار بالاتر تغییر دهید، به عنوان مثال 24596 و مطمئن شوید که از شماره پورتی استفاده نمی کنید که به راحتی قابل حدس زدن باشد، مانند 222، 2222 یا 22222.
  2. از جفت کلیدهای SSH برای احراز هویت جهت ورود بدون رمز عبور SSH استفاده کنید. آنها هم ایمن تر هستند و هم اجازه ورود بدون نیاز به رمز عبور را می دهند (که سریعتر و راحت تر است).
  3. ورودهای مبتنی بر رمز عبور را در سرور خود غیر فعال کنید. اگر این امکان را غیر فعال کنید، امکان استفاده از آن برای ورود به سرورهای شما از بین می رود و دیگر با استفاده از حملاتی همچون بروت فورس، نمی توان به سرور شما نفوذ پیدا کرد. البته به یاد داشته باشید که قبل از اینکه گزینه ورود با استفاده از رمزهای عبور را غیر فعال کنید، مطمئن شوید که احراز هویت با استفاده از جفت کلید به درستی کار می کند.
  4. دسترسی روت به سرور خود را غیر فعال کنید و از یک حساب معمولی با دستور su- استفاده کنید تا به کاربر اصلی تغییر دهید.

نحوه ریموت زدن به سرور لینوکسی با VNC

VNC به شما این امکان را می دهد که از راه دور یک محیط دسکتاپ را در رایانه راه اندازی کنید و از کامپیوتر خود با آن دسکتاپ تعامل داشته باشید. متأسفانه، VNC رمزگذاری داخلی ندارد، به این معنی که تمام اطلاعات ارسال شده از طریق VNC می تواند توسط اشخاص ثالث مورد نفوذ قرار گیرد. یک راه حل برای رفع این مشکل استفاده از ssh (پوسته امن) برای رمزگذاری ترافیک بین شما و میزبان راه دور شما است.

این آموزش اصول راه اندازی یک سرور VNC، بسته بندی آن در ssh و اتصال ایمن به دسکتاپ از راه دور را پوشش می دهد. در مثال‌های زیر با استفاده از نمایشگر 44 به mo.ece.pdx.edu متصل می‌شویم، به این معنی که شماره پورت 5944 خواهد بود (اعداد پورت VNC برابر با 5900 به اضافه عدد نمایشگر است). هر جا که به mo.ece.pdx.edu اشاره می شود، می توان از هر دستگاه لینوکس Ubuntu یا Redhat/Centos در MCECS نیز استفاده کرد.

مرحله 1 – سرور VNC را در رایانه راه دور راه اندازی کنید

قبل از اینکه بتوانیم به دسکتاپ راه دور متصل شویم، باید سرور VNC را روی دستگاه راه دور راه اندازی کنیم. برای انجام این کار، به دستگاهی که در آن به دسکتاپ راه دور دسترسی خواهید داشت، وارد شوید. در ترمینال دستور زیر را اجرا کنید:

vncserver

با این کار سرور VNC روی دستگاه راه‌اندازی می‌شود و به آن می‌گوید که فقط اتصالات از لوکال هاست را بپذیرد، یعنی از کاربرانی که وارد دستگاه میزبان سرور VNC شده‌اند. برای ورود به Session VNC از شما یک رمز عبور خواسته می شود (این کار مانند ورود با حساب MCECS خود نیست. این رمز عبور به طور خودکار انتخاب شده است. توصیه می شود که در اینجا از رمز عبور حساب MCECS خود استفاده نکنید!)

توجه: این رمز عبور باید کمتر از 8 کاراکتر باشد!

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

New 'X' desktop is mo.ece.pdx.edu:44

Starting applications specified in /u/cecsuser/.vnc/xstartup
Log file is /u/cecsuser/.vnc/mo.ece.pdx.edu:44.log

مرحله2 – ایجاد Tunnel SSH در VNC

اکنون که سرور VNC در حال اجرا است، باید تونل ssh را از دستگاه محلی شما به میزبان راه دور ایجاد کنیم. از Session ssh خود خارج شوید (نگران نباشید سرور vnc در هنگام خروج در پس‌زمینه در حال اجرا است) و با دستورات زیر در پنجره ترمینال دوباره به همان دستگاه متصل شوید:

ssh [email protected] -L 5944:localhost:5944

جایی که cecsuser با نام کاربری حساب MCECS شما جایگزین می شود.

توجه: سینتکس -L 5944:localhost:5944 چیزی است که مسئول ایجاد تونل ssh است که VNC بین میزبان محلی شما و میزبان راه دور استفاده می کند. در اصل، چیزی که می گوید این است که هر چیزی را که از طریق پورت 5944 کامپیوتر راه دور ارسال می شود بردارید و آن را به پورت 5944 کامپیوتر محلی انتقال دهید. ما در اینجا برای سادگی از همان دو عدد استفاده می کنیم، اما همانطور که در بالا ذکر شد، می توانید پورت را در رایانه محلی (هر عددی بین 1024 و 65535) مشخص کنید.

مرحله 3 – اتصال به لینوکس از طریق VNC با استفاده از Remmina (Linux GUI)

Remmina نمایشگر پیش فرض دسکتاپ از راه دور است که با اوبونتو (از نسخه 14.04 به بعد) ارائه شده است. برای راه‌اندازی Remmina، می‌توانید کلید ویندوز را فشار دهید یا یک فرمان اجرا را باز کنید (به طور پیش‌فرض Alt+F2) سپس روی صفحه خالی کلیک کنید تا یک اتصال جدید ایجاد شود.

ریموت زدن به سرور لینوکس

در مرحله بعد، اطلاعات زیر را وارد کنید:

آموزش ریموت زدن به سرور
آموزش جامع ریموت زدن به سرور لینوکسی

اکنون می توانید روی ذخیره یا اتصال کلیک کنید. اگر برای Session VNC خود رمز عبور وارد کرده اید (که واقعا باید انجام دهید!)، اکنون از شما آن رمز خواسته می شود:

آموزش ریموت زدن با SSH و VNC

در نهایت، می توانید از Session remote خود لذت ببرید! از آنجایی که شما یک Tunnel به سرور دارید که از پورت 5944 شما شروع می شود و به پورت 5944 سرور ختم می شود که توسط VNC استفاده می شود، Remmina Session VNC طوری رفتار می کند که گویی به صورت محلی در حال اجرا است.

اکنون شما موفق به ریموت زدن به سرور لینوکسی خود شده اید و اگر روی ذخیره کلیک کنید، پورتی را که برای اتصال به Session VNC خود استفاده کرده اید، ذخیره می شود و همیشه می توان از آن استفاده نمود.

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

اوبونتو (Ubuntu) یک سیستم عامل مبتنی بر لینوکس است که Open Source (منبع باز) بوده و کاملا رایگان است. شما می توانید این سیستم عامل را بر روی رایانه شخصی خود یا سرورهای خصوصی مجازی نصب و استفاده کنید.

اوبونتو در سال 2004 توسط یک شرکت بریتانیایی به نام Canonical معرفی شد. در ابتدا بر پایه توزیع محبوب لینوکس (در آن زمان) Debian بود؛ اما به دلیل اینکه نصب آن دشوار بود با Ubuntu جایگزین شد.

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

پس همانطور که دانستیم، اوبونتو یکی از پرکاربردترین توزیع های لینوکس است که اگر از علاقه مندان یادگیری لینوکس باشید، حتما باید با آن آشنایی داشته باشید. در ادامه این مقاله به معرفی کامل اوبونتو و ویژگی های آن می پردازیم.

تفاوت لینوکس و اوبونتو چیست؟

لینوکس مجموعه ای از سیستم عامل های مختلف است؛ یا به عبارت دیگر Linux هسته اصلی یک سیستم عامل (OS) محسوب می شود. این سیستم عامل امکان برقراری ارتباط بین قطعات سخت افزاری و نرم افزاری را فراهم می کند.

لینوکس مبتنی بر یونیکس است و در سال 1991 منتشر شد. لینوکس برای سرورهای وب، کنسول های بازی، دسکتاپ و رایانه های شخصی در دسترس است. این سیستم عامل در نسخه های مختلفی به نام “توزیع های لینوکس” عرضه می شود.

Ubuntu یکی از انواع توزیع لینوکس بر پایه دبیان است. این توزیع برای محاسبات ابری، سرورها، دسکتاپ ها و دستگاه های اینترنت اشیا (IoT) مناسب است. تفاوت اصلی بین لینوکس و اوبونتو این است که اولی یک عضو خانواده از سیستم عامل های مبتنی بر یونیکس است، در حالی که اوبونتو یک توزیع لینوکس است.

علت محبوبیت اوبونتو چیست؟

طبق وب سایت رسمی اوبونتو، این توزیع پرکاربردترین پلتفرم لینوکس در جهان است. در ادامه علت محبوبیت آن را با هم بررسی می کنیم.

1- کاربر پسند بودن

اوبونتو از محیط دسکتاپ لینوکس برای رابط کاربری (UI) خود استفاده می کند. از اوبونتو 17.10 به بعد، GNOME به عنوان رابط کاربری پیش فرض استفاده می شود. GNOME صفحه را با توضیحات زیادی شلوغ نمی کند، در عوض از نمادها برای آسان سازی جستجو استفاده می کند.

به  طور پیش  فرض، GNOME دارای پنل Activities در نوار ابزار سمت چپ است. آیکون کنترل ها نیز در گوشه سمت راست بالای صفحه قرار دارند.

محل پنل Activities  و Controls در اوبونتو

با کلیک کردن روی دکمه شبکه در گوشه سمت چپ و پایین صفحه، می توانید نمای کلی برنامه ها را مشاهده کنید.

نمای کلی برنامه ها در Ubuntuهمچنین جستجو در سیستم بسیار آسان است، زیرا تمام عناصر پیکربندی شده و برنامه ها از صفحه اصلی قابل دسترسی هستند.

2- امنیت قوی

اوبونتو یک پروژه منبع باز است که به طور مداوم توسط اعضای انجمن خود مورد بررسی و بازبینی قرار می گیرد. در نتیجه هر گونه آسیب پذیری امنیتی را می توان به سرعت شناسایی کرد و از بین برد. به طور کلی، توزیع های لینوکس در مقایسه با سایر سیستم عامل ها دارای نقص های امنیتی کمتری هستند.

قابل ذکر است که اوبونتو از AppArmor استفاده می کند، که مجوز برنامه ها و منابع دسترسی آن ها را محدود می کند. علاوه بر این Ubuntu از اقدامات امنیتی خاصی پشتیبانی می کند، مانند به روزرسانی های امنیتی، استفاده از sudo به جای root Linux user، استفاده از رمزهای عبور پیچیده، راه اندازی سرور VPN، پیکربندی فایروال با استفاده از ufw و فعال کردن iptables.

3- گزینه های نرم افزاری بیش تر

اکثر برنامه های محبوب در macOS و Windows از جمله Slack، Spotify و Firefox برای کاربران لینوکس در دسترس هستند و این امکان وجود دارد تا از طریق مرکز نرم افزار (Software Center) اوبونتو نصب شوند. حتی اگر نتوانستید برنامه مورد نظر خود را پیدا کنید، به احتمال زیاد یک جایگزین با کیفیت برای آن در دسترس است. به عنوان مثال، Libre Office به خوبی Microsoft Office کار می کند.

اکثر برنامه های محبوب در macOS و Windows از جمله Slack، Spotify و Firefox برای کاربران لینوکس در دسترس هستند

گزینه دیگری که می توانید به غیر از مرکز نرم افزار Ubuntu استفاده کنید Snapcraft است. برنامه ای که توسط Canonical ایجاد شده است. این برنامه حاوی بسته های نرم افزاری منبع باز و اختصاصی است که برای سیستم عامل های مبتنی بر لینوکس در دسترس می باشند. یکی از مزیت های اصلی اسنپ کرافت این است که از snapd daemon استفاده می کند که به طور خودکار برنامه ها را بررسی و به روز می کند.

4- حریم خصوصی پیشرفته

درست مانند هر سیستم عامل دیگری، Ubuntu سیاست حفظ حریم خصوصی داده های خود را دارد. چهار اصل اساسی وجود دارد که Ubuntu از نظر پردازش اطلاعات شخصی از آن ها پیروی می کند:

  • اوبونتو اطلاعات شخصی را از کاربر درخواست نمی کند؛ مگر اینکه واقعاً برای اهداف قانونی به چنین اطلاعاتی نیاز داشته باشد.
  • اوبونتو اطلاعات شخصی کاربران خود را جز برای ارائه محصولات و خدمات به مشتریان خود، پیروی از قانون و محافظت از حقوق خود با هیچکس به اشتراک نمی گذارد.
  • اوبونتو اطلاعات شخصی را ذخیره نمی کند مگر اینکه برای عملکرد خدمات، ارائه محصولات، پیروی از قانون یا محافظت از حقوق آن لازم باشد. Ubuntu برخی از اطلاعات سخت افزاری و داده های مکانی را جمع آوری می کند. با این حال، همیشه می توانید مانع این کار شوید. به عنوان مثال، خدمات مکانی را می توان از طریق تنظیمات حریم خصوصی، همانطور که در زیر نشان داده شده است، غیرفعال کنید.
غیر فعال کردن داده های مکانی در اوبونتو

5- عملکرد سبک و سریع

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

در مقایسه، هم ویندوز و هم macOS به منابع بسیار بیش تری نیاز دارند. macOS Big Sur و Windows 11 برای اجرا به حداقل 4 گیگابایت رم نیاز دارند. به این دلیل که این سیستم عامل ها دارای رابط های کاربری با منابع سنگین (UI) و ویژگی های پیشرفته دیگر هستند.

6- کاملا رایگان است

اوبونتو یک سیستم عامل متن باز رایگان است که می توانید آن را از وب سایت رسمی Ubuntu دانلود کنید. همچنین می توانید کد منبع آن را به دلخواه تغییر دهید. تا کنون، پروژه های متعددی بر اساس اوبونتو ساخته شده اند. 

در مقایسه با اوبونتو، macOS و Windows سیستم عامل های منبع بسته هستند. برای استفاده از ویندوز، باید یک کامپیوتر همراه با آن بخرید یا مجوز آن را خریداری کنید که از 139 دلار به ازای هر مجوز شروع می شود. در همین حال، سیستم عامل macOS به تنهایی قابل خرید نیست؛ بلکه از قبل بر روی دستگاه های مک نصب شده است.

جمع بندی

در حالی که توزیع های مختلفی برای لینوکس به صورت آنلاین وجود دارد، محبوب ترین آن ها اوبونتو است که یک سیستم عامل رایگان و منبع باز است.

شش دلیل محبوبیت اوبونتو به طور خلاصه در زیر آمده است:

  • کاربر پسند بودن – اوبونتو رابط کاربری ساده و آسانی دارد.
  • امنیت قوی – اوبونتو از AppArmor و تدابیر امنیتی پیشرفته برای جلوگیری از نفوذها استفاده می کند.
  • گزینه های نرم افزاری بیش تر – اوبونتو تعداد زیادی برنامه کاربردی دارد که می توانید آن ها را نصب کنید، که بسیاری از آن ها منحصراً برای سیستم عامل Ubuntu موجود هستند.
  • حفظ حریم خصوصی پیشرفته – اوبونتو سیاست حفظ حریم خصوصی داده ها را تضمین می کند و به کاربران اجازه می دهد تنظیمات حریم خصوصی را سفارشی کنند.
  • عملکرد سبک – رابط پیش فرض اوبونتو تنها از کمتر از 1 گیگابایت رم استفاده می کند. بنابراین، سیستم عامل بر روی دستگاه های پایین رده هم می تواند کار کند.
  • رایگان – اوبونتو یک توزیع رایگان لینوکس و کاملا منبع باز است.

اگر اسم لینوکس را شنیده باشید احتمالا نام توزیع لینوکس (Linux distributions) هم به گوشتان خورده است. برای استفاده از لینوکس بر روی رایانه یا سرور، ابتدا باید یک توزیع مناسب برای آن انتخاب کنید. برای اینکه کمی بیشتر با این مفهوم آشنا شوید بهتر است ابتدا توضیح کاملی در مورد توزیع های مختلف لینوکس به شما بدهیم.

توزیع لینوکس چیست؟

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

اما سیستم عامل لینوکس مثل ویندوز یا Mac OS X نیست و لینوکس در این زمینه متفاوت عمل می کند. سیستم عامل لینوکس توسط یک سازمان خاص تولید نمی شود بلکه سازمان ها و افراد مختلف در بخش های مختلف، بر روی آن کار می کنند و آن را توسعه می دهند.

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

همه این ابزارها نرم افزارهای متن بازی (Open source) هستند که به صورت کد منبع توزیع شده اند و شما می توانید همه بخش های مختلف لینوکس را کامپایل (Compile) کنید.

تمام ابزارها در لینوکس به صورت متن باز توسعه داده شده اند.

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

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

محیط گرافیکی لینوکس

تفاوت توزیع های لینوکس چیست؟

چندین نوع توزیع مختلف لینوکس وجود دارد. بسیاری از آن ها فلسفه های کاری متفاوتی دارند؛ برخی مانند Fedora از اضافه کردن نرم افزارهای متن بسته (closed-source) جلوگیری می کنند، در حالی که برخی دیگر مانند توزیع Mint از نرم افزارهای متن بسته استفاده می کنند تا کار را برای کاربران آسان تر کنند. برخی از توزیع ها از package managers (مدیر بسته)، ابزارهای پیکربندی و نرم افزارهای دیگر استفاده می کنند و برخی از توزیع ها برای مدت طولانی است که دیگر پشتیبانی نمی شوند.

سایر توزیع ها از جمله Ubuntu LTS یا Red Hat Enterprise Linux، به گونه ای طراحی شده اند که برای سال ها با بروز رسانی های امنیتی و رفع اشکال های مداوم پشتیبانی می شوند. برخی از توزیع های لینوکس برای رایانه های رومیزی، برخی برای سرورهای لینوکس بدون رابط گرافیکی و برخی دیگر برای استفاده های خاص، مانند رایانه های سینمای خانگی (برای پخش فیلم، موزیک و عکس)، در نظر گرفته شده اند.

چه توزیعی را باید انتخاب کنم؟

توزیع های مختلف لینوکس برای اهداف مختلف مناسب هستند. اینکه کدام توزیع لینوکس را باید انتخاب کنید به کاری که با آن انجام می دهید و ترجیحات شخصی شما بستگی دارد. اگر کاربر دسکتاپ هستید، احتمالاً توزیع های ساده ای مانند اوبونتو (Ubuntu) یا مینت (Mint) برای شما مناسب تر است. برخی از افراد ممکن است Fedora، openSUSE یا Mageia (براساس Mandriva Linux) را ترجیح دهند.

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

افرادی که به دنبال یک سیستم پایدارتر و آزمایش شده هستند ممکن است از Debian، CentOS (نسخه رایگان Red Hat Enterprise Linux) یا حتی Ubuntu LTS استفاده کنند.

هیچ توزیع مشخص و یکسانی برای همه وجود ندارد. توزیع های لینوکس ممکن است نتوانند همه نیازهای شما را بر طرف کنند؛ در این حالت می توانید با تغییر در کدهای توزیع مورد نظر، آن را بسته به نیازتان شخصی سازی کنید.

معرفی 10 توزیع لینوکس و کاربردشان

در ادامه به معرفی 10 توزیع لینوکس پرداخته ایم که با توضیح کاربرد هر کدام، می توانید توزیع مورد نظر خود را انتخاب کنید.

1- توزیع لینوکس Debian

Debian به عنوان مادر توزیع های محبوب لینوکس مانند دیپین (Deepin)، اوبونتو و مینت که عملکرد، ثبات و تجربه کاربری بی نظیری را ارائه می دهند، مشهور است. پروژه دبیان بیش از 59000 بسته نرم افزاری را ارائه می دهد و از طیف گسترده ای از رایانه ها پشتیبانی می کند که هر نسخه مجموعه وسیع تر و سازگارتری از معماری سیستم را در بر می گیرد. Debian سه شاخه توسعه یافته دارد که هر کدام به ترتیب Stable، Testing و Unstable نامگذاری می شوند.

نسخه پایدار (Stable): همانطور که از نام آن پیداست، از پشتیبانی امنیتی کاملی برخوردار است، اما متأسفانه با آخرین برنامه های نرم افزاری عرضه نمی شود. با این وجود، به دلیل پایداری و قابلیت اطمینان آن برای سرورهای تولیدی ایده آل است و همچنین برای کاربران دسکتاپی که امنیت شان مهم تر از به روز بودن نرم افزارهاستف گزینه مناسبی است. Debian Stable نسخه رایجی است که اکثر کاربران از آن استفاده می کنند.

نسخه آزمایشی (Debian Testing): آخرین نسخه های نرم افزاری را ارائه می کند که هنوز در نسخه پایدار پذیرفته نشده اند. مرحله Testing قبل از مرحله Stable قرار دارد. معمولاً نرم افزارهای موجود در این مرحله مشکلات فنی زیادی دارند. همچنین، گزینه های امنیتی در آن ها به سرعت به روزرسانی نمی شود.

توزیع ناپایدار (unstable distro): مرحله توسعه فعال دبیان است. این مرحله یک توزیع آزمایشی است و به عنوان یک پلتفرم عالی برای توسعه دهندگان عمل می کند. در این توزیع تا زمانی که به مرحله “تست” منتقل شوید، به طور فعال می توانید در کدها تغییر ایجاد کنید.

2- Gentoo

جنتو (Gentoo) توزیعی است که برای استفاده حرفه ای ساخته شده است که متخصصان در آن تصمیم می گیرند با چه بسته هایی از word go کار کنند. این توزیع، مناسب توسعه دهندگان، مدیران سیستم و شبکه می باشد. به این ترتیب، برای مبتدیان زیاد ایده آل نیست. جنتو برای کسانی پیشنهاد می شود که می خواهند درک عمیق تری از زیر و بم سیستم عامل لینوکس داشته باشند.

توزیع جنتو یک توزیع مناسب حرفه ای های لینوکس است

Gentoo با یک سیستم مدیریت پکیج معروف به نام portage عرضه می شود. توزیع های دیگری مانند Sabayon و Calculate Linux با جنتو سازگار بوده و مبتنی بر آن هستند. این توزیع بر پایه پایتون و بر اساس مجموعه پورت ها است. مجموعه های پورت، مجموعه  ای از پچ ها (Patches) و فایل های ایجاد شده توسط توزیع های مبتنی بر BSD مانند OpenBSD و NetBSD هستند.

3- توزیع لینوکس Ubuntu

اوبونتو (Ubuntu) که توسط Canonical ایجاد و نگهداری می شود، یکی از محبوب ترین توزیع های لینوکس است که افراد مبتدی، کاربران متوسط و حتی حرفه ای از آن در سراسر جهان استفاده می کنند. اوبونتو به طور خاص برای مبتدیان لینوکس یا کسانی که از مک و ویندوز در حال انتقال هستند طراحی شده است.

توزیع اوبونتو لینوکس

به طور پیش فرض Ubuntu با محیط دسکتاپ GNOME و برنامه هایی مانند Firefox، LibreOffice، برنامه های ویرایش تصویر مانند GIMP، پخش کننده موسیقی و ویدیو مانند Audacious و Rhythmbox عرضه می شود. Ubuntu اساس چندین توزیع دیگر لینوکس را تشکیل می دهد. برخی از توزیع های مبتنی بر اوبونتو 20.04 عبارتند از Lubuntu 20.04 LTS، Kubuntu 20.04 و Linux Mint 20.04 LTS (Ulyana).

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

4- Linux Mint

Linux Mint یک توزیع مبتنی بر Ubuntu است، که یکی از زیباترین و کاربر پسندترین توزیع ها برای کاربران می باشد. علیرغم اختلاف نظر پیرامون آخرین نسخه (Mint 20) که به طور پیش فرض پشتیبانی از snap را حذف کرده است، Mint همچنان یک توزیع لینوکس پایدار و قدرتمند است.

برای فعال کردن پشتیبانی snap، به سادگی دستورات زیر را اجرا کنید:

$ sudo rm /etc/apt/preferences.d/nosnap.pref
$ sudo apt update
$ sudo apt install snapd

اگر می خواهید یک دسکتاپ لینوکس سریع و پایدار برای انجام کارهای روزمره مانند گوش دادن به موسیقی، تماشای فیلم و حتی بازی داشته باشید، Mint بهترین توزیع برای شماست. نکته مهم بعدی اینکه Mint 20 تا سال 2025 پشتیبانی خواهد شد.

5- Red Hat Enterprise Linux

به اختصار RHEL گفته می شود و یک توزیع لینوکس است که برای اهداف سازمانی یا تجاری طراحی شده است. این توزیع یکی از جایگزین های منبع باز برای سایر سیستم های اختصاصی مانند مایکروسافت است. Red Hat با توجه به ثبات و گزینه های امنیتی، معمولاً یک انتخاب عالی برای محیط های سرور است.

شما می توانید به راحتی آن را روی سرورهای فیزیکی، محیط های مجازی مانند VMware، HyperV و همچنین در فضای ابری راه اندازی کنید. در جایی که کارایی، امنیت و ثبات در اولویت قرار دارند، RHEL توزیع ایده آلی برای انتخاب است.

توزیع RHEL لینوکس

6- CentOS

پروژه CentOS یک سیستم عامل رایگان است که هدف آن ارائه یک اکوسیستم منبع باز، قوی و قابل اعتماد است. بر اساس RHEL، CentOS یک جایگزین عالی برای Red Hat Enterprise Linux است زیرا دانلود و نصب آن رایگان است.

این توزیع به کاربران ثبات و قابلیت اطمینان RHEL را می دهد و در عین حال به آن ها امکان می دهد از به روز رسانی های امنیتی و ویژگی های رایگان لذت ببرند. CentOS 8 در میان علاقه مندان به لینوکس که می خواهند علاوه بر رایگان بودن از مزایای RHEL هم لذت ببرند، مورد پسند است.

7- Fedora

Fedora مدت زیادی است که به دلیل سادگی و برنامه های کاربردی که در اختیار تازه کاران قرار می دهد، به عنوان یکی از کاربر پسندترین توزیع ها شهرت دارد.

یک سیستم عامل قدرتمند و انعطاف پذیر، که برای رایانه های رومیزی و لپ تاپ ها، سرورها و حتی برای اینترنت اشیا طراحی شده است.

فدورا، درست مانند CentOS، بر پایه Red Hat است و در واقع یک محیط آزمایشی برای Red Hat قبل از انتقال به مرحله Enterprise است. به این ترتیب، معمولاً برای توسعه و یادگیری استفاده می شود و برای توسعه دهندگان و دانش آموزان مفید است.

فدورا از مدیر بسته (پکیج منیجر) DNF به عنوان مدیر بسته پیش فرض خود استفاده می کند و جدیدترین و بهترین بسته های نرم افزاری RPM را ارائه می دهد.

8- Kali Linux

Kali Linux یک توزیع لینوکس مبتنی بر Debian است که توسط امنیت تهاجمی توسعه یافته و نگهداری می شود که برای آزمایش نفوذ و انجام تحقیقات قانونی دیجیتال طراحی شده است. این ابزار با ابزارهای خارج از پکیج برای تست نفوذ مانند Nmap، Metasploit Framework، Maltego و Aircrack-ng عرضه می شود.

Kali Linux برای کارشناسان امنیت سایبری و کاربرانی است که می خواهند در تست نفوذ شرکت کنند مناسب است. در واقع، کالی گواهینامه های استاندارد صنعتی مانند تست نفوذ با Kali و Kali Linux Certified Professional را ارائه می دهد. Kali همچنین از مدیر بسته APT استفاده می کند.

9- Arch Linux

Arch Linux یک توزیع لینوکس سبک و انعطاف  پذیر است که برای کاربران پیشرفته یا کارشناسان لینوکس طراحی شده است که به نصب و سرویس  های در حال اجرا اهمیت زیادی می  دهند. این توریع به کاربران آزادی عمل می دهد تا سیستم را به دلخواه خود سفارشی یا پیکربندی کنند. به طور خلاصه، Arch برای کاربرانی طراحی شده است که واقعاً از جزئیات کار با لینوکس مطلع هستند.

Arch به طور مداوم به آخرین نسخه به روز می شود. همچنین از Pacman به عنوان مدیر بسته پیش فرض و از AUR (Arch User Repository) که انجمنی برای نصب بسته های نرم افزاری است، استفاده می کند.

10- OpenSUSE

پروژه OpenSUSE یک پروژه جامع و مدرن است که هم برای کاربران دسکتاپ و هم توسعه سازمانی و نیز برای اهداف آزمایشی مناسب است. این توزیع گزینه ای عالی برای توسعه دهنگان و مدیران سیستم است.

OpenSUSE برای مدیریت بسته های نرم افزاری به مدیر بسته Yast متکی است.

نتیجه گیری

در این مقاله به معرفی ده مورد از توزیع های لینوکس و کاربرد آن ها پرداختیم. تعداد توزیع ها بسیار زیاد است. در حال حاضر این تعداد به 600 توزیع آماده و 500 توزیع در حال توسعه می رسد. با این حال تمرکز ما بیشتر بر روی توزیع های پرکاربرد برای کاربران لینوکس بوده است.

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

در این مقاله در مورد یکی از خطاهای اصلی کرنل یعنی کرنل پنیک (Kernel Panic) خواهید خواند. حتی عبارت کرنل پنیک ممکن است باعث ایجاد استرس شود اما اگر دانش کافی در مورد آن داشته باشید می‌توانید آرامش خود را حفظ کنید. هر مدیر سیستم یا سیس ادمین (SysAdmin) حداقل چند بار با این موقعیت مواجه شده است، اما نصب مجدد سیستم عامل هیچگاه نباید گزینه اول شما برای حل مشکل کرنل پنیک باشد.

کرنل پنیک چیست؟

کرنل پنیک یکی از مشکلات متعددی است که ممکن است هنگام بوت سرور لینوکس اتفاق بیفتد. به زبان ساده، کرنل پنیک زمانی اتفاق می‌افتد که کرنل بارگذاری نشده و سرور بوت نشود. در پروسه بوت سرور، کرنل به صورت مستقیم بارگذاری نمی‌شود، ابتدا initramfs در حافظه رم لود شده و به کرنل vmlinuz اشاره می‌کند، سپس سیستم عامل بوت می‌شود. اگر initramfs به هر دلیلی (مثل آپدیت یا نصب پکیج) پاک یا خراب شود، با کرنل پنیک مواجه می‌شویم.

کرنل پنیک

هنگام پروسه بوت لینوکس، ابتدا گراب بعد از mbr لود می‌شود. سپس کرنل باید در حافظه رم بارگذاری شود تا سیستم عامل استارت شود، اما کرنل روی فضای ذخیره سازی (هارد) قرار دارد (/boot/vmlinuz) که هنوز مونت نشده است. قبل از مونت شدن هیچ فایلی قابلیت اجرا ندارد، حتی کرنل. برای حل این مشکل ابتدا initramfs/initrd در رم بارگذاری شده و پارتیشن /boot را بصورت فقط خواندنی () مونت می‌کند. در مرحله بعد دیسک در پارتیشن / مونت شده و پروسه ادامه پیدا می‌کند.

در این پروسه فایل‌های کرنل و init file system که در آدرس زیر قابل مشاهده هستند از اهمیت بالایی برخوردارند.

# ls -lrth /boot/

کرنل پنیک

چرا کرنل پنیک انفاق میفتند؟

در مواقع زیر کرنل پنیک خواهیم داشت:

  1. اگر فایل initramfs خراب شده باشد.
  2. اگر فایل initramfs به درستی برای کرنل ساخته نشده باشد (هر کرنل، فایل initramfs مربوط به خود را دارد).
  3. اگر کرنل جدید پشیبانی نشود یا به درستی نصب نشده باشد.
  4. اگر آپدیت‌های اخیر باگ داشته باشد.
  5. اگر ماژول جدید نصب شده باشد اما ایمیج initrd با آخرین ماژول نصب شده ساخته نشده باشد.

عیب یابی کرنل پنیک

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

عیب یابی کرنل پنیک

برای حل مشکل، مجددا سیستم را ریبوت کرده و این بار در لیست گراب گزینه ایمیج rescue را انتخاب کنید. سیستم عامل شما بوت می‌شود.

عیب یابی کرنل پنیک

سپس به فولدر /boot بروید. همینطور که مشاهده می‌کنید فایل initramfs فقط برای rescue وجود دارد و برای کرنل مورد نظر شما وجود ندارد. برای ساخت این فایل برای کرنل، ابتدا با دستور زیر از نسخه کرنل خود مطمئن شوید.

#uname -r

سپس با دستور زیر فایل initramfs جدید را برای کرنل خود بسازید.

#dracut -f <initrd-image> <kernal-version>
عیب یابی کرنل پنیک

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

عیب یابی کرنل پنیک

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

#mkinitrd --force <initrd-Image> <Kernel-Version>

کرنل پنیک سرور هنگام کار

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

برای یک سرور عملیاتی (production) انتظار می‌رود تا در صورت کرنل پنیک، سیستم به صورت خودکار ریبوت شود؛ با امید اینکه مجددا بدون ارور بوت شده و در کمترین زمان به حالت عملیاتی برگردد. اما برای یک سرور غیرعملیاتی یا staging شاید رغبتی به ریبوت نباشد، بلکه بررسی خروجی ترمینال کمکی به فهمیدن علت کرنل پنیک کمک کند.

رفتار سرور هنگام کرنل پنیک با مقدار متغیر kernel.panic در /etc/sysctl.conf کنترل می‌شود. مقدار این متغیر را می‌توانید با دستور زیر مشاهده کنید. این مقدار به صورت پیش‌فرض صفر است که به معنی عدم راه اندازی مجدد سرور هنگام کرنل پنیک است.

# cat /proc/sys/kernel/panic

0

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

# echo "30" > /proc/sys/kernel/panic
# cat /proc/sys/kernel/panic
30

اگر نیاز به دامپ کرش کرنل (Kernel Crash Dump) دارید، مقدار این متغیر را به اندازه کافی زیاد انتخاب کنید تا حافظه شما بطور کامل دامپ شود. ۳۰ ثانیه برای سرورهایی با حافظه نسبتا متوسط مناسب است.

تغییرات مذکور موقت بوده و بعد از ریبوت سرور به مقدار پیش فرض برمی‌گردد. برای ذخیره تغییرات بصورت دائمی، مقدار را در فایل sysctl.conf مشخص کنید.

# echo "kernel.panic = \"30\""  >> /etc/sysctl.conf

نتیجه گیری

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

Isof

این دستور لیست فایل‌های مرتبط با برنامه شما را باز می‌کند. بر روی برخی از ماشین‌های لینوکس بایستی بایستی Isof‌ را با استفاده پکیج آن نصب کنید. در محیط لینوکس، تقریبا تمام تعاملات با سیستم به صورت فایل انجام می‌شود. در نتیجه اگر برنامه شما در یک فایل نوشته شود، دستور Isof آن تعامل را به عنوان یک فایل نشان می‌دهد. همچنین مانند دستور netstat می‌توانید از این دستور برای چک کردن پرت‌هایی که در حال listen‌ هستند استفاده کنید. برای مثال اگر می‌خواهید چک کنید که آیا پرت ۸۰ در حال استفاده است یا حیر می‌توانید از این دستور برای بررسی آن استفاده کنید. در زیر باهم یکی از موارد استفاده این دستور را می‌بینیم.

df

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

آپشن -h اطلاعاتی را چاپ می‌کند که اصطلاحا در فرمت human-readable هستند. به طور پیش‌فرض، همان‌طور که می‌بینید df همه نتایج تحت دایرکتوری روت را لیست می‌کند؛ اما می‌توانید نتایج را با ارائه دایرکتوری مد نظر خودتان محدود کنید. مثل: (df -h/home)

du

برای بازیابی اطلاعات دقیق تر در مورد این که کدام فایل‌ها از فضای دیسک در یک دایرکتوری استفاده می‌کنند می‌توانید از این فرمان استفاده کنید. اگر می‌خواهید متوجه شوید که کدام یک از لاگ‌ها بیشترین فضا را در دایرکتوری /var/log اشغال کرده است می‌توانید از دستور du به صورت زیر استفاده کنید.

id

برای چک کردن این که کدام کاربر، کدام برنامه را اجرا کرده است می‌توانید از دستور id‌ استفاده کنید تا هویت کاربر را برگرداند. مثال زیر از vagrant برای تست و ایزوله کردن محیط توسعه استفاده می‌کند. بعد از این که وارد vagrant می‌شوید اگر بخواهید سرور HTTP Apache را نصب کنید، سیستم بیان می‌کند که نمی‌توانید فرمان را به صورت روت اجرا کنید. برای چک کردن یوزر خود بایستی از دستور فوق استفاده کنید و توجه داشته باشید که بایستی به صورت یوزر vagrant و در گروه vagrant باشید.

$ dnf -y install httpd
Loaded plugins: fastestmirror
You need to be root to perform this command.
$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

chmod

وقتی که باینری اپلیکیشن خود را برای اولین بار اجرا می‌کنید ممکن است با پیام permission denied مواجه شوید. همان طور که در پیام زیر در مورد ls می‌بینید می‌توانید پرمیشن برنامه خود را چک کنید. 

$ ls -l
total 4
-rw-rw-r--. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

این موضوع نشان‌دهنده این است که شما حق اجرا برای اجرای باینری را ندارید. chmod می‌تواند پرمیشن‌ها را به گونه‌ای تغییر دهد که یوزر قادر باشد باینری را اجرا کند. 

$ chmod +x test.sh
[[email protected] ~]$ ls -l
total 4
-rwxrwxr-x. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

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

dig/nslookup

نیم سرور هر دامین به resolve کردن هر url به تعدادی از سرورهای اپلیکیشن کمک می‌کند. هرچند ممکن است با یک url ست نشده (resolve) برخورد کنید که برای کانکشن برنامه شما مشکل ایجاد کند. برای مثال تصور کنید که میخواهید از هاست برنامه خود از طریق url mydatabase دسترسی پیدا کنید و با خطای cannot resolve مواجه می‌شوید. در این صورت برای عیب یابی بایستی از دستور dig یا nslookup‌ استفاده کنید تا ببینید که مشکل چیست.
 

$ nslookup mydatabase
Server:   10.0.2.3
Address:  10.0.2.3#53
** server can't find mydatabase: NXDOMAIN

 در بالا می‌بینیم که استفاده از nslookup نشان میدهد که mydatabase‌ قادر به resolve شدن نیست. استفاده از دستور dig‌ نیز پیامی مشابه را به همراه دارد. 

$ dig mydatabase
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> mydatabase
;; global options: +cmd
;; connection timed out; no servers could be reached

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

firewall-cmd

به طور سنتی، فایروال‌ها در لینوکس با استفاده از فرمان iptables پیکربندی شده بودند. این در حالی است که اکنون تا حد زیادی با nftables جایگزین شده اند. این دستور کمک می‌کند که یک سری قانون تنظیم کنید که کنترل ترافیک شبکه سیستم شما را تنظیم کند. این قوانین می‌توانند به زون‌های مختلف تقسیم شوند تا شما بتوانید به راحتی از یک سری قوانین به یک سری قوانین دیگر مهاجرت کنید. استفاده از این دستور و آپشن‌های مربوط به آن به شما کمک می‌کنند که یک جمله human-readable بسازید. برای مثال برای این که ببینید در حال حاضر در کدام زون هستید: 
 

 $ sudo firewall-cmd --get-active-zones``
corp
  interfaces: ens0
dmz
  interfaces: ens1

در این مثال، کامپیوتر شما دو دیوایس شبکه دارد که یکی از آن‌ها به زون corp تخصیص یافته و دیگری به dmz. برای این که ببینید هر زون چه مجوزهایی میدهد میتوانید مانند زیر عمل کنید: 

$ sudo firewall-cmd --zone corp --list-all
corp
  target: default
  interfaces: ens0
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
[...]

اضافه کردن سرویس هم به آسانی دستور زیر است: 

$ sudo firewall-cmd --add-service http --permanent
$ sudo firewall-cmd --reload 

Firewall-cmd‌ طوری طراحی شده که آسان باشد و مجموعه وسیعی از سرویس های از قبل طراحی شده را در بگیرد.  

 sestatus

شما معمولا SELinux را در یک میزبان کاربردی که توسط یک شرکت مدیریت می‌شود، پیدا می‌کنید. SELinux از دسترسی با حداقل امتیاز بر روی یک هاست پشتیبانی می‌کند که این موضوع از اجرا شدن فایل‌های احتمالی آلوده بر روی سیستم جلوگیری خواهد کرد. در برخی شرایط یک برنامه ممکن است نیاز دسترسی به یک فایل ويژه را داشته باشد اما ممکن است با خطا مواجه شود. برای این که چک کنید که آیا SELinux برنامه شما را بلاک کرده است یا خیر، میتوانید از tail و grep استفاده کنید و دنبال یک پیام با عنوان denied در پوشه /var/log/audit بگردید. 
در غیر این صورت میتوانید با استفاده از sestatus استفاده کنید و ببینید که آیا در قسمت مورد نظر SELinux فعال است یا خیر. 

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

 history

وقتی که همه فرمان‌های لازم را برای آزمایش و عیب‌یابی بررسی می‌کنید ممکن است موارد مفید را از قلم انداخته باشید هر shell یک سری دستور تحت عنوان history command دارد که تاریخچه دستوراتی که از ابتدای هر session اجرا کرده اید را نشان می‌دهد. می‌توانید از history استفاده کرده تا دستوراتی که در طول عیب یابی بررسی کرده اید را ببینید. 

$ history
    1  clear
    2  df -h
    3  du

حال اگر بخواهیم یکی از دستورات گذشته را اجرا کنیم اما نخواهیم دوباره آن را تایپ کنیم چه؟ در اینجا از علامت ! قبل از شماره دستور استفاده می‌کنیم تا دوباره اجرا شود. 

 top

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

اگر به دنبال افزایش اطلاعات خود به عنوان یک ادمین سرورهای لینوکس هستید، این ۲۰ دستور لینوکس به کارتان خواهد آمد. در این بخش از این مقاله ابتدا ده مورد از این دستورها را با هم بررسی می‌کنیم.
هم‌اکنون در دنیایی که مملو از ابزارهای جدید و محیط‌های نرم‌افزاری مختلف است، برای هر مهندس نرم‌افزار نیاز به یادگیری فرمان‌های اصلی که در حیطه سرور لینوکس استفاده می‌شود امری اساسی است. یک سری دستورها و بسته‌های خاص می‌توانند به کمک توسعه دهندگان آمده و در بحث عیب‌یابی و بهینه سازی برنامه‌ها کمک بزرگی باشند. اگر یک توسعه‌دهنده تازه وارد به دنیای لینوکس هستید و یا می‌خواهید خودتان برنامه‌های‌تان را مدیریت کنید، ده دستورالعمل زیر می‌توانند به کمک شما بیایند. 
این دستورها هم‌چنین می‌توانند در مواردی نظیر توصیف عیب‌یابی سرور به شما کمک کنند؛ چرا که برای مثال ممکن است یک برنامه به صورت محلی کار کند اما به صورت ریموت خیر. از این فرمان‌های می‌توانید در محیط لینوکس، ماشین‌های مجازی و همین‌طور container‌ها استفاده کنید. 
 

Curl 


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

$ curl -I -s myapplication:5000
HTTP/1.0 500 INTERNAL SERVER ERROR

آپشن -l اطلاعات هدر را نشان داده و آپشن -s response body‌ را ساکت می‌کند. اندپوینت دیتابیس را از دسکتاپ محلی‌تان چک کنید: 

$ curl -I -s database:27017
HTTP/1.0 200 OK

پس مشکل چه می‌تواند باشد؟ در این مرحله چک می‌کنیم که آیا برنامه‌مان به سایر نقاط پایانی غیر از دیتابیس دسترسی دارد یا خیر.

$ curl -I -s https://opensource.com
HTTP/1.1 200 OK

به نظر می‌رسد که مشکلی در این‌جا وجود ندارد؛ حال سعی می‌کنیم از میزبان برنامه به پایگاه داده دسترسی پیدا کنیم: 

$ curl database:27017
curl: (6) Couldn't resolve host 'database'

خطای بالا نشان می‌دهد که برنامه شما نمی‌تواند به پایگاه داده وصل شود چرا که نشانی اینترنتی پایگاه داده در دسترس نیست و یا اینکه میزبان nameserver ندارد که بتواند مشکل را حل کند. 

 python -m json.tool/jq

بعد از اینکه مشکل کرل را حل می‌کنید، ممکن است خواندن خروجی API دشوار باشد. برخی اوقات ممکن است بخواهید خروجی JSON چاپ کنید تا یک ورودی خاص را پیدا کنید. پایتون در این‌جا یک کتابخانه پیش‌ساخته دارد که به کمک‌تان خواهد آمد. می‌توانید از ابزار python -m json.tool استفاده کنید. برای استفاده از ماژول JSON پایتون خروجی یک فایل JSON را به کمک فرمان python -m json.tool، پایپ کنید. 
 

$ cat test.json
{"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]}

برای استفاده از از کتاب‌خانه پایتون، خروجی را به ماژول -m پایپ کنید. 

$ cat test.json | python -m json.tool
{
    "properties": {
        "age": {
            "description": "Age in years",
            "minimum": 0,
            "type": "integer"
        },
        "firstName": {
            "type": "string"
        },
        "lastName": {
            "type": "string"
        }
    },
    "required": [
        "firstName",
        "lastName"
    ],
    "title": "Person",
    "type": "object"
}

برای این که از ویژگی‌های بیشتری در پارس کردن JSON بهره ببرید می‌توانید jq نصب کنید. jq گزینه‌هایی را برای استخراج مقادیر ویژه از ورودی JSON فراهم می‌کند. 

$ cat test.json | jq
{
  "title": "Person",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "age": {
      "description": "Age in years",
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "firstName",
    "lastName"
  ]
}

LS


دستور ls لیست فایل‌ها در یک دایرکتوری را برای‌تان نمایش می‌دهد. ادمین‌های دیتابیس و سرور لینوکس معمولا به مراتب از این دستور استفاده می‌کنند. این دستور در کنار این که به شما کمک می‌کند تا فایل‌های‌تان را پیدا کنید، به شما کمک می‌کند تا دسترسی‌های خود را نیز مرور کنید. 
در مثال پایین می‌بینید که نمی‌توانید myapp‌ را اجرا کنید و این به خاطر یک مشکل دسترسی است. وقتی با استفاده از دستور ls -l‌ دسترسی ها را بررسی می‌کنید متوجه خواهید شد که از یک متغیر “x” استفاده نمی‌شود و فقط دسترسی read‌ و write وجود دارد. 

$ ./myapp
bash: ./myapp: Permission denied
$ ls -l myapp
-rw-r--r--. 1 root root 33 Jul 21 18:36 myapp

tail


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

می‌توانید از tail -f‌ استفاده کنید تا لاگ‌های آپاچی را دنبال کرده و درخواست‌های‌تان را به صورت real-time ببنید. 
-f نشان‌دهنده ویژگی follow است که فایل‌های لاگ را در حالی که نوشته می‌شوند به صورت هم‌زمان نشان می‌دهد. اما اگر نمی‌خواهید به صورت  real-time لاگ را دنبال کنید، می‌توانید از tail و آپشن -n استفاده کنید تا ۱۰۰ خط آخر را ببینید. 
 

$ tail -n 100 /var/log/httpd/access_log

 cat


دستور کت فایل‌ها را به هم پیوست داده و پرینت می‌کند. شما می‌توانید از این دستور برای چک کردن محتوای پیش‌نیازهای هر فایل استفاده کنید و یا ورژن اپلیکیشنی که در حال حاضر در اختیار دارید را چک کنید. 

$ cat requirements.txt
flask
flask_pymongo

 grep


دستور گرپ وظیفه جستجو بین الگوهای مختلف را در اختیار دارد. اگر به دنبال یک الگوی خاص در خروجی یک دستور دیگر هستید می‌توانید از گرپ استفاده کنید. از این دستور برای جستجو بین فایل‌های لاگ، پردازش‌های خاص و … استفاده کنید. 

$ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start
01-Jul-2017 18:03:47.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms

 ps


دستور ps بخشی از پکیج کاربردی procps-ng ست که از دستورهای مختلفی برای جستجو بین آیدی پروسه‌ها و وضعیت یک پردازش پشتیبانی می‌کند. از این دستور برای تعیین کردن وضعیت یک برنامه در حال اجرا و یا تایید کردن یک پردازش استفاده کنید. برای مثال اگر می‌خواهید وب‌سرور تامکت در حال اجرای یک سرور را چک کنید، می‌توانید از این دستور و آپشن‌هایی که در اختیارتان می‌گذارد برای نگهداری آیدی پروسه تام‌کت استفاده کنید. 

$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  2 18:55 ?        00:00:02 /docker-java-home/jre/bi
root        59     0  0 18:55 pts/0    00:00:00 /bin/sh
root        75    59  0 18:57 pts/0    00:00:00 ps -ef

برای در اختیار داشتن امکانات بیشتر، می‌توانید دستور ps و گرپ را باهم دیگر پایپ کنید.

$ ps -ef | grep tomcat
root         1     0  1 18:55 ?        00:00:02 /docker-java-home/jre/bi

env


دستور بالا به شما این امکان را می‌دهد که متغیرهای مختلف را پرینت کرده و یا تنظیم کنید. در طول عیب‌یابی ممکن است چک کردن متغیرهای مختلف به شما کمک کند تا مشکل برنامه‌تان را پیدا کنید. در مثال پایین این دستور برای چک کردن متغیرهای یک محیط (هاست برنامه) استفاده شده است. 

$ env
PYTHON_PIP_VERSION=9.0.1
HOME=/root
DB_NAME=test
PATH=/usr/local/bin:/usr/local/sbin
LANG=C.UTF-8
PYTHON_VERSION=3.4.6
PWD=/
DB_URI=mongodb://database:27017/test

 netstat

دستور نت‌استت، وضعیت شبکه را نشان می‌دهد. این دستور پرت‌های یک شبکه که در حال استفاده هستند و کانکشن‌های آن‌ها را نشان می‌دهد. هرچند که دستور netstat به طور پیش فرض بر روی لینوکس وجود نداشته و اگر بخواهید بایستی آن را نصب کنید. هم‌چنین می‌توانید با استفاده از پکیج net-tools‌ از آن استفاده کنید. 
به عنوان یک توسعه دهنده که به طور محلی (لوکال) کار می‌کند ممکن است خطایی دریافت کنید که یک پرت یا آدرس در حال استفاده است. استفاده از netstat در تصویر پایین نشان می‌دهد که پرت ۸۰ توسط سرور آپاچی در حال استفاده است. 

IP


اگر آدرس آی‌پی بر روی سرور لینوکس شما کار نمی‌کند بایستی با استفاده از iproute2 آن را نصب کنید. استفاده از آدرس آی‌پی برای تایید آدرس Ip هاست استفاده می‌شود؛ برای مثال زمانی که کانتینر شما به شبکه وصل است، آدرس آی‌پی نشان می‌دهد که کدام اینترفیس به کدام شبکه متصل است. 
یک تست ساده در این زمینه این است که از دستور ip address استفاده کنید تا آدرس آی‌پی هاست را پیدا کنید. مثال پایین نشانگر این موضوع است. 

$ ip address show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether d4:3b:04:9e:b2:c2 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.3/27 brd 10.1.1.31 scope global dynamic noprefixroute eth0
       valid_lft 52072sec preferred_lft 52072sec

معرفی

احراز هویت دو مرحله‌ای یا همان 2FA یک روش احراز هویتی است که برای احراز نیاز به بیشتر از یک فاکتور هویتی دارد. احراز هویت دو عاملی به این صورت است که هر کاربر برای ورود به یک اکانت علاوه بر یوزرنیم و پسورد خود نیاز به یک عامل دیگر برای ورود به هر اکانت دارد.

به طور کلی احراز هویت دو عاملی از کاربر اطلاعاتی نظیر موارد زیر می‌گیرد:

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


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

در این مطلب ما قصد داریم تا  نحوه فعال کردن احراز هویت دو عاملی را برای را برای اوبونتو ۱۸.۰۴ نشان دهیم. این فرآیند با ماژول PAM گوگل فعال خواهد شد. از آنجا که این مراحل را برای حالت non-root انجام خواهید داد، در صورت از دست خارج شدن سیستم عامل، هنوز قادر خواهید بود به آن دسترسی داشته باشید. این آموزش هم‌چنین هم برای لینوکس سرور و هم برای نسخه دسکتاپ قابل پیاده‌سازی است.

پیش نیازها

قبل از شروع به موارد زیر احتیاج خواهید داشت:

اوبونتو ۱۸.۰۴ دسکتاپ یا سرور
یک اپلیکیشن برای فرآیند احراز هویت دو عاملی که بر روی تلفن همراه‌تان نصب شده است مانند Google Authenticator


قدم اول – نصب ماژول گوگل PAM

برای راه اندازی 2fa بر روی اوبونتو ۱۸.۰۴ بایستی ماژول گوگل PAM‌ را نصب کنید. این ماژول مکانیزم احراز هویت را برای لینوکس فعال می‌کند. ما از ماژول PAM‌ گوگل استفاده می‌کنیم تا بتوانیم کاربر را با استفاده از کدهای تولید شده در برنامه احراز هویت دو عاملی، احراز هویت کنیم.

در ابتدا به صورت non-root لاگین کنید:

ssh [email protected]_server_ip

منابع اوبنتو را آپدیت کرده تا آخرین ورژن auth‌ را دانلود کند:

sudo apt-get update

حال که منابع‌تان آپدیت شده است، آخرین ورژن PAM را بگیرید:

sudo apt-get install libpam-google-authenticator

پکیج بالا پیش نیاز خاصی نداشته و نصب آن تنها چند ثانیه وقت خواهد گرفت. در قدم بعدی راه اندازی 2FA برای یوزر را خواهیم شناخت. 

قدم دوم – راه اندازی احراز هویت دو عاملی برای کاربر

حال که ماژول PAM را نصب کرده اید بایستی آن را اجرا کنید تا یک QR کد برای کاربر لاگین شده تولید شود. این دستور کد را اجرا می‌کند اما محیط اوبونتو تا زمانی که در ادامه این آموزش آن را فعال نکرده‌اید از شما درخواست 2FA‌ نخواهد داشت. 
دستور زیر را اجرا کنید تا ماژول PAM اجرا و راه‌اندازی شود. 
 

google-authenticator

دستور بالا در ادامه از شما چند سوال خواهد پرسید. اولین سوال در مورد بر پایه زمان بودن توکن‌ها خواهد بود. توکن‌های time-based به این صورت عمل می‌کنند که بعد از مدت کوتاهی (برای مثال ۳۰ ثانیه) منقضی خواهند شد. مزیت توکن‌های بر پایه زمان، امن بودن آن‌ها ست و بیشتر نرم‌افزارهای پیاده‌سازی نیز از آن‌ها استفاده می‌کنند. در هر صورت شما مختارید که هر آپشنی می‌خواهید را انتخاب کنید ولی ما در ادامه جواب بلی را برای سوال پایین انتخاب می‌کنیم. 

Do you want authentication tokens to be time-based (y/n) y

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

•    یک QR کد – این کیوآر را بایستی توسط اپلیکیشن Auth خود اسکن کنید. زمانی که این کار را انجام دهید، دستگاه‌تان آن را شناسایی کرده و پس از آن هر ۳۰ ثانیه یک کد جدید به شما خواهد داد. 

•    کلید secret:  این یک روش جایگزین برای پیکربندی برنامه احراز هویت دو عاملی است. اگر از اپلیکیشنی استفاده می‌کنید که از کد QR پشتیبانی نمی‌کند، می‌توانید از کلید رمز برای پیکربندی استفاده کنید. 

•    کد تایید: این اولین کد شش رقمی است که تولید می‌شود.

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

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

Do you want me to update your "~/.google_authenticator" file (y/n) y

سوال بعدی این است که آیا می‌خواهید کدهای اپلیکیشن auth بیشتر از یک بار نیز قابل استفاده باشند یا خیر. به طور پیش فرض شما فقط یک بار می‌توانید از هر کد استفاده کنید. در واقع امن‌ترین راه این است که از هر کد یک بار استفاده کنید بنابراین به سوال بعدی جواب مثبت خواهیم داد. 

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

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

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n

سوال آخر نیز این مورد را بررسی می‌کند که آیا می‌خواهید نرخ ورود به سیستم را محدود کنید یا خیر. این کار به بیش از سه ثبت موفق اجازه ورود نخواهد داد. این مورد را نیز تایید می‌کنیم. 

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n

قدم سوم – فعال کردن 2FA بر روی اوبونتو


هم اکنون ماژول PAM‌ گوگل کدهای احراز هویت تولید می‌کند، اما سیستم‌عامل هنوز نمی‌داند که آیا لازم است از این کدها به عنوان بخشی از احراز هویت کاربر استفاده کند یا خیر. در این مرحله از پیکربندی، اوبونتو را برای نیاز به توکن‌های به روزرسانی خواهیم کرد. 
در این مقطع دو گزینه پیش رو داریم:
•    می‌توانیم تنظیمات را به گونه‌ای انجام دهیم که یوزر با هر بار ورود به سیستم و هر بار که درخواست Sudo دارد، نیاز به فاکتور دو عاملی داشته باشد. 

•    می‌توانیم تنها در هنگام ورود به سیستم احتیاج به فاکتور دو عاملی داشته باشیم و درخواست Sudo تنها نیاز به پسورد داشته باشد. 

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

درخواست 2FA برای لاگ این و درخواست‌های Sudo

برای این کار بایستی آدرس etc/pam.d/common-auth را با اضافه کردن یک خط به انتهای فایل آن ویرایش کنید. برای این کار فایل common-auth را با استفاده از دستور زیر باز کنید. 

sudo nano /etc/pam.d/common-auth

سپس این خط را به آخر فایل اضافه کنید:

auth required pam_google_authenticator.so nullok

این خط، از کاربرانی که 2FA خود را فعال کرده‌اند خواهد خواست که برای ورود به سیستم از کد تایید استفاده کنند، حال کاربرانی که هنوز این کار را انجام نداده‌اند می‌توانند تنها با نام کاربری و رمز عبور خود وارد سیستم شوند.  
فایل قبلی را ذخیره کرده و ببندید. 

درخواست 2FA فقط برای ورود به سیستم

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

sudo nano /etc/pam.d/common-session

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

auth required pam_google_authenticator.so nullok

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

قدم چهارم – تست کردن 2FA

در قدم قبلی پیکربندی 2FA را به گونه‌ای انجام دادیم که هر ۳۰ ثانیه یک کد تولید کند. در این قدم می‌خواهیم 2FA برای ورود به محیط اوبونتو را تست کنیم.
در ابتدا از اوبونتو خارج شده و دوباره وارد شوید:

ssh [email protected]_server_ip

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

:Password

 پسورد خود را وارد کرده و سپس از شما درخواست کد تایید احراز هویت دو عاملی خواهد شد:

:Verification code

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

[email protected]_server_ip: ~#

 اگر 2FA فقط برای لاگین‌ها فعال شده باشد، از شما درخواست دیگری برای وارد کردن 2FA نخواهد شد تا اینکه اصطلاحا نشست (session) منقضی شود.
ولی اگر روش دیگر را انتخاب کرده باشید هر دفعه که درخواست لاگین و یا درخواست Sudo دارید بایستی وارد کنید:

[email protected]_server_ip: ~# sudo -s

sudo password for sammy:

Verification code:
[email protected]_server_ip:

در این مرحله بایستی به نتیجه مورد انتظار جهت ورود به وسیله 2FA رسیده باشید؛ اما اگر این طور نیست به مرحله سوم آموزش بازگردید و فایل‌های اوبونتو را دوباره ویرایش کنید.  

قدم پنجم – جلوگیری از قفل شدن

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

•    کدهای بازیابی خود را در محلی امن نگهداری کنید که در خارج از محیط 2FA نیز در دسترس باشند.

اگر به هر دلیلی به گزینه‌های پشتیبانی بالا دسترسی ندارید می‌توانید برای بازیابی و دسترسی به 2FA خود راه دیگری را اتخاذ کنید. 

قدم ششم – بازیابی قفل 2FA بر روی محیط لوکال

اگر به دستگاه دسترسی فیزیکی دارید، می‌توانید برای غیر فعال کردن 2FA، دستگاه را بوت کرده و به حالت rescue mode ببرید. بایستی برخی تنظیمات در گراب خود را ویرایش کرده تا وارد rescue mode شوید:
برای دسترسی به گراب بایستی دستگاه خود را در ابتدا ریبوت کنید:

reboot

حالا کلید e را فشار دهید تا به تنظیمات پیکربندی گراب وارد شوید:

در فایلی که می‌بینید، پایین‌تر آمده تا خطی را ببینید که با Linux شروع شده و به vt_handoff‌ ختم می‌شود. به آخر این خط رفته و system.unit=rescue.target را اضافه کنید. مطمئن شوید که یک فاصله بین vt_handoff و system.unit=rescue.target گذشته باشید. این دستور به سیستم اوبونتوی شما می‌گوید که وارد حالت rescue‌ شود. 

اگر همه تغییرات را انجام داده‌اید فایل بالا را با استفاده از کلید ctrl+x ذخیره کنید. اوبونتوی شما ریبوت شده و یک صفحه command line‌ خواهید دید؛ Enter‌ بزنید تا وارد حالت rescue‌ شوید:

زمانی که به rescue mode وارد شدید، فایل پیکربندی Google Auth را باز کنید. این فایل در دایرکتوری هوم دستگاه شما قرار دارد:

nano /home/sammy/.google-authenticator

اولین خط در این فایل کلید رمز یوزر شما خواهد بود، که برای پیکربندی اپلیکیشن auth‌ شما استفاده شده است. حال دو انتخاب داریم:
•    می‌توانیم کلید سکرت را کپی کرده و اپلیکیشن auth را دوباره کانفیگ کنیم.
•    اگر می‌خواهید به طور کلی از ابتدا شروع کنید میتوانید /.google-authenticator را پاک کرده تا احراز هویت دو عاملی برای این یوزر غیر فعال شود. بعد از اینکه دوباره به صورت کاربر non-root‌ وارد شوید، میتوانید 2FA را دوباره کانفیگ کرده و یک کلید جدید دریافت کنید. 

قدم هفتم – بازیابی قفل 2FA به وسیله یک محیط ریموت

اگر non-root sudoer‌ شما که از یک ماشین ریموت استفاده می‌کند،‌ به مشکل بالا برخورده است، می‌توانید از یوزر root استفاده کنید تا 2FA را به صورت موقت غیرفعال کنید.
در ابتدا به صورت root به ماشین وارد شوید:

ssh [email protected]_server_ip

زمانی که وارد شدید، فایل تنظیمات Google Auth را که در دایرکتوری یوزر قفل شده قرار دارد را باز کنید:

sudo nano /home/sammy/.google_authenticator

اولین خط در این فایل، کلید سکرت کاربر است که بایستی آن را با یک نرم افزار authenticator کانفیگ کنید. حالا دو انتخاب داریم:
•    اگر می‌خواهید از یک دستگاه جدید استفاده کنید میتوانید از کلید سکرت استفاده کنید تا اپلیکیشن احراز هویت را مجدد پیکربندی کنید. 

•    اگر می‌خواهید مجدد از ابتدا شروع کنید بایستی فایل /home/Sammy/.google_authenticator را پاک کنید تا 2FA برای این یوزر غیر فعال شود. 

بعد از اینکه دوباره به صورت یوزر non-root‌ وارد شوید، می‌توانید مجدد 2FA را پیکربندی کنید و یک کلید سکرت جدید دریافت کنید.


نتیجه

در این آموزش یاد گرفتیم که 2FA را بر روی اوبونتو ۱۸.۰۴ راه‌اندازی کنیم. با راه اندازی احراز هویت در واقع یک لایه امنیتی جدید بر روی اکانت خود اضافه کردید و سیستم‌تان از امنیت بیشتری برخوردار خواهد بود و علاوه بر اعتبارسنجی سنتی، حال یک کد اضافی نیز برای ورود به سیستم در اختیار دارید. مواردی که انجام دادیم از حمله مهاجمان به دستگاه شما جلوگیی خواهد کرد و دیگر کسی قادر نخواهد بود بدون کد جدید وارد حساب شما شود.