٪80 تخفیف

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

دسته‌بندی: برچسب: تاریخ به روز رسانی: 6 دی 1404 تعداد بازدید: 448 بازدید
ویژگی های محصول: پشتیبانی واتساپ

قیمت اصلی: ۲,۰۰۰,۰۰۰ تومان بود.قیمت فعلی: ۴۰۰,۰۰۰ تومان.

torobpay
هر قسط با ترب‌پی: ۱۰۰,۰۰۰ تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.

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


بخش 1: مقدمه‌ای بر مدیریت سرور لینوکس

  • معرفی لینوکس و نقش آن در مدیریت سرورها.
  • تفاوت بین توزیع‌های مختلف لینوکس (Debian, Red Hat, Ubuntu, CentOS, Fedora).
  • ابزارها و تکنولوژی‌های مورد نیاز برای مدیریت سرورهای لینوکسی.

بخش 2: نصب و پیکربندی سرور لینوکس

  • انتخاب توزیع مناسب برای سرور.
  • نصب لینوکس روی سرور فیزیکی یا مجازی.
  • پیکربندی اولیه سرور (تنظیم hostname، IP Address، DNS، و Default Gateway و …)
    • تنظیمات اولیه امنیتی (Firewall و SELinux).

بخش 3: مدیریت کاربران و دسترسی‌ها

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

بخش 4: مدیریت سرویس‌ها و فرآیندها

  • بررسی و مدیریت سرویس‌ها با systemctl و service.
  • نظارت و مدیریت فرآیندها با ps, top, htop, و kill.
  • راه‌اندازی سرویس‌های ضروری مانند:
    • SSH, FTP, و NTP.

بخش 5: مدیریت فایل‌سیستم و فضای ذخیره‌سازی

  • ساختار فایل‌سیستم در لینوکس.
  • مدیریت پارتیشن‌ها و درایوها با استفاده از ابزارهایی مانند fdisk, parted, و lsblk.
  • استفاده از LVM (Logical Volume Manager).
  • مانیتورینگ و مدیریت فضای دیسک با df, du, و ncdu.
  • کار با سیستم‌های فایل توزیع‌شده (NFS, Samba).

بخش 6: مدیریت شبکه

  • تنظیمات شبکه در لینوکس:
    • تنظیم دستی IP، Subnet Mask و Gateway.
    • استفاده از NetworkManager و nmcli.
  • مدیریت و عیب‌یابی اتصال شبکه با ابزارهایی مانند:
    • ping, traceroute, netstat, و ip.
  • پیکربندی سرویس های شبکه:
    • DHCP, DNS, و Proxy.

بخش 7: نصب و مدیریت نرم‌افزارها

  • استفاده از ابزارهای مدیریت بسته‌ها:
    • apt در Debian/Ubuntu.
    • yum و dnf در CentOS/RHEL.
  • نصب، به‌روزرسانی و حذف نرم‌افزارها.
  • مدیریت مخازن نرم‌افزاری.

بخش 8: امنیت سرور لینوکس

  • پیکربندی Firewall با استفاده از iptables و firewalld.
  • معرفی SELinux و نحوه مدیریت آن.
  • بهبود امنیت با SSH:
    • غیرفعال کردن Root Login.
    • استفاده از کلیدهای SSH.
  • نصب و پیکربندی Fail2Ban برای جلوگیری از حملات Brute Force.
  • به‌روزرسانی امنیتی سیستم.

بخش 9: سرویس‌های وب و دیتابیس

  • نصب و پیکربندی سرویس‌های وب مانند:
    • Apache و Nginx.
  • نصب و مدیریت سرورهای دیتابیس:
    • MySQL/MariaDB, PostgreSQL.
  • امنیت و بهینه‌سازی سرویس‌های وب و دیتابیس.

بخش 10: مانیتورینگ و لاگ‌ها

  • مانیتورینگ عملکرد سیستم با top, htop, vmstat, و iotop.
  • استفاده از ابزارهای مانیتورینگ پیشرفته مانند Nagios و Zabbix.
  • مدیریت و تحلیل لاگ‌ها با journalctl و logrotate.
  • تنظیم و مدیریت لاگ‌ها در سرویس‌های مختلف.

بخش 11: پشتیبان‌گیری و بازیابی

  • راهکارهای پشتیبان‌گیری در لینوکس:
    • استفاده از ابزارهایی مانند rsync, tar, و dd.
  • پیاده‌سازی پشتیبان‌گیری خودکار.
  • بازیابی سیستم از پشتیبان‌ها.
  • معرفی ابزارهای پیشرفته پشتیبان‌گیری مانند Bacula و Amanda.

بخش 12: بهینه‌سازی و نگهداری سرور

  • بهینه‌سازی عملکرد سرور.
    • بررسی و بهبود زمان بوت.
    • کاهش مصرف منابع.
  • برنامه‌ریزی وظایف با cron و at.
  • بررسی و مدیریت به‌روزرسانی‌های سیستم.

بخش 13: عیب‌یابی و رفع مشکلات سرور

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

بخش 14: پروژه‌ عملی

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

نتیجه‌گیری و مسیرهای آینده

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

این دوره برای کسانی که به دنبال یادگیری مهارت‌های پایه و پیشرفته در مدیریت سرورهای لینوکس هستند مناسب است و شما را برای ورود به دنیای حرفه‌ای مدیریت سیستم‌های لینوکسی آماده می‌کند.

[cdb_course_lessons title=”بخش 1: مقدمه‌ای بر مدیریت سرور لینوکس”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”معرفی لینوکس و نقش آن در مدیریت سرورها” subtitle=”توضیحات کامل”]لینوکس چیست؟
لینوکس یک سیستم‌عامل متن‌باز و چندکاربره (Multi-user) است که برای انواع دستگاه‌ها، از رایانه‌های شخصی گرفته تا سرورهای قدرتمند، طراحی شده است. این سیستم‌عامل بر اساس هسته لینوکس (Linux Kernel) ساخته شده و به دلیل انعطاف‌پذیری و پایداری بالا، یکی از محبوب‌ترین گزینه‌ها برای مدیریت سرورها در سراسر جهان محسوب می‌شود.

ویژگی‌های کلیدی لینوکس

  • متن‌باز بودن: کد منبع لینوکس برای عموم آزاد است، که این امکان را به کاربران و توسعه‌دهندگان می‌دهد تا آن را متناسب با نیازهای خود تغییر دهند.
  • پایداری بالا: لینوکس به دلیل معماری قوی و مدیریت مؤثر منابع، در محیط‌های سروری پایداری بسیار خوبی دارد.
  • امنیت پیشرفته: این سیستم‌عامل به‌طور پیش‌فرض دارای قابلیت‌های امنیتی مانند SELinux، سیستم مجوزها، و فایروال‌های قدرتمند است.
  • تنوع توزیع‌ها: لینوکس در قالب توزیع‌های متنوعی مانند Debian، Red Hat، Ubuntu، CentOS و Fedora ارائه می‌شود که هر کدام برای نیازهای خاص طراحی شده‌اند.

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

  1. هاستینگ و وب‌سرویس‌ها
    لینوکس به‌عنوان بستر اصلی وب‌سرورهایی مانند Apache، Nginx و LiteSpeed عمل می‌کند. اکثر سایت‌ها و اپلیکیشن‌های آنلاین بر روی سرورهای لینوکسی اجرا می‌شوند.
  2. مدیریت دیتابیس‌ها
    سرورهای لینوکسی معمولاً برای میزبانی پایگاه‌های داده محبوب مانند MySQL، PostgreSQL و MongoDB استفاده می‌شوند. این سیستم‌عامل به دلیل کارایی و پایداری‌اش، انتخابی ایده‌آل برای دیتابیس‌های بزرگ است.
  3. سرورهای ایمیل و فایل
    سرورهای ایمیل مانند Postfix و Exim و همچنین سرورهای فایل مانند Samba و NFS بر پایه لینوکس ساخته شده‌اند و امکانات انعطاف‌پذیری را برای ارتباطات و ذخیره‌سازی ارائه می‌دهند.
  4. مجازسازی و امنیت
    با استفاده از ابزارهایی مانند iptables، SELinux و AppArmor، لینوکس یک محیط بسیار امن برای سرویس‌های حیاتی فراهم می‌کند.
  5. مجازی‌سازی و کانتینرها
    لینوکس پایه اصلی ابزارهای مجازی‌سازی مانند KVM و کانتینرهایی مثل Docker و Kubernetes است که برای مدیریت زیرساخت‌های ابری استفاده می‌شوند.

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

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

جمع‌بندی

لینوکس به‌عنوان یک سیستم‌عامل انعطاف‌پذیر، امن و پایدار، نقشی اساسی در مدیریت سرورها ایفا می‌کند. این سیستم‌عامل با پشتیبانی از فناوری‌های پیشرفته و هزینه کم، انتخابی مناسب برای هر نوع کسب‌وکار یا سازمانی است که به زیرساخت‌های سروری نیاز دارد. در بخش‌های آینده، نحوه استفاده از این سیستم‌عامل در نصب، پیکربندی و مدیریت سرورها را به‌تفصیل بررسی خواهیم کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تفاوت بین توزیع‌های مختلف لینوکس (Debian, Red Hat, Ubuntu, CentOS, Fedora)” subtitle=”توضیحات کامل”]لینوکس یک سیستم‌عامل متن‌باز است که در قالب توزیع‌های مختلفی ارائه می‌شود. هر توزیع برای نیازهای خاص طراحی شده و در بخش‌های مختلف سرور، دسکتاپ، توسعه نرم‌افزار، و محاسبات ابری کاربرد دارد. در اینجا تفاوت‌های کلیدی میان توزیع‌های Debian، Red Hat، Ubuntu، CentOS و Fedora بررسی می‌شود.


1. Debian

ویژگی‌ها:

  • پایداری بالا: Debian به‌خاطر تمرکز بر پایداری و عدم استفاده از نرم‌افزارهای آزمایشی، مناسب برای محیط‌های حساس سروری است.
  • مدیریت بسته‌ها: از سیستم مدیریت بسته APT و فرمت .deb استفاده می‌کند.
  • جامعه محور: کاملاً توسط جامعه کاربران توسعه داده می‌شود.

موارد استفاده:

  • مناسب برای سرورهای وب، دیتابیس و سیستم‌های حساس.
  • پایه بسیاری از توزیع‌های دیگر از جمله Ubuntu.

2. Red Hat Enterprise Linux (RHEL)

ویژگی‌ها:

  • محیط تجاری: RHEL توسط شرکت Red Hat توسعه داده شده و خدمات پشتیبانی تجاری ارائه می‌دهد.
  • پایداری سازمانی: برای محیط‌های سازمانی و کاربردهای حساس تجاری طراحی شده است.
  • مدیریت بسته‌ها: از YUM (در نسخه‌های جدید dnf) و فرمت .rpm استفاده می‌کند.

موارد استفاده:

  • محیط‌های سازمانی، مراکز داده، و کاربردهای صنعتی که نیاز به پشتیبانی حرفه‌ای دارند.

3. Ubuntu

ویژگی‌ها:

  • کاربرپسند: یکی از توزیع‌های ساده برای کاربران تازه‌کار و حرفه‌ای.
  • به‌روزرسانی مداوم: دارای نسخه‌های پایدار (LTS) و نسخه‌های کوتاه‌مدت برای آزمایش ویژگی‌های جدید است.
  • بر پایه Debian: از سیستم مدیریت بسته APT استفاده می‌کند و با فرمت .deb سازگار است.

موارد استفاده:

  • مناسب برای سرورها، دسکتاپ، و محیط‌های ابری.
  • توزیع‌های Ubuntu Server و Ubuntu Core برای کاربردهای سروری و IoT طراحی شده‌اند.

4. CentOS (Community ENTerprise Operating System)

ویژگی‌ها:

  • نسخه رایگان RHEL: CentOS بر اساس کد منبع RHEL ساخته شده و تمامی ویژگی‌های آن را بدون پشتیبانی تجاری ارائه می‌دهد.
  • پایداری بالا: مناسب برای سرورها و محیط‌های سازمانی که نیازی به پشتیبانی مستقیم Red Hat ندارند.

موارد استفاده:

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

توجه: CentOS از سال 2021 به CentOS Stream تغییر کرده و بیشتر به‌عنوان یک نسخه پیش‌نمایش برای RHEL عمل می‌کند.


5. Fedora

ویژگی‌ها:

  • پیشرو در فناوری‌های جدید: Fedora اولین توزیع برای آزمایش ویژگی‌های جدیدی است که بعداً به RHEL اضافه می‌شوند.
  • بروز رسانی سریع: به‌روزرسانی‌های سریع و پیوسته از ویژگی‌های اصلی این توزیع هستند.
  • مدیریت بسته‌ها: از dnf و فرمت rpm استفاده می‌کند.

موارد استفاده:

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

تفاوت‌های کلیدی

ویژگی‌ها Debian RHEL Ubuntu CentOS Fedora
مدیریت بسته‌ها APT (.deb) YUM/dnf (.rpm) APT (.deb) YUM/dnf (.rpm) dnf (.rpm)
پایداری بسیار بالا بسیار بالا بالا بسیار بالا متوسط
پشتیبانی جامعه‌محور تجاری (Red Hat) جامعه‌محور جامعه‌محور جامعه‌محور
مخاطب سرور و دسکتاپ سازمان‌ها و مراکز داده همه کاربران محیط‌های سازمانی توسعه‌دهندگان
به‌روزرسانی‌ها کند طولانی‌مدت سریع (LTS پایدار) کند سریع

جمع‌بندی

هر توزیع لینوکس برای کاربردها و نیازهای خاص طراحی شده است. Debian و RHEL برای پایداری و محیط‌های حساس، Ubuntu برای کاربران عمومی و سرورهای متنوع، CentOS برای سازمان‌هایی با بودجه محدود، و Fedora برای توسعه‌دهندگان و استفاده از فناوری‌های جدید مناسب هستند. انتخاب توزیع مناسب بستگی به نیازهای شما در مدیریت سرورها و نوع زیرساخت دارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ابزارها و تکنولوژی‌های مورد نیاز برای مدیریت سرورهای لینوکسی” subtitle=”توضیحات کامل”]مدیریت سرورهای لینوکسی نیازمند تسلط بر ابزارها و تکنولوژی‌هایی است که وظایف مختلفی مانند مانیتورینگ، تنظیمات شبکه، مدیریت کاربران و امنیت را ساده و کارآمد می‌سازند. این ابزارها به مدیران سیستم کمک می‌کنند تا عملکرد سرورها را بهینه کرده و از پایداری و امنیت زیرساخت اطمینان حاصل کنند. در ادامه به مهم‌ترین ابزارها و تکنولوژی‌ها پرداخته می‌شود.


1. ابزارهای خط فرمان (CLI)

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

  • Shells (Bash, Zsh): برای اجرای دستورات و اسکریپت‌های مدیریتی.
  • SSH (Secure Shell): برای دسترسی ایمن به سرورها از راه دور.
  • tmux/screen: برای مدیریت جلسات خط فرمان و اجرای فرآیندهای طولانی‌مدت.

2. مدیریت کاربران و مجوزها

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

  • useradd, usermod, userdel: برای مدیریت کاربران.
  • chmod, chown: برای تنظیم مجوزها و مالکیت فایل‌ها.
  • sudo: برای اجرای دستورات با دسترسی مدیریتی.

3. مدیریت بسته‌ها و نرم‌افزارها

مدیریت بسته‌ها برای نصب، به‌روزرسانی و حذف نرم‌افزارها حیاتی است.

  • apt (Debian/Ubuntu): برای مدیریت بسته‌های .deb.
  • yum/dnf (RHEL/CentOS): برای مدیریت بسته‌های .rpm.
  • snap و Flatpak: برای نصب نرم‌افزارهای مستقل از توزیع.

4. مانیتورینگ و نظارت بر سیستم

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

  • top و htop: برای نظارت بر فرآیندها و استفاده از منابع سیستم.
  • vmstat و iostat: برای بررسی وضعیت CPU، حافظه و دیسک.
  • Zabbix و Nagios: ابزارهای پیشرفته برای مانیتورینگ زیرساخت.

5. مدیریت شبکه

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

  • ip و ifconfig: برای تنظیم و مشاهده تنظیمات شبکه.
  • ping و traceroute: برای بررسی ارتباط و مسیر شبکه.
  • netstat و ss: برای مشاهده اتصالات شبکه و پورت‌های باز.
  • nmcli و nmtui: برای مدیریت NetworkManager.

6. مدیریت فایل‌سیستم و فضای ذخیره‌سازی

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

  • fdisk, parted: برای ایجاد و مدیریت پارتیشن‌ها.
  • mkfs, mount, umount: برای فرمت و اتصال سیستم‌های فایل.
  • LVM (Logical Volume Manager): برای مدیریت انعطاف‌پذیر فضای ذخیره‌سازی.
  • df, du و ncdu: برای بررسی فضای دیسک.

7. مدیریت سرویس‌ها و فرآیندها

کنترل و مدیریت سرویس‌ها و فرآیندهای سیستم از وظایف روزانه مدیر سرور است.

  • systemctl و service: برای مدیریت سرویس‌ها.
  • ps و kill: برای بررسی و پایان دادن به فرآیندها.

8. ابزارهای امنیتی

تضمین امنیت سرور با استفاده از ابزارهای امنیتی مناسب امکان‌پذیر است.

  • iptables و firewalld: برای مدیریت فایروال.
  • SELinux: برای کنترل دسترسی‌های اجباری.
  • Fail2Ban: برای جلوگیری از حملات Brute Force.
  • OpenSSL: برای مدیریت گواهینامه‌های امنیتی و رمزنگاری.

9. ابزارهای پشتیبان‌گیری و بازیابی

برای جلوگیری از از دست رفتن اطلاعات، ابزارهای پشتیبان‌گیری و بازیابی ضروری هستند.

  • rsync و scp: برای انتقال و همگام‌سازی داده‌ها.
  • tar و gzip: برای فشرده‌سازی و آرشیو فایل‌ها.
  • Bacula و Amanda: برای پشتیبان‌گیری خودکار و مدیریت شده.

10. مدیریت لاگ‌ها و خطاها

لاگ‌ها اطلاعات حیاتی درباره عملکرد سیستم و مشکلات آن ارائه می‌دهند.

  • journalctl: برای مشاهده لاگ‌های systemd.
  • logrotate: برای مدیریت و آرشیو لاگ‌ها.
  • dmesg: برای بررسی پیام‌های کرنل.

11. ابزارهای مجازی‌سازی و کانتینرها

برای محیط‌های مجازی و کانتینری، ابزارهای زیر مورد استفاده قرار می‌گیرند:

  • KVM و VirtualBox: برای مجازی‌سازی.
  • Docker: برای اجرای کانتینرها.
  • Kubernetes: برای مدیریت کانتینرها در مقیاس بزرگ.

12. ابزارهای مدیریت خودکارسازی

خودکارسازی مدیریت سرورها بهره‌وری را افزایش می‌دهد.

  • Ansible: برای خودکارسازی وظایف مدیریت.
  • Puppet و Chef: برای مدیریت پیکربندی سیستم‌ها.

جمع‌بندی

ابزارهای مدیریت سرور لینوکس گسترده و متنوع هستند و هر کدام در بخش خاصی از مدیریت سیستم کارایی دارند. با انتخاب مناسب این ابزارها و تسلط بر آن‌ها، مدیران سیستم می‌توانند سرورهای لینوکسی را به‌طور موثر مدیریت کرده و از عملکرد و امنیت آن‌ها اطمینان حاصل کنند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 2: نصب و پیکربندی سرور لینوکس”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”انتخاب توزیع مناسب برای سرور” subtitle=”توضیحات کامل”]

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


معیارهای انتخاب توزیع مناسب برای سرور

  1. پایداری (Stability)
    توزیع‌های پایدار به‌روزرسانی‌های نرم‌افزاری را با دقت و پس از آزمایش‌های فراوان منتشر می‌کنند. این ویژگی برای سرورها، که باید مدت طولانی بدون خرابی کار کنند، بسیار مهم است.

    • مثال: Debian Stable و CentOS Stream.
  2. امنیت (Security)
    توزیع‌هایی که به‌طور منظم و سریع به‌روزرسانی‌های امنیتی ارائه می‌دهند، برای سرورهای حساس مناسب‌تر هستند.

    • مثال: RHEL (Red Hat Enterprise Linux) و Ubuntu LTS.
  3. پشتیبانی (Support)
    دسترسی به مستندات، انجمن‌ها، و پشتیبانی حرفه‌ای نقش مهمی در انتخاب توزیع ایفا می‌کند.

    • مثال: Red Hat با پشتیبانی شرکتی و Ubuntu با جامعه کاربری گسترده.
  4. سهولت استفاده (Ease of Use)
    توزیع‌هایی با ابزارهای مدیریت ساده و مستندات کامل برای مدیران تازه‌کار و تیم‌های کوچک مناسب‌تر هستند.

    • مثال: Ubuntu Server و Fedora Server.
  5. سازگاری با نرم‌افزارها و سخت‌افزارها
    بررسی اینکه آیا توزیع انتخابی با نرم‌افزارها و سخت‌افزارهای موجود سازگار است، بسیار مهم است.

    • مثال: Debian و CentOS با گستره وسیعی از نرم‌افزارها سازگار هستند.
  6. نوع کاربری و هدف سرور
    کاربرد سرور (مانند وب‌سرور، دیتابیس، یا سرور کانتینرها) نقش مهمی در انتخاب توزیع دارد.

    • مثال: Ubuntu برای سرورهای عمومی و CoreOS برای کانتینرها.

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

1. Debian

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

2. Ubuntu Server

  • ویژگی‌ها:
    • مبتنی بر Debian و ساده‌تر برای استفاده.
    • نسخه‌های LTS (Long Term Support) با پشتیبانی طولانی‌مدت.
    • به‌روزرسانی سریع‌تر نرم‌افزارها نسبت به Debian.
  • کاربردها: سرورهای عمومی، توسعه نرم‌افزار، و محیط‌های ابری.

3. Red Hat Enterprise Linux (RHEL)

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

4. CentOS Stream

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

5. Fedora Server

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

6. SUSE Linux Enterprise Server (SLES)

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

7. Arch Linux

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

8. CoreOS (اکنون Container Linux)

  • ویژگی‌ها:
    • متمرکز بر اجرای کانتینرها.
    • بهینه برای محیط‌های ابری و کلاسترها.
  • کاربردها: محیط‌های کانتینری و Kubernetes.

نکات کلیدی برای انتخاب توزیع مناسب

  1. برای محیط‌های تولیدی پایدار، از توزیع‌هایی مانند Debian Stable یا RHEL استفاده کنید.
  2. اگر به سهولت استفاده اهمیت می‌دهید، Ubuntu Server گزینه مناسبی است.
  3. برای محیط‌های آزمایشی یا توسعه سریع، Fedora یا CentOS Stream را در نظر بگیرید.
  4. اگر نیاز به اجرای کانتینرها یا محیط‌های ابری دارید، CoreOS یا Ubuntu را انتخاب کنید.

جمع‌بندی

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

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نصب لینوکس روی سرور فیزیکی یا مجازی” subtitle=”توضیحات کامل”]یکی از مراحل اساسی مدیریت سرورهای لینوکسی، نصب سیستم‌عامل لینوکس است. فرایند نصب بسته به اینکه سرور فیزیکی باشد یا مجازی، ممکن است تفاوت‌هایی داشته باشد، اما اصول کلی آن مشابه است. در این بخش، مراحل آماده‌سازی و نصب لینوکس بر روی سرور فیزیکی و مجازی بررسی خواهد شد.


آماده‌سازی پیش از نصب لینوکس

  1. انتخاب نسخه لینوکس:
    • با توجه به نیازهای پروژه یا سازمان، توزیع مناسب را انتخاب کنید. (Debian، CentOS، Ubuntu و غیره).
  2. تأمین منابع سخت‌افزاری کافی:
    • برای سرور فیزیکی: بررسی سخت‌افزار سرور (CPU، RAM، و فضای دیسک) و سازگاری آن با توزیع لینوکس.
    • برای سرور مجازی: تخصیص منابع مناسب در محیط مجازی‌ساز (مانند VMware، VirtualBox، یا KVM).
  3. دانلود و آماده‌سازی فایل نصب (ISO):
    • آخرین نسخه توزیع انتخابی را از وب‌سایت رسمی آن دانلود کنید.
    • فایل ISO را روی یک فلش USB یا DVD قابل بوت منتقل کنید (با ابزارهایی مانند Rufus، Balena Etcher، یا dd).
  4. تنظیم BIOS/UEFI:
    • اطمینان حاصل کنید که سرور برای بوت شدن از USB یا DVD تنظیم شده است.

نصب لینوکس روی سرور فیزیکی

1. بوت کردن از مدیای نصب

  • فلش USB یا DVD نصب را متصل کنید.
  • سرور را روشن کرده و وارد BIOS/UEFI شوید.
  • مدیای نصب را به‌عنوان اولویت بوت تنظیم کنید و سیستم را ری‌استارت کنید.

2. شروع نصب لینوکس

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

3. پیکربندی پارتیشن‌ها

  • انتخاب یکی از روش‌های زیر برای مدیریت فضای دیسک:
    • پارتیشن‌بندی خودکار: مناسب برای تازه‌کاران.
    • پارتیشن‌بندی دستی: امکان سفارشی‌سازی برای محیط‌های پیشرفته‌تر.
  • پیشنهاد می‌شود حداقل سه پارتیشن ایجاد شود:
    • /boot برای بوت لودر.
    • / (Root) برای سیستم‌عامل.
    • swap برای حافظه مجازی.

4. انتخاب نرم‌افزارها و سرویس‌ها

  • در مرحله نصب، می‌توانید برخی سرویس‌ها و نرم‌افزارهای پیش‌فرض مانند OpenSSH Server یا LAMP Stack را انتخاب کنید.

5. نصب و تنظیم بوت لودر

  • معمولاً GRUB به‌عنوان بوت لودر پیش‌فرض نصب می‌شود.
  • محل نصب بوت لودر را تأیید کنید (معمولاً دیسک اصلی).

6. راه‌اندازی اولیه پس از نصب

  • پس از اتمام نصب، سیستم را ری‌استارت کرده و تنظیمات اولیه را انجام دهید (مانند تنظیم hostname و آدرس IP).

نصب لینوکس روی سرور مجازی

1. ایجاد ماشین مجازی

  • از ابزارهای مجازی‌ساز مانند VMware ESXi، VirtualBox، یا KVM استفاده کنید.
  • ماشین مجازی جدیدی ایجاد کرده و منابع زیر را به آن اختصاص دهید:
    • CPU و RAM متناسب با نیازهای سرور.
    • فضای دیسک مجازی کافی.
    • کارت شبکه برای اتصال به شبکه.

2. اتصال ISO به ماشین مجازی

  • فایل ISO دانلود شده را به‌عنوان CD/DVD مجازی به ماشین مجازی متصل کنید.

3. بوت کردن ماشین مجازی

  • ماشین مجازی را روشن کرده و وارد محیط نصب شوید.
  • فرآیند نصب مشابه نصب روی سرور فیزیکی خواهد بود.

4. تنظیمات خاص مجازی‌سازی

  • بررسی و فعال‌سازی درایورهای خاص برای بهینه‌سازی عملکرد ماشین مجازی (مانند VMware Tools یا Guest Additions در VirtualBox).
  • تنظیم شبکه ماشین مجازی (NAT، Bridge، یا Host-only).

