متوقف کردن و غیرفعال کردن سرویس های ناخواسته
همه ما می دانیم که هنگام نصب یک سیستم عامل لینوکس، برخی از Packages ها و برنامه های ناخواسته بدون نیاز به یک کاربر نصب می شوند.
هنگام ساخت یک سرور ما باید از خودمان بپرسیم که چه برنامه هایی مورد نیاز است. آیا ما نیاز به یک وب سرور یا یک سرور FTP، یک سرور NFS یا یک سرور DNS، یک سرور پایگاه داده یا چیزی دیگری دارم.
در این مقاله ما در مورد برخی از این برنامه ها و سروییس ها ناخواسته بحث خواهیم کرد که ممکن است لازم به استفاده از آن ها نباشیم، اما آنها به طور پیش فرض در نصب سیستم عامل نصب شده اند و به ناچار شروع به خوردن منابع سیستم شما می کنند.
ابتدا برای دانستن اینکه کدام سرویس ها درحال اجرا هستن از دستورات زیر استفاده می کنیم.
1 |
[rb@tecmint]# ps ax |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] 3 ? S 0:00 \_ [migration/0] 4 ? S 0:09 \_ [ksoftirqd/0] 5 ? S 0:00 \_ [migration/0] 6 ? S 0:24 \_ [watchdog/0] 7 ? S 2:20 \_ [events/0] 8 ? S 0:00 \_ [cgroup] 9 ? S 0:00 \_ [khelper] 10 ? S 0:00 \_ [netns] 11 ? S 0:00 \_ [async/mgr] 12 ? S 0:00 \_ [pm] 13 ? S 0:16 \_ [sync_supers] 14 ? S 0:15 \_ [bdi-default] 15 ? S 0:00 \_ [kintegrityd/0] 16 ? S 0:49 \_ [kblockd/0] 17 ? S 0:00 \_ [kacpid] 18 ? S 0:00 \_ [kacpi_notify] 19 ? S 0:00 \_ [kacpi_hotplug] 20 ? S 0:00 \_ [ata_aux] 21 ? S 58:46 \_ [ata_sff/0] 22 ? S 0:00 \_ [ksuspend_usbd] 23 ? S 0:00 \_ [khubd] 24 ? S 0:00 \_ [kseriod] ..... |
اکنون، بیایید نگاهی سریع به فرآیند پذیرش اتصال (پورت ها) با استفاده از دستور netstat به صورت زیر بندازیم.
1 |
[rb@tecmint]# netstat -lp |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:31138 *:* LISTEN 1485/rpc.statd tcp 0 0 *:mysql *:* LISTEN 1882/mysqld tcp 0 0 *:sunrpc *:* LISTEN 1276/rpcbind tcp 0 0 *:ndmp *:* LISTEN 2375/perl tcp 0 0 *:webcache *:* LISTEN 2312/monitorix-http tcp 0 0 *:ftp *:* LISTEN 2174/vsftpd tcp 0 0 *:ssh *:* LISTEN 1623/sshd tcp 0 0 localhost:ipp *:* LISTEN 1511/cupsd tcp 0 0 localhost:smtp *:* LISTEN 2189/sendmail tcp 0 0 *:cbt *:* LISTEN 2243/java tcp 0 0 *:websm *:* LISTEN 2243/java tcp 0 0 *:nrpe *:* LISTEN 1631/xinetd tcp 0 0 *:xmltec-xmlmail *:* LISTEN 2243/java tcp 0 0 *:xmpp-client *:* LISTEN 2243/java tcp 0 0 *:hpvirtgrp *:* LISTEN 2243/java tcp 0 0 *:5229 *:* LISTEN 2243/java tcp 0 0 *:sunrpc *:* LISTEN 1276/rpcbind tcp 0 0 *:http *:* LISTEN 6439/httpd tcp 0 0 *:oracleas-https *:* LISTEN 2243/java .... |
از خروجی بالا، می توان متوجه شد که به بسیاری از سرویس های اجرا شده نیازی نداریم:
1. smbd and nmbd
smbd و nmbd بعضی از فرآیند Samba هستند. شما می توانید با خیال راحت این فرآیندها را از بین ببرید و آنها را از زمان شروع به کار خود به طور خودکار غیرفعال کنید.
2. Telnet
آیا شما نیاز به ارتباط متنی متقابل دو طرفه را از طریق اینترنت یا شبکه محلی دارید؟ اگر نه! می توانید آنرا غیرفعال کنید.
3. rlogin
آیا میزبان کاربران دیگری در شبکه هستید؟ اگر نه! این فرایند را متوقف کنید.
4. rexec
اجرای فرآیند از راه دور به نام rexec به شما امکان می دهد دستورات پوسته را بر روی یک کامپیوتر از راه دور اجرا کنید. اگر شما نیازی به اجرای فرمان shell در یک دستگاه از راه دور ندارید، به سادگی فرآیند را از بین ببرید.
5. FTP
آیا لازم است فایل ها را از یک میزبان به میزبان دیگری در اینترنت منتقل کنید؟ اگر نه، می توانید با اطمینان سرویس را متوقف کنید.
6. automount
آیا شما نیاز به نصب سیستم فایل های مختلف به طور خودکار برای به ارمغان آوردن سیستم فایل شبکه دارید؟ اگر نه! چرا این روند در حال اجرا است؟ چرا شما اجازه می دهید این برنامه از منابع شما استفاده کند؟ فرآیند را از بین ببرید و آن را غیرفعال کنید.
7. named
آیا شما نیاز به اجرای NameServer (DNS) دارید؟ ابتدا فرآیند در حال اجرا را متوقف کنید و سپس آن را غیر فعال کنید.
8. lpd
lpd daemon سرویس چاپگر است. اگر شما نیازی به چاپ از سرور ندارید، منابع سیستم شما در حال استفاده کردن است پس آنرا متوقف کنید.
9. Inetd
آیا شما سرویس inetd را اجرا می کنید؟ اگر شما تنها از نرم افزاری مانند SSH برای اتصال به نرم افزار هایی مانند Mysql، Apache و غیره استفاده می کنید پس به Inetd نیاز ندارید. فرآیند را متوقف و غیرفعال کنید.
10. portmap
Portmap که یک روش فراخوانی از روش Remote Computing Remote (ONC RPC) است و از daemon rpc.portmap و rpcbind استفاده می کند. اگر این پروسه ها در حال اجرا هستند، بدین معنی است که شما NFS سرور را اجرا می کنید. اگر سرور NFS خاموش باشد، به این معنی است که منابع کمتری در سیستم شما مورد استفاده قرار می گیرد.
متوقف کردن یک فرایند را در لینوکس
برای متوقف کردن یک پروسه در حال اجرا در لینوکس، از دستور Kill PID استفاده کنید. اما قبل از اجرای فرمان Kill، باید PID فرآیند را بدانیم. به عنوان مثال، در اینجا من می خواهم یک PID پردازش cupsd پیدا کنم.
1 2 3 |
[rb@tecmint]# ps ax | grep cupsd 1511 ? Ss 0:00 cupsd -C /etc/cups/cupsd.conf |
بنابراین، PID پردازش ‘cupsd’ 1511 است. برای متوقف کردن آن PID، دستور زیر را اجرا کنید.
1 |
[rb@tecmint]# kill -9 1511 |
غیر فعال کردن سرویس در لینوکس
در توزیع های مبتنی بر Red Hat مانند Fedora و CentOS، از یک اسکریپت chkconfig و systemctl برای فعال و غیرفعال کردن سرویس های در حال اجرا در لینوکس استفاده می کنند.
برای مثال، سرور Apache را در هنگام راه اندازی سیستم غیرفعال کند.
1 2 3 4 5 6 |
RedHat,CentOS,Fedora 6.x [rb@tecmint]# chkconfig httpd off [rb@tecmint]# chkconfig httpd --del RedHat,CentOS,Fedora 7.x [rb@tecmint]# systemctl disable httpd |
توزیع های مبتنی بر دبیان مانند اوبونتو، لینوکس مینت و دیگر توزیع های مبتنی بر دبیان، از اسکریپتی به نام update-rc.d استفاده میکنند.
برای مثال، برای غیرفعال کردن سرویس Apache در هنگام راه اندازی سیستم دستور زیر را اجرا کنید: در اینجا گزینه ‘-f’ برای نیروی اجباری است.
1 |
[rb@tecmint]# update-rc.d -f apache2 remove |
پس از ایجاد این تغییرات، سیستم بعدا بدون این فرآیندها بوت می شود که در واقع باعث صرفه جویی در منابع سیستم ما خواهد شد و سرور عملی تر، سریع، ایمن و امن خواهد بود.