آموزش متوقف کردن و غیرفعال کردن سرویس‌های ناخواسته در لینوکس

سرویس‌های ناخواسته در لینوکس

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

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

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

در این مطلب، به بررسی روش‌های شناسایی و غیرفعال‌سازی سرویس‌های غیرضروری در توزیع‌های مبتنی بر systemd نظیر Fedora، CentOS، Ubuntu، Debian و سایر توزیع‌های مشابه خواهیم پرداخت.

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

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

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

  • من واقعا به این سرور برای انجام چه کاری نیاز دارم؟
  • آیا می‌خواهم یک وب‌سرور را اجرا کند؟
  • آیا به اشتراک‌گذاری FTP یا Samba نیاز دارم؟
  • آیا سرورهای DNS یا دیتابیس را اجرا می‌کنم؟

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

کدام سرویس‌ها در حال اجرا هستند

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

فهرست کردن تمام سرویس‌های در حال اجرا

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

sudo systemctl list-units --type=service --state=running

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

بررسی پورت‌های باز و شناسایی سرویس‌های در حال گوش دادن

برای دیدن اینکه کدام سرویس‌ها به طور فعال در حال listening به اتصالات شبکه روی سرور شما هستند، از یکی از دستورات زیر استفاده کنید: ss یا netstat.

sudo ss -tuln
OR
sudo netstat -tuln

این دستورات تمام پورت‌های TCP و UDP را که در حال حاضر باز و منتظر اتصالات هستند، نمایش می‌دهند. به عنوان مثال، اگر پورت ۲۱ (که توسط FTP استفاده می‌شود) را باز می‌بینید اما در واقع به FTP نیازی ندارید، این یک نشانه واضح است که باید آن سرویس را غیرفعال کنید تا سرور شما ایمن و با منابع سازگار باشد.

سرویس‌های غیرضروری رایج در سیستم‌های systemd

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

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

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

  • avahi-daemon – شبکه‌سازی بدون پیکربندی (برای کشف سرویس‌ها در شبکه لوکال)
  • bluetooth.service – مدیریت بلوتوث؛ در سرورهای بدون واسط گرافیکی (headless) بی‌استفاده است.
  • iscsi.service, iscsid.socket, iscsiuio.socket – مربوط به ذخیره‌سازی شبکه‌ای iSCSI
  • lvm2-monitor.service, lvm2-lvmpolld.socket – برای مدیریت حجم‌های LVM
  • mdmonitor.service, raid-check.timer – مرتبط با RAID نرم‌افزاری
  • qemu-guest-agent.service – فقط در صورتی مفید است که داخل ماشین مجازی QEMU/KVM باشید.
  • nfs-convert.service, nfs-client.target – مربوط به فایل‌سیستم‌های شبکه‌ای (NFS)
  • cups.service – سرویس چاپ، معمولا در سرورها بی‌استفاده است.
  • postfix.service – سرور ایمیل، فقط در صورت ارسال ایمیل نیاز است.
  • sssd.service – اتصال به دامنه‌هایی مثل LDAP یا Active Directory.
  • hyperv-daemons – فقط در ماشین‌های مجازی Hyper-V موردنیاز هستند.
  • apport.service – ابزار گزارش خطای اوبونتو.
  • zeitgeist, telepathy – سرویس‌های لاگ‌گیری دسکتاپ و پیام‌رسانی، مخصوص دسکتاپ، نه سرور.

از دستورات زیر برای غیرفعال کردن سرویس‌های ذکر شده در بالا استفاده کنید:

sudo systemctl disable avahi-daemon
sudo systemctl disable bluetooth
sudo systemctl disable iscsi
sudo systemctl disable iscsid.socket
sudo systemctl disable iscsiuio.socket
sudo systemctl disable lvm2-monitor
sudo systemctl disable lvm2-lvmpolld.socket
sudo systemctl disable mdmonitor
sudo systemctl disable raid-check.timer
sudo systemctl disable qemu-guest-agent
sudo systemctl disable nfs-convert
sudo systemctl disable nfs-client.target
sudo systemctl disable cups
sudo systemctl disable postfix
sudo systemctl disable sssd
sudo systemctl disable hyperv-daemons
sudo systemctl disable apport
sudo systemctl disable zeitgeist
sudo systemctl disable telepathy

اگر می‌خواهید آنها را فورا متوقف کنید، فقط در هر دستور، کلمه disable را با stop جایگزین کنید.

نحوه شناسایی و بررسی سرویس‌ها

مطمئن نیستید چه چیزی روی سیستم شما در حال اجرا است یا چه چیزی به طور خودکار استارت می‌شود؟

در این قسمت چند دستور آسان برای کمک به شما در تشخیص این موضوع آورده شده است:

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

systemctl list-unit-files --type=service --state=enabled

برای دیدن سرویس‌های در حال اجرا که در حال حاضر فعال هستند.

systemctl list-units --type=service

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

systemd-analyze blame

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

خرید VPS لینوکس با دسترسی کامل SSH و منابع اختصاصی، مناسب برای برنامه‌نویسان، توسعه‌دهندگان و مدیران سایت در پارسدو فراهم است.

نحوه متوقف کردن و غیرفعال کردن یک سرویس

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

sudo systemctl stop # Stops the service now
sudo systemctl disable # Prevents it from starting at boot

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

sudo systemctl mask

اگر زمانی خواستید آن را برگردانید:

sudo systemctl unmask

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

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