تنظیمات اولیه پس از نصب

  1. تنظیم hostname و DNS:
    • با استفاده از ابزارهایی مانند hostnamectl یا ویرایش فایل /etc/hostname.
  2. پیکربندی آدرس IP:
    • تنظیم دستی IP و Gateway در فایل‌های پیکربندی شبکه.
  3. به‌روزرسانی سیستم:
    • اجرای دستورات مدیریت بسته برای به‌روزرسانی سیستم:
      • در Debian/Ubuntu:
        sudo apt update && sudo apt upgrade
      • در CentOS/RHEL:
        sudo yum update
  4. نصب ابزارهای ضروری:
    • نصب ابزارهایی مانند vim، curl، و wget برای مدیریت آسان‌تر.

جمع‌بندی

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

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”پیکربندی اولیه سرور” subtitle=”توضیحات کامل”]پس از نصب لینوکس روی سرور، تنظیمات اولیه نقش حیاتی در آماده‌سازی سرور برای انجام وظایفش ایفا می‌کند. این تنظیمات شامل مواردی است که امنیت، عملکرد و دسترسی به سرور را بهبود می‌بخشند. در ادامه، مراحل پیکربندی اولیه سرور توضیح داده شده است.


1. تنظیم نام میزبان (Hostname)

Hostname نام سرور در شبکه است و باید به‌صورت واضح و معنادار انتخاب شود.

تغییر نام میزبان:

  • با استفاده از دستور زیر:
    sudo hostnamectl set-hostname new-hostname
    
    
  • برای اعمال تغییرات، می‌توانید فایل /etc/hostname را مستقیماً ویرایش کنید.

افزودن نام میزبان به فایل /etc/hosts:

  • برای مپ کردن نام میزبان به آدرس IP لوپ‌بک:
    127.0.0.1   new-hostname

2. تنظیم آدرس IP، DNS و Gateway

پیکربندی دستی آدرس IP:

