Since 12/1/2007
Home > Linux > CentOS5 > 不要なサービスの停止

CentOS5 不要なサービスの停止 - itochif.com

CentOS5をインストールした直後には、必要のないと考えられるサービスが複数稼動しています。特に、脆弱性のあるネットワークサービスが稼動をしていると、そのサービスが原因で攻撃者にサーバーを乗っ取られてしまったり、他者への攻撃の踏み台として悪用されたりする恐れがあります。
「ファイアウォールで守られているから必要ない」と考える方がいるかもしれませんが、ファイアウォール内の別のサーバーが攻撃者によって乗っ取られたとき、そのサーバーからのアクセスをファイアウォールは防いでくれません。このプロセスを行う事によって、内部外部問わず、ネットワーク経由の攻撃者から、サーバーへの侵入の可能性を軽減することができます。

富士通

GNOME端末を起動する

CentOS5 インストール画面 サーバーにインストールされているサービスを調べるにあたり、現時点ではSSH接続もファイアウォールで拒否しているため、GNOME端末を起動します。GNOME端末の起動は画面左上のメニュー[アプリケーション]->[アクセサリ]->[GNOME端末]を選択します。

サーバーにインストールされているサービスを調査する

GNOME端末で、以下のコマンドを入力します。

# /sbin/chkconfig --list
NetworkManager 	0:off	1:off	2:off	3:off	4:off	5:off	6:off
NetworkManagerDispatcher	0:off	1:off	2:off	3:off	4:off	5:off	6:off
acpid          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
anacron        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
apmd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off
auditd         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
autofs         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
avahi-daemon   	0:off	1:off	2:off	3:on	4:on	5:on	6:off
avahi-dnsconfd 	0:off	1:off	2:off	3:off	4:off	5:off	6:off
bluetooth      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
conman         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
cpuspeed       	0:off	1:on	2:on	3:on	4:on	5:on	6:off
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
cups           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
dhcdbd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
dund           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
firstboot      	0:off	1:off	2:off	3:on	4:off	5:on	6:off
gpm            	0:off	1:off	2:on	3:on	4:on	5:on	6:off
haldaemon      	0:off	1:off	2:off	3:on	4:on	5:on	6:off
hidd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
httpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ibmasm         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ip6tables      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
irda           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
irqbalance     	0:off	1:off	2:on	3:on	4:on	5:on	6:off
kudzu          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
lvm2-monitor   	0:off	1:on	2:on	3:on	4:on	5:on	6:off
mcstrans       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
mdmonitor      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
mdmpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
messagebus     	0:off	1:off	2:off	3:on	4:on	5:on	6:off
multipathd     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
netfs          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
netplugd       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
nfs            	0:off	1:off	2:off	3:off	4:off	5:off	6:off
nfslock        	0:off	1:off	2:off	3:on	4:on	5:on	6:off
nscd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ntpd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
oddjobd        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pand           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
pcscd          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
portmap        	0:off	1:off	2:off	3:on	4:on	5:on	6:off
psacct         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
rdisc          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
readahead_early	0:off	1:off	2:on	3:on	4:on	5:on	6:off
readahead_later	0:off	1:off	2:off	3:off	4:off	5:on	6:off
restorecond    	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rpcgssd        	0:off	1:off	2:off	3:on	4:on	5:on	6:off
rpcidmapd      	0:off	1:off	2:off	3:on	4:on	5:on	6:off
rpcsvcgssd     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
saslauthd      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
sendmail       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
smartd         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
syslog         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
vncserver      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
winbind        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
wpa_supplicant 	0:off	1:off	2:off	3:off	4:off	5:off	6:off
xfs            	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ypbind         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
yum-updatesd   	0:off	1:off	2:off	3:on	4:on	5:on	6:off
図1.chkconfig --listによる出力

一番左がサービス名、その右側に記載されているのがrunlevelです。3:offはrunlevel 3の時には起動時に起動しない、5:onは runlevel 5の起動時に起動する、という意味になっています。
runlevelの内容は/etc/inittabに記載されています。(以下は/etc/inittabからの抜粋です。)

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
図2.CentOS5のランレベル

