OSインストール後の最初の作業として「不要サビースの停止作業」をするよね?
この作業の理由を、いまさらだけど言っとこう。
理由1:不要なサービスを動作させていると、サーバーのリソースを無駄に消費する。
理由2:動作していると、そのサービスの脆弱性を突いた攻撃の対象となる。
以上の理由からこの作業はする必要があるんだ。
もう、CentOSとかインストール後に一杯動かしてくれてありがとう。
せっかく自動起動にしてくれてるけど、ほとんど停止させちゃう。
CentOS5.5を対象にしたクリーンインストール後(余計なパッケージをインストールしない)
どんだけ動いてるかみてみよう。
#ls -la /etc/rc3.d/
なぜchkconfig --listにしないかって?
それは、ベンダーニュートラル精神の賜物。
確かに、chkconfigはとても便利で私も実際の運用では使用する。
だが、デフォルトで使えるのはRedHat系OSのみ。
chkconfigがやってくれているのは/etc/rc*.d/にあるファイルのリネーム作業で、
いわゆる便利ツールでしかないのだよ。
ベンダーに囲われないベンダーニュートラルな技術を身につけていく必要がある。
さてどうでもいいことはほっといて、作業しよう。
Sが自動起動設定になってるやつで、Kが自動的に起動しない設定になっている。
chkconfig --list と見比べてくれたら解りやすいと思う。
モチロン手動でこのファイルの頭文字をSからKに変えたらchkconfigの結果も反映されるからね。
今回停止するサービスは
ip6tables -------- IPv6用のファイアウォール
mcstrans -------- ごめんなさい、いつかONにできる日を夢見て(SElinux トランスレーション)
restorecond ------ ごめんなさい、いつかONにできる日を夢見て(SElinux ラベリング)
netfs ------- /etc/fstab にNFSとかsambaをマウントするように書いている場合に必要
messagebus ------- D-BUSのデーモン
haldaemon ------- ハードウェア抽象化レイヤ(プラグアンドプレイ)、今回は無効にしてみよう。
rawdevices ------ カーネル内部のページキャッシュを使わないIO処理をしてくれる。
(oracleとかバッファ管理をしてるアプリケーションなどで2重バッファを防ぐときに使う)
こんだけ停止させてみるか。(各サービスが何かは各自調べてくれ、そして私に教えてくれ)
さてココからが本題だ。
chkconfig とかリネームでじゃかじゃかやっていってもいいんだけど、
サーバ構築のたびにやる作業になると思うので、
効率化を図る為にシェルスクリプトを用意しよう。
※シェルスクリプトを実行する前に!!
今回SELinux関係のサービスを2つ無効にするので、
シェルスクリプトを動かす前に、SELinuxを無効にしてくれ!
-> SELinux無効化方法
#!/bin/bash
services=(`ls -1 /etc/init.d/`)
stop_services=("ip6tables" "mcstrans" "restorecond" "netfs" "messagebus" "haldaemon" "rawdevices")
for stop_service in "${stop_services[@]}"
do
for service in ${services[@]}
do
if [ $service = $stop_service ]; then
service $stop_service stop
chkconfig --level 2345 $stop_service off
fi
done
done
for stop_service in "${stop_services[@]}"
do
chkconfig --list $stop_service
done 2>service_stop_error
exit 0
services=(`ls -1 /etc/init.d/`)
stop_services=("ip6tables" "mcstrans" "restorecond" "netfs" "messagebus" "haldaemon" "rawdevices")
for stop_service in "${stop_services[@]}"
do
for service in ${services[@]}
do
if [ $service = $stop_service ]; then
service $stop_service stop
chkconfig --level 2345 $stop_service off
fi
done
done
for stop_service in "${stop_services[@]}"
do
chkconfig --list $stop_service
done 2>service_stop_error
exit 0
シンプルなシェルスクリプト。
1、サービス名を/etc/init.d/からとってくる
2、停止するサービスを指定する。
3、指定されたサービスを順に停止する
4、結果をchkconfig --listで表示する
5、エラーが合った場合はエラー出力ファイルに出力する
これを動かしてやってサービスストップしまくろう。
実行権限700つけてやるの忘れずにね。