برای تنظیمات شبکه، بسته به نوع توزیع لینوکس:

  • در Debian/Ubuntu:
    فایل /etc/netplan/*.yaml را ویرایش کنید:

    network:
      version: 2
      renderer: networkd
      ethernets:
        ens33:
          addresses:
            - 192.168.1.100/24
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]

    سپس دستور زیر را اجرا کنید:

    sudo netplan apply
  • در CentOS/RHEL:
    فایل /etc/sysconfig/network-scripts/ifcfg-ens33 را ویرایش کنید:

    DEVICE=ens33
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.1.100
    PREFIX=24
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=8.8.4.4

    سپس سرویس شبکه را ری‌استارت کنید:

    sudo systemctl restart network

عیب‌یابی تنظیمات شبکه:

  • بررسی وضعیت شبکه با دستور:
    ip addr
  • تست اتصال با ابزار ping:
    ping -c 4 8.8.8.8

3. تنظیمات اولیه امنیتی

پیکربندی Firewall

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

  • در Ubuntu/Debian با ufw:
    sudo ufw allow OpenSSH
    sudo ufw enable
  • در CentOS/RHEL با firewalld:
    sudo firewall-cmd --add-service=ssh --permanent
    sudo firewall-cmd --reload

پیکربندی SELinux

SELinux یک لایه امنیتی اضافی است که در توزیع‌های مبتنی بر Red Hat فعال است.

  • بررسی وضعیت SELinux:
    sestatus
  • فعال یا غیرفعال کردن آن از طریق فایل /etc/selinux/config:
    SELINUX=enforcing

    تغییر به حالت مورد نظر و ری‌استارت سرور.

غیرفعال کردن ورود مستقیم با Root

ورود مستقیم با کاربر Root می‌تواند خطرات امنیتی زیادی ایجاد کند. برای غیرفعال کردن آن:

  1. فایل تنظیمات SSH را باز کنید:
    sudo nano /etc/ssh/sshd_config
  2. خط زیر را پیدا کرده و تغییر دهید:
    PermitRootLogin no
  3. سرویس SSH را ری‌استارت کنید:
    sudo systemctl restart sshd

4. به‌روزرسانی سیستم

پس از نصب، به‌روزرسانی سیستم ضروری است تا اطمینان حاصل شود که تمام بسته‌ها و امنیت سرور به‌روز هستند:

  • در Ubuntu/Debian:
    sudo apt update && sudo apt upgrade -y
  • در CentOS/RHEL:
    sudo yum update -y

5. نصب ابزارهای مدیریتی ضروری

ابزارهای مدیریتی برای مدیریت سرور استفاده می‌شوند. برخی از ابزارهای ضروری عبارتند از:

  • ویرایشگرها: نصب nano یا vim:
    sudo apt install vim nano -y
  • ابزار شبکه: نصب curl و wget:
    sudo apt install curl wget -y
  • ابزارهای نظارتی: نصب htop یا glances:
    sudo apt install htop glances -y

6. تنظیم زمان و منطقه زمانی (Time Zone)

تنظیم منطقه زمانی درست برای زمان‌بندی کارها و ثبت لاگ‌ها ضروری است:

  • تغییر منطقه زمانی:
    sudo timedatectl set-timezone Asia/Tehran
  • بررسی تنظیمات:
    timedatectl

جمع‌بندی

پیکربندی اولیه سرور لینوکسی، مرحله‌ای حیاتی برای ایجاد یک سرور امن و قابل اعتماد است. با انجام این تنظیمات، سرور شما آماده پذیرش سرویس‌ها و تنظیمات پیشرفته‌تر خواهد بود. توجه به تنظیمات امنیتی، شبکه، و به‌روزرسانی‌ها، از مشکلات احتمالی آینده جلوگیری می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تنظیمات اولیه امنیتی (Firewall و SELinux)” subtitle=”توضیحات کامل”]یکی از مهم‌ترین مراحل در پیکربندی اولیه سرور لینوکس، اعمال تنظیمات امنیتی است. این تنظیمات شامل مدیریت فایروال برای کنترل ترافیک ورودی و خروجی و تنظیم SELinux به‌عنوان یک لایه امنیتی پیشرفته است. در این بخش، مراحل و نکات کلیدی مربوط به این تنظیمات بررسی می‌شوند.


1. پیکربندی Firewall

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

1.1 استفاده از UFW (Ubuntu/Debian)

UFW یک ابزار ساده برای مدیریت فایروال در توزیع‌های مبتنی بر Debian است.

  1. نصب و فعال‌سازی UFW:
    sudo apt install ufw -y
    sudo ufw enable
  2. اجازه دسترسی به سرویس SSH:
    sudo ufw allow OpenSSH
  3. بررسی وضعیت فایروال:
    sudo ufw status
  4. ایجاد قوانین اضافی:
    • اجازه دسترسی به پورت 80 (HTTP):
      sudo ufw allow 80/tcp
    • مسدود کردن یک آدرس IP خاص:
      sudo ufw deny from 192.168.1.100

1.2 استفاده از Firewalld (CentOS/RHEL)

Firewalld در توزیع‌های مبتنی بر Red Hat استفاده می‌شود و امکان مدیریت زون‌های امنیتی را فراهم می‌کند.

  1. نصب و فعال‌سازی Firewalld:
    sudo yum install firewalld -y
    sudo systemctl enable --now firewalld
  2. اجازه دسترسی به سرویس‌ها:
    • اضافه کردن سرویس SSH:
      sudo firewall-cmd --add-service=ssh --permanent
    • باز کردن یک پورت خاص:
      sudo firewall-cmd --add-port=8080/tcp --permanent
  3. ریلود کردن تنظیمات:
    sudo firewall-cmd --reload
  4. بررسی وضعیت فایروال:
    sudo firewall-cmd --list-all

2. پیکربندی SELinux

SELinux (Security-Enhanced Linux) یک ماژول امنیتی است که دسترسی‌ها و تعاملات بین کاربران، فرآیندها و منابع سیستم را کنترل می‌کند. در توزیع‌های مبتنی بر Red Hat، SELinux به‌صورت پیش‌فرض فعال است.

2.1 بررسی وضعیت SELinux

برای مشاهده وضعیت فعلی SELinux:

sestatus

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

  • Enforcing: SELinux فعال است و قوانین اجرا می‌شوند.
  • Permissive: قوانین بررسی می‌شوند ولی اعمال نمی‌شوند.
  • Disabled: SELinux غیرفعال است.

2.2 تغییر حالت SELinux

  1. ویرایش فایل تنظیمات:
    فایل /etc/selinux/config را باز کنید:

    sudo nano /etc/selinux/config
  2. مقدار مورد نظر را تنظیم کنید:
    SELINUX=enforcing    # فعال
    SELINUX=permissive   # فقط هشدار
    SELINUX=disabled     # غیرفعال
  3. اعمال تغییرات:
    پس از تغییر تنظیمات، نیاز به ری‌استارت سرور دارید:

    sudo reboot

2.3 مدیریت Context فایل‌ها

SELinux بر اساس Context فایل‌ها و فرآیندها کار می‌کند. در صورتی که فایل‌ها یا دایرکتوری‌ها با مشکلات دسترسی مواجه شوند، می‌توان Context آن‌ها را بررسی و تغییر داد.

  • بررسی Context یک فایل:
    ls -Z /path/to/file
  • تنظیم مجدد Context یک مسیر:
    sudo restorecon -Rv /path/to/directory

2.4 کار با Audit Logs

در صورت بروز مشکل، لاگ‌های SELinux اطلاعات مفیدی ارائه می‌دهند:

sudo ausearch -m AVC

2.5 غیرفعال کردن SELinux (غیر توصیه‌شده)

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


جمع‌بندی

تنظیمات اولیه امنیتی، شامل پیکربندی فایروال و SELinux، پایه‌ای‌ترین و حیاتی‌ترین اقدامات برای محافظت از سرور لینوکسی هستند. فایروال دسترسی به سرویس‌ها را مدیریت می‌کند و SELinux با کنترل دقیق تعاملات کاربران و فرآیندها، لایه‌ای اضافی از امنیت را فراهم می‌آورد. انجام این تنظیمات به‌درستی می‌تواند خطرات امنیتی بالقوه را به‌شدت کاهش دهد و سرور را در برابر تهدیدات مختلف مقاوم سازد.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 3: مدیریت کاربران و دسترسی‌ها”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ایجاد و مدیریت کاربران و گروه‌ها در لینوکس” subtitle=”توضیحات کامل”]مدیریت کاربران و گروه‌ها یکی از بخش‌های اساسی در مدیریت سرور لینوکسی است. این بخش شامل ایجاد کاربران، تنظیم دسترسی‌ها، و گروه‌بندی کاربران برای اعمال قوانین مشترک می‌باشد. این مقاله به نحوه انجام این وظایف با استفاده از دستورات خط فرمان می‌پردازد.


1. ایجاد کاربران

1.1 ایجاد یک کاربر جدید

برای ایجاد یک کاربر جدید از دستور useradd استفاده می‌شود.

  • ایجاد کاربر:
    sudo useradd <username>
  • ایجاد کاربر همراه با پوشه خانگی (home):
    sudo useradd -m <username>

1.2 تنظیم رمز عبور کاربر

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

sudo passwd <username>

1.3 تغییر ویژگی‌های کاربر

  • تغییر شل پیش‌فرض کاربر:
    sudo usermod -s /bin/bash <username>
  • تغییر دایرکتوری خانه کاربر:
    sudo usermod -d /new/home/path <username>
  • قفل کردن حساب کاربری:
    sudo usermod -L <username>
  • باز کردن قفل حساب کاربری:
    sudo usermod -U <username>

2. مدیریت گروه‌ها

2.1 ایجاد گروه جدید

برای ایجاد یک گروه جدید از دستور groupadd استفاده می‌شود:

sudo groupadd <groupname>

2.2 اضافه کردن کاربر به یک گروه

برای اضافه کردن یک کاربر به گروه:

sudo usermod -aG <groupname> <username>

نکته: گزینه -aG به معنای افزودن کاربر به گروه‌ها بدون حذف سایر گروه‌هایی است که قبلاً به آن‌ها تعلق داشته است.

2.3 حذف کاربر از گروه

برای حذف یک کاربر از گروه:

  1. بررسی گروه‌ها و کاربران:
    groups <username>
  2. ویرایش فایل /etc/group و حذف نام کاربر از گروه مربوطه.

3. بررسی و مدیریت کاربران و گروه‌ها

3.1 مشاهده اطلاعات کاربران

  • نمایش لیست تمامی کاربران:
    cat /etc/passwd
  • مشاهده جزئیات یک کاربر خاص:
    id <username>

3.2 مشاهده اطلاعات گروه‌ها

  • لیست تمامی گروه‌ها:
    cat /etc/group

4. حذف کاربران و گروه‌ها

4.1 حذف کاربر

  • حذف کاربر بدون حذف دایرکتوری خانگی:
    sudo userdel <username>
  • حذف کاربر و دایرکتوری خانگی:
    sudo userdel -r <username>

4.2 حذف گروه

برای حذف گروهی که خالی است:

sudo groupdel <groupname>

5. مدیریت پیشرفته کاربران و گروه‌ها

5.1 تخصیص گروه اصلی و ثانویه

هنگام ایجاد کاربر، می‌توانید گروه اصلی یا ثانویه برای کاربر تعیین کنید:

sudo useradd -g <primary_group> -G <secondary_group> <username>

5.2 تغییر مالکیت و گروه فایل‌ها

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

  • تغییر مالک فایل:
    sudo chown <username> <file>
  • تغییر گروه فایل:
    sudo chgrp <groupname> <file>

5.3 مدیریت کاربران با GUI (در توزیع‌های دسکتاپ)

اگر سرور شما دسکتاپ گرافیکی داشته باشد، می‌توانید از ابزارهایی مانند Users and Groups در تنظیمات سیستم استفاده کنید.


جمع‌بندی

ایجاد و مدیریت کاربران و گروه‌ها در لینوکس برای اعمال سیاست‌های دسترسی و سازماندهی کاربران ضروری است. با استفاده از دستورات معرفی‌شده، می‌توانید کاربران و گروه‌ها را به‌صورت بهینه مدیریت کرده و امنیت سرور لینوکسی خود را افزایش دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مدیریت مجوزها و مالکیت فایل‌ها در لینوکس” subtitle=”توضیحات کامل”]مدیریت صحیح مجوزها و مالکیت فایل‌ها و دایرکتوری‌ها برای امنیت و سازمان‌دهی دسترسی به منابع سیستم ضروری است. در لینوکس، مالکیت فایل‌ها و دایرکتوری‌ها تعیین‌کننده دسترسی‌های کاربر و گروه به منابع سیستم است. این بخش به چگونگی مدیریت مجوزها و مالکیت فایل‌ها و دایرکتوری‌ها می‌پردازد.


1. مالکیت فایل‌ها و دایرکتوری‌ها

هر فایل و دایرکتوری در لینوکس دارای یک مالک (owner) و یک گروه (group) هستند که کنترل دسترسی‌ها را تعیین می‌کنند.

  • دستور ls -l برای نمایش مالکیت و مجوزها
    برای مشاهده اطلاعات مالکیت و مجوزهای فایل یا دایرکتوری، از دستور ls -l استفاده می‌شود:

    ls -l <file_or_directory>

    خروجی به صورت زیر خواهد بود:

    -rw-r--r-- 1 user group 4096 Dec 14 12:34 example.txt

    توضیحات هر بخش:

    • -rw-r--r--: نشان‌دهنده نوع فایل (فایل عادی) و مجوزها
    • 1: تعداد لینک‌های فایل
    • user: مالک فایل
    • group: گروه مالک
    • 4096: اندازه فایل
    • Dec 14 12:34: تاریخ و زمان
    • example.txt: نام فایل
  • تغییر مالکیت فایل‌ها و دایرکتوری‌ها
    با استفاده از دستور chown می‌توان مالکیت فایل‌ها و دایرکتوری‌ها را تغییر داد:

    sudo chown <new_owner>:<new_group> <file_or_directory>

    برای مثال، تغییر مالکیت یک فایل به کاربر john و گروه developers:

    sudo chown john:developers example.txt

2. مجوزهای فایل‌ها و دایرکتوری‌ها

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

  • خواندن (r)
  • نوشتن (w)
  • اجرا (x)
  • دستور chmod برای تغییر مجوزها
    برای تغییر مجوزهای فایل‌ها و دایرکتوری‌ها از دستور chmod استفاده می‌شود.
    مجوزها به صورت عددی یا با نمادهای rwx مشخص می‌شوند.مثال‌های تغییر مجوزها:
  • تغییر مجوزها به صورت عددی (Octal)
    هر عدد سه‌رقمی نشان‌دهنده مجوزهای مالک، گروه و سایر کاربران است.

    • 700: دسترسی کامل به مالک
    • 750: دسترسی کامل به مالک و دسترسی خواندن/اجرا به گروه
    • 644: دسترسی خواندن/نوشتن به مالک، و فقط خواندن به گروه و سایر کاربران
    • 755: دسترسی خواندن/اجرا به مالک، و دسترسی خواندن/اجرا به گروه و سایر کاربران

    مثال: تنظیم مجوزهای 644 برای یک فایل:

    sudo chmod 644 example.txt
  • تغییر مجوزها با استفاده از rwx
    می‌توان مجوزها را به صورت نمادین با rwx مشخص کرد:

    • rw-r--r--: خواندن و نوشتن برای مالک، خواندن برای گروه و سایر کاربران
    • rwxr-xr--: خواندن، نوشتن و اجرا برای مالک، خواندن و اجرا برای گروه و سایر کاربران

    مثال:

    sudo chmod u+x example.txt  # فقط اجرا برای مالک فایل

3. تغییر گروه فایل‌ها و دایرکتوری‌ها

برای تغییر گروه یک فایل یا دایرکتوری، از دستور chgrp استفاده می‌شود:

sudo chgrp <new_group> <file_or_directory>

برای مثال، تغییر گروه یک فایل به developers:

sudo chgrp developers example.txt

4. بررسی و مدیریت مجوزها با getfacl و setfacl

  • استفاده از getfacl برای مشاهده دسترسی‌ها
    برای مشاهده ACL (Access Control List) فایل‌ها یا دایرکتوری‌ها، از دستور getfacl استفاده می‌شود:

    getfacl example.txt

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

  • استفاده از setfacl برای اعمال ACL به فایل‌ها و دایرکتوری‌ها
    برای تنظیم دسترسی‌های پیشرفته به فایل یا دایرکتوری با استفاده از ACL:

    sudo setfacl -m u:john:r-x example.txt

    این دستور به کاربر john مجوز خواندن و اجرای فایل را می‌دهد.


جمع‌بندی

مدیریت صحیح مالکیت‌ها و مجوزها در لینوکس برای کنترل دسترسی‌ها بسیار مهم است. با استفاده از دستورات chown، chmod و setfacl، می‌توانید به‌راحتی فایل‌ها و دایرکتوری‌ها را مدیریت کرده و امنیت سیستم را افزایش دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از Sudo برای دسترسی‌های مدیریتی” subtitle=”توضیحات کامل”]

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


1. نصب و پیکربندی Sudo

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

sudo apt-get install sudo   # برای توزیع‌های مبتنی بر Debian (Ubuntu)
sudo yum install sudo       # برای توزیع‌های مبتنی بر Red Hat (CentOS، Fedora)

2. فعال‌سازی دسترسی Sudo برای کاربران خاص

  • اضافه کردن کاربر به گروه Sudoers
    برای اضافه کردن یک کاربر به گروه Sudo و اعطای دسترسی‌های مدیریتی، از دستور usermod استفاده کنید:

    sudo usermod -aG sudo <username>

    این دستور کاربر را به گروه sudo اضافه می‌کند و به او اجازه می‌دهد دستورات مدیریتی را با sudo اجرا کند.

  • ویرایش فایل Sudoers
    تنظیمات دقیق‌تر دسترسی‌های Sudo در فایل /etc/sudoers انجام می‌شود. برای ویرایش این فایل، از دستور زیر استفاده کنید:

    sudo visudo

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


3. تنظیمات رایج Sudoers

  • اعطای دسترسی به کاربران برای اجرای یک دستور خاص
    می‌توانید دسترسی به دستورات خاص را به یک کاربر یا گروه بدهید.
    مثال زیر دسترسی به دستور apt-get update را به کاربر john می‌دهد:

    john ALL=(ALL) NOPASSWD: /usr/bin/apt-get update

    این دستور به کاربر john اجازه می‌دهد بدون درخواست رمز عبور (NOPASSWD) دستور apt-get update را اجرا کند.

  • عدم نیاز به رمز عبور برای دستورات خاص
    می‌توانید برخی از دستورات را بدون نیاز به ورود رمز عبور تنظیم کنید:

    john ALL=(ALL) NOPASSWD: /usr/sbin/reboot
  • حالت تمام‌قدرت (ALL=(ALL) ALL)
    برای اجازه دادن به یک کاربر برای اجرای هر دستور مدیریتی به‌صورت root، می‌توان از حالت زیر استفاده کرد:

    john ALL=(ALL) ALL

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


4. استفاده از Sudo

بعد از تنظیم دسترسی Sudo، کاربر می‌تواند دستورات مدیریتی را با استفاده از sudo اجرا کند:

sudo apt-get update
sudo systemctl restart apache2

5. محدود کردن دسترسی به دستور خاص یا گروه خاص

می‌توانید دسترسی Sudo را فقط به دستورات خاص یا گروه‌های خاص محدود کنید.
مثال زیر، فقط به گروه admins دسترسی به دستورات systemctl می‌دهد:

%admins ALL=(ALL) NOPASSWD: /bin/systemctl restart apache2

جمع‌بندی

استفاده از Sudo یکی از بهترین راه‌ها برای کنترل دسترسی‌های مدیریتی در لینوکس است. با تنظیم دقیق مجوزهای Sudo در فایل sudoers، می‌توانید به کاربران خاص اجازه دهید که بدون دسترسی مستقیم به ریشه (root)، دستورات مدیریتی مورد نیاز خود را اجرا کنند.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”پیکربندی SSH برای دسترسی ایمن به سرور” subtitle=”توضیحات کامل”]SSH (Secure Shell) پروتکلی است که برای برقراری ارتباط امن بین کامپیوترها استفاده می‌شود. برای دسترسی به سرورهای لینوکسی از راه دور به شیوه‌ای امن، تنظیمات SSH بسیار مهم هستند.


1. نصب سرویس SSH

اگر SSH از قبل نصب نیست، آن را با دستور زیر نصب کنید:

sudo apt-get install ssh   # برای توزیع‌های مبتنی بر Debian (Ubuntu)
sudo yum install openssh-server   # برای توزیع‌های مبتنی بر Red Hat (CentOS، Fedora)

2. پیکربندی فایل SSH (sshd_config)

تنظیمات اصلی SSH در فایل sshd_config قرار دارند که در مسیر /etc/ssh/sshd_config قرار دارد. با استفاده از دستور sudo این فایل را ویرایش کنید:

sudo nano /etc/ssh/sshd_config

تنظیمات مهم در فایل sshd_config:

  • غیرفعال کردن ورود به ریشه (Root Login)
    برای افزایش امنیت، بهتر است ورود به حساب root از طریق SSH غیرفعال شود.

    PermitRootLogin no
  • استفاده از کلیدهای SSH بجای رمز عبور
    استفاده از کلیدهای SSH به‌جای رمز عبور به امنیت بیشتر کمک می‌کند.

    PubkeyAuthentication yes
  • پورت پیش‌فرض SSH را تغییر دهید
    تغییر پورت SSH از پورت 22 به یک پورت متفاوت می‌تواند در برابر حملات Brute Force محافظت بهتری فراهم کند.

    Port 2200
  • محافظت از سرویس SSH با PermitTunnel
    این تنظیمات به صورت زیر اعمال می‌شود تا امنیت بیشتری برای تونل‌های VPN فراهم شود:

    PermitTunnel no
  • بستن خدمات مدیریتی اضافی (Banner) برای امنیت بیشتر
    می‌توانید پیام‌های خوش‌آمدگویی یا اعلان‌ها را به‌شکل زیر محدود کنید:

    Banner /etc/issue.net
  • تغییر محدودیت‌های ورود (LoginGraceTime، MaxAuthTries)
    این تنظیمات به امنیت بیشتر کمک می‌کنند:

    LoginGraceTime 60
    MaxAuthTries 3

3. فعال‌سازی تغییرات و راه‌اندازی مجدد سرویس SSH

پس از ویرایش فایل، باید تغییرات را ذخیره و سرویس SSH را ری‌استارت کنید:

sudo systemctl restart ssh

4. کلید SSH برای دسترسی امن

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

  • ایجاد جفت کلید
    با دستور زیر یک جفت کلید جدید ایجاد کنید:

    ssh-keygen -t rsa -b 2048

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

  • انتقال کلید عمومی به سرور
    با دستور زیر، کلید عمومی به سرور منتقل می‌شود:

    ssh-copy-id user@your-server-ip
  • اتصال ایمن با کلید
    حالا می‌توانید به سرور با کلید SSH وارد شوید:

    ssh user@your-server-ip

5. بررسی اتصال SSH

بعد از تنظیمات، می‌توانید اتصال SSH خود را با دستور زیر بررسی کنید:

ssh user@your-server-ip -p 2200  # اگر پورت را تغییر داده‌اید

جمع‌بندی

پیکربندی صحیح SSH با استفاده از کلیدهای SSH، تغییر پورت پیش‌فرض و غیرفعال‌سازی ورود به ریشه، سطح امنیت دسترسی به سرورهای لینوکسی را به میزان زیادی افزایش می‌دهد.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 4: مدیریت سرویس‌ها و فرآیندها”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”بررسی و مدیریت سرویس‌ها با systemctl و service” subtitle=”توضیحات کامل”]مدیریت سرویس‌ها در لینوکس بخش مهمی از مدیریت سرور است. systemctl و service دو ابزار اصلی برای مدیریت سرویس‌ها هستند.


1. استفاده از systemctl برای مدیریت سرویس‌ها

systemctl ابزاری پیشرفته و قدرتمند است که به طور کلی جایگزین service شده است و قابلیت‌های بیشتری دارد. با systemctl می‌توانید سرویس‌ها را استارت، استاپ، ری‌استارت، و وضعیت آن‌ها را بررسی کنید.

  • چک وضعیت سرویس‌ها
    برای بررسی وضعیت یک سرویس خاص، از دستور زیر استفاده کنید:

    sudo systemctl status <نام سرویس>

    مثال:

    sudo systemctl status apache2
  • استارت سرویس‌ها
    برای شروع یک سرویس، از دستور زیر استفاده کنید:

    sudo systemctl start <نام سرویس>

    مثال:

    sudo systemctl start apache2
  • استاپ سرویس‌ها
    برای توقف یک سرویس، از دستور زیر استفاده کنید:

    sudo systemctl stop <نام سرویس>

    مثال:

    sudo systemctl stop apache2
  • ری‌استارت سرویس‌ها
    برای ری‌استارت کردن یک سرویس، از دستور زیر استفاده کنید:

    sudo systemctl restart <نام سرویس>

    مثال:

    sudo systemctl restart apache2
  • اجرای مجدد سرویس در بوت سیستم
    برای تنظیم اینکه سرویس هنگام بوت شدن سیستم فعال باشد، از دستور زیر استفاده کنید:

    sudo systemctl enable <نام سرویس>

    مثال:

    sudo systemctl enable apache2
  • غیرفعال کردن سرویس از بوت
    برای متوقف کردن اجرای خودکار یک سرویس در بوت، از دستور زیر استفاده کنید:

    sudo systemctl disable <نام سرویس>

    مثال:

    sudo systemctl disable apache2

2. استفاده از service برای مدیریت سرویس‌ها

در گذشته از دستور service برای مدیریت سرویس‌ها استفاده می‌شد، اما اکنون systemctl به عنوان ابزار استاندارد شناخته می‌شود.

  • چک وضعیت یک سرویس
    برای بررسی وضعیت یک سرویس، از دستور زیر استفاده کنید:

    sudo service <نام سرویس> status

    مثال:

    sudo service apache2 status
  • استارت سرویس‌ها
    برای شروع یک سرویس، از دستور زیر استفاده کنید:

    sudo service <نام سرویس> start

    مثال:

    sudo service apache2 start
  • استاپ سرویس‌ها
    برای توقف یک سرویس، از دستور زیر استفاده کنید:

    sudo service <نام سرویس> stop

    مثال:

    sudo service apache2 stop
  • ری‌استارت سرویس‌ها
    برای ری‌استارت یک سرویس، از دستور زیر استفاده کنید:

    sudo service <نام سرویس> restart

    مثال:

    sudo service apache2 restart

3. مقایسه systemctl و service

  • systemctl:
    • استفاده مدرن و توصیه‌شده برای مدیریت سرویس‌ها.
    • قابلیت‌های بیشتری نسبت به service مانند مدیریت بهتر وابستگی‌ها و سیستم‌های چندکاربره.
    • گزینه‌های بیشتری برای سرویس‌ها و ماژول‌های مرتبط دارد.
  • service:
    • استفاده از این ابزار قدیمی همچنان ممکن است، اما کمتر توصیه می‌شود.
    • ساده‌تر و راحت‌تر برای سرویس‌های معمولی.

جمع‌بندی

مدیریت سرویس‌ها با systemctl قدرتمند و انعطاف‌پذیر است و ابزار استاندارد لینوکس برای این منظور به شمار می‌رود. service همچنان قابل استفاده است، اما برای بهینه‌سازی، بهتر است از systemctl استفاده شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”نظارت و مدیریت فرآیندها با ps, top, htop, و kill” subtitle=”توضیحات کامل”]در مدیریت سرورهای لینوکسی، نظارت بر فرآیندها بخش مهمی از مدیریت سیستم محسوب می‌شود. ابزارهایی مانند ps, top, htop, و kill به شما کمک می‌کنند فرآیندهای در حال اجرا را بررسی و مدیریت کنید.


1. ابزار ps

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

  • نمایش کلیه فرآیندهای جاری
    ps aux

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

  • نمایش فرآیندهای متعلق به کاربر خاص
    ps aux | grep <نام کاربر>
  • نمایش اطلاعات خاصی از فرآیندها
    ps -ef   # نمایش فرآیندهای کامل و سلسله‌مراتبی

2. ابزار top

top یک ابزار تعاملی است که به صورت زنده وضعیت سیستم و فرآیندهای فعال را نمایش می‌دهد.

  • اجرای top
    top
    • این ابزار به شما اطلاعات لحظه‌ای درباره CPU، RAM، و فرآیندهای فعال می‌دهد.
    • با استفاده از کلیدهای مختلف، می‌توانید فرآیندها را مدیریت کنید:
      • k: پایان یک فرآیند.
      • q: خروج از top.
  • جستجوی فرآیندها
    در داخل top می‌توانید با فشردن کلید F فرآیندها را بر اساس نام یا PID جستجو کنید.

3. ابزار htop

htop یک ابزار گرافیکی پیشرفته‌تر از top است که برای نظارت و مدیریت فرآیندها بسیار کاربرپسندتر است.

  • نصب htop
    در توزیع‌های مبتنی بر Debian (Ubuntu):

    sudo apt-get install htop

    در توزیع‌های مبتنی بر Red Hat (CentOS، Fedora):

    sudo yum install htop
  • اجرای htop
    htop
    • htop فرآیندها را به صورت گرافیکی نمایش می‌دهد.
    • شما می‌توانید فرآیندها را به راحتی با کلیدهای F9 (kill) و F10 (تغییر اولویت) مدیریت کنید.

4. ابزار kill

kill فرآیندهای در حال اجرا را خاتمه می‌دهد.

  • پایان یک فرآیند با مشخص کردن PID
    kill <PID>
    • PID شناسه فرآیند است که در ps یا top نمایش داده می‌شود.
  • پایان یک فرآیند با ارسال سیگنال
    می‌توانید سیگنال‌های مختلفی برای خاتمه فرآیند ارسال کنید:

    kill -9 <PID>  # به‌طور اجباری فرآیند را خاتمه می‌دهد.

جمع‌بندی

ابزارهایی مانند ps, top, htop, و kill در نظارت و مدیریت فرآیندهای لینوکس بسیار کاربردی هستند. htop برای نظارت گرافیکی و top برای مشاهده زنده و مدیریت سریع فرآیندها ایده‌آل هستند. همچنین، ابزار kill به شما کمک می‌کند تا فرآیندهای غیرضروری را خاتمه دهید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”راه‌اندازی سرویس‌های ضروری مانند: SSH, FTP, و NTP” subtitle=”توضیحات کامل”]

1. سرویس SSH (Secure Shell)

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

  • نصب و فعال‌سازی سرویس SSH
    در سیستم‌های مبتنی بر Debian (مانند Ubuntu):

    sudo apt-get install ssh
    sudo systemctl enable ssh
    sudo systemctl start ssh

    در سیستم‌های مبتنی بر Red Hat (مانند CentOS، Fedora):

    sudo yum install openssh-server
    sudo systemctl enable sshd
    sudo systemctl start sshd
  • تنظیمات اولیه
    فایل پیکربندی SSH در مسیر /etc/ssh/sshd_config قرار دارد. می‌توانید برای تنظیمات امنیتی مانند:

    • غیرفعال کردن ورود ریشه از طریق SSH.
    • فعال‌سازی کلیدهای SSH به جای ورود با رمز عبور.

    تغییرات لازم را اعمال کنید.


2. سرویس FTP (File Transfer Protocol)

FTP یک پروتکل برای انتقال فایل‌ها بین سرور و کلاینت‌ها است.

  • نصب و فعال‌سازی سرویس FTP
    در سیستم‌های مبتنی بر Debian:

    sudo apt-get install vsftpd
    sudo systemctl enable vsftpd
    sudo systemctl start vsftpd

    در سیستم‌های مبتنی بر Red Hat:

    sudo yum install vsftpd
    sudo systemctl enable vsftpd
    sudo systemctl start vsftpd
  • تنظیمات FTP
    فایل پیکربندی vsftpd در مسیر /etc/vsftpd.conf قرار دارد. می‌توانید تنظیمات مربوط به کاربران و امنیت FTP را در آن اعمال کنید.

3. سرویس NTP (Network Time Protocol)

NTP برای تنظیم و همگام‌سازی زمان سرور با منابع دیگر استفاده می‌شود.

  • نصب و فعال‌سازی سرویس NTP
    در سیستم‌های مبتنی بر Debian:

    sudo apt-get install ntp
    sudo systemctl enable ntp
    sudo systemctl start ntp

    در سیستم‌های مبتنی بر Red Hat:

    sudo yum install ntp
    sudo systemctl enable ntpd
    sudo systemctl start ntpd
  • تنظیمات NTP
    فایل پیکربندی NTP در مسیر /etc/ntp.conf قرار دارد. تنظیمات مربوط به سرورهای NTP و دامنه‌ها در این فایل مشخص می‌شود.

جمع‌بندی

راه‌اندازی سرویس‌های SSH، FTP، و NTP بخش مهمی از مدیریت سرور است. این سرویس‌ها امکانات دسترسی، انتقال فایل، و تنظیمات زمانی سرور را فراهم می‌کنند و باید با تنظیمات ایمن راه‌اندازی شوند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 5: مدیریت فایل‌سیستم و فضای ذخیره‌سازی”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”ساختار فایل‌سیستم در لینوکس” subtitle=”توضیحات کامل”]در لینوکس، ساختار فایل‌سیستم به صورت یک سیستم سلسله‌مراتبی (hierarchical) است که فایل‌ها و دایرکتوری‌ها به طور منطقی سازمان‌دهی شده‌اند. این ساختار به نحوی طراحی شده است که دسترسی به اطلاعات و مدیریت سیستم را آسان‌تر می‌کند.


1. دایرکتوری‌های اصلی در لینوکس:

  1. / (Root)
    • این دایرکتوری اصلی‌ترین نقطه در ساختار سلسله‌مراتبی لینوکس است.
    • تمام دایرکتوری‌های سیستم در این سطح قرار دارند.
  2. /bin
    • حاوی ابزارهای حیاتی سیستم مانند ls, cp, mv, و rm که برای اجرای سیستم مورد نیاز هستند.
  3. /etc
    • حاوی فایل‌های پیکربندی سیستم است.
    • فایل‌های پیکربندی اصلی مانند ssh/sshd_config, network/interfaces, و passwd در اینجا قرار دارند.
  4. /home
    • دایرکتوری خانگی کاربران است. هر کاربر یک دایرکتوری جداگانه در اینجا دارد.
  5. /lib و /lib64
    • حاوی فایل‌های ضروری کتابخانه برای نرم‌افزارهای سیستم و لینوکس.
  6. /usr
    • حاوی ابزارهای اضافی و فایل‌های اجرایی است که توسط کاربر و برنامه‌های نصب شده استفاده می‌شوند.
  7. /var
    • شامل فایل‌های متغیر مانند لاگ‌ها، کش‌ها، و پایگاه داده‌هایی که ممکن است تغییر کنند.
  8. /tmp
    • دایرکتوری موقت که برای فایل‌های موقت و اجرای برنامه‌های موقتی استفاده می‌شود.
  9. /proc
    • دایرکتوری مجازی که اطلاعات درباره فرآیندهای جاری و پیکربندی‌های سیستم را نشان می‌دهد.
  10. /dev
    • حاوی فایل‌های دستگاه است که دسترسی به سخت‌افزارها را فراهم می‌کند.
  11. /boot
    • حاوی فایل‌های بارگیری هسته (Kernel) و بوت لودرها است.
  12. /mnt
    • برای مونتاژ سیستم‌ فایل‌ها و پوشه‌ها به عنوان موقت استفاده می‌شود.
  13. /opt
    • حاوی نرم‌افزارهای خارجی و نصب شده توسط کاربر است.
  14. /srv
    • برای سرویس‌ها و داده‌های خاصی که توسط خدمات در حال اجرا استفاده می‌شود.
  15. /sys
    • دایرکتوری مجازی که نمایشی از سیستم‌ فایل‌های هسته‌ای فراهم می‌کند.
  16. /selinux
    • دایرکتوری مرتبط با SELinux (Security Enhanced Linux) که سیاست‌های امنیتی مربوطه در آن قرار دارد.

2. پارتیشن‌بندی فایل‌سیستم:

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

  • Ext4 (پیش‌فرض در بسیاری از توزیع‌ها)
  • XFS (برای سیستم‌های ذخیره‌سازی پرسرعت)
  • Btrfs (برای حجم‌های داده‌ای پیشرفته و snapshots)
  • ZFS (برای ذخیره‌سازی پیشرفته و مانیتورینگ داده‌ها)

جمع‌بندی

ساختار فایل‌سیستم در لینوکس به صورت سلسله‌مراتبی است و دایرکتوری‌های اصلی مانند /, /bin, /etc, /home و … هرکدام نقش خاصی در سازمان‌دهی و مدیریت سیستم ایفا می‌کنند. همچنین، پارتیشن‌بندی فایل‌سیستم به سازمان‌دهی بهتر و کارایی سیستم کمک می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مدیریت پارتیشن‌ها و درایوها با ابزارهایی مانند fdisk, parted, و lsblk در لینوکس” subtitle=”توضیحات کامل”]در لینوکس، مدیریت پارتیشن‌ها و درایوها برای تقسیم‌بندی دیسک‌ها به بخش‌های منطقی و استفاده بهینه از فضای ذخیره‌سازی ضروری است. ابزارهای مختلفی برای مدیریت پارتیشن‌ها وجود دارند که هرکدام کاربرد خاصی دارند.


1. fdisk (فرمان خط فرمان قدیمی)

  • نصب fdisk
    fdisk معمولاً به صورت پیش‌فرض در اکثر توزیع‌های لینوکس موجود است.

    sudo apt-get install fdisk  # در توزیع‌های Debian/Ubuntu
    sudo yum install fdisk      # در توزیع‌های Red Hat/CentOS
  • کاربرد fdisk:
    fdisk یکی از ابزارهای قدیمی و محبوب برای ایجاد، حذف، و مدیریت پارتیشن‌ها است.ایجاد پارتیشن با fdisk:

    sudo fdisk /dev/sdX  # جایگزین /dev/sdX با درایو مورد نظر
    • با استفاده از گزینه n می‌توانید پارتیشن جدید ایجاد کنید.
    • با گزینه d می‌توانید پارتیشن‌ها را حذف کنید.
    • با گزینه p می‌توانید لیست پارتیشن‌ها را مشاهده کنید.

    پس از پایان عملیات با w، تغییرات ذخیره می‌شود.


2. parted (ابزار پیشرفته‌تر)

  • نصب parted
    parted معمولاً به همراه ابزارهای وابسته به آن از جمله gparted نصب می‌شود.

    sudo apt-get install parted  # در توزیع‌های Debian/Ubuntu
    sudo yum install parted      # در توزیع‌های Red Hat/CentOS
  • کاربرد parted:
    parted یک ابزار پیشرفته‌تر و کاربرپسندتر برای مدیریت پارتیشن‌ها است.ایجاد پارتیشن با parted:

    sudo parted /dev/sdX  # جایگزین /dev/sdX با درایو مورد نظر
    • با استفاده از mkpart می‌توانید پارتیشن جدید ایجاد کنید.
    • با print می‌توانید لیست پارتیشن‌ها را مشاهده کنید.
    • تنظیمات پارتیشن‌ها را با resize, delete و set می‌توانید تغییر دهید.

3. lsblk (نمایش وضعیت پارتیشن‌ها و درایوها)

  • نصب lsblk
    lsblk معمولاً به صورت پیش‌فرض در بیشتر توزیع‌ها نصب شده است.

    sudo apt-get install util-linux  # برای اطمینان از نصب `lsblk`
    sudo yum install util-linux
  • کاربرد lsblk:
    lsblk اطلاعاتی جامع از درایوها و پارتیشن‌های سیستم ارائه می‌دهد.نمایش لیست درایوها و پارتیشن‌ها:

    lsblk

    این دستور اطلاعاتی مثل نوع فایل‌سیستم، اندازه، و نقاط مونت را نشان می‌دهد.


مثال‌ها و کاربردها:

  1. ایجاد پارتیشن جدید با parted:
    sudo parted /dev/sdX mkpart primary ext4 0% 100%
  2. حذف پارتیشن‌ها با fdisk:
    udo fdisk /dev/sdX
    d # برای حذف پارتیشن
  3. اطلاعات درایوها و پارتیشن‌ها با lsblk:
    lsblk -f

جمع‌بندی

ابزارهای fdisk, parted, و lsblk هرکدام به شکلی برای مدیریت پارتیشن‌ها و درایوها در لینوکس مورد استفاده قرار می‌گیرند. fdisk قدیمی‌تر و مناسب عملیات ساده است، parted پیشرفته‌تر است و lsblk اطلاعات دقیقی در مورد درایوها و پارتیشن‌ها ارائه می‌دهد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از LVM (Logical Volume Manager)” subtitle=”توضیحات کامل”]LVM (Logical Volume Manager) یک سیستم مدیریت فضای ذخیره‌سازی پیشرفته است که به کاربران امکان می‌دهد فضای دیسک را به صورت منطقی مدیریت کنند. با استفاده از LVM می‌توان فضای دیسک را به حجم‌های منطقی تقسیم کرد که به راحتی می‌توان آن‌ها را تغییر داد، گسترش داد یا مدیریت کرد.


مزایای استفاده از LVM:

  1. انعطاف‌پذیری در مدیریت فضای ذخیره‌سازی
    • امکان گسترش یا کاهش فضای ذخیره‌سازی بدون نیاز به تغییر پارتیشن‌ها.
  2. مدیریت ساده‌تر و پشتیبانی از چندین دیسک
    • با LVM می‌توان چندین دیسک را به یک حجم منطقی بزرگ‌تر تبدیل کرد.
  3. افزایش ایمنی و کارایی سیستم
    • امکان ایجاد Snapshot از پارتیشن‌ها.
  4. قابلیت مقیاس‌پذیری
    • می‌توان به‌راحتی فضای ذخیره‌سازی جدید اضافه کرد و منابع را مدیریت کرد.

فرایند ایجاد و مدیریت LVM:

  1. نصب LVM Tools
    ابزارهای LVM به طور پیش‌فرض در بیشتر توزیع‌ها نصب شده‌اند، اما اگر نبودند، می‌توان آن‌ها را نصب کرد.

    sudo apt-get install lvm2   # در Debian/Ubuntu
    sudo yum install lvm2       # در CentOS/Red Hat

  1. ایجاد LVM در دیسک:
    • ایجاد Volume Group (VG):
      با استفاده از دستور vgcreate می‌توانید یک Volume Group جدید ایجاد کنید.

      sudo vgcreate my_vg /dev/sdX /dev/sdY  # جایگزین با دیسک‌های مورد نظر
    • ایجاد Logical Volume (LV):
      با دستور lvcreate می‌توانید Logical Volume (LV) جدیدی در Volume Group ایجاد کنید.

      sudo lvcreate -L 100G -n my_lv my_vg  # ایجاد LV با حجم 100 گیگابایت در VG
    • فرمت کردن و مونتاژ Logical Volume:
      با دستور mkfs می‌توانید فایل‌سیستم روی LV ایجاد کنید.

      sudo mkfs.ext4 /dev/my_vg/my_lv
      sudo mount /dev/my_vg/my_lv /mnt/mylv

  1. گسترش Volume Group و Logical Volume:
    • گسترش Volume Group:
      می‌توانید حجم‌ها یا دیسک‌های جدید اضافه کنید و حجم VG را گسترش دهید.

      sudo vgextend my_vg /dev/sdZ
    • گسترش Logical Volume:
      برای گسترش LV از دستور lvresize استفاده کنید.

      sudo lvresize -L +50G /dev/my_vg/my_lv
  2. ویرایش فایل‌سیستم و مونتاژ دوباره:
    پس از گسترش، باید فایل‌سیستم را تنظیم کرده و دوباره آن را مونتاژ کنید.

    sudo resize2fs /dev/my_vg/my_lv
    sudo mount -o remount /mnt/mylv

  1. Snapshot گرفتن از Logical Volume:
    می‌توانید از یک LV Snapshot بگیرید تا بتوانید از آن به‌عنوان بکاپ یا در مواقع نیاز به بازگشت به حالت قبلی استفاده کنید.

    sudo lvcreate --snapshot -L 10G -n my_snapshot /dev/my_vg/my_lv

جمع‌بندی

LVM ابزاری قدرتمند برای مدیریت فضای ذخیره‌سازی در لینوکس است که امکان تقسیم‌بندی و مدیریت منطقی فضای دیسک را فراهم می‌کند. با استفاده از LVM می‌توان فضای ذخیره‌سازی را به راحتی گسترش داد، تغییر داد و از آن محافظت کرد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مانیتورینگ و مدیریت فضای دیسک با df, du, و ncdu” subtitle=”توضیحات کامل”]مدیریت و مانیتورینگ فضای دیسک یکی از وظایف مهم در مدیریت سرورهای لینوکسی است. ابزارهایی مانند df, du, و ncdu به شما کمک می‌کنند تا مصرف فضای دیسک را بررسی کنید و حجم‌های اضافی را شناسایی و مدیریت نمایید.


1. df (Disk Free)

  • کاربرد:
    این ابزار وضعیت فضای دیسک سیستم را نمایش می‌دهد.
  • نمایش اطلاعات کلی درایوها و پارتیشن‌ها:
    df -h
    • -h: برای نمایش مقادیر به صورت خوانا (کیلوبایت، مگابایت، گیگابایت).
  • نمایش اطلاعات برای یک پارتیشن خاص:
    df -h /dev/sda1
  • نمایش اطلاعات کامل:
    df -T -h

2. du (Disk Usage)

  • کاربرد:
    این ابزار اطلاعات دقیقی از مصرف فضای دیسک فایل‌ها و دایرکتوری‌ها ارائه می‌دهد.
  • نمایش حجم مصرفی دایرکتوری‌ها:
    du -h /home/
    • -h: برای نمایش خوانا حجم فایل‌ها و دایرکتوری‌ها.
  • نمایش جزئیات فایل‌ها و دایرکتوری‌ها به همراه اندازه‌شان:
    du -sh *
  • نمایش عمق مشخصی از فایل‌ها و دایرکتوری‌ها:
    du -sh --max-depth=1 /home/

3. ncdu (NCurses Disk Usage)

  • کاربرد:
    ابزار ncdu یک رابط گرافیکی برای مانیتورینگ فضای دیسک است که با استفاده از محیط کنسولی کار می‌کند.
  • نصب ncdu:
    sudo apt-get install ncdu   # در Debian/Ubuntu
    sudo yum install ncdu       # در CentOS/Red Hat
  • اجرای ncdu:
    ncdu /home/

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


جمع‌بندی

ابزارهایی مانند df, du, و ncdu برای مدیریت و مانیتورینگ فضای دیسک در لینوکس بسیار مفید هستند. df فضای کلی دیسک را نمایش می‌دهد، du به شما کمک می‌کند تا مصرف دقیق‌تر فایل‌ها و دایرکتوری‌ها را بررسی کنید و ncdu یک رابط کاربری گرافیکی برای تجزیه و تحلیل سریع‌تر مصرف فضای دیسک است.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”کار با سیستم‌های فایل توزیع‌شده (NFS و Samba)” subtitle=”توضیحات کامل”]کار با سیستم‌های فایل توزیع‌شده به شما اجازه می‌دهد تا منابع فایل‌ها را به صورت شبکه‌ای در سرورها به اشتراک بگذارید و به راحتی فایل‌ها را بین سیستم‌ها دسترسی داشته باشید. NFS (Network File System) و Samba دو پروتکل پرکاربرد برای اشتراک‌گذاری فایل‌ها در شبکه هستند.


1. NFS (Network File System)

  • NFS چیست؟
    NFS پروتکلی است که به کاربران و سیستم‌ها این امکان را می‌دهد که فایل‌ها را روی سرورهای مختلف به اشتراک بگذارند، به‌گونه‌ای که انگار این فایل‌ها محلی هستند.
  • نصب و پیکربندی NFS در سرور لینوکس:ابتدا بسته NFS را نصب کنید:
    sudo apt-get install nfs-kernel-server   # در Debian/Ubuntu
    sudo yum install nfs-utils                # در CentOS/Red Hat
  • پیکربندی NFS:فایل پیکربندی NFS در /etc/exports قرار دارد. برای به اشتراک گذاشتن یک دایرکتوری، آن را در این فایل تعریف می‌کنیم.
    sudo nano /etc/exports

    مثال:

    /shared_data 192.168.1.0/24(rw,sync,no_root_squash)
    • rw : دسترسی خواندن و نوشتن.
    • sync : همگام‌سازی فایل‌ها.
    • no_root_squash : اجازه دسترسی ریشه (root) را می‌دهد.
  • ری استارت NFS و راه‌اندازی مجدد سرور:
    sudo exportfs -a
    sudo systemctl restart nfs-server
  • دسترسی به فایل‌های NFS از سیستم‌های کلاینت:نصب بسته NFS در کلاینت:
    sudo apt-get install nfs-common   # در Debian/Ubuntu
    sudo yum install nfs-utils         # در CentOS/Red Hat

    اتصال به دایرکتوری به اشتراک‌گذاری شده:

    sudo mount -t nfs 192.168.1.1:/shared_data /mnt/nfs_shared
  • دسترسی به فایل‌ها از طریق NFS با دستور df یا ls:
    df -h /mnt/nfs_shared
    ls /mnt/nfs_shared

2. Samba (Server Message Block – SMB)

  • Samba چیست؟
    Samba پروتکلی است که امکان به اشتراک‌گذاری فایل‌ها و پرینترها بین سیستم‌های لینوکس و ویندوز را فراهم می‌کند.
  • نصب و پیکربندی Samba در سرور لینوکس:ابتدا بسته Samba را نصب کنید:
    sudo apt-get install samba   # در Debian/Ubuntu
    sudo yum install samba       # در CentOS/Red Hat
  • پیکربندی Samba:فایل پیکربندی اصلی Samba در /etc/samba/smb.conf قرار دارد.
    sudo nano /etc/samba/smb.conf

    برای به اشتراک‌گذاری یک دایرکتوری، بخش مربوط به share را اضافه می‌کنیم:

    [shared_data]
    path = /srv/shared_data
    read only = no
    browsable = yes
    guest ok = yes
  • شروع و راه‌اندازی مجدد Samba:
    sudo systemctl restart smbd
  • دسترسی به فایل‌های Samba از سیستم‌های کلاینت:نصب بسته‌های مورد نیاز در کلاینت:
    sudo apt-get install smbclient   # در Debian/Ubuntu
    sudo yum install samba-client    # در CentOS/Red Hat

    اتصال به سرور Samba:

    sudo mount -t cifs -o username=guest,password='' //192.168.1.1/shared_data /mnt/samba_shared
  • دسترسی به فایل‌ها از طریق Samba:
    df -h /mnt/samba_shared
    ls /mnt/samba_shared

جمع‌بندی

NFS و Samba دو پروتکل پرکاربرد برای اشتراک‌گذاری فایل‌ها و منابع در شبکه‌های محلی هستند. NFS مناسب محیط‌های لینوکسی است، در حالی که Samba برای سیستم‌های لینوکسی و ویندوزی مناسب‌تر است. با پیکربندی این دو پروتکل، می‌توانید به اشتراک‌گذاری فایل‌ها و منابع به صورت شبکه‌ای بپردازید.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 6: مدیریت شبکه”][cdb_course_lesson title=”تنظیمات شبکه در لینوکس:”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تنظیم دستی IP، Subnet Mask و Gateway” subtitle=”توضیحات کامل”]تنظیم صحیح شبکه در سرورهای لینوکسی یکی از اصول مهم مدیریت سرورهای لینوکسی است. تنظیم IP، Subnet Mask و Gateway به شما کمک می‌کند تا سرور بتواند به دیگر دستگاه‌های شبکه متصل شود و با سایر دستگاه‌ها ارتباط برقرار کند.


1. تنظیم دستی IP، Subnet Mask و Gateway:

برای تنظیم دستی IP، Subnet Mask و Gateway، ابتدا فایل تنظیمات شبکه مربوطه (/etc/network/interfaces در توزیع‌های Debian/Ubuntu یا /etc/sysconfig/network-scripts/ifcfg-* در CentOS/Red Hat) را ویرایش کنید.


در Debian/Ubuntu (فایل /etc/network/interfaces):
  1. ویرایش فایل interfaces:
    sudo nano /etc/network/interfaces
  2. نمونه‌ای از تنظیم دستی IP، Subnet Mask و Gateway:
    auto eth0
    iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.1
  3. پس از ویرایش، شبکه را بازنشانی کنید:
    sudo systemctl restart networking

در CentOS/Red Hat (فایل‌های ifcfg-eth0 در /etc/sysconfig/network-scripts/):
  1. ویرایش فایل ifcfg-eth0:
    sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
  2. نمونه‌ای از تنظیمات:
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    ONBOOT=yes
  3. پس از ویرایش، شبکه را بازنشانی کنید:
    sudo systemctl restart network

2. بررسی تنظیمات فعلی شبکه:

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

  • نمایش IP تنظیم شده:
    ip a show eth0
  • نمایش جدول مسیریابی (Routing Table):
    route -n

جمع‌بندی

تنظیم دستی IP، Subnet Mask و Gateway در لینوکس به شما اجازه می‌دهد تا شبکه سرور را به درستی پیکربندی کنید. با ویرایش فایل‌های مرتبط و راه‌اندازی مجدد سرویس‌های شبکه، سرور شما آماده برقراری ارتباط با سایر دستگاه‌های شبکه می‌شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از NetworkManager و nmcli برای مدیریت شبکه در لینوکس” subtitle=”توضیحات کامل”]NetworkManager ابزاری برای مدیریت پیکربندی شبکه‌ها در سیستم‌های لینوکس است که به شما کمک می‌کند تنظیمات شبکه، اتصال‌های سیمی و بی‌سیم را به آسانی مدیریت کنید. ابزار خط فرمان nmcli (NetworkManager Command Line Interface) به شما اجازه می‌دهد به راحتی تنظیمات شبکه را بررسی، ویرایش و مدیریت کنید.


1. نصب NetworkManager (در صورت لزوم):

در اکثر توزیع‌های لینوکس، NetworkManager به صورت پیش‌فرض نصب شده است، اما اگر در سیستم شما نصب نیست، می‌توانید آن را نصب کنید:

  • در Debian/Ubuntu:
    sudo apt-get install network-manager
  • در CentOS/Red Hat:
    sudo yum install NetworkManager

2. بررسی وضعیت NetworkManager:

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

nmcli d

این دستور وضعیت دستگاه‌های شبکه را نشان می‌دهد و بررسی می‌کند که آیا NetworkManager در حال اجرا است یا خیر.


3. استفاده از nmcli برای مدیریت اتصالات شبکه:

نمایش لیست اتصالات شبکه:
nmcli connection show

این دستور تمام اتصالات موجود را لیست می‌کند.

اتصال به شبکه سیمی:

برای اتصال دستی به یک شبکه سیمی با نام اتصال مشخص:

nmcli connection up "Ethernet connection 1"

یا با شناسه اتصال:

nmcli connection up id eth0
اتصال به شبکه بی‌سیم (Wi-Fi):

برای اتصال به یک شبکه Wi-Fi با شناسه اتصال:

nmcli device wifi connect "NetworkName" password "NetworkPassword"

یا با استفاده از شناسه شبکه:

nmcli device wifi connect SSID "NetworkName" password "NetworkPassword"
ایجاد یک اتصال شبکه جدید (مثل Wi-Fi یا Ethernet):

برای ایجاد یک اتصال جدید، به عنوان مثال یک اتصال Wi-Fi:

nmcli connection add con-name "MyWiFi" ifname wlan0 type wifi ssid "NetworkName"

پس از ایجاد، می‌توانید اتصال را فعال کنید:

nmcli connection up "MyWiFi"

4. ویرایش تنظیمات اتصال موجود:

ویرایش تنظیمات یک اتصال خاص با nmcli:

nmcli connection edit "ConnectionName"

سپس می‌توانید تنظیمات مختلف مانند IP Address، Gateway و DNS را تغییر دهید.


5. تنظیمات DHCP یا Static IP:

برای تنظیم اتصال به صورت Static IP:

nmcli connection modify "Ethernet connection 1" ipv4.addresses 192.168.1.100/24
nmcli connection modify "Ethernet connection 1" ipv4.gateway 192.168.1.1
nmcli connection modify "Ethernet connection 1" ipv4.dns "8.8.8.8"
nmcli connection down "Ethernet connection 1"
nmcli connection up "Ethernet connection 1"

جمع‌بندی:

ابزار nmcli یکی از راه‌های مدیریت شبکه در لینوکس است که با استفاده از آن می‌توانید به‌سادگی اتصالات شبکه سیمی و بی‌سیم را مدیریت کرده و تنظیمات شبکه را تغییر دهید. NetworkManager ابزاری انعطاف‌پذیر برای سرورها و سیستم‌های دسکتاپ است که مدیریت شبکه را ساده می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مدیریت و عیب‌یابی اتصال شبکه با ابزارهایی مانند: ping, traceroute, netstat, و ip” subtitle=”توضیحات کامل”]هنگامی که با مشکلات شبکه مواجه می‌شوید، ابزارهای مختلفی وجود دارند که به شما کمک می‌کنند مشکلات را تشخیص و عیب‌یابی کنید.


1. ابزار ping:

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

  • Syntax:
    ping [IP or hostname]
  • مثال:
    ping 8.8.8.8

    این دستور می‌تواند اتصال به DNS سرور گوگل را بررسی کند.


2. ابزار traceroute:

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

  • Syntax:
    traceroute [IP or hostname]
  • مثال:
    traceroute 8.8.8.8

این دستور مسیر کامل بسته‌ها را به سرور DNS گوگل نشان می‌دهد.


3. ابزار netstat:

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

  • Syntax:
    netstat [option]
  • مثال‌های متداول:
    • نمایش اتصالات فعلی:
      netstat -tnul
    • نمایش آدرس‌های شبکه در حال گوش دادن:
      netstat -anp

4. ابزار ip:

این ابزار برای پیکربندی، بررسی و عیب‌یابی تنظیمات شبکه استفاده می‌شود.

  • Syntax:
    ip [option] [command] [arguments]
  • مثال‌ها:
    • نمایش وضعیت اینترفیس‌ها:
      ip a show
    • نمایش جدول مسیریابی:
      ip r
    • بررسی آمار اتصال شبکه:
      ip -s link

5. استفاده از ss:

این ابزار مشابه netstat است اما با تمرکز بیشتر بر روی دستورات کارآمد و دقیق‌تر.

  • Syntax:
    ss [option]
  • مثال‌ها:
    • نمایش اتصالات TCP:
      ss -tuln

6. ابزارهای عیب‌یابی و مانیتورینگ شبکه:

  • Tcpdump/wireshark:
    برای تحلیل بسته‌های شبکه و بررسی ترافیک شبکه به طور عمیق.

    sudo tcpdump -i eth0
  • nmap:
    برای اسکن و جستجوی دستگاه‌های موجود در شبکه.

    nmap 192.168.1.0/24

جمع‌بندی:

ابزارهایی مانند ping, traceroute, netstat, و ip به شما کمک می‌کنند تا مشکلات اتصال شبکه را شناسایی کرده و با بررسی مسیر و اطلاعات شبکه، مشکلات را عیب‌یابی کنید. این ابزارها ابزارهای قدرتمند برای مدیریت و حل مشکلات شبکه هستند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پیکربندی سرویس های شبکه: DHCP, DNS، و Proxy” subtitle=”توضیحات کامل”]

در یک شبکه، سرویس‌های DHCP (Dynamic Host Configuration Protocol)، DNS (Domain Name System) و Proxy نقش‌های حیاتی ایفا می‌کنند. هر یک از این سرویس‌ها به مدیریت و توزیع اطلاعات شبکه کمک می‌کنند.


**1. پیکربندی سرور DHCP

سرویس DHCP به دستگاه‌ها اجازه می‌دهد که به‌صورت خودکار آدرس IP دریافت کنند و اطلاعات شبکه (مانند Subnet Mask، Gateway و DNS سرور) را دریافت کنند.

  • نصب و پیکربندی DHCP Server (در CentOS/Red Hat):
    sudo yum install dhcp
  • پیکربندی فایل dhcpd.conf:در فایل /etc/dhcp/dhcpd.conf تنظیمات زیر را انجام می‌دهیم:
    subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
        option routers 192.168.1.1;
        option domain-name-servers 8.8.8.8, 8.8.4.4;
        default-lease-time 600;
        max-lease-time 7200;
    }
  • اجرای DHCP Server:
    sudo systemctl start dhcpd
    sudo systemctl enable dhcpd
  • نصب و پیکربندی DHCP در Debian/Ubuntu:
    sudo apt-get install isc-dhcp-server

    فایل پیکربندی: /etc/dhcp/dhcpd.conf مشابه بالا.

    service isc-dhcp-server start

2. پیکربندی DNS سرور (Bind9)

DNS سرور وظیفه ترجمه نام‌های دامنه به آدرس‌های IP را بر عهده دارد و در شبکه‌های داخلی و خارجی حیاتی است.

  • نصب Bind9 در Debian/Ubuntu:
    sudo apt-get install bind9
  • پیکربندی named.conf:فایل اصلی پیکربندی در /etc/bind/named.conf.options است:
    options {
        directory "/var/cache/bind";
        forwarders {
            8.8.8.8;
            8.8.4.4;
        };
        recursion yes;
        dnssec-validation auto;
    };
  • پیکربندی دامنه‌ها در zone:فایل‌های named.conf.local برای تنظیم دامنه‌ها:
    zone "example.com" {
        type master;
        file "/etc/bind/db.example.com";
    };

    فایل داده‌های دامنه در /etc/bind/db.example.com:

    $TTL 86400
    @   IN  SOA ns.example.com. admin.example.com. (
        2024121401 ; Serial
        3600 ; Refresh
        1800 ; Retry
        1209600 ; Expire
        86400 ; Minimum TTL
    )
        IN  NS ns.example.com.
        IN  A 192.168.1.1
  • راه‌اندازی و فعال‌سازی Bind9:
    service bind9 restart

3. پیکربندی Proxy (Squid Proxy):

Proxy سرور به دستگاه‌ها کمک می‌کند تا از طریق سرور میانی درخواست‌های اینترنتی را ارسال و مدیریت کنند.

  • نصب Squid Proxy:
    sudo apt-get install squid
  • پیکربندی Squid:فایل پیکربندی اصلی /etc/squid/squid.conf را ویرایش کنید:
    http_port 3128
    visible_hostname proxy.example.com
    cache_dir ufs /var/spool/squid 100 16 256
    acl localnet src 192.168.1.0/24
    http_access allow localnet
    http_access deny all
  • راه‌اندازی Squid Proxy:
    systemctl start squid
    systemctl enable squid

جمع‌بندی:

پیکربندی سرورهای DHCP، DNS و Proxy به مدیریت شبکه کمک می‌کند. DHCP به دستگاه‌ها آدرس IP و اطلاعات شبکه می‌دهد، DNS نام‌ها را به آدرس‌های IP ترجمه می‌کند و Proxy به مدیریت ترافیک اینترنتی کمک می‌کند. این سرویس‌ها برای مدیریت و بهینه‌سازی عملکرد شبکه بسیار مهم هستند.

[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 7: نصب و مدیریت نرم‌افزارها”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزارهای مدیریت بسته‌ها: apt در Debian/Ubuntu و yum و dnf در CentOS/RHEL” subtitle=”توضیحات کامل”]مدیریت بسته‌ها یکی از اساسی‌ترین وظایف در مدیریت سرورهای لینوکسی است. این ابزارها به مدیران سیستم اجازه می‌دهند نرم‌افزارها را نصب، به‌روزرسانی، حذف و مدیریت کنند.


1. مدیریت بسته‌ها با apt در Debian/Ubuntu

apt (Advanced Package Tool) یکی از قدرتمندترین ابزارهای مدیریت بسته‌ها در توزیع‌های مبتنی بر Debian مانند Ubuntu است.

دستورات پایه apt

  • به‌روزرسانی لیست بسته‌ها:
    sudo apt update

    این دستور اطلاعات مربوط به بسته‌های موجود را از مخازن دریافت می‌کند.

  • نصب یک بسته:
    sudo apt install package_name

    مثال:

    sudo apt install apache2
  • حذف یک بسته:
    sudo apt remove package_name
  • حذف کامل (به همراه فایل‌های تنظیمات):
    sudo apt purge package_name
  • به‌روزرسانی همه بسته‌های نصب‌شده:
    sudo apt upgrade
  • مشاهده اطلاعات یک بسته:
    apt show package_name
  • جستجوی یک بسته:
    apt search package_name

مدیریت مخازن در apt

  • فایل تنظیمات مخازن:مخازن نرم‌افزاری در فایل /etc/apt/sources.list تعریف می‌شوند. برای اضافه یا تغییر مخازن می‌توانید این فایل را ویرایش کنید:
    sudo nano /etc/apt/sources.list
  • اضافه کردن یک مخزن جدید:
    sudo add-apt-repository ppa:repository_name
    sudo apt update

2. مدیریت بسته‌ها با yum و dnf در CentOS/RHEL

yum و dnf ابزارهای مدیریت بسته در توزیع‌های مبتنی بر Red Hat مانند CentOS و RHEL هستند. dnf نسل جدیدتر yum است و در نسخه‌های اخیر جایگزین آن شده است.

دستورات پایه yum و dnf

  • به‌روزرسانی لیست بسته‌ها:در yum:
    sudo yum update

    در dnf:

    sudo dnf update
  • نصب یک بسته:در yum:
    sudo yum install package_name

    در dnf:

    sudo dnf install package_name
  • حذف یک بسته:در yum:
    sudo yum remove package_name

    در dnf:

    sudo dnf remove package_name
  • به‌روزرسانی همه بسته‌ها:در yum:
    sudo yum upgrade

    در dnf:

    sudo dnf upgrade
  • جستجوی یک بسته:در yum:
    yum search package_name

    در dnf:

    dnf search package_name
  • مشاهده اطلاعات یک بسته:در yum:
    yum info package_name

    در dnf:

    dnf info package_name

مدیریت مخازن در yum و dnf

  • فایل مخازن:مخازن نرم‌افزاری در فایل‌هایی با پسوند .repo که در مسیر /etc/yum.repos.d/ قرار دارند، تعریف می‌شوند.
  • اضافه کردن مخزن جدید:یک فایل جدید .repo ایجاد کرده و آدرس مخزن را در آن اضافه کنید:
    sudo nano /etc/yum.repos.d/new_repo.repo

    مثال:

    [example-repo]
    name=Example Repository
    baseurl=http://example.com/repo
    enabled=1
    gpgcheck=0

مقایسه apt با yum و dnf

ویژگی apt yum dnf
توزیع‌های پشتیبان Debian/Ubuntu CentOS/RHEL CentOS/RHEL
نسل قدیمی‌تر قدیمی‌تر جدیدتر و سریع‌تر
قابلیت‌ها بسیار پایدار انعطاف‌پذیر بهینه‌تر در مدیریت وابستگی‌ها

جمع‌بندی

ابزارهای مدیریت بسته مانند apt، yum و dnf ستون فقرات مدیریت نرم‌افزار در لینوکس هستند. استفاده از این ابزارها به مدیران سرور این امکان را می‌دهد که نرم‌افزارها را به‌صورت کارآمد نصب، حذف و مدیریت کنند. برای توزیع‌های Debian/Ubuntu از apt و برای توزیع‌های CentOS/RHEL از dnf یا yum استفاده می‌شود.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”مدیریت مخازن نرم‌افزاری در لینوکس” subtitle=”توضیحات کامل”]مخازن نرم‌افزاری (Repositories) مجموعه‌ای از بسته‌های نرم‌افزاری هستند که توسط توزیع لینوکس شما نگهداری و مدیریت می‌شوند. این مخازن منابع اصلی برای نصب، به‌روزرسانی، و مدیریت نرم‌افزارها در سیستم‌عامل لینوکس به شمار می‌روند.


1. اهمیت مخازن نرم‌افزاری

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

2. ساختار مخازن نرم‌افزاری

مخازن معمولاً به چند بخش تقسیم می‌شوند:

  • اصلی (Main): شامل نرم‌افزارهای اصلی که توسط توزیع پشتیبانی می‌شوند.
  • جانبی (Contrib): نرم‌افزارهایی که توسط جامعه توسعه‌دهندگان ارائه می‌شوند.
  • غیراستاندارد (Non-free): نرم‌افزارهایی با مجوزهای غیرآزاد یا تجاری.
  • به‌روزرسانی‌های امنیتی (Security Updates): مخصوص رفع آسیب‌پذیری‌های امنیتی.

3. مدیریت مخازن در توزیع‌های Debian/Ubuntu با apt

اضافه کردن مخزن جدید

  1. ویرایش فایل مخازن: فایل مخازن سیستم در مسیر /etc/apt/sources.list قرار دارد. برای ویرایش این فایل:
    sudo nano /etc/apt/sources.list
  2. اضافه کردن URL مخزن: برای اضافه کردن مخزن جدید، یک خط مشابه زیر اضافه کنید:
    deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
  3. به‌روزرسانی لیست مخازن: پس از اضافه کردن مخزن، لیست بسته‌ها را به‌روزرسانی کنید:
    sudo apt update

اضافه کردن مخزن PPA

PPA (Personal Package Archives) مخازنی هستند که توسط توسعه‌دهندگان شخص ثالث ارائه می‌شوند:

sudo add-apt-repository ppa:repository_name
sudo apt update

حذف مخزن:

برای حذف مخزن اضافه‌شده:

  1. فایل مربوط به مخزن را در مسیر /etc/apt/sources.list.d/ پیدا کنید.
  2. آن را حذف کنید:
    sudo rm /etc/apt/sources.list.d/repository_name.list

4. مدیریت مخازن در CentOS/RHEL با yum و dnf

اضافه کردن مخزن جدید

  1. ایجاد فایل مخزن: فایل مخازن در مسیر /etc/yum.repos.d/ قرار دارد. برای اضافه کردن یک مخزن جدید:
    sudo nano /etc/yum.repos.d/new_repo.repo
  2. ساختار فایل مخزن: فایل مخزن باید شامل اطلاعاتی مشابه زیر باشد:
    [example-repo]
    name=Example Repository
    baseurl=http://example.com/repo
    enabled=1
    gpgcheck=1
    gpgkey=http://example.com/repo/gpg.key
  3. به‌روزرسانی لیست بسته‌ها:
    sudo yum update

فعال یا غیرفعال کردن مخازن:

برای مدیریت مخازن فعال یا غیرفعال:

  • فعال کردن:
    sudo yum-config-manager --enable repository_name
  • غیرفعال کردن:
    sudo yum-config-manager --disable repository_name

اضافه کردن مخزن با dnf:

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


5. ابزارهای کاربردی مدیریت مخازن

  • apt-cache: برای جستجوی بسته‌ها و مشاهده اطلاعات آن‌ها.
    apt-cache search package_name
  • yum repolist: برای مشاهده لیست مخازن فعال.
    yum repolist
  • dnf repolist: مشابه yum repolist اما برای dnf.

6. مخازن شخص ثالث

گاهی نیاز به نصب نرم‌افزارهایی دارید که در مخازن رسمی وجود ندارند. در این صورت:

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

جمع‌بندی

مدیریت مخازن نرم‌افزاری از مهارت‌های کلیدی مدیران سرور لینوکس است. توانایی اضافه، حذف و مدیریت مخازن به شما امکان می‌دهد نرم‌افزارها و سیستم را به شکل ایمن و بهینه مدیریت کنید. ابزارهای apt در Debian/Ubuntu و yum/dnf در CentOS/RHEL امکانات گسترده‌ای برای این منظور ارائه می‌دهند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 8: امنیت سرور لینوکس”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پیکربندی Firewall با استفاده از iptables و firewalld” subtitle=”توضیحات کامل”]فایروال یکی از ابزارهای اساسی برای تأمین امنیت سرورهاست. در سرورهای لینوکسی، دو ابزار رایج برای مدیریت قوانین فایروال استفاده می‌شود: iptables و firewalld. در این بخش به معرفی و پیکربندی هر دو ابزار می‌پردازیم.


1. مفهوم فایروال و نقش آن

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


2. آشنایی با iptables

iptables ابزاری برای مدیریت Netfilter (بخشی از کرنل لینوکس) است که برای فیلتر کردن ترافیک شبکه استفاده می‌شود. این ابزار به شما امکان می‌دهد قوانینی برای کنترل ترافیک ایجاد کنید.

ساختار جدول‌ها و زنجیره‌ها در iptables

  • جدول‌ها (Tables):
    • filter: جدول اصلی برای مدیریت قوانین فیلترینگ.
    • nat: برای قوانین ترجمه آدرس شبکه (Network Address Translation).
    • mangle: برای تغییر هدرهای بسته‌های شبکه.
  • زنجیره‌ها (Chains):
    • INPUT: ترافیک ورودی به سرور.
    • FORWARD: ترافیکی که از سرور عبور می‌کند.
    • OUTPUT: ترافیک خروجی از سرور.

پیکربندی اولیه با iptables

  1. مشاهده قوانین فعلی:
    sudo iptables -L -v
  2. تنظیم قوانین برای ترافیک ورودی: اجازه دادن به اتصال SSH:
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

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

    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
  3. ذخیره قوانین: بسته به توزیع مورد استفاده، قوانین را ذخیره کنید:
    • در Debian/Ubuntu:
      sudo apt install iptables-persistent
      sudo netfilter-persistent save
    • در CentOS/RHEL:
      sudo service iptables save

3. آشنایی با firewalld

firewalld یک ابزار مدرن‌تر و پویا برای مدیریت فایروال در لینوکس است که با استفاده از مناطق (Zones) به شما امکان کنترل ترافیک را می‌دهد.

ویژگی‌های firewalld

  • پشتیبانی از مدیریت پویا (Dynamic Management).
  • استفاده از مناطق امنیتی مختلف مانند public, internal, و trusted.
  • رابط کاربری ساده‌تر نسبت به iptables.

پیکربندی اولیه با firewalld

  1. فعال‌سازی و بررسی وضعیت firewalld:
    sudo systemctl enable firewalld
    sudo systemctl start firewalld
    sudo systemctl status firewalld
  2. مشاهده مناطق فعال:
    sudo firewall-cmd --get-active-zones
  3. افزودن قانون به یک منطقه: اجازه دادن به ترافیک SSH در منطقه public:
    sudo firewall-cmd --zone=public --add-service=ssh --permanent
  4. بارگذاری مجدد قوانین: پس از ایجاد تغییرات، قوانین جدید را اعمال کنید:
    sudo firewall-cmd --reload
  5. مشاهده قوانین فعال:
    sudo firewall-cmd --list-all

4. مقایسه iptables و firewalld

ویژگی iptables firewalld
رابط کاربری پیچیده‌تر، مبتنی بر خط فرمان ساده‌تر با مناطق امنیتی
مدیریت پویا پشتیبانی نمی‌شود پشتیبانی می‌شود
انعطاف‌پذیری بسیار قدرتمند ولی پیچیده مناسب برای اکثر موارد

5. نکات مهم در مدیریت فایروال

  • قبل از مسدود کردن ترافیک، مطمئن شوید که اتصال SSH خود را قطع نمی‌کنید.
  • همیشه قوانین را با دقت آزمایش کنید.
  • از ابزارهای پیشرفته مانند ufw در توزیع‌های Ubuntu برای ساده‌سازی پیکربندی استفاده کنید.

جمع‌بندی

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

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”معرفی SELinux و نحوه مدیریت آن” subtitle=”توضیحات کامل”]

معرفی SELinux

SELinux (Security-Enhanced Linux) یکی از قدرتمندترین مکانیزم‌های امنیتی در لینوکس است که توسط آژانس امنیت ملی ایالات متحده (NSA) توسعه یافته است. این ابزار با اعمال سیاست‌های امنیتی مبتنی بر کنترل دسترسی اجباری (MAC – Mandatory Access Control) نقش مهمی در ایمن‌سازی سیستم‌های لینوکسی ایفا می‌کند.


1. مفهوم SELinux

SELinux به صورت پیش‌فرض کنترل می‌کند که کدام فرآیندها و کاربران اجازه دسترسی به منابع خاص (مانند فایل‌ها، پورت‌ها و دستگاه‌ها) را دارند. برخلاف سیستم‌های کنترل دسترسی اختیاری (DAC – Discretionary Access Control)، که بر اساس مالکیت فایل‌ها عمل می‌کنند، SELinux حتی در صورت خطا یا سوءاستفاده از دسترسی، سیاست‌های امنیتی سختگیرانه‌ای را اعمال می‌کند.


2. مزایای استفاده از SELinux

  • محدود کردن تأثیر سوءاستفاده‌ها و حملات: اگر مهاجمی موفق به نفوذ به یک سرویس شود، SELinux دسترسی او به سایر منابع سیستم را محدود می‌کند.
  • ارائه یک لایه امنیتی اضافی: SELinux به همراه سایر مکانیزم‌های امنیتی مانند فایروال، سطح امنیتی سیستم را افزایش می‌دهد.
  • کنترل دقیق‌تر بر دسترسی‌ها: امکان مدیریت دقیق منابع و فرآیندها.

3. حالت‌های عملیاتی SELinux

SELinux دارای سه حالت عملیاتی است:

  1. Enforcing (فعال): SELinux به طور کامل سیاست‌های امنیتی را اجرا می‌کند و دسترسی‌های غیرمجاز را مسدود می‌کند.
  2. Permissive (مجوزدهی): SELinux فقط وقایع نقض سیاست‌ها را گزارش می‌کند ولی مانع از دسترسی نمی‌شود. این حالت برای دیباگ و آزمایش مناسب است.
  3. Disabled (غیرفعال): SELinux غیرفعال است و هیچ سیاستی اجرا نمی‌شود.

برای مشاهده وضعیت فعلی SELinux:

sestatus

4. تنظیم حالت SELinux

برای تغییر حالت SELinux:

  1. فایل تنظیمات SELinux را ویرایش کنید:
    sudo nano /etc/selinux/config
  2. مقدار SELINUX را به یکی از حالت‌های زیر تنظیم کنید:
    SELINUX=enforcing
    SELINUX=permissive
    SELINUX=disabled
  3. سیستم را ریبوت کنید تا تغییرات اعمال شود:
    sudo reboot

5. مدیریت سیاست‌های SELinux

سیاست‌ها (Policies) مجموعه‌ای از قوانین هستند که رفتار SELinux را مشخص می‌کنند. دو نوع اصلی سیاست وجود دارد:

  • Targeted: بر روی تعداد مشخصی از سرویس‌ها و فرآیندها متمرکز است (حالت پیش‌فرض).
  • MLS (Multi-Level Security): برای محیط‌هایی با امنیت چندلایه طراحی شده است.

مشاهده و تغییر سیاست‌ها:

  1. مشاهده بستر فعلی:
    sudo semanage policyversion -l
  2. تنظیم سیاست‌ها برای یک سرویس خاص: به عنوان مثال، فعال کردن سرویس HTTP:
    sudo setsebool -P httpd_enable_homedirs on

6. مدیریت Context در SELinux

Context یک ویژگی است که به فایل‌ها، فرآیندها و پورت‌ها اختصاص داده شده است و دسترسی‌ها را مشخص می‌کند.

مشاهده Context فایل‌ها:

ls -Z /path/to/file

تغییر Context یک فایل:

  1. تغییر context:
    sudo chcon -t httpd_sys_content_t /var/www/html/index.html
  2. بازیابی context پیش‌فرض:
    sudo restorecon -v /path/to/file

7. عیب‌یابی مشکلات SELinux

اگر SELinux مانع از اجرای یک فرآیند یا دسترسی به یک فایل شود، جزئیات آن در لاگ‌ها ثبت می‌شود:

  • مشاهده لاگ‌ها:
    sudo cat /var/log/audit/audit.log | grep AVC
  • استفاده از ابزار audit2why برای تحلیل پیام‌های خطا:
    sudo apt install auditd
    sudo cat /var/log/audit/audit.log | audit2why
  • استفاده از audit2allow برای ایجاد سیاست‌های جدید:
    sudo apt install auditd
    sudo cat /var/log/audit/audit.log | audit2why

8. مدیریت پورت‌ها در SELinux

SELinux کنترل دقیقی بر پورت‌های شبکه دارد. برای مشاهده پورت‌های مجاز:

sudo semanage port -l

برای افزودن یک پورت جدید به سرویس خاص:

sudo semanage port -a -t http_port_t -p tcp 8080

9. ابزارهای مدیریتی SELinux

  • semanage: مدیریت تنظیمات SELinux.
  • setsebool: تنظیم مقادیر Boolean برای سیاست‌ها.
  • getsebool: مشاهده مقادیر Boolean.
  • restorecon: بازیابی context پیش‌فرض فایل‌ها.

جمع‌بندی

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

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بهبود امنیت با SSH” subtitle=”توضیحات کامل”]پروتکل SSH یکی از رایج‌ترین روش‌های دسترسی ایمن به سرورهای لینوکسی است. با این حال، پیکربندی پیش‌فرض SSH ممکن است امنیت کافی را فراهم نکند. با اعمال چندین تغییر مهم، می‌توان امنیت ارتباطات و دسترسی‌ها را به طور قابل‌توجهی بهبود بخشید.


1. غیرفعال کردن Root Login

دسترسی مستقیم به حساب کاربری root از طریق SSH یکی از نقاط ضعف امنیتی است. مهاجمان می‌توانند با استفاده از حملات Brute Force به این حساب دسترسی پیدا کنند. برای افزایش امنیت، بهتر است این دسترسی را غیرفعال کنید.

مراحل غیرفعال کردن Root Login:

  1. فایل تنظیمات SSH را باز کنید:
    sudo nano /etc/ssh/sshd_config
  2. گزینه زیر را پیدا کرده و مقدار آن را به no تغییر دهید:
    PermitRootLogin no
  3. تنظیمات را ذخیره کرده و سرویس SSH را ری‌استارت کنید:
    sudo systemctl restart sshd

نکته:

برای مدیریت سرور، از یک حساب کاربری غیر از root استفاده کنید و در صورت نیاز به دسترسی مدیریتی، از sudo بهره بگیرید.


2. استفاده از کلیدهای SSH

استفاده از کلیدهای SSH جایگزینی امن‌تر برای احراز هویت مبتنی بر رمز عبور است. این روش از یک جفت کلید (کلید عمومی و خصوصی) برای احراز هویت استفاده می‌کند و مانع از حملات Brute Force می‌شود.

ایجاد کلیدهای SSH در کلاینت:

  1. در کامپیوتر کلاینت، یک جفت کلید SSH ایجاد کنید:
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • نوع کلید: rsa
    • طول کلید: 4096 بیت
    • یک مسیر برای ذخیره کلیدها مشخص کنید (پیش‌فرض: ~/.ssh/id_rsa).
    • در صورت تمایل، یک Passphrase تعیین کنید تا امنیت کلید خصوصی بیشتر شود.
  2. کلید عمومی را به سرور منتقل کنید:
    ssh-copy-id username@server_ip
    • این دستور کلید عمومی را به فایل ~/.ssh/authorized_keys کاربر مقصد اضافه می‌کند.

پیکربندی سرور برای استفاده از کلیدهای SSH:

  1. فایل تنظیمات SSH را باز کنید:
    sudo nano /etc/ssh/sshd_config
  2. مطمئن شوید که خطوط زیر فعال هستند:
    PubkeyAuthentication yes
    PasswordAuthentication no
    • گزینه PasswordAuthentication no باعث می‌شود که احراز هویت با رمز عبور غیرفعال شود و فقط از کلیدهای SSH استفاده گردد.
  3. تنظیمات را ذخیره کرده و سرویس SSH را ری‌استارت کنید:
    sudo systemctl restart sshd

تست اتصال:

قبل از بستن جلسه فعلی SSH، حتماً اتصال با کلیدهای SSH را در یک ترمینال جدید تست کنید:

ssh username@server_ip

مزایای استفاده از کلیدهای SSH

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

نکات امنیتی تکمیلی:

  1. پورت پیش‌فرض SSH را تغییر دهید:
    تغییر پورت پیش‌فرض (22) می‌تواند حملات خودکار را کاهش دهد:

    sudo nano /etc/ssh/sshd_config

    مقدار Port را تغییر دهید:

    Port 2222

    سپس سرویس را ری‌استارت کنید:

    sudo systemctl restart sshd
  2. فعال‌سازی Fail2Ban:
    ابزار Fail2Ban می‌تواند تلاش‌های ناموفق برای اتصال را شناسایی کرده و IP مهاجم را مسدود کند:

    sudo apt install fail2ban
  3. محدود کردن آدرس‌های IP مجاز:
    با استفاده از فایروال، دسترسی SSH را فقط به آدرس‌های IP خاص محدود کنید:

    sudo ufw allow from 192.168.1.0/24 to any port 22

جمع‌بندی

با غیرفعال کردن دسترسی مستقیم root و استفاده از کلیدهای SSH، می‌توانید امنیت ارتباطات SSH را به طور قابل‌توجهی افزایش دهید. این تغییرات همراه با اقدامات تکمیلی مانند تغییر پورت پیش‌فرض و استفاده از Fail2Ban، دسترسی غیرمجاز به سرور را به حداقل می‌رسانند و یک لایه محافظتی قوی برای سرور ایجاد می‌کنند.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نصب و پیکربندی Fail2Ban برای جلوگیری از حملات Brute Force” subtitle=”توضیحات کامل”]Fail2Ban ابزاری بسیار مفید برای افزایش امنیت سرورهای لینوکسی است که به طور خودکار تلاش‌های مکرر و مشکوک برای ورود به سیستم (مانند حملات Brute Force) را شناسایی و IP مهاجم را مسدود می‌کند. در این بخش، نحوه نصب، پیکربندی، و استفاده از Fail2Ban برای محافظت از سرور لینوکسی توضیح داده می‌شود.


1. نصب Fail2Ban

برای نصب Fail2Ban بسته به توزیع لینوکس، از دستورات زیر استفاده کنید:

در Debian/Ubuntu:

sudo apt update
sudo apt install fail2ban -y

در CentOS/RHEL:

اگر از نسخه‌های جدید RHEL یا CentOS استفاده می‌کنید، ابتدا مخازن EPEL را فعال کنید:

sudo yum install epel-release -y
sudo yum install fail2ban -y

در Fedora:

sudo dnf install fail2ban -y

2. ساختار فایل‌های پیکربندی Fail2Ban

Fail2Ban از فایل‌های پیکربندی برای تنظیم رفتار خود استفاده می‌کند:

  • فایل اصلی: /etc/fail2ban/fail2ban.conf
  • تنظیمات پیش‌فرض Jail: /etc/fail2ban/jail.conf

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

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

3. پیکربندی Fail2Ban

فایل jail.local را ویرایش کنید:

sudo nano /etc/fail2ban/jail.local

تنظیمات عمومی:

در بخش [DEFAULT] می‌توانید پارامترهای زیر را پیکربندی کنید:

bantime = 10m             # مدت زمان مسدودسازی IP (مثلاً 10 دقیقه)
findtime = 10m            # بازه زمانی برای شمارش تلاش‌های ناموفق
maxretry = 5              # تعداد تلاش‌های مجاز قبل از مسدودسازی
ignoreip = 127.0.0.1/8    # IPهایی که باید نادیده گرفته شوند (مانند شبکه محلی)

فعال کردن Jail برای SSH:

برای محافظت از سرویس SSH، بخش [sshd] را در فایل پیکربندی پیدا کنید و تغییر دهید:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log   # برای Debian/Ubuntu
# logpath = /var/log/secure    # برای CentOS/RHEL
maxretry = 3

4. راه‌اندازی و فعال‌سازی Fail2Ban

بعد از پیکربندی، سرویس Fail2Ban را راه‌اندازی و فعال کنید:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

تست تنظیمات:

برای بررسی وضعیت Fail2Ban:

sudo fail2ban-client status

برای مشاهده وضعیت Jail‌های فعال (مثلاً sshd):

sudo fail2ban-client status sshd

5. بررسی و مانیتورینگ Log‌ها

Fail2Ban لاگ فعالیت‌ها و اقدامات خود را در فایل زیر ذخیره می‌کند:

/var/log/fail2ban.log

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

sudo tail -f /var/log/fail2ban.log

6. رفع انسداد یک IP خاص

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

  1. بررسی IP‌های مسدود شده:
    sudo fail2ban-client status sshd
  2. رفع مسدودیت:
    sudo fail2ban-client unban IP_ADDRESS

7. نکات پیشرفته

1. استفاده از چند Jail برای سرویس‌های دیگر:

Fail2Ban می‌تواند برای سرویس‌های دیگری مانند FTP، Nginx، Apache، و غیره پیکربندی شود. برای این منظور، Jail‌های مرتبط را در فایل jail.local فعال کنید.

2. ارسال ایمیل‌های هشدار:

Fail2Ban می‌تواند در صورت مسدودسازی یک IP، ایمیل هشدار ارسال کند. برای این کار:

  1. تنظیمات ایمیل را در فایل [DEFAULT] انجام دهید:
    destemail = admin@example.com
    sender = fail2ban@example.com
    mta = sendmail
    action = %(action_mwl)s
  2. مطمئن شوید که سرویس ایمیل روی سرور شما پیکربندی شده است.

جمع‌بندی

Fail2Ban یک ابزار ساده و قدرتمند برای جلوگیری از حملات Brute Force است که به طور خودکار تلاش‌های مشکوک را شناسایی و مسدود می‌کند. با پیکربندی مناسب و استفاده از Jail‌های سفارشی، می‌توانید امنیت سرور لینوکسی خود را افزایش دهید. علاوه بر این، با نظارت بر لاگ‌ها و استفاده از قابلیت‌های پیشرفته، امکان مدیریت دقیق‌تر این ابزار فراهم می‌شود.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”به‌روزرسانی امنیتی سیستم در لینوکس” subtitle=”توضیحات کامل”]به‌روزرسانی‌های امنیتی در سیستم‌های لینوکسی یکی از مهم‌ترین اقداماتی است که برای حفظ امنیت و جلوگیری از نفوذ مهاجمان باید انجام شود. این به‌روزرسانی‌ها شامل رفع آسیب‌پذیری‌های نرم‌افزاری، بهبود عملکرد سیستم، و به‌روزرسانی هسته لینوکس و بسته‌های نرم‌افزاری است. در این بخش، نحوه به‌روزرسانی سیستم و مدیریت به‌روزرسانی‌های امنیتی توضیح داده می‌شود.


1. چرا به‌روزرسانی امنیتی اهمیت دارد؟

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

2. بررسی و نصب به‌روزرسانی‌ها

در سیستم‌های Debian/Ubuntu:

  1. بررسی به‌روزرسانی‌ها:
    sudo apt update

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

  2. نصب به‌روزرسانی‌ها:
    sudo apt upgrade -y

    این دستور تمام بسته‌های موجود برای به‌روزرسانی را نصب می‌کند.

  3. نصب فقط به‌روزرسانی‌های امنیتی: ابزار unattended-upgrades را نصب و فعال کنید:
    sudo apt install unattended-upgrades -y
    sudo dpkg-reconfigure --priority=low unattended-upgrades
  4. نصب یک بسته خاص: برای به‌روزرسانی یک بسته خاص، دستور زیر را اجرا کنید:
    sudo apt install --only-upgrade package-name

در سیستم‌های CentOS/RHEL:

  1. بررسی به‌روزرسانی‌ها:
    sudo yum check-update
  2. نصب به‌روزرسانی‌ها:
    sudo yum update -y
  3. نصب فقط به‌روزرسانی‌های امنیتی: در RHEL/CentOS، ابزار yum-plugin-security را نصب کنید:
    sudo yum install yum-plugin-security -y
    sudo yum update --security
  4. به‌روزرسانی یک بسته خاص:
    sudo yum update package-name

در سیستم‌های Fedora:

  1. بررسی و نصب به‌روزرسانی‌ها:
    sudo dnf update -y
  2. نصب فقط به‌روزرسانی‌های امنیتی:
    sudo dnf upgrade --security

3. مدیریت به‌روزرسانی‌های خودکار

به‌روزرسانی خودکار می‌تواند اطمینان دهد که سیستم همیشه به‌روز است و آسیب‌پذیری‌های شناخته‌شده را برطرف کرده است.

فعال‌سازی به‌روزرسانی خودکار در Debian/Ubuntu:

  1. نصب ابزار:
    sudo apt install unattended-upgrades -y
  2. فعال‌سازی: فایل /etc/apt/apt.conf.d/50unattended-upgrades را ویرایش کنید و تنظیمات زیر را بررسی یا فعال کنید:
    Unattended-Upgrade::Allowed-Origins {
        "Ubuntu focal-security";
    };
  3. فعال‌سازی سرویس:
    sudo systemctl enable --now unattended-upgrades

فعال‌سازی به‌روزرسانی خودکار در CentOS/RHEL:

  1. نصب ابزار:
    sudo yum install dnf-automatic -y
  2. پیکربندی: فایل /etc/dnf/automatic.conf را ویرایش کنید و گزینه‌های زیر را تغییر دهید:
    apply_updates = yes
  3. فعال‌سازی سرویس:
    sudo systemctl enable --now dnf-automatic.timer

4. بازنگری هسته سیستم (Kernel)

برای به‌روزرسانی هسته لینوکس، بسته هسته را به‌روزرسانی کنید:

در Debian/Ubuntu:

sudo apt install linux-image-$(uname -r)

در CentOS/RHEL:

sudo yum install kernel

پس از نصب هسته جدید، سیستم را ریستارت کنید:

sudo reboot

5. حذف بسته‌های قدیمی و غیرضروری

بعد از به‌روزرسانی، بسته‌های قدیمی یا غیرضروری را حذف کنید تا امنیت و فضای دیسک بهینه شود:

در Debian/Ubuntu:

sudo apt autoremove -y

در CentOS/RHEL:

sudo yum autoremove -y

6. بررسی تاریخچه به‌روزرسانی‌ها

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

در Debian/Ubuntu:

cat /var/log/dpkg.log

در CentOS/RHEL:

cat /var/log/yum.log

جمع‌بندی

به‌روزرسانی‌های امنیتی یکی از اقدامات اساسی برای حفاظت از سرورهای لینوکسی است. با انجام منظم به‌روزرسانی‌ها و استفاده از ابزارهایی مانند unattended-upgrades یا dnf-automatic، می‌توانید اطمینان حاصل کنید که سیستم شما همیشه در برابر تهدیدات امنیتی محافظت می‌شود. همچنین، حذف بسته‌های قدیمی و غیرضروری و نظارت بر وضعیت هسته سیستم می‌تواند امنیت و عملکرد سرور را افزایش دهد.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 9: سرویس‌های وب و دیتابیس”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نصب و پیکربندی سرویس‌های وب: Apache و Nginx” subtitle=”توضیحات کامل”]سرویس‌های وب مانند Apache و Nginx از پرکاربردترین وب سرورها در جهان هستند. این سرویس‌ها امکان میزبانی وب‌سایت‌ها، اپلیکیشن‌های وب، و ارائه خدمات HTTP و HTTPS را فراهم می‌کنند. در این بخش، نحوه نصب و پیکربندی هر یک از این سرویس‌ها روی سیستم‌عامل لینوکس توضیح داده می‌شود.


1. نصب و پیکربندی Apache

Apache چیست؟

Apache HTTP Server یک وب‌سرور متن‌باز و بسیار انعطاف‌پذیر است که از ماژول‌های متنوعی برای قابلیت‌های اضافی پشتیبانی می‌کند. این سرور برای میزبانی وب‌سایت‌های استاتیک و داینامیک مناسب است.

نصب Apache

در Debian/Ubuntu:
  1. نصب Apache:
    sudo apt update
    sudo apt install apache2 -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable apache2
    sudo systemctl start apache2
در CentOS/RHEL:
  1. نصب Apache:
    sudo yum install httpd -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable httpd
    sudo systemctl start httpd

پیکربندی Apache

  1. فایل‌های تنظیمات اصلی:
    • در Debian/Ubuntu: /etc/apache2/apache2.conf
    • در CentOS/RHEL: /etc/httpd/conf/httpd.conf
  2. پیکربندی یک Virtual Host: Virtual Hostها امکان میزبانی چند وب‌سایت را روی یک سرور فراهم می‌کنند. برای مثال:در Debian/Ubuntu: فایل جدیدی ایجاد کنید:
    sudo nano /etc/apache2/sites-available/example.com.conf

    محتوای فایل:

    <VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

    فعال‌سازی سایت:

    sudo a2ensite example.com.conf
    sudo systemctl reload apache2

    در CentOS/RHEL: فایل جدیدی ایجاد کنید:

    sudo nano /etc/httpd/conf.d/example.com.conf

    محتوای فایل:

    <VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com
        ErrorLog /var/log/httpd/error.log
        CustomLog /var/log/httpd/access.log combined
    </VirtualHost>

    سپس سرویس را ریستارت کنید:

    sudo systemctl restart httpd
  3. تنظیمات فایروال: باز کردن پورت‌های HTTP و HTTPS:
    sudo ufw allow 80
    sudo ufw allow 443

2. نصب و پیکربندی Nginx

Nginx چیست؟

Nginx یک وب‌سرور متن‌باز سبک و پرسرعت است که برای هندل کردن بار زیاد، بهینه‌سازی شده است. این سرور می‌تواند به عنوان Load Balancer و Reverse Proxy نیز استفاده شود.

نصب Nginx

در Debian/Ubuntu:
  1. نصب Nginx:
    sudo apt update
    sudo apt install nginx -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable nginx
    sudo systemctl start nginx
در CentOS/RHEL:
  1. نصب Nginx:
    sudo yum install epel-release -y
    sudo yum install nginx -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable nginx
    sudo systemctl start nginx

پیکربندی Nginx

  1. فایل‌های تنظیمات اصلی:
    • در Debian/Ubuntu: /etc/nginx/nginx.conf
    • در CentOS/RHEL: /etc/nginx/nginx.conf
  2. پیکربندی یک Server Block: Server Blockها مشابه Virtual Hostها در Apache هستند. برای مثال:فایل جدیدی ایجاد کنید:
    sudo nano /etc/nginx/sites-available/example.com

    محتوای فایل:

    server {
        listen 80;
        server_name example.com www.example.com;
    
        root /var/www/example.com;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        error_log /var/log/nginx/example.com.error.log;
        access_log /var/log/nginx/example.com.access.log;
    }

    فعال‌سازی سایت:

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
  3. تنظیمات فایروال: باز کردن پورت‌های HTTP و HTTPS:
    sudo ufw allow 'Nginx Full'

3. راه‌اندازی HTTPS با Let’s Encrypt

برای هر دو وب‌سرور Apache و Nginx، می‌توانید از گواهینامه رایگان Let’s Encrypt استفاده کنید.

نصب Certbot:

  1. در Debian/Ubuntu:
    sudo apt install certbot python3-certbot-nginx python3-certbot-apache -y
  2. در CentOS/RHEL:
    sudo yum install certbot python3-certbot-nginx python3-certbot-apache -y

پیکربندی HTTPS:

  1. برای Apache:
    sudo certbot --apache -d example.com -d www.example.com
  2. برای Nginx:
    sudo certbot --nginx -d example.com -d www.example.com
  3. تست تمدید خودکار گواهینامه:
    sudo certbot renew --dry-run

جمع‌بندی

Apache و Nginx ابزارهای قدرتمندی برای راه‌اندازی وب‌سرورها هستند. انتخاب بین این دو به نیازهای پروژه بستگی دارد. Apache با ماژول‌های متنوع برای پروژه‌های پیچیده مناسب است، در حالی که Nginx برای هندل کردن بار زیاد و استفاده بهینه از منابع گزینه بهتری است. پیکربندی مناسب و استفاده از HTTPS امنیت و عملکرد وب‌سرور را تضمین می‌کند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”نصب و مدیریت سرورهای دیتابیس: MySQL/MariaDB و PostgreSQL” subtitle=”توضیحات کامل”]

سرورهای دیتابیس نقشی اساسی در ذخیره و مدیریت داده‌ها در برنامه‌های مدرن ایفا می‌کنند. MySQL/MariaDB و PostgreSQL دو مورد از محبوب‌ترین سرورهای دیتابیس هستند که به‌صورت گسترده در برنامه‌های مختلف از وب‌سایت‌های کوچک تا سیستم‌های بزرگ مورد استفاده قرار می‌گیرند. در این بخش، به نصب، پیکربندی و مدیریت این دیتابیس‌ها پرداخته می‌شود.


1. MySQL/MariaDB

تفاوت MySQL و MariaDB

  • MySQL: یک دیتابیس SQL متن‌باز است که از سوی Oracle پشتیبانی می‌شود.
  • MariaDB: فورکی از MySQL است که با هدف حفظ متن‌باز بودن ایجاد شده است و قابلیت‌ها و بهینه‌سازی‌های بیشتری دارد.

در اکثر توزیع‌های لینوکس، MariaDB جایگزین MySQL شده است، اما دستورالعمل‌ها برای هر دو مشابه هستند.


نصب MySQL/MariaDB

در Debian/Ubuntu

  1. نصب MariaDB:
    sudo apt update
    sudo apt install mariadb-server -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable mariadb
    sudo systemctl start mariadb
  3. پیکربندی امنیتی اولیه:
    sudo mysql_secure_installation

    این اسکریپت شما را راهنمایی می‌کند تا:

    • رمز عبور root را تنظیم کنید.
    • کاربران ناشناس را حذف کنید.
    • دسترسی ریموت root را غیرفعال کنید.
    • پایگاه داده تست را حذف کنید.

در CentOS/RHEL

  1. نصب MariaDB:
    sudo yum install mariadb-server -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable mariadb
    sudo systemctl start mariadb

مدیریت MySQL/MariaDB

  1. ورود به محیط مدیریت دیتابیس:
    sudo mysql -u root -p
  2. ایجاد یک دیتابیس:
    CREATE DATABASE example_db;
  3. ایجاد یک کاربر جدید و دادن دسترسی:
    CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
    FLUSH PRIVILEGES;
  4. مشاهده دیتابیس‌ها:
    SHOW DATABASES;
  5. مشاهده کاربران:
    SELECT user, host FROM mysql.user;
  6. پشتیبان‌گیری از دیتابیس:
    mysqldump -u root -p example_db > example_db_backup.sql
  7. بازیابی دیتابیس:
    mysql -u root -p example_db < example_db_backup.sql

2. PostgreSQL

PostgreSQL چیست؟

PostgreSQL یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) متن‌باز و پیشرفته است که از قابلیت‌هایی مانند تراکنش‌ها، داده‌های JSON، و گسترش‌پذیری بالا پشتیبانی می‌کند.


نصب PostgreSQL

در Debian/Ubuntu

  1. نصب PostgreSQL:
    sudo apt update
    sudo apt install postgresql postgresql-contrib -y
  2. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable postgresql
    sudo systemctl start postgresql

در CentOS/RHEL

  1. نصب PostgreSQL:
    sudo yum install -y postgresql-server postgresql-contrib
  2. پیکربندی اولیه:
    sudo postgresql-setup initdb
  3. فعال‌سازی و راه‌اندازی سرویس:
    sudo systemctl enable postgresql
    sudo systemctl start postgresql

مدیریت PostgreSQL

  1. ورود به محیط مدیریت دیتابیس: ابتدا به کاربر postgres سوئیچ کنید:
    sudo -i -u postgres

    سپس وارد محیط psql شوید:

    psql
  2. ایجاد یک دیتابیس:
    CREATE DATABASE example_db;
  3. ایجاد یک کاربر جدید:
    CREATE USER example_user WITH PASSWORD 'password';
  4. دادن دسترسی به کاربر:
    GRANT ALL PRIVILEGES ON DATABASE example_db TO example_user;
  5. مشاهده دیتابیس‌ها:
    \l
  6. مشاهده کاربران:
    \du
  7. خروج از محیط psql:
    \q
  8. پشتیبان‌گیری از دیتابیس:
    pg_dump -U postgres example_db > example_db_backup.sql
  9. بازیابی دیتابیس:
    psql -U postgres -d example_db -f example_db_backup.sql

جمع‌بندی

  • MySQL/MariaDB: مناسب برای پروژه‌هایی است که به سرعت، سادگی و جامعه کاربری گسترده نیاز دارند. MariaDB در نسخه‌های جدیدتر بهبود یافته و برخی قابلیت‌های بیشتری نسبت به MySQL ارائه می‌دهد.
  • PostgreSQL: انتخاب بهتری برای برنامه‌های پیچیده‌تر است که نیاز به قابلیت‌های پیشرفته‌ای مانند تراکنش‌های پیچیده، داده‌های غیررابطه‌ای، و عملکرد بالا دارند.

هر دو دیتابیس قابلیت نصب و مدیریت ساده‌ای دارند و ابزارهای گسترده‌ای برای پشتیبان‌گیری و بازیابی داده‌ها ارائه می‌دهند. انتخاب میان این دو بستگی به نیازهای پروژه و سطح مهارت تیم مدیریت سرور دارد.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”امنیت و بهینه‌سازی سرویس‌های وب و دیتابیس” subtitle=”توضیحات کامل”]سرویس‌های وب و دیتابیس به دلیل دسترسی گسترده کاربران و نقش کلیدی در مدیریت داده‌ها، جزو اهداف اصلی حملات سایبری هستند. امنیت و بهینه‌سازی این سرویس‌ها نه تنها از داده‌ها محافظت می‌کند بلکه عملکرد سرور را نیز بهبود می‌بخشد. در این بخش، روش‌های اصلی امنیتی و بهینه‌سازی برای سرویس‌های وب و دیتابیس مورد بررسی قرار می‌گیرد.


1. امنیت سرویس‌های وب

۱.۱. پیکربندی HTTPS

استفاده از پروتکل HTTPS برای رمزنگاری داده‌ها بین کلاینت و سرور الزامی است. برای این منظور از گواهی SSL/TLS استفاده کنید:

  1. نصب Certbot برای گواهی Let’s Encrypt:
    • در Debian/Ubuntu:
      sudo apt install certbot python3-certbot-nginx -y
    • در CentOS/RHEL:
      sudo yum install certbot python3-certbot-nginx -y
  2. ایجاد گواهی SSL:
    sudo certbot --nginx

    یا برای Apache:

    sudo certbot --apache
  3. تنظیم خودکار تمدید گواهی:
    sudo crontab -e

    اضافه کردن:

    0 0 * * * certbot renew --quiet

۱.۲. محدود کردن دسترسی‌ها

  • بلاک کردن IPهای مشکوک:
    در فایروال IPهای غیرمجاز یا محدوده جغرافیایی خاصی را بلاک کنید.
  • ایجاد محدودیت در درخواست‌ها: با استفاده از ماژول mod_evasive برای Apache یا limit_req در Nginx می‌توانید از حملات DoS جلوگیری کنید.

۱.۳. حفاظت از فایل‌ها و دایرکتوری‌های حساس

  • از دسترسی عمومی به دایرکتوری‌های پیکربندی مانند /etc/ جلوگیری کنید.
  • در Nginx، اضافه کنید:
    location ~ /\. {
        deny all;
    }

۱.۴. استفاده از WAF (Web Application Firewall)

WAF به شناسایی و مسدود کردن حملات نظیر SQL Injection و Cross-Site Scripting (XSS) کمک می‌کند. ابزارهای پیشنهادی:

  • ModSecurity: برای Apache و Nginx
  • Cloudflare: سرویس رایانش ابری با WAF داخلی

2. امنیت سرویس‌های دیتابیس

۲.۱. غیرفعال کردن دسترسی ریموت به دیتابیس

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

  • در MySQL/MariaDB:
    sudo nano /etc/mysql/my.cnf

    خط زیر را اضافه یا ویرایش کنید:

    bind-address = 127.0.0.1
  • در PostgreSQL: فایل pg_hba.conf را ویرایش کنید و فقط دسترسی‌های مجاز را مشخص کنید:
    host    all             all             127.0.0.1/32            md5

۲.۲. استفاده از رمزنگاری برای ارتباطات دیتابیس

فعال‌سازی TLS برای ارتباطات دیتابیس:

  • MySQL/MariaDB: در فایل پیکربندی (/etc/mysql/my.cnf) بخش‌های زیر را اضافه کنید:
    ssl-ca=/path/to/ca.pem
    ssl-cert=/path/to/server-cert.pem
    ssl-key=/path/to/server-key.pem
  • PostgreSQL: فایل postgresql.conf:
    ssl = on
    ssl_cert_file = '/path/to/server-cert.pem'
    ssl_key_file = '/path/to/server-key.pem'

۲.۳. محدود کردن دسترسی کاربران

  • ایجاد کاربران با حداقل دسترسی:
    به هر برنامه فقط دسترسی‌های لازم را بدهید.

    • مثال در MySQL:
      GRANT SELECT, INSERT ON example_db.* TO 'user'@'localhost';
  • بررسی دسترسی‌ها:
    مرتباً مجوزهای کاربران را مرور کنید:

    SHOW GRANTS FOR 'user'@'localhost';

۲.۴. محافظت در برابر حملات Brute Force

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

  1. نصب Fail2Ban:
    sudo apt install fail2ban -y
  2. ایجاد تنظیمات برای دیتابیس: در مسیر /etc/fail2ban/jail.local، اضافه کنید:
    [mysqld-auth]
    enabled  = true
    port     = 3306
    filter   = mysqld-auth
    logpath  = /var/log/mysql/error.log
    maxretry = 5

3. بهینه‌سازی سرویس‌های وب

۳.۱. کش کردن محتوای استاتیک

  • در Nginx:
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        access_log off;
    }
  • در Apache: ماژول mod_cache را فعال کنید و کش را پیکربندی کنید.

۳.۲. فشرده‌سازی محتوا

استفاده از فشرده‌سازی Gzip یا Brotli برای کاهش حجم محتوای ارسالی:

  • در Nginx:
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
  • در Apache:
    AddOutputFilterByType DEFLATE text/html text/plain text/xml

۳.۳. استفاده از Load Balancing

برای توزیع بار میان سرورها و افزایش دسترس‌پذیری:

  • استفاده از Nginx به عنوان Load Balancer:
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }

4. بهینه‌سازی سرویس‌های دیتابیس

۴.۱. تنظیم Indexها

ایجاد ایندکس‌ها برای جداولی که مرتباً جستجو می‌شوند:

  • در MySQL/PostgreSQL:
    CREATE INDEX idx_column_name ON table_name (column_name);

۴.۲. استفاده از Query Caching

  • در MySQL/MariaDB: فعال کردن کش کوئری:
    SET GLOBAL query_cache_size = 1048576;

۴.۳. نظارت بر عملکرد دیتابیس

  • استفاده از ابزارهایی مانند MySQLTuner یا pg_stat_statements برای بهینه‌سازی عملکرد.

جمع‌بندی

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

[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 10: مانیتورینگ و لاگ‌ها”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مانیتورینگ عملکرد سیستم با top, htop, vmstat, و iotop” subtitle=”توضیحات کامل”]مانیتورینگ عملکرد سیستم یک بخش حیاتی از مدیریت سرورهای لینوکسی است که به نظارت بر نحوه استفاده از منابع و شناسایی مشکلات احتمالی می‌پردازد. ابزارهای مختلفی برای مانیتورینگ در لینوکس وجود دارند که هر کدام اطلاعات متفاوتی را ارائه می‌دهند. در این بخش، به بررسی ابزارهایی مانند top, htop, vmstat, و iotop می‌پردازیم.


۱. ابزار top

  • کاربرد: نمایش اطلاعات لحظه‌ای از منابع سیستم مانند CPU، حافظه، و فرآیندها.
  • فرمان:
    top
  • ویژگی‌ها:
    • نمایش اطلاعات مربوط به استفاده از CPU، RAM، و سایر منابع.
    • نمایش فرآیندهای در حال اجرا و میزان استفاده هر فرآیند از منابع.
    • امکان توقف یا کشتن فرآیندهای سنگین با کلیدهای k و x.

۲. ابزار htop

  • کاربرد: نسخه گرافیکی از top با امکانات بیشتر و راحت‌تر.
  • فرمان:
    htop
  • ویژگی‌ها:
    • رابط گرافیکی کاربرپسند با قابلیت پیمایش آسان.
    • امکان مشاهده و مدیریت فرآیندها با قابلیت مرتب‌سازی و فیلتر کردن.
    • اطلاعات کامل‌تری از مصرف CPU، RAM و سایر منابع.
    • قابلیت تغییر اولویت (nice) یا ارسال سیگنال‌های مختلف به فرآیندها.

۳. ابزار vmstat

  • کاربرد: نمایش اطلاعات آماری مربوط به CPU، حافظه، و I/O.
  • فرمان:
    vmstat 1
  • ویژگی‌ها:
    • اطلاعات پایه‌ای مانند CPU، میزان استفاده از RAM و Swap، و I/O را نمایش می‌دهد.
    • قابلیت تنظیم بازه زمانی برای نمایش داده‌ها (vmstat 5 برای هر 5 ثانیه).
    • داده‌های ورودی/خروجی از جمله نرخ CPU، صفحات در حال مبادله، و صف I/O را نمایش می‌دهد.

۴. ابزار iotop

  • کاربرد: نمایش اطلاعات دقیق از فعالیت‌های I/O دیسک بر اساس فرآیندها.
  • فرمان:
    iotop
  • ویژگی‌ها:
    • نمایش فعالیت‌های خواندن و نوشتن دیسک بر اساس فرآیندها.
    • کمک به شناسایی فرآیندهایی که منابع دیسک را بیش از حد مصرف می‌کنند.
    • نمایش نرخ خواندن/نوشتن دیسک به صورت لحظه‌ای و متمرکز.

جمع‌بندی

  • ابزارهای top و htop برای نمایش لحظه‌ای اطلاعات درباره منابع سیستم مانند CPU و RAM مناسب هستند.
  • ابزار vmstat داده‌های آماری بیشتری در مورد عملکرد سیستم ارائه می‌دهد.
  • ابزار iotop برای شناسایی فرآیندهایی که منابع دیسک را مصرف می‌کنند، کاربردی است.
  • استفاده از این ابزارها به شما کمک می‌کند تا منابع سیستم را بهتر مدیریت کرده و مشکلات را به سرعت شناسایی کنید.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”استفاده از ابزارهای مانیتورینگ پیشرفته مانند Nagios و Zabbix” subtitle=”توضیحات کامل”]مانیتورینگ سرورها و سیستم‌های لینوکسی از اهمیت بالایی برخوردار است، زیرا به شما کمک می‌کند تا عملکرد سیستم‌ها را نظارت کرده و مشکلات را قبل از اینکه باعث اختلال در سرویس شوند، شناسایی و رفع کنید. ابزارهای مانیتورینگ پیشرفته مانند Nagios و Zabbix برای این منظور طراحی شده‌اند.


۱. Nagios:

  • کاربرد: یکی از قدیمی‌ترین و پرکاربردترین ابزارهای مانیتورینگ است که تمرکز اصلی آن بر پایش وضعیت سرویس‌ها و سرورها است.
  • فرمان نصب (Debian/Ubuntu):
    sudo apt-get install nagios3
  • ویژگی‌ها:
    • نظارت بر سرویس‌ها (مانند HTTP، SSH، FTP) و ارسال هشدار در صورت بروز مشکلات.
    • قابلیت تنظیم هشدارهای ایمیل، پیامک و اعلان‌های دیگر.
    • داشبورد کاربرپسند برای نمایش وضعیت کلی سرورها و سرویس‌ها.
    • توانایی تعریف سناریوهای پیچیده‌تر مانند ردیابی فرآیندهای خاص، زمان پاسخ‌دهی و استفاده از منابع.
  • معایب: تنظیمات اولیه و پیکربندی پیچیده‌تر نسبت به ابزارهای دیگر.

۲. Zabbix:

  • کاربرد: یک ابزار مانیتورینگ پیشرفته و همه‌جانبه که نه تنها وضعیت سرویس‌ها بلکه داده‌های دقیق منابع سخت‌افزاری را نیز ردیابی می‌کند.
  • فرمان نصب (Debian/Ubuntu):
    sudo apt-get install zabbix-server zabbix-agent
  • ویژگی‌ها:
    • پایش منابع سخت‌افزاری مانند CPU، RAM، و I/O.
    • داشبورد بصری برای مشاهده نمودارها و داده‌های آماری.
    • توانایی ردیابی داده‌های جزئی‌تر مانند دما، ولتاژ و وضعیت منابع.
    • امکان تنظیم هشدارهای پیشرفته و ارسال ایمیل، پیامک و صفحات نمایش (Dashboards).
    • پشتیبانی از مانیتورینگ شبکه، پایگاه داده‌ها، و سرویس‌های مختلف.
  • معایب: نیاز به منابع سخت‌افزاری و زیرساخت‌های بیشتری دارد.

مزایای استفاده از Nagios و Zabbix:

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

جمع‌بندی

استفاده از ابزارهای مانیتورینگ پیشرفته مانند Nagios و Zabbix می‌تواند به‌طور قابل توجهی به مدیریت کارآمد سرورهای لینوکسی کمک کند. Nagios تمرکز بیشتری روی نظارت بر سرویس‌ها دارد، در حالی که Zabbix قابلیت مانیتورینگ جامع‌تر و عمیق‌تری را ارائه می‌دهد. انتخاب ابزار مناسب بستگی به نیازهای خاص سازمان و پیچیدگی زیرساخت‌ها دارد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”مدیریت و تحلیل لاگ‌ها با journalctl و logrotate” subtitle=”توضیحات کامل”]

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


۱. ابزار journalctl

  • کاربرد: نمایش و تحلیل لاگ‌ها از سیستم Journal که در سیستم‌های مدرن لینوکسی استفاده می‌شود.
  • فرمان:
    journalctl
  • ویژگی‌ها:
    • نمایش لاگ‌های سیستم به صورت یکپارچه از سیستم Journal.
    • نمایش لاگ‌های اخیر یا بر اساس زمان مشخص.
    • امکان جستجو در لاگ‌ها با استفاده از فیلترهایی مانند grep.
    • مدیریت و بررسی لاگ‌های سرویس‌ها و خطاها به صورت متمرکز.
  • مثال‌ها:
    • نمایش لاگ‌های اخیر:
      journalctl -n 50  # نمایش آخرین 50 خط
      journalctl -u sshd  # نمایش لاگ‌های سرویس sshd

۲. ابزار logrotate

  • کاربرد: مدیریت و تنظیم خودکار لاگ‌ها برای جلوگیری از افزایش حجم نامحدود فایل‌های لاگ.
  • فرمان نصب (Debian/Ubuntu):
    sudo apt-get install logrotate
  • ویژگی‌ها:
    • تنظیم خودکار برای چرخش و نگهداری فایل‌های لاگ قدیمی.
    • جلوگیری از پر شدن فضای دیسک توسط فایل‌های لاگ.
    • امکان پیکربندی تنظیمات برای هر لاگ به صورت جداگانه.
    • ذخیره‌سازی و بایگانی خودکار لاگ‌ها در دایرکتوری مشخص.
  • تنظیمات logrotate: فایل پیکربندی logrotate در /etc/logrotate.conf قرار دارد که تنظیمات کلی را انجام می‌دهد.
    • مثال تنظیمات برای چرخش لاگ‌های Apache:
      /var/log/apache2/*.log {
          daily
          rotate 7
          compress
          delaycompress
          missingok
          notifempty
          create 640 root adm
      }

مزایای استفاده از journalctl و logrotate:

  • مدیریت متمرکز لاگ‌ها: journalctl لاگ‌های سیستم و سرویس‌ها را به صورت متمرکز نمایش می‌دهد، در حالی که logrotate حجم لاگ‌ها را کنترل و نگهداری می‌کند.
  • کاهش حجم دیسک و بهینه‌سازی لاگ‌ها: با استفاده از logrotate می‌توانید از انباشت فایل‌های لاگ بزرگ جلوگیری کرده و تنظیمات خودکار برای چرخش لاگ‌ها را داشته باشید.
  • سهولت در تحلیل و جستجوی لاگ‌ها: ابزار journalctl به شما امکان می‌دهد لاگ‌ها را با فیلترهای مختلف جستجو و تحلیل کنید.

جمع‌بندی

استفاده از ابزارهای journalctl و logrotate برای مدیریت و تحلیل لاگ‌ها به شما کمک می‌کند تا سرورهای لینوکسی خود را بهینه‌تر و کارآمدتر مدیریت کنید. journalctl به عنوان یک ابزار لاگ‌گیری متمرکز و logrotate برای مدیریت خودکار لاگ‌ها از اهمیت زیادی برخوردار هستند.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”تنظیم و مدیریت لاگ‌ها در سرویس‌های مختلف لینوکسی” subtitle=”توضیحات کامل”]مدیریت لاگ‌ها در سرویس‌های مختلف، امری ضروری برای نظارت و عیب‌یابی سیستم‌ها است. لینوکس از ابزارهایی مانند journalctl و logrotate برای مدیریت لاگ‌ها در سرویس‌ها بهره می‌برد. در اینجا، به نحوه تنظیم و مدیریت لاگ‌ها در سرویس‌های مختلف پرداخته می‌شود.


۱. تنظیم و مدیریت لاگ‌ها با journalctl

  • کاربرد: journalctl لاگ‌های سیستم و سرویس‌ها را به صورت متمرکز نمایش می‌دهد.
  • فرمان‌های کاربردی:
    • نمایش لاگ‌های مربوط به یک سرویس خاص:
      journalctl -u servicename

      برای مثال، نمایش لاگ‌های سرویس Apache:

      journalctl -u apache2
    • نمایش لاگ‌های بر اساس زمان:
      journalctl --since "1 day ago"
      journalctl --until "now"
    • جستجو در لاگ‌ها:
      journalctl -u sshd | grep "error"

۲. مدیریت لاگ‌ها با logrotate

  • کاربرد: جلوگیری از پر شدن فضای دیسک با مدیریت خودکار لاگ‌ها.
  • پیکربندی لاگ‌ها با logrotate: فایل اصلی تنظیمات logrotate در مسیر /etc/logrotate.conf قرار دارد که تنظیمات کلی را برای تمام سرویس‌ها انجام می‌دهد.
    • تنظیمات خاص برای سرویس‌ها:
      /var/log/apache2/*.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          create 640 root adm
      }

      در اینجا:

      • daily به این معناست که فایل‌های لاگ روزانه چرخش شوند.
      • rotate 7 نشان می‌دهد که 7 نسخه از لاگ‌ها نگهداری شود.
      • compress فایل‌ها به فرمت فشرده شده تبدیل می‌شوند.
      • notifempty فقط زمانی که فایل لاگ محتویات داشته باشد، چرخش انجام می‌شود.
      • create 640 root adm به این معنی است که فایل‌های جدید با مجوزهای مشخص شده ساخته می‌شوند.

۳. تنظیم لاگ‌ها برای سرویس Nginx:

  • فایل لاگ Nginx معمولاً در مسیر /var/log/nginx/ قرار دارد.
  • تنظیم logrotate برای Nginx:
    /var/log/nginx/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 root adm
    }

۴. تنظیم لاگ‌ها برای سرویس MySQL/MariaDB:

  • فایل لاگ MySQL در مسیر /var/log/mysql/ قرار دارد.
  • تنظیم logrotate برای MySQL:
    /var/log/mysql/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 root adm
    }

۵. تنظیم لاگ‌ها برای سرویس SSH:

  • فایل لاگ SSH معمولاً در مسیر /var/log/auth.log قرار دارد.
  • تنظیم logrotate برای SSH:
    /var/log/auth.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 root adm
    }

جمع‌بندی

مدیریت لاگ‌ها با ابزارهایی مانند journalctl و logrotate به شما کمک می‌کند تا لاگ‌های سیستم و سرویس‌ها را بهینه‌تر و کارآمدتر بررسی کرده و فضای دیسک را مدیریت کنید. تنظیمات logrotate برای سرویس‌ها باعث می‌شود که فایل‌های لاگ به صورت خودکار چرخش داده شده و فضای ذخیره‌سازی بهینه شود. journalctl نیز برای بررسی و تحلیل لاگ‌ها از سرویس‌ها کاربردی است.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 11: پشتیبان‌گیری و بازیابی”][cdb_course_lesson title=”راهکارهای پشتیبان‌گیری در لینوکس:”][/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزارهایی مانند rsync, tar و dd” subtitle=”توضیحات کامل”]پشتیبان‌گیری از داده‌ها در سرورهای لینوکسی، یکی از اقدامات ضروری برای حفظ اطلاعات و بازیابی در صورت بروز خرابی‌های نرم‌افزاری یا سخت‌افزاری است. لینوکس ابزارها و تکنیک‌های مختلفی برای پشتیبان‌گیری ارائه می‌دهد که می‌توان از آن‌ها برای تهیه نسخه‌های پشتیبان قابل اطمینان و بازیابی سریع استفاده کرد.


۱. استفاده از rsync برای پشتیبان‌گیری سریع و کارآمد:

  • کاربرد: rsync یک ابزار بسیار قدرتمند برای همگام‌سازی و انتقال داده‌ها به صورت کارآمد و ایمن است.
  • فرمان عمومی:
    rsync -av --delete /مسیر-منبع /مسیر-مقصد
    • -a: حالت آرشیو برای حفظ مشخصات فایل‌ها.
    • -v: فعال‌سازی نمایش مراحل اجرا.
    • --delete: حذف فایل‌های قدیمی در مقصد که دیگر در منبع وجود ندارند.
  • مثال:
    rsync -av /home/user/backup/ /mnt/backup/

    این دستور، پوشه /home/user/backup/ را به مقصد /mnt/backup/ کپی می‌کند.


۲. استفاده از tar برای فشرده‌سازی و پشتیبان‌گیری:

  • کاربرد: tar یک ابزار عالی برای فشرده‌سازی و تهیه فایل‌های پشتیبان به صورت آرشیو است.
  • فرمان عمومی:
    tar -cvzf backup.tar.gz /مسیر-داده/
    • -c: ایجاد آرشیو.
    • -v: نمایش جزئیات آرشیو.
    • -z: فشرده‌سازی با gzip.
  • مثال:
    tar -cvzf backup.tar.gz /home/user/data/

    این دستور فایل‌های موجود در /home/user/data/ را به یک آرشیو فشرده به نام backup.tar.gz تبدیل می‌کند.


۳. استفاده از dd برای پشتیبان‌گیری از دیسک‌ها و درایوها:

  • کاربرد: dd ابزاری قدرتمند برای کپی دقیق و غیرهمزمان از کل دیسک‌ها و پارتیشن‌ها است.
  • فرمان عمومی:
    dd if=/dev/sdX of=/path/to/backup.img bs=4M
    • if=/dev/sdX: مشخص کردن پارتیشن یا دیسک منبع.
    • of=/path/to/backup.img: مشخص کردن مقصد برای ذخیره بک‌آپ.
    • bs=4M: بلوک سایز برای انتقال داده‌ها (می‌توانید این مقدار را بهینه‌سازی کنید).
  • مثال:
    dd if=/dev/sda of=/mnt/backup/backup.img bs=4M

    این دستور از تمام محتویات دیسک /dev/sda یک بک‌آپ کامل تهیه می‌کند.


۴. ترکیب ابزارها برای پشتیبان‌گیری ترکیبی:

برای استفاده بهتر و انعطاف‌پذیری بیشتر، می‌توانید از ترکیب rsync و tar برای پشتیبان‌گیری کارآمد استفاده کنید.

  • مثال ترکیبی:
    rsync -av --exclude 'lost+found' /home/user/data/ /mnt/backup/ && tar -czf backup.tar.gz -C /mnt/backup data/
    • rsync برای کپی فایل‌ها و پوشه‌ها.
    • tar برای فشرده‌سازی داده‌ها.

۵. پیاده‌سازی پشتیبان‌گیری خودکار:

برای اتوماسیون فرآیند پشتیبان‌گیری، می‌توانید از cron job استفاده کنید.

  • ایجاد Cron Job:
    crontab -e

    سپس خطوط زیر را برای اجرای پشتیبان‌گیری تنظیم کنید:

    0 2 * * * /path/to/backup/script.sh

    که هر روز در ساعت ۲:۰۰ بامداد بک‌آپ گرفته می‌شود.


جمع‌بندی:

استفاده از ابزارهایی مانند rsync، tar و dd، به شما امکان می‌دهد تا پشتیبان‌گیری موثر و قابل اطمینان از داده‌های سرورهای لینوکسی داشته باشید. این ابزارها می‌توانند بسته به نیاز شما به صورت ترکیبی استفاده شوند و تنظیمات خودکار آن‌ها با ابزار Cron، فرآیند پشتیبان‌گیری را ساده‌تر می‌کند.

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”پیاده‌سازی پشتیبان‌گیری خودکار در لینوکس:” subtitle=”توضیحات کامل”]پشتیبان‌گیری خودکار از داده‌ها در سرورهای لینوکسی برای اطمینان از نگهداری منظم و ایمن از داده‌ها ضروری است. برای پیاده‌سازی فرآیند پشتیبان‌گیری خودکار می‌توانید از ابزارهای مختلفی مانند Cron و اسکریپت‌های Shell استفاده کنید.


۱. استفاده از Cron برای پشتیبان‌گیری خودکار:

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

  • ایجاد Cron Job:

برای اضافه کردن Cron Job، دستور زیر را اجرا کنید:

crontab -e

این دستور فایل Cron مربوط به کاربر فعلی را باز می‌کند.

  • مثال Cron Job برای پشتیبان‌گیری روزانه:

برای بک‌آپ روزانه از داده‌ها در ساعت ۲ صبح، خطوط زیر را اضافه کنید:

0 2 * * * /path/to/your/backup-script.sh
  • 0 2 * * * : هر روز ساعت ۲:۰۰ بامداد اسکریپت اجرا می‌شود.
  • /path/to/your/backup-script.sh : مسیر به اسکریپت پشتیبان‌گیری.

۲. ساخت اسکریپت پشتیبان‌گیری:

یک اسکریپت Shell برای فرآیند پشتیبان‌گیری ایجاد کنید. به عنوان مثال، برای استفاده از rsync یا tar، اسکریپت زیر را بسازید:

اسکریپت ساده برای استفاده از rsync:

#!/bin/bash

# مسیر منبع و مقصد
SOURCE_DIR="/home/user/data/"
BACKUP_DIR="/mnt/backup/"
BACKUP_NAME="backup_$(date +%F).tar.gz"

# ایجاد بک‌آپ
rsync -av --delete $SOURCE_DIR $BACKUP_DIR

# فشرده‌سازی با tar
tar -czf $BACKUP_DIR/$BACKUP_NAME -C $BACKUP_DIR data/
  • شرح:
    • rsync داده‌ها را کپی می‌کند و tar آن‌ها را فشرده می‌کند.
    • --delete برای حذف فایل‌های قدیمی از مقصد استفاده می‌شود.
    • $(date +%F) تاریخ فعلی را برای نام‌گذاری بک‌آپ وارد می‌کند.
  • اعطا مجوز به اسکریپت:
    chmod +x /path/to/backup-script.sh

۳. استفاده از Cron با اسکریپت پشتیبان‌گیری:

پس از ساخت اسکریپت، Cron Job را برای اجرای روزانه آن تنظیم کنید:

crontab -e

و خط زیر را اضافه کنید:

0 2 * * * /path/to/backup-script.sh

۴. ذخیره‌سازی بک‌آپ در مکان ایمن:

  • برای ذخیره‌سازی بک‌آپ‌ها می‌توانید از:
    • فضای ابری (مانند AWS S3، Google Drive، یا Dropbox)
    • NAS (شبکه ذخیره‌سازی) استفاده کنید.
  • در صورت نیاز به ذخیره‌سازی ابری، می‌توانید از rsync با افزونه‌هایی برای آپلود به این سرویس‌ها استفاده کنید.

جمع‌بندی:

با استفاده از Cron و اسکریپت‌های ساده Bash، می‌توانید بک‌آپ‌های خودکار و زمان‌بندی‌شده ایجاد کرده و آن‌ها را به‌صورت منظم و ایمن نگهداری کنید. این روش به شما کمک می‌کند تا از داده‌ها به‌طور موثر محافظت کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بازیابی سیستم از پشتیبان‌ها در لینوکس” subtitle=”توضیحات کامل”]بازیابی سیستم از پشتیبان‌ها فرآیندی مهم برای احیای داده‌ها و سرورها در مواقع بروز مشکلات مانند خرابی سخت‌افزار، مشکلات نرم‌افزاری، یا از دست رفتن اطلاعات است. این کار می‌تواند به‌صورت دستی یا خودکار با استفاده از اسکریپت‌ها انجام شود.


۱. بازیابی فایل‌ها از بک‌آپ با rsync یا tar:

اگر بک‌آپ از داده‌ها با ابزارهایی مانند rsync یا tar تهیه شده باشد، بازیابی فایل‌ها ساده است.

  • مثال بازیابی فایل‌ها با rsync:
    rsync -av /mnt/backup/ /home/user/data/
    • این دستور تمام فایل‌های بک‌آپ را از محل بک‌آپ ( /mnt/backup/ ) به مسیر مقصد (/home/user/data/) باز می‌گرداند.
  • مثال بازیابی فایل‌ها با tar:
    tar -xzf /mnt/backup/backup_$(date +%F).tar.gz -C /home/user/data/
  • مثال بازیابی فول بک‌آپ با tar:
    tar -xzf /mnt/backup/full_backup.tar.gz -C /

۲. بازیابی کامل سیستم با استفاده از تصویر پشتیبان (Backup Image):

اگر بک‌آپ شامل یک تصویر کامل از سیستم (مانند پارتیشن‌ها یا دیسک‌های سیستم) باشد، می‌توانید از ابزارهایی مانند dd یا rsync برای بازیابی سیستم به حالت اولیه استفاده کنید.

  • بازیابی با dd:
    dd if=/mnt/backup/system.img of=/dev/sdX bs=4M
    • if مسیر فایل بک‌آپ پارتیشن یا دیسک.
    • of مسیر دیسک مقصد.
    • sdX دیسک مقصد را تغییر دهید به دیسک مقصد مناسب.
  • بازیابی با rsync:
    rsync -av --delete /mnt/backup/ /
    • تمام سیستم فایل‌ها از بک‌آپ را به ریشه دیسک (/) کپی می‌کند.

۳. بازیابی دیتابیس‌ها:

اگر از دیتابیس‌ها بک‌آپ گرفته‌اید، می‌توانید آن‌ها را به سادگی بازگردانی کنید.

  • بازیابی دیتابیس MySQL/MariaDB:
    mysql -u root -p < /path/to/backup/dump.sql
  • بازیابی PostgreSQL:
    psql -U username -d databasename < /path/to/backup/dumpfile.sql

۴. بازیابی کل سرور با Snapshots (در توزیع‌های خاص مثل Ubuntu و CentOS):

در توزیع‌هایی که ابزارهای مدیریت snapshot دارند، می‌توانید از آنها برای بازیابی سیستم استفاده کنید.

  • Ubuntu/Debian با LVM و snapshots:
    lvconvert --restorefiles --backingvol /dev/backup_vg/backup_lv /dev/your_vg/your_lv

۵. ابزارهای خودکار برای بازیابی:

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


جمع‌بندی:

بازیابی سیستم از پشتیبان‌ها بسته به نوع بک‌آپ (فایل‌ها، دیتابیس‌ها، یا تصاویر دیسک) و ابزار استفاده شده متفاوت است. با استفاده از ابزارهایی مانند rsync, tar, و dd می‌توانید سیستم را به‌طور موثر بازیابی کنید و اطمینان حاصل کنید که داده‌ها به درستی بازگردانی می‌شوند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”معرفی ابزارهای پیشرفته پشتیبان‌گیری: Bacula و Amanda” subtitle=”توضیحات کامل”]

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


۱. Bacula:

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

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

۲. Amanda (Advanced Maryland Disk Archiver):

Amanda یک سیستم پشتیبان‌گیری محبوب و قابل اعتماد است که به ویژه برای سرورهای لینوکسی و یونیکس مناسب است.

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

۳. مقایسه Bacula و Amanda:

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

جمع‌بندی:

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

[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 12: بهینه‌سازی و نگهداری سرور”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بهینه‌سازی عملکرد سرور لینوکسی” subtitle=”توضیحات کامل”]بهینه‌سازی عملکرد سرور یکی از وظایف کلیدی مدیران سیستم است که به افزایش سرعت، پایداری، و بهره‌وری سرور کمک می‌کند. این فرآیند شامل تنظیمات سیستم‌عامل، مدیریت منابع، و استفاده از ابزارها و تکنیک‌های مناسب است. در ادامه، روش‌های اصلی بهینه‌سازی عملکرد سرور لینوکسی توضیح داده می‌شوند.


۱. بهینه‌سازی زمان بوت سرور

  • حذف سرویس‌های غیرضروری: با استفاده از ابزارهایی مانند systemctl یا chkconfig، سرویس‌هایی که هنگام بوت اجرا می‌شوند را بررسی کرده و موارد غیرضروری را غیرفعال کنید.
    systemctl disable <service-name>
  • استفاده از init مدرن: سیستم‌های مدرنی مانند systemd زمان بوت را بهبود می‌بخشند. استفاده از آن برای مدیریت سرویس‌ها می‌تواند زمان راه‌اندازی سیستم را کاهش دهد.
  • فعال‌سازی parallel booting: در برخی توزیع‌ها می‌توان بارگذاری سرویس‌ها را به‌صورت هم‌زمان انجام داد تا زمان بوت کاهش یابد.

۲. مدیریت منابع سیستم

  • نظارت بر استفاده از منابع: ابزارهایی مانند top, htop, یا vmstat را برای پایش وضعیت CPU، RAM، و دیسک استفاده کنید.
  • تنظیم اولویت فرآیندها (Nice Value): با استفاده از دستور nice و renice، می‌توانید اولویت فرآیندها را تنظیم کرده و منابع بیشتری به فرآیندهای حیاتی اختصاص دهید.
    renice -n 10 -p <process-id>
  • پاک‌سازی حافظه کش و صفحه‌بندی: سیستم‌های لینوکسی از حافظه کش برای بهبود عملکرد استفاده می‌کنند، اما گاهی ممکن است نیاز به آزادسازی حافظه داشته باشید:
    echo 3 > /proc/sys/vm/drop_caches

۳. بهینه‌سازی ذخیره‌سازی

  • استفاده از سیستم‌فایل مناسب: انتخاب سیستم‌فایل بهینه مانند ext4, xfs، یا btrfs بسته به کاربرد می‌تواند عملکرد را بهبود دهد.
  • استفاده از SSD: جایگزینی دیسک‌های سخت (HDD) با SSD می‌تواند تأثیر چشم‌گیری در سرعت دسترسی به داده‌ها و عملکرد کلی سیستم داشته باشد.
  • تنظیم I/O Scheduler: تغییر I/O Scheduler بر اساس نیاز (مانند deadline یا cfq) می‌تواند بهره‌وری دیسک را افزایش دهد:
    echo deadline > /sys/block/<device>/queue/scheduler
  • فشرده‌سازی سیستم‌فایل: در مواردی که فضای ذخیره‌سازی محدود است، می‌توانید از فشرده‌سازی فایل‌سیستم استفاده کنید (مانند btrfs یا zfs).

۴. بهینه‌سازی شبکه

  • تنظیمات TCP/IP: با ویرایش فایل /etc/sysctl.conf می‌توانید تنظیمات مربوط به TCP/IP را برای بهبود کارایی شبکه انجام دهید:
    net.ipv4.tcp_window_scaling = 1
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
  • استفاده از Load Balancer: در سرورهایی با ترافیک بالا، استفاده از Load Balancer می‌تواند بار را بین چند سرور تقسیم کرده و کارایی را افزایش دهد.
  • پیکربندی مناسب DNS: با استفاده از سرورهای DNS سریع و قابل اعتماد، تأخیر در پاسخگویی به درخواست‌های شبکه را کاهش دهید.

۵. بهینه‌سازی نرم‌افزارها و سرویس‌ها

  • بهینه‌سازی وب‌سرورها: تنظیمات وب‌سرورهایی مانند Apache یا Nginx را بر اساس تعداد کاربران و منابع موجود، بهینه کنید:
    • کاهش KeepAliveTimeout برای آزادسازی منابع.
    • استفاده از کش در سمت وب‌سرور.
  • بهینه‌سازی دیتابیس: تنظیم مقادیر query_cache_size و innodb_buffer_pool_size در MySQL/MariaDB می‌تواند سرعت پایگاه داده را افزایش دهد.
  • استفاده از ابزارهای کش: ابزارهایی مانند Redis یا Memcached می‌توانند زمان پاسخگویی سرویس‌ها را کاهش دهند.

۶. مدیریت لاگ‌ها و حذف فایل‌های موقت

  • حذف فایل‌های غیرضروری: از ابزارهایی مانند tmpwatch یا tmpreaper برای پاک‌سازی فایل‌های موقت استفاده کنید.
  • چرخش لاگ‌ها: تنظیم ابزارهایی مانند logrotate برای مدیریت و کاهش حجم لاگ‌ها.

۷. برنامه‌ریزی وظایف

  • استفاده از cron و at: وظایف دوره‌ای مانند پاک‌سازی، پشتیبان‌گیری، یا بررسی سلامت سیستم را زمان‌بندی کنید.
    crontab -e
  • زمان‌بندی اجرای سنگین: وظایف پردازشی سنگین را به ساعات کم‌کار انتقال دهید.

جمع‌بندی:

بهینه‌سازی عملکرد سرور لینوکسی نیازمند درک عمیق از معماری سیستم، منابع سخت‌افزاری، و نرم‌افزارهای نصب‌شده است. با اجرای تنظیمات مناسب در زمینه بوت، مدیریت منابع، ذخیره‌سازی، و شبکه، می‌توانید بهره‌وری و پایداری سرور را به حداکثر برسانید. ابزارهای مانیتورینگ و تکنیک‌های اتوماسیون نیز نقش مهمی در نگهداری و بهبود عملکرد سرور دارند.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی و بهبود زمان بوت سرور لینوکسی” subtitle=”توضیحات کامل”]زمان بوت سرور یک عامل مهم برای تضمین دسترس‌پذیری و عملکرد بهینه سیستم است. در بسیاری از سناریوها، به خصوص برای سرورهای حیاتی، کاهش زمان بوت به کاهش زمان خرابی (Downtime) و افزایش بهره‌وری کمک می‌کند. در ادامه، روش‌هایی برای بررسی و بهبود زمان بوت در سرورهای لینوکسی توضیح داده شده است.


بررسی زمان بوت

۱. استفاده از دستور systemd-analyze

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

  • برای نمایش زمان کلی بوت:
    systemd-analyze

    خروجی نمونه:

    Startup finished in 1.234s (kernel) + 3.456s (userspace) = 4.690s
  • برای نمایش زمان اجرای هر واحد (Unit):
    systemd-analyze blame

    خروجی نمونه:

    3.456s network.service

    2.123s sshd.service
    1.890s mysql.service

  • نمایش گرافیکی وابستگی واحدها:
    systemd-analyze critical-chain

۲. بررسی لاگ‌های بوت

ابزار journalctl برای تحلیل دقیق لاگ‌ها کاربرد دارد:

journalctl -b

بهبود زمان بوت

۱. حذف سرویس‌های غیرضروری

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

  • شناسایی سرویس‌ها:
    systemctl list-unit-files --state=enabled
  • غیرفعال کردن یک سرویس:
    systemctl disable <service-name>

۲. فعال کردن Parallel Booting

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

۳. استفاده از systemd برای مدیریت سرویس‌ها

systemd نسبت به روش‌های قدیمی‌تر مانند SysVinit و Upstart بهینه‌تر است و فرآیند بوت را سریع‌تر مدیریت می‌کند. اگر هنوز از یک سیستم‌عامل قدیمی استفاده می‌کنید، ارتقاء به توزیع‌های مدرن مانند Ubuntu یا CentOS با پشتیبانی از systemd را در نظر بگیرید.

۴. کاهش زمان انتظار GRUB

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

  • ویرایش فایل GRUB:
    nano /etc/default/grub

    مقادیر زیر را تغییر دهید:

    GRUB_TIMEOUT=2
  • به‌روزرسانی GRUB:
    update-grub

۵. تأخیر سرویس‌ها (Service Delay)

سرویس‌هایی که نیازی به اجرای فوری ندارند، می‌توانند با تأخیر راه‌اندازی شوند تا بوت سریع‌تر انجام شود:

  • تنظیم سرویس برای تأخیر:
    systemctl edit <service-name>

    محتوای زیر را اضافه کنید:

    [Service]
    ExecStartPre=/bin/sleep 10

۶. حذف ماژول‌های غیرضروری کرنل

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

  • بررسی ماژول‌های بارگذاری‌شده:
    lsmod
  • غیرفعال کردن یک ماژول: ماژول را به فایل /etc/modprobe.d/blacklist.conf اضافه کنید:
    blacklist <module-name>

۷. استفاده از SSD به جای HDD

جایگزینی دیسک سخت (HDD) با دیسک حالت جامد (SSD) می‌تواند زمان بوت و عملکرد کلی سیستم را به‌شدت بهبود بخشد.

۸. استفاده از سرویس‌های جایگزین سبک‌تر

بعضی از سرویس‌ها مانند NetworkManager یا firewalld ممکن است زمان بوت را افزایش دهند. در صورت امکان، می‌توانید از جایگزین‌های سبک‌تر مانند systemd-networkd و iptables استفاده کنید.


ابزارهای دیگر برای بهبود زمان بوت

۱. Bootchart

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

۲. Bottleneck

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


جمع‌بندی

برای بهبود زمان بوت، ابتدا با ابزارهایی مانند systemd-analyze و journalctl مشکلات موجود را شناسایی کنید. سپس با حذف سرویس‌های غیرضروری، تنظیم GRUB، و استفاده از سخت‌افزارهای سریع‌تر مانند SSD، می‌توانید زمان بوت را بهینه کنید. انتخاب راهکار مناسب بسته به کاربرد سرور و نیازمندی‌های شما می‌تواند تأثیر قابل‌توجهی بر عملکرد سیستم داشته باشد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”کاهش مصرف منابع در سرور لینوکس” subtitle=”توضیحات کامل”]

کاهش مصرف منابع در سرورهای لینوکس به بهبود عملکرد سیستم و افزایش بهره‌وری کمک می‌کند. منابعی که معمولاً باید مدیریت شوند شامل CPU، حافظه (RAM)، فضای دیسک، و پهنای باند شبکه هستند. در ادامه روش‌های کاهش مصرف منابع و بهینه‌سازی آن‌ها شرح داده شده است.


۱. مدیریت مصرف CPU

شناسایی فرآیندهای پرمصرف

  • استفاده از ابزارهای مانیتورینگ:
    • top یا htop: نمایش فرآیندهای فعال و میزان استفاده آن‌ها از CPU.
      top
    • ps: لیست فرآیندهای فعال و مرتب‌سازی بر اساس مصرف CPU.
      ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head

اولویت‌بندی فرآیندها با nice و renice

  • تنظیم اولویت فرآیندها برای کاهش بار روی CPU:
    • اجرای یک فرآیند با اولویت پایین:
      nice -n 10 command
    • تغییر اولویت فرآیند در حال اجرا:
      renice 10 -p <PID>

استفاده از محدودیت‌های CPU

  • استفاده از cpulimit برای محدود کردن مصرف CPU یک فرآیند:
    cpulimit -p <PID> -l 50

۲. مدیریت مصرف حافظه (RAM)

شناسایی فرآیندهای پرمصرف

  • استفاده از ابزارهای زیر:
    • top یا htop: برای مشاهده فرآیندهای پرمصرف حافظه.
    • free: نمایش میزان استفاده از حافظه.
      free -h
    • smem: گزارش دقیق از مصرف حافظه توسط فرآیندها.

بهینه‌سازی حافظه با ابزارهای کش و سوآپ

  • پاکسازی حافظه کش:
    echo 3 > /proc/sys/vm/drop_caches
  • مدیریت سوآپ:
    • مشاهده وضعیت سوآپ:
      swapon --show
    • افزایش فضای سوآپ:
      fallocate -l 1G /swapfile
      chmod 600 /swapfile
      mkswap /swapfile
      swapon /swapfile

۳. مدیریت فضای دیسک

حذف فایل‌ها و بسته‌های غیرضروری

  • پاکسازی بسته‌های قدیمی:
    • در Debian/Ubuntu:
      apt autoremove
      apt autoclean
    • در CentOS/RHEL:
      yum clean all
  • شناسایی فایل‌های بزرگ:
    find / -type f -size +100M

فشرده‌سازی فایل‌های بلااستفاده

  • فشرده‌سازی فایل‌ها با gzip یا xz:
    gzip largefile

    یا

    xz largefile

۴. مدیریت مصرف شبکه

شناسایی منابع پرمصرف شبکه

  • استفاده از ابزارهای مانیتورینگ:
    • iftop: نمایش مصرف پهنای باند شبکه.
      iftop
    • nethogs: نمایش فرآیندهای پرمصرف شبکه.
      nethogs

محدود کردن پهنای باند

  • استفاده از tc برای محدود کردن ترافیک:
    tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

۵. بهینه‌سازی سرویس‌های فعال

غیرفعال کردن سرویس‌های غیرضروری

  • لیست سرویس‌های فعال:
    systemctl list-units --type=service --state=running
  • غیرفعال کردن سرویس غیرضروری:
    systemctl disable <service-name>

استفاده از ابزارهای بهینه‌سازی خودکار

  • ابزارهایی مانند tuned یا prelink می‌توانند سیستم را بر اساس نوع استفاده بهینه کنند:
    tuned-adm profile throughput-performance

جمع‌بندی

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

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”برنامه‌ریزی وظایف با Cron و At در لینوکس” subtitle=”توضیحات کامل”]برنامه‌ریزی وظایف در لینوکس یکی از ابزارهای اصلی برای خودکارسازی فرآیندها و مدیریت زمان اجرای اسکریپت‌ها یا دستورات است. در این بخش، دو ابزار cron و at که برای برنامه‌ریزی وظایف استفاده می‌شوند، معرفی شده و نحوه استفاده از آن‌ها شرح داده می‌شود.


۱. Cron: برنامه‌ریزی وظایف دوره‌ای

معرفی Cron

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


ساختار Crontab

ساختار خطی در crontab به‌صورت زیر است:

* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- روز هفته (0 تا 7، که 0 و 7 یکسان هستند و به یکشنبه اشاره دارند)
| | | +------ ماه (1 تا 12)
| | +-------- روز ماه (1 تا 31)
| +---------- ساعت (0 تا 23)
+------------ دقیقه (0 تا 59)

ایجاد یا ویرایش یک Crontab

برای ایجاد یا ویرایش وظایف یک کاربر:

crontab -e

مثال‌ها

  1. اجرای یک اسکریپت هر روز در ساعت ۳ صبح:
    0 3 * * * /path/to/script.sh
  2. اجرای یک فرمان هر یکشنبه:
    0 0 * * 0 /path/to/backup.sh
  3. اجرای یک دستور هر ۱۰ دقیقه:
    */10 * * * * /path/to/check_service.sh

