TOPサーバ構築・運用> Debian GNU/LinuxにおけるセキュアなDomain-0の作り方
仮想化技術 完全攻略ガイド
セキュアなVM環境を作る

第2回:セキュアなDomain-0の作り方
著者:宮本 久仁男   2006/10/4
1   2  次のページ
Debian GNU/LinuxにおけるセキュアなDomain-0の作り方

   以下では、Debian GNU/Linux 3.1(sarge)を用いたセキュアサーバー、つまり最小限の環境のみを備えたサーバーをどのようにして作るか? について述べていきます。セキュアなDomain-0の構築のために必要なベースは、まずセキュアなサーバーという考え方にもとづきます。

Debian Installerでは何をどう選ぶ?

   普通にインストールすると、Debian Installerを使うことになるかと思います。ここでは「追加では何もインストールしない」ようにします(図2)。


Debianで最小インストール
図2:Debianで最小インストール
(画像をクリックすると別ウィンドウに拡大図を表示します)

   こうしてインストールされたシステムを起動した直後のプロセスは、プロセス一覧(リスト1)のような感じになります。

リスト1:Debianインストール直後のプロセス
 PID TTY  STAT TIME COMMAND
   1 ?    S    0:00 init [2]
   2 ?    S    0:00 [keventd]
   3 ?    SN   0:00 [ksoftirqd_CPU0]
   4 ?    S    0:00 [kswapd]
   5 ?    S    0:00 [bdflush]
   6 ?    S    0:00 [kupdated]
  47 ?    S    0:04 [kjournald]
 403 ?    S    0:00 [khubd]
 699 ?    Ss   0:00 dhclient -e -pf /var/run/dhclient.eth0.pid -lf /va
782 ?     Ss   0:00  /sbin/syslogd
785 ?     Ss   0:00 /sbin/klogd
823 ?     Ss   0:00 /usr/sbin/inetd
827 ?     Ss   0:00 /usr/sbin/atd
830 ?     Ss   0:00 /usr/sbin/cron
837 tty2  Ss+  0:00 /sbin/getty 38400 tty2
838 tty3  Ss+  0:00 /sbin/getty 38400 tty3
2993 ?    Ss   0:00 /usr/sbin/lpd -s
3032 ?    Ss   0:00 /sbin/portmap
3066 ?    Ss   0:00 /sbin/rpc.statd
3197 ?    Ss   0:00 /usr/sbin/sshd
3279 ?    Ss   0:00 /usr/sbin/cannaserver -u canna
4254 ?    Ss   0:00 /usr/sbin/exim4 -bd -q30m
4301 tty4 Ss+  0:00 /sbin/getty 38400 tty4
4305 tty5 Ss+  0:00 /sbin/getty 38400 tty5
4306 tty6 Ss+  0:00 /sbin/getty 38400 tty6
4757 tty1 Ss   0:00 -bash
4770 tty1 R+   0:00 ps ax

   netstatの結果を見ても、SSH以外に外部からの接続待ちを行っているポート(リスト2)が見られます。

リスト2:Debianインストール直後の接続待ち
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address State
tcp        0      0 *:704                   *:*             LISTEN
tcp        0      0 *:sunrpc                *:*             LISTEN
tcp        0      0 *:auth                  *:*             LISTEN
tcp        0      0 *:ssh                   *:*             LISTEN
tcp        0      0 localhost.localdom:smtp *:*             LISTEN
udp        0      0 *:698                   *:*
udp        0      0 *:701                   *:*
udp        0      0 *:bootpc                *:*
udp        0      0 *:sunrpc                *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags   Type   State     I-Node Path
unix  2      [ ACC ] STREAM LISTENING 18817    /dev/printer
unix  2      [ ACC ] STREAM LISTENING 20315    /tmp/.iroha_unix/IROHA
unix  5      [ ]     DGRAM            782      /dev/log
unix  2      [ ]     DGRAM            19048
unix  2      [ ]     DGRAM            18811
unix  2      [ ]     DGRAM            823

   まず、不要なポートで接続待ち/データ待ちを行っているこの状態をなんとかしてみましょう。


不要な起動設定の削除

   リスト1で稼働しているプロセスの状態を見ると、インストール直後に動いてるものは非常に少ないですが、これ必要かな? というものが動作しています。dhclientやinetd、portmap、rpc.statdなどは必要ありません。

   リスト2でネットワークの状態を見ると、SSH以外のポートで接続待ちになっています。

   本質的に、本稿で構築対象とするものは「サーバー」ですから、システム管理者が決めたサービス以外は動いていないのが理想です。外部からの接続を許可していないポートについても、接続待ちをしていないのが理想です。

   Debianは「最低限、システム起動時には起動しない」ようにしてみましょう。

1   2  次のページ

宮本 久仁男
著者プロフィール
宮本 久仁男
某大手SIerに勤務。OSおよびミドルウェア、アプリケーション開発、インターネットサーバの運用管理、社内技術支援などを経て、現在は動向調査業務に従事する。業務の傍ら、大学にも所属(博士後期課程)し、研究生活を送る。あらゆる分野に興味を持ち、それらについて自学自習で学びつつ、成果をコミュニティにフィードバックしたり、研究/検証テーマを模索したりという日々。Microsoft MVP (Windows - Security)というアワードも受賞しているものの、どこにでもいそうなエンジニア風。


INDEX
第2回:セキュアなDomain-0の作り方
Debian GNU/LinuxにおけるセキュアなDomain-0の作り方
  IPアドレスを固定で割り当てる〜/etc/network/interfacesの修正