停止するべきサービスの特定と停止

先に記載したように、ネットワークサービスはリモートからの攻撃を受ける対象となってしまうので、ここでは一旦外部と接続できるネットワークサービスをすべて停止します。停止したサービスは、今後必要となった時に(自動)起動する設定を行います。
ネットワークサービスを特定するには以下のコマンドを使用します。

# /bin/netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:674                 0.0.0.0:*                   LISTEN      1764/rpc.statd      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1743/portmap        
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1973/cupsd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1993/sendmail: acce 
tcp        0      0 :::22                       :::*                        LISTEN      1962/sshd           
udp        0      0 0.0.0.0:32768               0.0.0.0:*                               2115/avahi-daemon:  
udp        0      0 0.0.0.0:668                 0.0.0.0:*                               1764/rpc.statd      
udp        0      0 0.0.0.0:671                 0.0.0.0:*                               1764/rpc.statd      
udp        0      0 0.0.0.0:5353                0.0.0.0:*                               2115/avahi-daemon:  
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1743/portmap        
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1973/cupsd          
udp        0      0 :::32769                    :::*                                    2115/avahi-daemon:  
udp        0      0 :::5353                     :::*                                    2115/avahi-daemon:  
Active UNIX domain sockets (servers and established)
以下略・・・
図3.ネットワークサービスを提供しているプログラムとポートのリスト

[Local Address]欄に[127.0.0.1:数値]と記載されているものは外部から接続できないため、ここでは除外します。[Local Address]がそれ以外のもの(0.0.0.0:数値や:::*になっているもの)は外部から接続できるため停止します。対応するプログラムは[PID/Program name]欄の[Program name]にあたります。この例では以下のプログラムが停止対象です。

  • rpc.statd
  • portmap
  • sshd
  • avahi-daemon
  • cupsd

これらのプログラムのうち、[portmap]、[sshd]、[avahi-daemon]は図1.で出力されたサービスと同じ名称です。これらのネットワークサービスを停止するには以下のようなコマンドを入力します。

# /sbin/service portmap stop
portmap を停止中:                                          [  OK  ]
# /sbin/service sshd stop
sshd を停止中:                                             [  OK  ]
# /sbin/service avahi-daemon stop
Avahi デーモンを停止中:                                    [  OK  ]
図4.それぞれのネットワークサービスを停止

これらの停止コマンドを入力した後のネットワークサービスの状態を確認してみます。

# /bin/netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:674                 0.0.0.0:*                   LISTEN      1764/rpc.statd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1973/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1993/sendmail: acce
udp        0      0 0.0.0.0:668                 0.0.0.0:*                               1764/rpc.statd
udp        0      0 0.0.0.0:671                 0.0.0.0:*                               1764/rpc.statd
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1973/cupsd
Active UNIX domain sockets (servers and established)
以下略・・・
図5.portmap,sshd,avahi-daemonを停止した後のネットワークサービスを提供しているプログラムとポートのリスト

図5の結果、停止するべきプログラムは以下の2つとなりました。

  • rpc.statd
  • cupsd

この2つのプログラムがどのサービスから起動されているのかを調べる必要があります。
調べる方法は、/etc/rc.d/init.d/内にあるサービス起動スクリプトを調査します。ここでは、grepコマンドを使用し、起動スクリプト内を調査します。

# /bin/grep cupsd /etc/init.d/*
/etc/init.d/cups:DAEMON=cupsd
# /bin/grep rpc.statd /etc/init.d/*
/etc/init.d/nfslock:[ -x /sbin/rpc.statd ] || exit 5
/etc/init.d/nfslock:    daemon rpc.statd "$STATDARG"
/etc/init.d/nfslock:    killproc rpc.statd
/etc/init.d/nfslock:    status rpc.statd
/etc/init.d/nfslock:    /sbin/pidof rpc.statd >/dev/null 2>&1; STATD="$?"
図6.プログラム名から起動サービスを特定している(赤字がサービス)

