2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

不要なデーモンの停止とシステムのセキュアー化!

デーモンの定義は、ここ で説明しているように、「起動されるとシステムがシャットダウンするまで常に影ながら動いてるプロセスである。」というのが定義である。
Linuxをインストールすると、カスタムでインストールしたとしても入れた覚えのないプロセス(サービス)が立ち上がっている。その中には必要なサービス、不要なサービスが有ると思うが、それを初心者が見分け停止させることは非常に困難な事だと思っている。俺も経験があるが、不要なサービスと思い止めたサービスが実はkernel側で必要なサービスであったため、エラーでまくりと言うことがあった。
そんなことがあると、ほとんどの人は「やばい!」と思い停止してたサービスを再び動かして「これは必要だから止めては駄目なんだな。」って意味も解らず納得してしまうだろう。それで「これは、なぜ、デーモンとして動かさねばならぬのか?」と言うことを追求せずに終わるだろう。
しかし、不要なデーモンを停止させることは、Unixのサービスの意味を調べる事にもなるのでスキルアップにも大変重要なことだと思う。さらに、不要なデーモンを停止させることはクラックな方達にバックドアを作らせないことにもなり、自ホストのセキュリティアップにも繋がる。このようなことから、ここではLinux起動時に立ち上がっているだろうサービスがどんな物かを説明して、必要か必要でないか。を判断出来るようにしたい。



1.必要なデーモンは・・・・

デーモンには、kernelに関与するデーモンとシステム系デーモンと単なるアプリケーションのデーモンがある。以下はVineLinuxでpsコマンドを発行して、プロセス状態をViewしている。
ここ でも説明したが、[ ]でくくられているデーモンはkernel関連である。このkernel関係のデーモンは基本的に止めない方が良い。

[root@yh root]# ps -ef | more
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jan17 ? 00:00:03 init [3]
root 2 1 0 Jan17 ? 00:00:00 [keventd]
root 3 1 0 Jan17 ? 00:00:00 [kapmd]
root 4 1 0 Jan17 ? 00:00:00 [ksoftirqd_CPU0]
root 5 1 0 Jan17 ? 00:00:55 [kswapd]
root 6 1 0 Jan17 ? 00:00:00 [bdflush]
root 7 1 0 Jan17 ? 00:00:00 [kupdated]
root 8 1 0 Jan17 ? 00:00:00 [khubd]
root 9 1 0 Jan17 ? 00:00:48 [kjournald]
root 128 1 0 Jan17 ? 00:00:00 [mdrecoveryd]
root 135 1 0 Jan17 ? 00:00:00 [kjournald]
root 427 1 0 Jan17 ? 00:00:34 syslogd -m 0
root 432 1 0 Jan17 ? 00:00:00 klogd -2
snort 488 1 0 Jan17 ? 03:58:27 /usr/sbin/snort -u snort -g s
root 500 1 0 Jan17 ? 00:00:00 inetd
root 513 1 0 Jan17 ? 00:00:15 /usr/sbin/sshd
root 593 1 0 Jan17 ? 00:00:00 /usr/lib/postfix/master
postfix 601 593 0 Jan17 ? 00:04:25 qmgr -l -t fifo -u
root 619 1 0 Jan17 ? 00:00:00 crond
省略

2.システム系デーモンの種類と必要か不要かの判断

使わないデーモンを停止すると言うことは、サーバの資源的にも無駄なメモリー使いを無くし資源を有効に使うことになるし、セキュリティ的にも余計な穴を開けなくて済む。ポートが開いてるという事だけでなく、ソフトの脆弱性を突かれることも確率的には少なくなるからである。

以下は順不同:

