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


デーモンの定義は、ここ で説明しているように、「起動されるとシステムがシャットダウンするまで常に影ながら動いてるプロセスである。」というのが定義である。
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種類のアスキーで印刷可能な文字を連続して出力する。 不要
daytime daytimeプロトコルデーモン。人間が理解しやすい形式の日時を返す。 不要
discard これは、プロトコルで受信したデータを破棄するだけのデーモン。受信後の処理が必要ないので新プロトコルの性能検査等に役立てられる。 不要
echo echoプロトコルデーモン。受信した全てのデータをそのまま返送して通信が確実に行われたかどうか検査する。 不要
time timeプロトコルのデーモン。コンピュータが理解しやすい形式の日時を返す。 必要

acpid APMの仲間のacpidデーモン。やはり、省電力機構の一種。kernel2.4からACPIがサポートされた。同じくPC側でBIOSでACPIがサポートされてなければ意味無し。 とりあえず不要
anacron 指定したされたスケジュールに従ってジョブを実行するデーモン。cronがあるから特に必要なし。 不要
apmd APMデーモン。パワーマネージメントを実現するデーモン。したがって、サスペンド、レジューム、スタンバイ状態に必要に応じて遷移する。ノートPCのバッテリー監視も行う。PC側のBIOSでAPMに対応していなければ意味がない。 とりあえず必要
atd 指定された時刻にジョブを実行するデーモン。これに関する設定には、atコマンドを使う。cronとの違いは、atdの場合はワンショットなのでスケジューリング出来ない。私的には使わない。 不要
autofs デバイスやボリュームを自動的にマウントする自動マウントデーモン。特に、FDDやCD-ROMをマウントする場合が多い。私的には特に必要なし。 不要
canna Cannaサーバデーモン。かな漢字変換システム。私的には不要。 不要
crond 指定した時刻にスケジューリングしてジョブを実行するデーモン。 必要
cups cups CommonUnixPrintingSystemの利用を可能にする。 不要
FreeWnn

FreeWnnサーバデーモン。かな漢字変換システム。私的には不要。

不要
gpm Linuxのコンソール画面でマウスを使うためのデーモン。マウスを使わなければ必要なし。 不要
ident identプロトコル。リモートサービスを利用するとき、相手のサーバがidentプロトコルで利用者情報を問い合わせてくるときがある。これに答えるのがidentの役目。ただし、それが必要な場合のみの使用。sendmail等のMTAの一部で必要。 不要
irqbalance マルチCPU環境で負荷分散を可能にする。 不要
keytable キーボードを使うためのキーマップコンソールフォントをロードするスクリプト。 必要
kudzu ハードウェアの追加・削除に対応するPlug and Playのような機能を実現するデーモン。 必要
lpd プリントデーモン。プリントスプールとプリントジョブ関係を管理する。プリントしなければ必要なし。 不要
murasaki kernel2.4からサポートされたホットプラグ機構。デバドラのロード/アンロードをオートマチックで行う。USB、IEEE1394、CardBus等に対応している。 必要
netfs /etc/fstabと/proc/mountsをチェックして、NFS、SMB、NCP等のファイルシステムをマウントするスクリプト。 必要

network

マシンのTCP/IPネットワークの環境を設定するスクリプト。DHCPによるIPアドレスの取得やPCカードデバイスやIPv6関連のカーネルモジュールのロードなども担当する。

必要

nfslock NFSでファイルロックを行うためのデーモン。だから、NFSを使わなければ必要なし、 不要
nscd 名前解決の結果をキャッシュしてパフォーマンスを上げる。name service cache daemon 不要
ntalk talkプロトコルを用いてユーザ間でチャット通信を実現する。 不要
pcmcia ノートPCのカードデバイスのドライバアシスタント。カードドライバ群のロード/アンロードをオートマチックで行う。デスクトップPCなら必要なし。 不要
portmap NISやNFSで使われるRPCによる接続を管理するデーモン。これらを使わなければ必要なし。 不要
random kernelが生成する乱数の取得に使う特殊なデバイスファイル。sshやIPsecなどに使われる。 必要
xfs Xフォントサーバプログラム。リモートホストにXのフォントを提供する。かな漢字変換システムと対でXを使う場合には必要。私的にはXを使わないので必要なし。 不要
xinetd kernel2.4からinetdスーパーデーモンがxinetdに変わった。これは、何はともあれ必要。 必要
ypbind NISクライアント。NISドメインのサーバを探して、そこからNISバインド情報をゲットする。NISを使わなければ不要。 不要
yppasswdd NISドメインサーバで動かすと、NIS環境下でユーザによるパスワード変更を可能にする。NISを使わなければ必要なし。 不要
ypserv NISサーバ本体。ユーザ名やホスト名等の情報管理を行う。NISを使わなければ必要なし。 不要
yum パッケージインストール・アップデート管理システム(定期的に自動アップデート可能) 必要

3.サービスの停止方法

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

1) RHL系

■ サービスを止める

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

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

# ntsysv

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

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

2) Debian系

■ サービスを止める

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

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

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

以上

 


 
 
 



Copyright 2005 Kozupon.com.