この結果から、cupsdを停止するにはcupsサービスを、rpc.statdを停止するにはnfslockを停止すれば良い事がわかります。図4と同様の方法でこれらのサービスを停止します。

# /sbin/service cups stop
cups を停止中:                                             [  OK  ]
/sbin/service nfslock stop
NFS statd を停止中:                                        [  OK  ]
図7.cupsとnfslockを停止

これらの停止コマンドを入力した後のネットワークサービスの状態を再度確認してみます。

# /bin/netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1993/sendmail: acce
Active UNIX domain sockets (servers and established)
以下略・・・
図8.外部接続を待ち受けているサービスが無くなった様子

これで、外部からの接続を待ち受けているネットワークサービスの停止が完了しました。

富士通

再起動してもサービスを起動しないようにする

これまでで停止したサービスは一時的に停止されたもので、システムが再起動されると再びサービスが起動されてしまいます。システムを再起動しても自動的にサービスが起動しないようにするには図1で使用したchkconfigコマンドを使用します。

# /sbin/chkconfig portmap off
# /sbin/chkconfig sshd off
# /sbin/chkconfig avahi-daemon off
# /sbin/chkconfig cups off
# /sbin/chkconfig nfslock off
図9.自動起動をoffにするコマンド及びランレベル毎の確認

自動起動が無効になっている事の確認は、以下のコマンドで行います。

# /sbin/chkconfig --list portmap
portmap         0:off   1:off   2:off   3:off   4:off   5:off   6:off
# /sbin/chkconfig --list sshd
sshd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
# /sbin/chkconfig --list avahi-daemon
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off
# /sbin/chkconfig --list cups
cups            0:off   1:off   2:off   3:off   4:off   5:off   6:off
# /sbin/chkconfig --list nfslock
nfslock         0:off   1:off   2:off   3:off   4:off   5:off   6:off
図10.ランレベルとそれに対応する起動設定の確認

すべてがoffになっている事を確認し、再起動を行います。再起動後に設定が反映されているかどうかをnetstatコマンドで確認します。

# /bin/netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1886/sendmail: acce
Active UNIX domain sockets (servers and established)
以下略・・・
図11.再起動しても外部接続を待ち受けているサービスが起動していない事の確認

再起動後もサービスが自動起動されていない事が確認できました。これで、リモートからの攻撃にさらされる可能性はほぼなくなりました。

GIGABYTE製 ハイエンドデスクトップ 468x60

ネットワークサービス以外の停止

ネットワークサービス以外のサービスも必要なければ停止しておく事で無駄なリソースの使用が減ります。例えば、bluetoothの機能を使用しないのにbluetoothサービスを起動しておくのはリソースの無駄使いです。以下は当サイトで行っている設定です。

サービス状態サービス状態
NetworkManageroff NetworkManagerDispatcheroff
acpidoff anacronon
apmdoff atdon
auditdon autofson
avahi-daemonoff avahi-dnsconfdoff
bluetoothoff conmanoff
cpuspeedon crondon
cupsoff dhcdbdoff
dundoff firstbootoff
gpmoff haldaemonon
hiddoff httpdoff
ibmasmoff ip6tablesoff
iptableson irdaoff
irqbalanceon kudzuon
lvm2-monitoron mcstranson
mdmonitoroff mdmpdoff
messagebuson multipathdoff
netconsoleoff netfsoff
netplugdoff networkon
nfsoff nfslockoff
nscdoff ntpdoff
oddjobdoff pandoff
pcscdoff portmapoff
psacctoff rdiscoff
readahead_earlyoff readahead_lateroff
restorecondon rpcgssdoff
rpcidmapdoff rpcsvcgssdoff
saslauthdoff sendmailoff
smartdon sshdoff
syslogon vncserveroff
winbindoff wpa_supplicantoff
xfsoff ypbindoff
yum-updatesdoff

マウスコンピューター/G-Tune