لیست وظایف موجود در Crontab

برای نمایش وظایف تنظیم‌شده کاربر جاری:

crontab -l

حذف همه وظایف Crontab

برای حذف همه وظایف کاربر:

crontab -r

پیکربندی Crontab برای کاربران مختلف

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

/var/spool/cron/crontabs/

۲. At: برنامه‌ریزی وظایف یک‌بار اجرا

معرفی At

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


نصب At

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

  • در Debian/Ubuntu:
    sudo apt install at
  • در CentOS/RHEL:
    sudo yum install at

نحوه استفاده از At

  1. برنامه‌ریزی یک وظیفه:
    • اجرای یک دستور در ساعت مشخص:
      echo "command_to_execute" | at 14:30
    • اجرای یک دستور در تاریخ مشخص:
      echo "command_to_execute" | at 2:00 PM Dec 20
  2. وارد کردن دستورات در محیط At:
    • وارد محیط At برای برنامه‌ریزی:
      at 10:00
    • وارد کردن دستورات:
      /path/to/script.sh
    • پایان با فشار دادن Ctrl+D.

مدیریت وظایف At

  • مشاهده وظایف برنامه‌ریزی شده:
    atq
  • حذف یک وظیفه خاص:
    atrm <job_id>

۳. نکات مهم

