Linuxシステムから不要なサービスを停止および無効にする方法
私たちは計画と要件に従ってサーバーを構築しますが、サーバーを迅速かつ効率的に機能させるために、どのような機能が意図されているのでしょうか。Linux OSをインストールする際に、ユーザーの知らないうちに不要なパッケージやアプリケーションが自動的にインストールされることは誰もが知っています。
サーバーを構築する際には、私たちが実際にそのボックスから何を必要としているのか自問自答する必要があります。Webサーバーが必要なのか、FTPサーバーが必要なのか、NFSサーバーが必要なのか、DNSサーバーが必要なのか、データベースサーバーが必要なのか、それとも別の何かが必要なのか。
この記事では、必要ないかもしれないが、OSのインストール時にデフォルトでインストールされ、知らず知らずのうちにシステムリソースを消費し始めるいくつかの不要なアプリケーションやサービスについて議論します。
まず、次のコマンドを使用してシステムで実行されているサービスの種類を確認しましょう。
[avishek@tecmint]# ps axサンプル出力
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コマンドを使用して接続を受け入れているプロセス(ポート)をざっと見てみましょう。
[avishek@tecmint]# netstat -lpサンプル出力
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 と nmbd
smbd および nmbd は Samba プロセスのデーモンです。Windows や他のマシンで smb シェアをエクスポートする必要がありますか?もしそうでないのなら、これらのプロセスが実行されている理由は何ですか?これらのプロセスを安全に終了させ、次回のマシン起動時に自動的に起動しないように無効にすることができます。
2. テルネット
インターネットまたはローカルエリアネットワーク上で双方向のインタラクティブなテキスト志向の通信が必要ですか?必要ない場合は、このプロセスを終了し、起動時に自動的に開始しないように設定してください。
3. rlogin
別のホストにネットワーク経由でログインする必要がありますか?必要がない場合は、このプロセスを終了し、起動時に自動的に開始しないようにしてください。
4. rexec
リモートプロセス実行(rexec)は、リモートコンピュータ上でシェルコマンドを実行することを可能にします。リモートマシンでシェルコマンドを実行する必要がない場合は、プロセスを単に終了させてください。
5. FTP
インターネット経由で一つのホストから別のホストにファイルを転送する必要がありますか?必要がない場合は、サービスを安全に停止できます。
6. 自動マウント
ネットワークファイルシステムを立ち上げるために、異なるファイルシステムを自動的にマウントする必要がありますか?そうでないなら、なぜこのプロセスが実行されているのですか?なぜこのアプリケーションにあなたのリソースを使用させているのですか?プロセスを終了させ、自動起動を無効にしてください。
7. 名称付き
ネームサーバー(DNS)を実行する必要がありますか?もしそうでないなら、なぜこのプロセスを実行してリソースを消費させる理由があるのでしょうか。まず、実行中のプロセスを終了させてから、ブート時に実行しないように設定してください。
8. lpd
lpdは、そのサーバーに印刷することを可能にするプリンタデーモンです。サーバーから印刷する必要がなければ、システムリソースが消費されている可能性があります。
9. Inetd
inetdサービスを実行していますか?もし、MysqlやApacheなどの他のスタンドアロンアプリケーションを使用するsshのようなスタンドアロンアプリケーションを実行している場合、inetdは必要ありません。プロセスを終了して、次回自動的に起動しないように設定する方が良いでしょう。
10. ポートマップ
ポートマップは、オープンネットワークコンピューティングリモートプロシージャコール(ONC RPC)およびデーモンrpc.portmapとrpcbindです。これらのプロセスが実行されている場合、NFSサーバーが実行されていることを意味します。NFSサーバーが気づかれずに実行されている場合、あなたのシステムリソースが不必要に使用されていることを意味します。
Linuxでプロセスを終了する方法
Linuxで実行中のプロセスを終了させるには、'Kill PID'コマンドを使用します。しかし、Killコマンドを実行する前に、プロセスのPIDを知っておく必要があります。例えば、ここでは'cupsd'プロセスのPIDを見つけたいと思います。
[avishek@tecmint]# ps ax | grep cupsd
1511 ? Ss 0:00 cupsd -C /etc/cups/cupsd.confつまり、‘cupsd’プロセスのPIDは‘1511’です。そのPIDを終了させるには、次のコマンドを実行してください。
[avishek@tecmint]# kill -9 1511killコマンドについての例を含む詳細を知るには、Linuxでプロセスを終了するためのkillコマンドに関するガイド記事をお読みください。
Linuxでサービスを無効にする方法
FedoraやCentOSのようなRed Hatベースのディストリビューションでは、Linuxで実行中のサービスを有効化および無効化するために、‘chkconfig‘というスクリプトを使用します。
例えば、システムの起動時にApacheウェブサーバーを無効にしましょう。
[avishek@tecmint]# chkconfig httpd off
[avishek@tecmint]# chkconfig httpd --delUbuntuやLinux MintなどのDebianベースのディストリビューションでは、update-rc.dと呼ばれるスクリプトを使用します。
例えば、システム起動時にApacheサービスを無効にするには、次のコマンドを実行します。ここで「-f」オプションは強制を意味し、必須です。
[avishek@tecmint]# update-rc.d -f apache2 removeこれらの変更を行った後、システムは次回起動時にこれらの不要なプロセスなしで起動し、実際にシステムリソースを節約することができ、サーバーはより実用的で、速く、安全かつセキュアになります。
それでは今回はこれでおしまいです。また興味深い記事でお会いしましょう。それまで、Tecmintに関心を持ち続けてください。コメント欄で皆さんの貴重なフィードバックを忘れずにお寄せください。