プロセス名役割・働き俺の選んだ必要/不要
amandaバックアップシステムのこと。これが必要なのはバックアップされる側。AMANDAを使ってのバックアップが必要なときに使う不要
chargenキャラクタジェネレータプロトコルデーモン。約95種類のアスキーで印刷可能な文字を連続して出力する。不要
daytimedaytimeプロトコルデーモン。人間が理解しやすい形式の日時を返す。不要
discardこれは、プロトコルで受信したデータを破棄するだけのデーモン。受信後の処理が必要ないので新プロトコルの性能検査等に役立てられる。不要
echoechoプロトコルデーモン。受信した全てのデータをそのまま返送して通信が確実に行われたかどうか検査する。不要
timetimeプロトコルのデーモン。コンピュータが理解しやすい形式の日時を返す。必要
acpidAPMの仲間のacpidデーモン。やはり、省電力機構の一種。kernel2.4からACPIがサポートされた。同じくPC側でBIOSでACPIがサポートされてなければ意味無し。とりあえず不要
anacron指定したされたスケジュールに従ってジョブを実行するデーモン。cronがあるから特に必要なし。不要
apmdAPMデーモン。パワーマネージメントを実現するデーモン。したがって、サスペンド、レジューム、スタンバイ状態に必要に応じて遷移する。ノートPCのバッテリー監視も行う。PC側のBIOSでAPMに対応していなければ意味がない。とりあえず必要
atd指定された時刻にジョブを実行するデーモン。これに関する設定には、atコマンドを使う。cronとの違いは、atdの場合はワンショットなのでスケジューリング出来ない。私的には使わない。不要
autofsデバイスやボリュームを自動的にマウントする自動マウントデーモン。特に、FDDやCD-ROMをマウントする場合が多い。私的には特に必要なし。不要
cannaCannaサーバデーモン。かな漢字変換システム。私的には不要。不要
crond指定した時刻にスケジューリングしてジョブを実行するデーモン。必要
cupscups CommonUnixPrintingSystemの利用を可能にする。不要
FreeWnnFreeWnnサーバデーモン。かな漢字変換システム。私的には不要。不要
gpmLinuxのコンソール画面でマウスを使うためのデーモン。マウスを使わなければ必要なし。不要
identidentプロトコル。リモートサービスを利用するとき、相手のサーバがidentプロトコルで利用者情報を問い合わせてくるときがある。これに答えるのがidentの役目。ただし、それが必要な場合のみの使用。sendmail等のMTAの一部で必要。不要
irqbalanceマルチCPU環境で負荷分散を可能にする。不要
keytableキーボードを使うためのキーマップコンソールフォントをロードするスクリプト。必要
kudzuハードウェアの追加・削除に対応するPlug and Playのような機能を実現するデーモン。必要
lpdプリントデーモン。プリントスプールとプリントジョブ関係を管理する。プリントしなければ必要なし。不要
murasakikernel2.4からサポートされたホットプラグ機構。デバドラのロード/アンロードをオートマチックで行う。USB、IEEE1394、CardBus等に対応している。必要
netfs/etc/fstabと/proc/mountsをチェックして、NFS、SMB、NCP等のファイルシステムをマウントするスクリプト。必要
networkマシンのTCP/IPネットワークの環境を設定するスクリプト。DHCPによるIPアドレスの取得やPCカードデバイスやIPv6関連のカーネルモジュールのロードなども担当する。必要
nfslockNFSでファイルロックを行うためのデーモン。だから、NFSを使わなければ必要なし、不要
nscd名前解決の結果をキャッシュしてパフォーマンスを上げる。name service cache daemon不要
ntalktalkプロトコルを用いてユーザ間でチャット通信を実現する。不要
pcmciaノートPCのカードデバイスのドライバアシスタント。カードドライバ群のロード/アンロードをオートマチックで行う。デスクトップPCなら必要なし。不要
portmapNISやNFSで使われるRPCによる接続を管理するデーモン。これらを使わなければ必要なし。不要
randomkernelが生成する乱数の取得に使う特殊なデバイスファイル。sshやIPsecなどに使われる。必要
xfsXフォントサーバプログラム。リモートホストにXのフォントを提供する。かな漢字変換システムと対でXを使う場合には必要。私的にはXを使わないので必要なし。不要
xinetdkernel2.4からinetdスーパーデーモンがxinetdに変わった。これは、何はともあれ必要。必要
ypbindNISクライアント。NISドメインのサーバを探して、そこからNISバインド情報をゲットする。NISを使わなければ不要。不要
yppasswddNISドメインサーバで動かすと、NIS環境下でユーザによるパスワード変更を可能にする。NISを使わなければ必要なし。不要
ypservNISサーバ本体。ユーザ名やホスト名等の情報管理を行う。NISを使わなければ必要なし。不要
yumパッケージインストール・アップデート管理システム(定期的に自動アップデート可能)必要

3.サービスの停止方法

各Linuxのディストリビューションによって違う。

1) RHL系

■ サービスを止める

# /etc/init.d/[起動スクリプト名] stop

■ はじめからサービスを起動させない

# ntsysv

起動メニューを立ち上げて、スペースキーでチェックを付けたり消したりする。もう一つに方法は、

# chkconfig [起動スクリプト名] off

2) Debian系

■ サービスを止める

# /etc/init.d/[起動スクリプト名] stop

■ はじめからサービスを起動させない

# update-rc.d -f [起動スクリプト名] remove

以上

コメント