第2回 SELinuxでいろいろバックアップ/リストアしてみた
面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2007/6/20
今回は、前回セットアップしたPlone/Zopeのコンテンツ管理システムを基に、SELinuxを有効にした場合のバックアップに関して考察してみましょう。引き続き、前回作成したCentOS 4.4+Plone用にカスタマイズしたSELinuxを用います。
SELinuxのバックアップにこだわる理由
バックアップ/リストアはLinux運用の基礎の基礎では? と思われたかもしれません。あえてSELinuxのバックアップにこだわった理由は、SELinuxにはファイルシステム上で「拡張属性(XATTR)」情報を持つという特徴があるからです。
【参考記事】 プロダクトレビュー[Red Hat Enterprise Linux 4] http://www.atmarkit.co.jp/flinux/prodreview/rhel4/rhel4a.html |
従って実際に運用していくうえでは、各種バックアッププログラムによって取得したデータが、リストア時にきちんとSELinuxの情報も戻してくれるかどうかも調べていく必要があります。この調査方法として、
- SELinuxを有効にしたシステムで取得したバックアップを、SELinuxを有効にしたシステム上でリストアする
(SELinux有効→ SELinux有効)
- SELinuxを有効にしたシステムで取得したバックアップを、SELinuxを無効にしたシステム上でリストアする
(SELinux有効→ SELinux無効)
- SELinuxを無効にしたシステムで取得したバックアップを、SELinuxを有効にしたシステム上でリストアする
(SELinux無効→ SELinux有効)
というパターンで、それぞれのプログラムでテストしてみます。
/var/lib/zopeディレクトリ以下をバックアップ/リストアした結果を表1にまとめました。それぞれのプログラムごとに結果を詳しく見てみましょう。
dump |
tar |
star 【注1】 |
cp -ac 【注2】 |
rsync |
|
a)SELinux有効→ SELinux有効 | ○ |
× |
○ |
○ |
× |
b)SELinux有効→ SELinux無効 | ○ |
× |
○ |
× |
× |
c)SELinux無効→ SELinux有効 | ○ |
× |
○ |
× |
× |
表1 SELinuxとバックアップコマンドの関係 |
dumpを利用してみる――ばっちりOK
dumpはUNIX系で古くから使用されているバックアップコマンドです。また、restoreはdumpで取ったバックアップをリストアする際に用いられるプログラムです。/var/lib/zope以下のバックアップを取るために、
# dump 0f - /var/lib/zope | (ssh omok@X.X.X.X "cd /home/omok/backup ; gzip | dd of=zope.dump.gz bs=10240") |
を実行します。ここでのX.X.X.Xはバックアップ先のマシンで、/home/omok/backup以下にバックアップしたファイルを保存します。本来の運用であればテープドライブなどを使用しますが、今回はテストのため、sshを用いて別のマシンにファイルとしてバックアップしています。また、リストアを行うには、
# ssh omok@X.X.X.X gzip -dc /home/omok/backup/var_lib_zope.dump.gz | restore -rf - |
というコマンドを使用します。以下、a)、b)、c)のそれぞれのパターンで見てみましょう。
a)SELinux有効→SELinux有効
バックアップ前情報とバックアップの状況を以下のリストに示します。
バックアップ/リストアテスト前 --------------------------------------------------------------- [root@plone2 zope]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t bin drwxr-xr-x zope zope system_u:object_r:zope_conf_t etc drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Extensions drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t import drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t log drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Products -rw-r--r-- zope zope system_u:object_r:zope_var_lib_t README.txt drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t var --------------------------------------------------------------- バックアップコマンドを実行 [root@plone2 zope]# dump 0f - /var/lib/zope | (ssh omok@x.x.x.x "cd /home/omok/backup ; gzip | dd of=zope.dump.gz bs=10240") DUMP: Date of this level 0 dump: Tue May 22 10:59:48 2007 DUMP: Dumping /dev/mapper/VolGroup00-LogVol00 (/ (dir var/lib/zope)) to standard output DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 13645 blocks. DUMP: Volume 1 started with block 1 at: Tue May 22 10:59:48 2007 omok@x.x.x.x's password: DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Volume 1 completed at: Tue May 22 10:59:54 2007 DUMP: Volume 1 15660 blocks (15.29MB) DUMP: Volume 1 took 0:00:06 DUMP: Volume 1 transfer rate: 2610 kB/s DUMP: 15660 blocks (15.29MB) DUMP: finished in 6 seconds, throughput 2610 kBytes/sec DUMP: Date of this level 0 dump: Tue May 22 10:59:48 2007 DUMP: Date this dump completed: Tue May 22 10:59:54 2007 DUMP: Average transfer rate: 2610 kB/s DUMP: DUMP IS DONE 292+35 records in 292+35 records out 3176858 bytes (3.2 MB) copied, 6.35432 seconds, 500 kB/s |
一度バックアップを取った後に/var/lib/zopeを削除し、リストアを行いました。この場合には、ラベル情報がきちんと元に戻っています。
いったん、/var/lib/zopeを削除 [root@plone2 /]# rm -Rf /var/lib/zope --------------------------------------------------------------- リストア開始 [root@plone2 /]# ssh omok@x.x.x.x gzip -dc /home/omok/backup/zope.dump.gz | restore -rf - omok@x.x.x.x's password: restore: ./var: File exists restore: ./var/lib: File exists [root@plone2 /]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t bin drwxr-xr-x zope zope system_u:object_r:zope_conf_t etc drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Extensions drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t import drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t log drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Products -rw-r--r-- zope zope system_u:object_r:zope_var_lib_t README.txt drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t var |
また、そのほかのディレクトリ(例では/var/tmp以下)にリストアを行った場合でも、ラベル情報が付いたままでリストアされています。
/var/tmp以下にリストアしても、ラベル情報はバックアップで取得したものが付与されていることが分かる --------------------------------------------------------------- [root@plone2 zope]# pwd /var/tmp/var/lib/zope [root@plone2 zope]# ls -lZ drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t bin drwxr-xr-x zope zope system_u:object_r:zope_conf_t etc drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Extensions drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t import drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t log drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Products -rw-r--r-- zope zope system_u:object_r:zope_var_lib_t README.txt drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t var |
b)SELinux有効→SELinux無効
SELinuxが有効な状態でバックアップを行い/var/lib/zopeを削除するところまではa)の場合と同じです。今度は、/etc/selinux/configファイルを修正して、いったんシステムをSELinux無効な状態で起動し、リストアを行います。
SELinuxが無効の状態で立ち上がっている [root@plone2 ~]# getenforce Disabled --------------------------------------------------------------- リストアを行う [root@plone2 ~]# cd / [root@plone2 /]# ssh omok@x.x.x.x gzip -dc /home/omok/backup/zope.dump.gz | restore -rf - omok@x.x.x.x's password: restore: ./var: File exists restore: ./var/lib: File exists --------------------------------------------------------------- SELinuxが無効になっているため、このままではラベル情報がリストアされているかを確認することができない [root@plone2 /]# ls -lZ /var/lib/zope/ Sorry, this option can only be used on a SELinux kernel. |
その後、システムをSELinux有効(Enabled)な状態で起動すると、バックアップされていたラベル情報がきちんとリストアされていることが分かります。
[root@plone2 zope]# getenforce Enforcing [root@plone2 zope]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t bin drwxr-xr-x zope zope system_u:object_r:zope_conf_t etc drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Extensions drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t import drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t log drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Products -rw-r--r-- zope zope system_u:object_r:zope_var_lib_t README.txt drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t var |
c)SELinux無効→SELinux有効
SELinuxが無効な状態でバックアップを行い、/var/lib/zopeを削除します。
SELinuxが無効の状態 [root@plone2 ~]# getenforce Disabled --------------------------------------------------------------- /var/lib/zope以下をバックアップ [root@plone2 ~]# dump 0f - /var/lib/zope | (ssh omok@x.x.x.x "cd /home/omok/backup ; gzip | dd of=zope_disable.dump.gz bs=10240") DUMP: Date of this level 0 dump: Tue May 22 11:19:30 2007 DUMP: Dumping /dev/mapper/VolGroup00-LogVol00 (/ (dir var/lib/zope)) to standard output DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 13645 blocks. DUMP: Volume 1 started with block 1 at: Tue May 22 11:19:30 2007 omok@x.x.x.x's password: DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: Volume 1 completed at: Tue May 22 11:19:35 2007 DUMP: Volume 1 15660 blocks (15.29MB) DUMP: Volume 1 took 0:00:05 DUMP: Volume 1 transfer rate: 3132 kB/s DUMP: 15660 blocks (15.29MB) DUMP: finished in 5 seconds, throughput 3132 kBytes/sec DUMP: Date of this level 0 dump: Tue May 22 11:19:30 2007 DUMP: Date this dump completed: Tue May 22 11:19:35 2007 DUMP: Average transfer rate: 3132 kB/s DUMP: DUMP IS DONE 194+194 records in 194+194 records out 3176902 bytes (3.2 MB) copied, 3.77079 seconds, 843 kB/s --------------------------------------------------------------- /var/lib/zope以下を削除 [root@plone2 ~]# rm -Rf /var/lib/zope/ |
その後SELinuxを有効にして起動し、リストアを行うと、ラベル情報がきちんとリストアされていることが分かります。
SELinuxが有効な状態で、無効な状態で取得したバックアップイメージのリストアを行う
[root@plone2 /]# getenforce Enforcing [root@plone2 /]# ssh omok@x.x.x.x gzip -dc /home/omok/backup/zope_disable.dump.gz | restore -rf - omok@x.x.x.x's password: restore: ./var: File exists restore: ./var/lib: File exists --------------------------------------------------------------- SELinuxのラベルが復元されている [root@plone2 /]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t bin drwxr-xr-x zope zope system_u:object_r:zope_conf_t etc drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Extensions drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t import drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t log drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t Products -rw-r--r-- zope zope system_u:object_r:zope_var_lib_t README.txt drwxr-xr-x zope zope system_u:object_r:zope_var_lib_t var |
結果として、dump/restoreを用いると、SELinuxの拡張属性はきちんとバックアップ/リストアされることが分かりました。ただし、今回のテストはCentOS 4.4のdump/restore(0.4b39)で行っていますので、古いバージョンのdump/restoreではうまく拡張属性部分を扱えない可能性があるでしょう。
1/3 |
Index | |
SELinuxでいろいろバックアップ/リストアしてみた | |
Page1 SELinuxのバックアップにこだわる理由 dumpを利用してみる――ばっちりOK |
|
Page2 tarを利用してみる――ラベル情報が欠落 starを利用してみる――オプションに注意 |
|
Page3 cpを利用してみる――SELinuxの状態に気を付けよ rsyncを利用してみる――残念ながら…… SELinuxバックアップの極意! |
スイッチ・オン! SELinux 連載インデックス |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|