第13回 NETMARK+iproute2+TDEフル活用でLIDS総仕上げ


面 和毅
サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/12/20

 rsync+iproute2のテスト

 以上の設定により、rsyncコマンドのみがsyslogサーバに接続でき、通常のsshコマンドなどではsyslogサーバに接続するルーティングが見つからないという状況が作れたはずですので、テストしてみましょう。

 LIDS-JPサイトにシステム環境を「atmarkit_part13.tar.gz」として用意していますので、このファイルをダウンロードして、実際の動作を確認してみましょう。

 ファイル内の基本的な構成は前回(第12回)とほとんど変わりありません。前回の構成に加え、rsyncの設定が追加された状態となっています。

  1. syslogサーバを立ち上げます。“ifconfig”コマンドで、IPアドレスを調べておきます。
  2. ホストOS用のip_masq.vm.shファイルのIPアドレスを修正します。筆者の環境ではvmnet1(HOST-ONLYの際に使用される)のネットワークが「192.168.164.0/24」なため、このようなシェルスクリプトになりましたので、皆さまの環境のvmnet1を調べて、適切な値に修正してください。
  3. ホストOS上でip_masq.vm.shファイルを実行します。
  4. LIDSが有効になったシステムを立ち上げます。
  5. rootでログインした後、“lidsadm -S -- -LIDS”コマンドでLFSを開きます。以下、6の手順はLFS中で行います。
  6. /root/part13以下に、

     ・iproute.sh
     ・iptables.syslogd.sh

    があります。iproute.shファイル中でIPアドレスが「192.168.164.2」「192.168.164.1」となっていますので、それぞれ「vmnet1のネットワークでvmnet1以外のもの」「vmnet1のIP」に変更します。
  7. これで設定は終了ですので、LFS以外の端末から、
# rsync -avz -e ssh /var/tmp/test-backup 192.168.231.135:/var/tmp/lids

としてrsyncによるバックアップを行います。途中でTDEによるエラーは表示されますが、バックアップは成功します。

図3 rsyncを実行しバックアップ(画像をクリックすると拡大します)
  1. 今度は、syslogサーバに向けて、
# ssh -l root 192.168.231.135

としてログインしてみます。sshクライアントからはルーティングが見えませんので、エラーとなります。

図4 syslogサーバへ直接ssh接続することはできない(画像をクリックすると拡大します)

 さらにサンドボックス化

 上記の設定ではrsyncとiproute2の組み合わせだけでしたので、これにTDEを併せてより強固なセキュリティを考えてみましょう。

# lidsconf -A -s /usr/bin/rsync -o LIDS_SANDBOX -j ENABLE

として、rsyncのプログラムをサンドボックス化します。

 その後、rsyncプログラム、およびrsyncから子プロセスとして起動されるsshプログラムが必要とするファイルへのアクセス権を追加していきます。最終的にrsyncに必要とされるアクセス権を追加していったものは図5のようになります。このスクリプトは、ダウンロードしていただいたVMwareイメージ内に/root/scripts/clients/lids.rsync.sandboxed.shとして格納されていますが、このACLが反映されていない状態になっています。

#!/bin/sh

/sbin/lidsconf -A -s /usr/bin/rsync -o LIDS_SANDBOX -j ENABLE

# from ldd
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libpopt.so.0 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libresolv.so.2 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libc.so.6 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/ld-linux.so.2 -i 1 -j READONLY

# from error log
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /etc/ld.so.cache -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/tls -j READONLY

# For SSH protocol/program
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /usr/bin/ssh -j READONLY

/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /usr/lib/i686/cmov -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /usr/lib/i686/cmov/libcrypto.so.0.9.7 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libutil.so.1 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /usr/lib/libz.so.1 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libnsl.so.1 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libcrypt.so.1 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libdl.so.2 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib/libnss_nis-2.3.2.so -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /usr/lib/libcrypto.so.0.9.7 -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /usr/lib -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /lib -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /etc/ssh/ssh_config -i 1 -j READONLY
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /etc/services -i 1 -j READONLY

# Reading Public/Private key file for auth
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /root -j READONLY

# Reading Data directories/files for Backup
/sbin/lidsconf -A POSTBOOT -s /usr/bin/rsync -o /var/tmp -j READONLY
図5 lids.rsync.sandboxed.shの内容

 この中で重要なこととしては、rsyncが起動した子プロセスのsshにアクセス権を与える際には、/usr/bin/sshプログラムに直接アクセス権を与えているわけではなく、rsyncに与えた権限を第1世代のみに継承(第10回)させることによりアクセス権を与えているということです。これにより、不必要にsshプログラムすべてに対してアクセス権を与えることなく、rsyncから起動されたsshプロセスのみにアクセス権を与えることで、プログラムに対してアクセス権を無意味に与えすぎないようになっていますので、さらにセキュリティが確保されます。

 図5のファイルの一番下の行は、rsyncによりバックアップを取りたいディレクトリ/ファイルを列記してあります。これは、rsyncがそのディレクトリ/ファイルをバックアップするためには、READONLYの権限が必要なためです。

 このACLを有効にするためには、/root/scripts/clients/lids.rsync.sandboxed.shファイルをLFS内で実行すれば、次回再起動時に有効になります。すぐにACLを反映したい場合には、スクリプトを実行した後にLFS内で、

# lidsadm -S -- +RELOAD_CONF

として設定ファイルを再読み込みさせることにより、マシンを再起動せずにACLを反映することができます。

2/3

Index
NETMARK+iproute2+TDEフル活用でLIDS総仕上げ
  Page1
rsync+iproute2でバックアップを
Page2
rsync+iproute2のテスト
さらにサンドボックス化
  Page3
VMwareとiproute2を組み合わせる


Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間