| 4.1 不要なサービスを停止する |
4.1.1 デーモン
Linuxのインストール直後には、いくつものデーモンサービスが起動しています。以下にRedHatのサーバタイプインストールを行った場合について、セキュリティの観点から、外部向けサーバに不要と思われるデーモンを示します。| apmd | 電源管理デーモンです。電源のON/OFFをsyslogに記録できます。運用上必要性がなければ停止して構いません。 |
| atd | atコマンドと連係して指定された時刻にバッチ処理を行うためのデーモンです。atコマンドを使用しない限り外部向けサーバには不要です。 |
| cannaserver | かな漢字変換サーバです。サーバで日本語の編集を行う予定が無ければ停止すべきです。 |
| gpm | コンソール上でカット&ペーストを行うためのデーモンです。外部向けサーバには不要です。 |
| httpd | 実体はHTTPサーバ:apacheです。WEBサーバとして運用する以外は停止すべきです。 |
| inetd; xinetd | スーパーデーモンです。スーパーデーモンで提供するサービスが無ければ、停止しても構いません。 |
| lpd | プリンタを使用するときに必要なデーモンです。外部向けサーバには不要です。 |
| named | DNSサーバです。DNSサーバとして運用する以外は不要です。 |
| portmap | NIS、NFSが利用するデーモンです。外部向けサーバには不要です。 |
| rpc.statd | NSM(Network Status Monitor)サーバです。NFS(Network File System)の運用に関連したサーバですので外部向けサーバには不要です。 |
| sendmail | メール配送用デーモンです。頻繁にセキュリティホールがみつかるデーモンです。メールサーバとして運用する以外は停止すべきです。 |
| sshd | SSHデーモンです。SHHを使用しない場合は停止します。 |
| xfs | フォントサーバです。外部向けサーバには不要です。 |

# ntsysv |
画面上、左側にアスタリスク"*"が表示されているデーモンサービスが、
サーバ起動と同時に起動されるものです。
停止するデーモンサービスにカーソルを移動してスペースキーを押すと、
アスタリスク"*"が消え、サーバの次回起動からそのサービスは起動しません。
停止するサービス全てについてアスタリスク"*"を消した後、
完了ボタンを押し、サーバを再起動します。

UNIX系OSは、デーモンプログラムによるサービス提供以外に、
inetdスーパーデーモンによるサービス提供という方法があります。
inetdスーパーデーモンが代表してサービスの窓口となり、
各種サービスプログラムを起動するので、
サービス毎にデーモンプログラムを常駐させる必要がなく、
負荷の低減、メモリ使用量削減などの効果があります。
inetdスーパーデーモンにより提供されるサービスには次のようなものがありますが、
そのほとんどはサーバ運用に不要であるか、セキュリティ上問題があるものです。
| ftp | FTPサービスを提供しない場合は停止してください。ftpサーバとして運用する場合には、次節の"FTPの設定と運用"を参考にセキュリティ対策を施してください。 |
| telnet | TELNETサービスを外部から使用することは大変危険ですので、SSHを使用すべきです。telnetを使用しなければならない場合であってもローカルネットワークからのアクセスのみに限定すべきです。 |
| finger | ユーザ情報を表示してしまうためセキュリティ上問題の多いサービスです。停止しておきましょう。 |
| time;daytime | 日付や時刻を表示するサービスです。 |
| talk;ntalk | 他のユーザとチャットするためのサービスです。不要ですので停止しておきましょう。 |
| rlogin | リモートマシンにログインする。 |
| rsh | リモートマシン上でコマンドを実行する。 |
| rcp;rsync | ファイルコピーを行う。rsyncは高速版。 |
/etc/inetd.confファイルから不要なサービスをコメントアウトした後、
次のコマンドでinetdスーパーデーモンを再起動します。
# killall -HUP inetd |
xinetdは、/etc/xinetd.confファイルでアクセス制御を行います。
RedHatは基本的な設定のみ/etc/xinetd.confファイルを用い、
サービス毎の設定ファイルは/etc/xinetd.dディレクトリに置く方式を取っています。
アクセス制御の書式は次の通りです。
service <サービス名>
{
<属性> <オペレータ: =, +=, -=> <値,...>
}
|
| 属性 | 説明 |
| user | 実行ユーザの指定. |
| group | 実行グループの指定. |
| only_from | アクセスを許可するクライアントを設定. |
| no_access | アクセスを拒否するクライアントを設定. |
| disable | サービスを提供するか否かをyes/noで指定.yesの場合サービス停止. |
| socket_type | ソケットタイプの設定.次のタイプが指定できる:stream;dgram;raw;seqpacket |
| server | サーバプログラムの指定. |
| server_args | サーバプログラムの起動オプションを指定. |
| instance | サーバプログラムの最大同時起動数を設定. |
| nice | nice値の指定. |
| log_on_success | サーバプログラムの正常起動時および正常終了時のログ出力要素を指定. |
| log_on_failure | サーバプログラムの異常起動時および異常終了時のログ出力要素を指定. |
| port | サーバプログラムの接続ポート番号を指定. |
| access_times | アクセスできる時間帯を設定. |
| オペレータ | 説明 |
| = | 属性の代入 |
| += | 属性の追加 |
| -= | 属性の削除 |
1 #
2 defaults
3 {
4 instances = 60
5 log_type = SYSLOG authpriv
6 log_on_success = HOST PID
7 log_on_failure = 25 30
8
9 only_from = 127.0.0.1
10
11 }
12
13 includedir /etc/xinetd.d
|
9行目で、特に設定しない限り、localhost(IPアドレス:127.0.0.1)のみアクセス許可と指定します。
13行目の"includedir"属性で、/etc/xinetd.dディレクトリ以下の、サービス毎の設定ファイルを読み込みます。
1 services ftp
2 {
3 socket_type = stream
4 wait = no
5 user = root
6 server = /usr/sbin/in.ftpd
7 server_args = -l -a
8 log_on_success += DURATION
9 log_on_failure += USERID
10 nice = 10
11 disable = no
12
13 only_from = 254.188.149.1
14 only_from = earth.solarsystem.net
15
16 }
|
1 services telnet
2 {
3 flags = REUSE
4 socket_type = stream
5 wait = no
6 user = root
7 server = /usr/sbin/in.telnetd
8 log_on_failure += USERID
9 disable = no
10
11 only_from = 254.188.149.0
12 only_from = solarsystem.net
13
14 }
|
| 4.2 /etc以下のファイルについて |
note: プリンタサーバとして運用する場合、/etc/hosts.lpdに他のホストを 書けば良い。
rlogin、rsh、rcpやtelnetなど"危険"なコマンドについては、各サイトのセキュリティポリシに
照らし合わせて許可/拒否を決めるべきでしょう。
NFSは便利な機能ですが、アクセス制御を甘くすると外部からファイルシステムにマウントされて
しまう可能性もあります。
もしもNFSを使うのであれば公開するディレクトリを書き込み禁止にする、
アクセスできるホストを制限するなどの手立てが必要です。
slackwareで使われているNFSシステムの"/etc/exports"の記述方法は、 一般の書籍で説明されているものと若干異なります。 詳しくはmanコマンドで調べて下さい。
| 4.3 接続ポートの検査 |
# netstat -ln -A inet Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN |
home |index |previous |next |contents