فایل‌های لاگ و خروجی

  • خروجی وظایف cron و at به ایمیل کاربر ارسال می‌شود، مگر این‌که به‌صورت دستی تغییر داده شود.
  • برای غیرفعال کردن ارسال ایمیل:
    * * * * * /path/to/script.sh > /dev/null 2>&1

مدیریت دسترسی کاربران

  • فایل‌های زیر برای تنظیم دسترسی کاربران به cron و at استفاده می‌شوند:
    • /etc/cron.allow و /etc/cron.deny برای cron.
    • /etc/at.allow و /etc/at.deny برای at.

جمع‌بندی

Cron و At ابزارهایی قدرتمند برای خودکارسازی وظایف در لینوکس هستند. Cron برای اجرای وظایف دوره‌ای و At برای اجرای وظایف یک‌بار مصرف استفاده می‌شود. با تنظیم مناسب این ابزارها، می‌توان کارهای روزمره، پشتیبان‌گیری، و اجرای اسکریپت‌های مدیریتی را به‌طور خودکار انجام داد.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی و مدیریت به‌روزرسانی‌های سیستم در لینوکس” subtitle=”توضیحات کامل”]به‌روزرسانی سیستم یکی از اقدامات مهم در مدیریت سرورهای لینوکسی است که نه‌تنها به رفع مشکلات امنیتی کمک می‌کند بلکه باعث بهبود عملکرد و افزایش قابلیت‌های سیستم می‌شود. در این بخش، روش‌های بررسی و مدیریت به‌روزرسانی‌ها در سیستم‌عامل‌های مبتنی بر Debian و Red Hat ارائه خواهد شد.


۱. اهمیت به‌روزرسانی‌های سیستم

  • امنیت: به‌روزرسانی‌های امنیتی باعث رفع آسیب‌پذیری‌ها و کاهش احتمال حملات می‌شوند.
  • پایداری: رفع باگ‌ها و مشکلات نرم‌افزاری که ممکن است عملکرد سرور را تحت تأثیر قرار دهد.
  • قابلیت‌ها: دسترسی به نسخه‌های جدیدتر نرم‌افزارها با امکانات بیشتر.

۲. مدیریت به‌روزرسانی‌ها در توزیع‌های Debian و Ubuntu

بررسی به‌روزرسانی‌ها

برای مشاهده لیست بسته‌های قابل به‌روزرسانی:

sudo apt update

این دستور فهرست مخازن را به‌روزرسانی کرده و اطلاعات بسته‌های جدید را دریافت می‌کند.

نمایش بسته‌های قابل به‌روزرسانی

sudo apt list --upgradable

نصب به‌روزرسانی‌ها

برای به‌روزرسانی تمام بسته‌ها به آخرین نسخه:

sudo apt upgrade
  • تفاوت با full-upgrade: دستور full-upgrade می‌تواند بسته‌های قدیمی یا ناسازگار را حذف کرده و بسته‌های جدیدی نصب کند:
    sudo apt full-upgrade

نصب فقط به‌روزرسانی‌های امنیتی

برای دریافت و نصب به‌روزرسانی‌های امنیتی:

  1. نصب بسته مورد نیاز:
    sudo apt install unattended-upgrades
  2. اجرای به‌روزرسانی امنیتی:
    sudo unattended-upgrade

۳. مدیریت به‌روزرسانی‌ها در توزیع‌های CentOS و RHEL

بررسی به‌روزرسانی‌ها

برای مشاهده لیست بسته‌های قابل به‌روزرسانی:

sudo yum check-update

یا در نسخه‌های جدیدتر:

sudo dnf check-update

نصب به‌روزرسانی‌ها

برای نصب تمام بسته‌های قابل به‌روزرسانی:

sudo yum update

یا در سیستم‌های جدیدتر:

sudo dnf update

نصب فقط به‌روزرسانی‌های امنیتی

برای نصب فقط به‌روزرسانی‌های امنیتی در CentOS/RHEL:

  1. نصب افزونه امنیتی:
    sudo yum install yum-plugin-security
  2. نصب به‌روزرسانی‌های امنیتی:
    sudo yum --security update

۴. پیکربندی به‌روزرسانی خودکار

در Debian/Ubuntu

  1. نصب ابزار:
    sudo apt install unattended-upgrades
  2. فعال‌سازی به‌روزرسانی خودکار:
    sudo dpkg-reconfigure --priority=low unattended-upgrades
  3. ویرایش فایل پیکربندی: فایل /etc/apt/apt.conf.d/50unattended-upgrades را باز کنید و تنظیمات را بررسی یا ویرایش کنید.

در CentOS/RHEL

  1. نصب بسته:
    sudo yum install dnf-automatic
  2. فعال‌سازی سرویس به‌روزرسانی خودکار:
    sudo systemctl enable --now dnf-automatic.timer
  3. ویرایش فایل تنظیمات: فایل /etc/dnf/automatic.conf را باز کنید و مطابق نیاز پیکربندی کنید.

۵. نکات و بهترین شیوه‌ها

بررسی نسخه قبل از نصب

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

apt changelog <package_name>

یا:

yum info <package_name>

پشتیبان‌گیری پیش از به‌روزرسانی

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

خاموشی زمان‌بندی‌شده برای به‌روزرسانی‌ها

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


جمع‌بندی

مدیریت به‌روزرسانی‌های سیستم در لینوکس بخش حیاتی از نگهداری و مدیریت سرورها است. ابزارهایی مانند apt، yum و dnf به شما امکان بررسی، نصب و مدیریت به‌روزرسانی‌ها را می‌دهند. پیکربندی به‌روزرسانی خودکار می‌تواند کار شما را آسان‌تر کند، اما باید با احتیاط انجام شود تا از مشکلات احتمالی جلوگیری شود.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 13: عیب‌یابی و رفع مشکلات سرور”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”عیب‌یابی مشکلات شبکه و اتصال در لینوکس” subtitle=”توضیحات کامل”]عیب‌یابی شبکه در سرورهای لینوکسی یکی از مهم‌ترین وظایف مدیران سیستم است. مشکلات شبکه ممکن است به دلایل متنوعی از جمله تنظیمات نادرست، مشکلات سخت‌افزاری، یا خطاهای نرم‌افزاری رخ دهد. در این بخش، ابزارها و روش‌های کاربردی برای عیب‌یابی مشکلات شبکه و اتصال مورد بررسی قرار خواهند گرفت.


۱. بررسی تنظیمات شبکه

۱.۱. بررسی آدرس IP

اطمینان حاصل کنید که آدرس IP به درستی تنظیم شده است:

ip addr show

یا:

ifconfig

اطلاعاتی که باید بررسی کنید:

  • آدرس IP
  • Subnet Mask
  • Gateway

۱.۲. بررسی تنظیمات Gateway

برای بررسی تنظیمات Gateway پیش‌فرض:

ip route show

یا:

route -n

اطمینان حاصل کنید که Gateway صحیح تنظیم شده است.

۱.۳. بررسی DNS

برای اطمینان از صحت تنظیمات DNS:

  1. بررسی فایل تنظیمات DNS:
    cat /etc/resolv.conf
  2. تست DNS:
    nslookup google.com

    یا:

    dig google.com

۲. تست اتصال شبکه

۲.۱. تست اتصال به Host محلی

برای اطمینان از کارکرد صحیح کارت شبکه:

ping 127.0.0.1

۲.۲. تست اتصال به Gateway

برای بررسی ارتباط با Gateway پیش‌فرض:

ping <gateway-ip>

۲.۳. تست اتصال به اینترنت

برای بررسی ارتباط با اینترنت:

ping 8.8.8.8

اگر این دستور موفق باشد اما nslookup یا دستورات مشابه کار نکنند، مشکل از تنظیمات DNS است.


۳. عیب‌یابی با ابزارهای شبکه

۳.۱. بررسی مسیر بسته‌ها با traceroute

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

traceroute google.com

یا در صورت عدم نصب:

sudo apt install traceroute   # برای Debian/Ubuntu
sudo yum install traceroute   # برای RHEL/CentOS

۳.۲. بررسی وضعیت پورت‌ها با netstat و ss

  1. مشاهده اتصالات فعال:
    netstat -tuln

    یا:

    ss -tuln
  2. بررسی برنامه‌ای که به پورت گوش می‌دهد:
    netstat -tulnp

    یا:

    ss -tulnp

۳.۳. اسکن پورت‌ها با nmap

برای بررسی پورت‌های باز در سیستم:

nmap <ip-address>

۳.۴. تحلیل ترافیک شبکه با tcpdump

برای بررسی جزئیات ترافیک شبکه:

sudo tcpdump -i eth0
  • برای مشاهده ترافیک به مقصد خاص:
    sudo tcpdump -i eth0 host <ip-address>
  • برای مشاهده ترافیک روی پورت خاص:
    sudo tcpdump -i eth0 port 80

۴. بررسی و رفع مشکلات معمول

۴.۱. بررسی سرویس‌های شبکه

اطمینان حاصل کنید که سرویس‌های ضروری مانند SSH، DNS یا Web Server فعال و پیکربندی شده‌اند:

sudo systemctl status <service-name>

۴.۲. بررسی کارت شبکه

برای مشاهده وضعیت کارت‌های شبکه:

ethtool eth0

این ابزار اطلاعاتی درباره سرعت، وضعیت لینک و تنظیمات کارت شبکه ارائه می‌دهد.

۴.۳. بازخوانی تنظیمات شبکه

گاهی اوقات بازخوانی تنظیمات شبکه می‌تواند مشکل را حل کند:

sudo systemctl restart networking

یا:

sudo nmcli connection reload

۴.۴. بررسی تنظیمات فایروال

اطمینان حاصل کنید که فایروال مانع از برقراری ارتباط نمی‌شود:

sudo iptables -L -v

یا در سیستم‌هایی که از firewalld استفاده می‌کنند:

sudo firewall-cmd --list-all

۵. نکات و بهترین شیوه‌ها

  1. بررسی سخت‌افزار: قبل از انجام عیب‌یابی نرم‌افزاری، اطمینان حاصل کنید که کابل‌ها و سوئیچ‌ها به درستی متصل و سالم هستند.
  2. مستندسازی تغییرات: هرگونه تغییر در تنظیمات شبکه یا فایروال را مستندسازی کنید تا در صورت بروز مشکل، به راحتی قابل بازیابی باشد.
  3. پشتیبان‌گیری: از فایل‌های پیکربندی شبکه مانند /etc/network/interfaces یا /etc/sysconfig/network-scripts نسخه پشتیبان تهیه کنید.

جمع‌بندی

عیب‌یابی شبکه در لینوکس به ترکیبی از دانش و استفاده از ابزارهای مناسب نیاز دارد. ابزارهایی مانند ping، traceroute، netstat/ss و tcpdump ابزارهای قدرتمندی برای شناسایی و حل مشکلات شبکه هستند. همچنین بررسی تنظیمات اولیه مانند IP، Gateway و DNS می‌تواند بسیاری از مشکلات رایج را حل کند. با استفاده از این روش‌ها و ابزارها، می‌توانید مشکلات شبکه را به سرعت تشخیص داده و رفع کنید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”بررسی مشکلات سخت‌افزاری و نرم‌افزاری در سرورهای لینوکسی” subtitle=”توضیحات کامل”]مشکلات سخت‌افزاری و نرم‌افزاری در سرورهای لینوکسی می‌توانند منجر به کاهش عملکرد، اختلال در سرویس‌ها یا حتی از کار افتادن کامل سرور شوند. عیب‌یابی این مشکلات نیازمند دانش و استفاده از ابزارها و تکنیک‌های مناسب است. در این بخش، مراحل شناسایی و رفع مشکلات سخت‌افزاری و نرم‌افزاری بررسی می‌شود.


۱. بررسی مشکلات سخت‌افزاری

۱.۱. بررسی منابع سیستم

مشکلات سخت‌افزاری اغلب از طریق کاهش عملکرد منابع سیستم قابل شناسایی هستند. ابزارهای زیر برای بررسی منابع مفیدند:

  • بررسی وضعیت پردازنده (CPU):
    top
    htop
    mpstat -P ALL 1

    شاخص‌های مهم:

    • بار پردازشی (Load Average)
    • مصرف زیاد CPU توسط فرآیندها
  • بررسی وضعیت حافظه (RAM):
    free -h
    vmstat 1

    شاخص‌های مهم:

    • استفاده بالا از حافظه
    • وجود فرآیندهای Out-of-Memory (OOM)
  • بررسی وضعیت دیسک:
    iostat -x 1

    شاخص‌های مهم:

    • I/O بالا
    • دیسک‌های کند یا پر

۱.۲. بررسی سلامت سخت‌افزار

  1. بررسی دیسک‌های سخت:
    • وضعیت SMART برای دیسک‌ها:
      sudo smartctl -a /dev/sdX

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

    • ابزار جایگزین:
      sudo badblocks -v /dev/sdX
  2. بررسی دما و وضعیت قطعات:
    • استفاده از lm-sensors:
      sudo sensors
    • دماهای غیرعادی ممکن است به مشکلات سخت‌افزاری مانند فن‌های معیوب اشاره کنند.
  3. بررسی کارت شبکه:
    ethtool eth0

    شاخص‌های مهم:

    • قطع و وصل شدن لینک
    • نرخ انتقال داده نامناسب
  4. بررسی منبع تغذیه: مشکلات برق (ولتاژهای غیرعادی یا قطع و وصل شدن) ممکن است منجر به خاموشی یا ناپایداری سیستم شوند.

۱.۳. بررسی وضعیت لاگ‌های سخت‌افزاری

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

sudo journalctl -k

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


۲. بررسی مشکلات نرم‌افزاری

۲.۱. بررسی لاگ‌های سیستم

  1. بررسی لاگ‌های عمومی:
    sudo journalctl
  2. بررسی لاگ‌های سرویس خاص:
    sudo journalctl -u <service-name>
  3. لاگ‌های سنتی:
    • مسیرهای معمول لاگ‌ها:
      /var/log/syslog
      /var/log/messages
      /var/log/dmesg

۲.۲. بررسی فرآیندهای غیرعادی

  1. مشاهده فرآیندهای فعال:
    ps aux
  2. شناسایی فرآیندهایی که بیشترین منابع را مصرف می‌کنند:
    top
    htop

۲.۳. بررسی به‌روزرسانی‌ها

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

  • بررسی و به‌روزرسانی بسته‌ها در Debian/Ubuntu:
    sudo apt update && sudo apt upgrade
  • بررسی و به‌روزرسانی در CentOS/RHEL:
    sudo yum update

۲.۴. بررسی ناسازگاری تنظیمات

  1. سرویس‌های غیر فعال یا تنظیمات اشتباه می‌توانند منجر به مشکلات نرم‌افزاری شوند:
    • بررسی وضعیت سرویس‌ها:
      sudo systemctl status <service-name>
    • تست پیکربندی سرویس:
      • برای Apache:
        sudo apachectl configtest
      • برای Nginx:
        sudo nginx -t
  2. تنظیمات ناسازگار فایروال:
    • بررسی قوانین فعال:
      sudo iptables -L -v
    • در سیستم‌هایی که از firewalld استفاده می‌کنند:
      sudo firewall-cmd --list-all

۲.۵. مشکلات شبکه

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


۳. ابزارهای عیب‌یابی جامع

  1. System Logs Analyzer: ابزارهایی مانند logwatch یا logrotate برای مدیریت و تحلیل لاگ‌ها مفید هستند.
    sudo logwatch
  2. سیستم‌های مانیتورینگ پیشرفته: ابزارهایی مانند Zabbix، Nagios یا Prometheus می‌توانند وضعیت سیستم را به صورت بلادرنگ مانیتور کنند و مشکلات احتمالی را شناسایی کنند.
  3. تست کلی سیستم:
    • stress-ng برای تست فشار روی سیستم:
      sudo stress-ng --cpu 4 --io 2 --vm 2 --vm-bytes 1G --timeout 60s

۴. نکات و بهترین شیوه‌ها

  1. مستندسازی تغییرات: هرگونه تغییر در تنظیمات سیستم یا نصب نرم‌افزارها را مستند کنید.
  2. پشتیبان‌گیری منظم: از فایل‌های تنظیمات و داده‌های حیاتی سیستم نسخه پشتیبان تهیه کنید.
  3. استفاده از ابزارهای اتوماسیون: ابزارهایی مانند Ansible یا Puppet برای مدیریت سیستم‌ها و کاهش خطای انسانی مفید هستند.
  4. نگهداری پیشگیرانه: به‌روزرسانی‌های منظم، بررسی لاگ‌ها و مانیتورینگ سیستم می‌توانند از بسیاری از مشکلات جلوگیری کنند.

جمع‌بندی

بررسی مشکلات سخت‌افزاری و نرم‌افزاری در لینوکس نیازمند دانش کافی و استفاده از ابزارهای مناسب است. مشکلات سخت‌افزاری معمولاً از طریق لاگ‌های هسته یا ابزارهای تحلیل سخت‌افزار قابل شناسایی هستند، در حالی که مشکلات نرم‌افزاری اغلب به تنظیمات نادرست یا ناسازگاری نسخه‌ها مربوط می‌شوند. با استفاده از ابزارهای ذکر شده و رعایت بهترین شیوه‌ها، می‌توانید سیستم‌های لینوکسی را پایدار و قابل اعتماد نگه دارید.[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”استفاده از ابزارهای دیباگ مانند strace و dmesg” subtitle=”توضیحات کامل”]

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


۱. ابزار dmesg

۱.۱. معرفی ابزار dmesg

ابزار dmesg برای نمایش پیام‌های کرنل (Kernel Messages) استفاده می‌شود. این پیام‌ها شامل اطلاعات مهم درباره سخت‌افزار، درایورها، بوت سیستم و خطاهای مرتبط با کرنل هستند.
مسیر لاگ‌ها: پیام‌های تولید شده توسط کرنل معمولاً در فایل /var/log/dmesg نیز ذخیره می‌شوند.

۱.۲. دستورات پایه dmesg

  1. نمایش تمامی پیام‌ها:
    dmesg
  2. فیلتر پیام‌ها بر اساس کلمات کلیدی:
    • نمایش خطاها (Errors):
      dmesg | grep -i error
    • نمایش پیام‌های مربوط به USB:
      dmesg | grep -i usb
  3. بررسی پیام‌های اخیر کرنل:
    dmesg --time-format=iso
  4. نمایش پیام‌های خاص اولویت (Priority Levels):
    dmesg --level=err,warn

    سطوح اولویت عبارتند از:

    • emerg: پیام‌های اضطراری
    • alert: پیام‌های هشدار حیاتی
    • err: خطاها
    • warn: هشدارها
    • info: پیام‌های اطلاعاتی

۱.۳. کاربردهای رایج dmesg

  1. بررسی خطاهای سخت‌افزاری:
    • شناسایی مشکلات مربوط به دیسک، حافظه، یا سایر سخت‌افزارها.
    • مثال:
      dmesg | grep -i fail
  2. بررسی دستگاه‌های متصل:
    • شناسایی دستگاه‌های USB، کارت شبکه یا دستگاه‌های جانبی دیگر.
      dmesg | grep -i network
  3. تحلیل مشکلات بوت: پیام‌های مربوط به فرآیند بوت برای شناسایی مشکلات بوت سیستم.

۲. ابزار strace

۲.۱. معرفی ابزار strace

ابزار strace برای ردگیری و نمایش فراخوانی‌های سیستمی (System Calls) و سیگنال‌هایی که یک فرآیند در حال اجرا ارسال یا دریافت می‌کند، استفاده می‌شود. این ابزار برای دیباگ برنامه‌ها و شناسایی مشکلات عملکردی بسیار کاربردی است.

۲.۲. دستورات پایه strace

  1. ردگیری اجرای یک برنامه:
    strace <command>

    مثال:

    strace ls
  2. ردگیری فرآیند خاص با استفاده از PID:
    strace -p <PID>

    مثال:

    strace -p 1234
  3. خروجی ساده شده فقط شامل خطاها:
    strace -e trace=error <command>
  4. ردگیری فراخوانی سیستمی خاص:
    strace -e trace=open,read,write <command>

    این دستور فقط فراخوانی‌های open، read و write را نمایش می‌دهد.

  5. ذخیره خروجی در فایل برای تحلیل بیشتر:
    strace -o output.txt <command>

۲.۳. کاربردهای رایج strace

  1. شناسایی مشکلات دسترسی به فایل‌ها:
    • بررسی دلایل خطاهای “File Not Found” یا “Permission Denied”:
      strace -e trace=open <command>
  2. بررسی ارتباطات شبکه‌ای:
    • تحلیل مشکلات مربوط به ارسال و دریافت داده‌ها:
      strace -e trace=network <command>
  3. ردگیری و تحلیل فرآیندهای گیر کرده (Stuck):
    • شناسایی دلایل توقف یک فرآیند خاص:
      strace -p <PID>
  4. تحلیل عملکرد و استفاده از منابع:
    • نمایش تاخیرها و فراخوانی‌های سیستمی سنگین:
      strace -T <command>

      گزینه -T مدت زمان اجرای هر فراخوانی سیستمی را نشان می‌دهد.

۲.۴. ترکیب با سایر ابزارها

  1. ترکیب با grep برای فیلتر کردن خروجی:
    strace <command> 2>&1 | grep "ENOENT"

    پیام‌های مربوط به خطاهای “No such file or directory” را نمایش می‌دهد.

  2. ترکیب با awk برای تحلیل پیچیده‌تر:
    strace -T <command> 2>&1 | awk '{print $1, $NF}'

۳. مقایسه dmesg و strace

ویژگی dmesg strace
نوع اطلاعات پیام‌های کرنل فراخوانی‌های سیستمی فرآیندها
محدوده کاربرد بررسی سخت‌افزار، درایورها، و پیام‌های کرنل دیباگ فرآیندها و برنامه‌های کاربران
نیاز به فرآیند خاص خیر بله (فرآیند یا دستور خاص)
خروجی وضعیت سیستم به صورت کلی تعامل فرآیند با سیستم‌عامل

۴. نکات و بهترین شیوه‌ها

  1. فیلتر کردن خروجی: به دلیل حجم زیاد خروجی، همواره از فیلترها (grep, awk) استفاده کنید.
  2. تجزیه و تحلیل آرام:
    • خروجی ابزارها را در فایل ذخیره کرده و بعداً بررسی کنید.
      strace -o debug.log <command>
  3. دسترسی Root: برای مشاهده برخی پیام‌های کرنل یا فرآیندهای سیستمی، ممکن است نیاز به دسترسی Root داشته باشید.
  4. امنیت: از ابزارهای دیباگ روی فرآیندهای حساس استفاده نکنید، مگر اینکه کاملاً از ایمنی و تأثیرات آن آگاه باشید.

جمع‌بندی

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

[/cdb_course_lesson][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” private_lesson=”true” title=”تحلیل مشکلات کرنل و رفع آن‌ها” subtitle=”توضیحات کامل”]کرنل (Kernel) هسته اصلی سیستم‌عامل لینوکس است و تمامی ارتباطات بین سخت‌افزار و نرم‌افزار را مدیریت می‌کند. مشکلات کرنل می‌توانند به‌طور مستقیم عملکرد کل سیستم را تحت تأثیر قرار دهند. تحلیل و رفع مشکلات کرنل نیازمند آشنایی با ابزارها، پیام‌های لاگ کرنل و مفاهیم پایه سیستم‌عامل لینوکس است.


۱. نشانه‌های مشکلات کرنل

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

  1. کرش‌های سیستم: سیستم ناگهان متوقف شده یا ری‌استارت می‌شود.
  2. پیام‌های خطا در dmesg: پیام‌های مربوط به خطاهای کرنل در خروجی ابزار dmesg یا در فایل‌های لاگ ذخیره می‌شوند.
  3. عملکرد غیرعادی سخت‌افزار: مانند مشکلات در دستگاه‌های USB، کارت شبکه، یا هارد دیسک.
  4. بوت نشدن سیستم: سیستم قادر به بوت شدن نیست و پیام‌های خطای کرنل نمایش داده می‌شود.
  5. افزایش بار پردازشی کرنل: پردازش‌های مرتبط با کرنل ممکن است باعث افزایش غیرعادی بار پردازشی شوند.

۲. ابزارهای تحلیل مشکلات کرنل

۲.۱. dmesg

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

دستورات مهم:

  • مشاهده تمامی پیام‌ها:
    dmesg
  • فیلتر پیام‌های خطا:
    dmesg | grep -i error
  • نمایش پیام‌های مرتبط با سخت‌افزار خاص:
    dmesg | grep -i usb

۲.۲. journalctl

اگر از سیستم مدیریت لاگ systemd استفاده می‌کنید، ابزار journalctl می‌تواند پیام‌های مربوط به کرنل را نمایش دهد:

  • مشاهده پیام‌های کرنل:
    journalctl -k
  • مشاهده پیام‌های خطای کرنل:
    journalctl -p err -k

۲.۳. kern.log

فایل لاگ /var/log/kern.log نیز حاوی پیام‌های کرنل است. این فایل در صورت فعال بودن سرویس rsyslog یا syslog تولید می‌شود.

۲.۴. ابزار kdump

ابزار kdump برای جمع‌آوری اطلاعات کرش کرنل استفاده می‌شود. زمانی که کرنل دچار کرش شود، kdump اطلاعات مربوط به وضعیت سیستم را در فایل‌های core dump ذخیره می‌کند.

نصب و فعال‌سازی:

sudo apt install kdump-tools    # برای Debian/Ubuntu
sudo yum install kexec-tools    # برای CentOS/RHEL

فعال‌سازی سرویس:

sudo systemctl enable kdump
sudo systemctl start kdump

۲.۵. strace

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


۳. مراحل تحلیل و رفع مشکلات کرنل

۳.۱. شناسایی مشکل

  1. مشاهده پیام‌های کرنل: پیام‌های کرنل را با استفاده از ابزارهای dmesg یا journalctl بررسی کنید.
  2. بررسی فایل‌های لاگ: فایل‌های /var/log/kern.log و /var/log/syslog را برای یافتن پیام‌های خطای مرتبط با کرنل بررسی کنید.
  3. بررسی مشکلات سخت‌افزاری: پیام‌های مرتبط با سخت‌افزار (مانند USB، دیسک، یا کارت شبکه) را در خروجی dmesg جستجو کنید.

۳.۲. تحلیل پیام‌های خطا

پیام‌های خطای کرنل اغلب شامل اطلاعات زیر هستند:

  • ماژول یا درایور مربوطه: مثلاً usb-storage برای دستگاه‌های USB.
  • کدهای خطا: مانند ENOMEM (کمبود حافظه) یا EIO (خطای ورودی/خروجی).
  • اطلاعات سخت‌افزاری: مانند شماره دستگاه یا آدرس حافظه.

۳.۳. رفع مشکل

  1. بروزرسانی کرنل: بسیاری از مشکلات کرنل با بروزرسانی آن رفع می‌شوند:
    sudo apt update && sudo apt upgrade

    یا:

    sudo yum update kernel
  2. بارگذاری مجدد ماژول‌ها: در صورتی که یک ماژول کرنل دچار مشکل است، می‌توانید آن را بارگذاری مجدد کنید:
    sudo modprobe -r <module_name>
    sudo modprobe <module_name>
  3. تنظیمات سخت‌افزاری: اگر مشکل مربوط به سخت‌افزار باشد، ممکن است نیاز به جایگزینی قطعه معیوب یا بروزرسانی Firmware دستگاه داشته باشید.
  4. فعال‌سازی kdump برای مشکلات کرش: اگر سیستم به‌طور مرتب کرش می‌کند، با فعال کردن kdump می‌توانید اطلاعات مربوط به کرش را جمع‌آوری و تحلیل کنید.
  5. استفاده از حالت نجات (Rescue Mode): اگر سیستم بوت نمی‌شود، از حالت نجات استفاده کنید تا مشکل را رفع کنید.

۳.۴. ابزارهای اضافی

  1. Crash Utility: برای تحلیل فایل‌های کرش کرنل:
    crash /path/to/vmlinux /path/to/core
  2. SystemTap: ابزاری پیشرفته برای مانیتورینگ و دیباگ عملکرد کرنل:
    stap -e 'probe syscall.read { printf("read called\n"); }'

۴. مثال‌های رایج از مشکلات کرنل

مثال ۱: خطای Out of Memory (OOM)

  • پیام خطا:
    Out of memory: Kill process 1234 (example) score 456 or sacrifice child
  • رفع مشکل:
    • بررسی مصرف حافظه:
      free -h
    • بستن فرآیندهایی که منابع زیادی مصرف می‌کنند.
    • افزایش Swap.

مثال ۲: خطای Device Not Found

  • پیام خطا:
    [ 123.456789] usb-storage 1-1: device not accepting address 4, error -71
  • رفع مشکل:
    • اتصال مجدد دستگاه.
    • بارگذاری مجدد ماژول USB:
      sudo modprobe -r usb-storage
      sudo modprobe usb-storage

مثال ۳: کرش سیستم در هنگام بوت

  • پیام خطا:
    Kernel panic - not syncing: VFS: Unable to mount root fs
  • رفع مشکل:
    • بررسی تنظیمات Boot Loader.
    • تعمیر فایل‌سیستم با ابزار fsck.

جمع‌بندی

تحلیل مشکلات کرنل نیازمند دقت در شناسایی پیام‌های خطا، آشنایی با ابزارهای دیباگ و دانش پایه‌ای از کرنل و سخت‌افزار است. با استفاده از ابزارهایی مانند dmesg، journalctl و kdump می‌توان مشکلات کرنل را شناسایی کرد و با روش‌هایی مانند بروزرسانی کرنل، تنظیمات سخت‌افزاری یا بارگذاری مجدد ماژول‌ها مشکلات را رفع نمود. این فرآیند به بهبود عملکرد و پایداری سیستم کمک می‌کند.[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”بخش 14: پروژه‌ عملی”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”lecture” title=”پیکربندی کامل یک سرور لینوکسی” subtitle=”توضیحات کامل”]

هدف پروژه:

  • راه‌اندازی کامل یک سرور لینوکسی که شامل وب‌سرور، دیتابیس و سیستم پشتیبان‌گیری می باشد.
  • نظارت و بهینه‌سازی عملکرد سرور.
  • پیکربندی کامل شبکه و اعمال امنیت مناسب.

زیرپروژه‌ها:


1. پیکربندی اولیه سرور لینوکس

هدف:

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

مراحل:

  1. نصب لینوکس
    • سیستم عامل لینوکس (Ubuntu 20.04) نصب شده است.
    • مشخصات سرور:
      • آی‌پی استاتیک 192.168.1.100
      • گیت‌وی 192.168.1.1
      • DNS 8.8.8.8 و 8.8.4.4
    # نصب Ubuntu Server 20.04
    sudo apt update
    sudo apt upgrade -y
  2. تنظیمات اولیه شبکه
    • ویرایش /etc/netplan/01-netcfg.yaml برای تنظیم شبکه دستی:
    network:
      version: 2
      ethernets:
        enp0s3:
          dhcp4: no
          addresses:
            - 192.168.1.100/24
          gateway4: 192.168.1.1
          nameservers:
            addresses:
              - 8.8.8.8
              - 8.8.4.4
    sudo netplan apply
  3. تنظیمات امنیتی اولیه (Firewall و SELinux)
    • نصب firewalld و فعال کردن آن برای محافظت از سرور:
    sudo apt install firewalld -y
    sudo systemctl enable firewalld
    sudo systemctl start firewalld
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
    • نصب و تنظیم SELinux:
    sudo apt install selinux-utils -y
    sudo setenforce 1  # فعال‌سازی SELinux
    sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/' /etc/selinux/config

2. نصب و پیکربندی وب‌سرور Apache یا Nginx

هدف:

راه‌اندازی وب‌سرور برای میزبانی سایت.

مراحل:

  1. نصب وب‌سرور Apache
    • نصب Apache و پیکربندی VirtualHost:
    sudo apt install apache2 -y
    sudo systemctl enable apache2
    sudo systemctl start apache2
  2. پیکربندی VirtualHost
    • ایجاد فایل جدید در /etc/apache2/sites-available/mysite.conf:
    <VirtualHost *:80>
        ServerAdmin admin@example.com
        DocumentRoot /var/www/mysite
        ServerName mysite.example.com
    
        <Directory /var/www/mysite>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
  3. فعال‌سازی VirtualHost و Restart Apache
    sudo a2ensite mysite
    sudo systemctl restart apache2
  4. نصب وب‌سرور Nginx (اختیاری)
    sudo apt install nginx -y
    sudo systemctl enable nginx
    sudo systemctl start nginx

3. پیکربندی دیتابیس سرور MySQL/MariaDB و PostgreSQL

هدف:

راه‌اندازی و پیکربندی دیتابیس برای میزبانی اطلاعات وب‌سایت.

مراحل:

  1. نصب MariaDB/MySQL
    • نصب MariaDB:
    sudo apt update
    sudo apt install mariadb-server -y
    sudo systemctl enable mariadb
    sudo systemctl start mariadb
  2. ایجاد پایگاه داده و کاربر
    mysql -u root -p
    CREATE DATABASE mysite_db;
    CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON mysite_db.* TO 'user'@'localhost';
    FLUSH PRIVILEGES;
  3. تنظیمات امنیتی MariaDB
    • غیرفعال‌سازی دسترسی روت از راه دور:
    sudo mysql_secure_installation

4. پشتیبان‌گیری و نصب سیستم‌های پشتیبان‌گیری

هدف:

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

مراحل:

  1. نصب rsync و tar برای پشتیبان‌گیری دستی
    sudo apt install rsync tar -y
  2. اجرای اسکریپت پشتیبان‌گیری روزانه با cron
    • ایجاد اسکریپت /usr/local/bin/backup.sh:
    #!/bin/bash
    DATE=$(date +\%Y\%m\%d)
    BACKUP_DIR=/backup/mysite
    mkdir -p $BACKUP_DIR
    tar -czf $BACKUP_DIR/mysite_$DATE.tar.gz /var/www/mysite
    rsync -avz /var/www/mysite user@backup-server:/backup
    • تنظیم cron job:
    echo "0 2 * * * /usr/local/bin/backup.sh" | sudo crontab -

5. مانیتورینگ و بهینه‌سازی سرور

هدف:

مانیتور و بهینه‌سازی منابع سرور.

مراحل:

  1. نصب htop و monitoring tools
    sudo apt install htop -y
  2. نصب ابزار مانیتورینگ مانند Nagios یا Zabbix
    # wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.4+ubuntu22.04_all.deb
    # dpkg -i zabbix-release_latest_6.4+ubuntu22.04_all.deb
    # apt update 
    # apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
  3. پیکربندی Zabbix برای نظارت بر سرور
    • ویرایش /etc/zabbix/zabbix_server.conf:
    Server=127.0.0.1
  4. راه‌اندازی و فعال‌سازی Zabbix
    sudo systemctl enable zabbix-server
    sudo systemctl start zabbix-server

6. عیب‌یابی و رفع مشکلات سرور

هدف:

رفع مشکلات شبکه و منابع و تحلیل خطاها.

مراحل:

  1. ابزارهای عیب‌یابی
    • ping, traceroute, netstat برای عیب‌یابی اتصال شبکه.
  2. تحلیل لاگ‌ها با journalctl و logrotate
    • بررسی لاگ‌های سرور با journalctl:
    journalctl -xe
  3. استفاده از ابزارهای دیباگ مثل strace و dmesg
    • strace برای مشاهده عملکرد سیستم:
    strace -e trace=network ls -l

جمع‌بندی:

این پروژه عملی شامل پیکربندی کامل سرور لینوکس با Apache/Nginx، MariaDB/MySQL، سیستم پشتیبان‌گیری و همچنین شامل نصب ابزارهای مانیتورینگ و عیب‌یابی برای نظارت و رفع مشکلات سرور است. با این پروژه، سرور آماده می‌شود تا به درستی عملکردی پایدار و امن داشته باشد.

[/cdb_course_lesson][/cdb_course_lessons]

[cdb_course_lessons title=”پاسخ به سوالات فنی کاربران”][cdb_course_lesson icon=”fas fa-arrow-alt-circle-down” badge=”free” title=”پشتیبانی دائمی و در لحظه” subtitle=”توضیحات کامل”]ما در این دوره تمام تلاش خود را کرده‌ایم تا محتوایی جامع و کاربردی ارائه دهیم که شما را برای ورود به دنیای حرفه‌ای آماده کند. اما اگر در طول دوره یا پس از آن با سوالات فنی، چالش‌ها یا حتی مشکلاتی در اجرای مطالب آموزشی مواجه شدید، نگران نباشید!

  1. پرسش‌های شما، بخش مهمی از دوره است:
    هر سوال یا مشکلی که مطرح کنید، با دقت بررسی شده و پاسخ کامل و کاربردی برای آن ارائه می‌شود. علاوه بر این، سوالات و پاسخ‌های شما به دوره اضافه خواهند شد تا برای سایر کاربران نیز مفید باشد.
  2. پشتیبانی دائمی و در لحظه:
    تیم ما همواره آماده پاسخگویی به سوالات شماست. هدف ما این است که شما با خیالی آسوده بتوانید مهارت‌های خود را به کار بگیرید و پروژه‌های واقعی را با اعتماد به نفس کامل انجام دهید.
  3. آپدیت دائمی دوره:
    این دوره به طور مداوم به‌روزرسانی می‌شود تا همگام با نیازهای جدید و سوالات کاربران تکمیل‌تر و بهتر گردد. هر نکته جدید یا مشکل رایج، در نسخه‌های بعدی دوره قرار خواهد گرفت.

حرف آخر

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

📩 اگر سوالی دارید یا به مشکلی برخوردید، همین حالا مطرح کنید!
ما در کوتاه‌ترین زمان ممکن پاسخ شما را ارائه خواهیم داد. 🙌[/cdb_course_lesson][/cdb_course_lessons]

نقد و بررسی ها

نقد و بررسی وجود ندارد.

فقط مشتریانی که وارد سیستم شده اند و این محصول را خریداری کرده اند می توانند نظر بدهند.

سبد خرید

سبد خرید شما خالی است.

ورود به سایت