第2回 SELinuxでいろいろバックアップ/リストアしてみた
面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2007/6/20
tarを利用してみる――ラベル情報が欠落
tarもUNIX/Linux系では古くから使われているアーカイブプログラムです。
# tar -cvf /root/backup.zope.tar /var/lib/zope |
として/root以下に/var/lib/zopeをアーカイブしたバックアップファイルを作成します。リストアは、/ディレクトリで、
# tar -xvf /root/backup.tar |
とします。
a)SELinux有効→SELinux有効
SELinuxを有効にした状態で、tarでアーカイブを作成し、/var/lib/zopeディレクトリを削除します。
SELinuxが有効の状態で、/root以下にアーカイブを作成する [root@plone2 lib]# tar -cvf /root/zope.backup.tar /var/lib/zope tar: Removing leading `/' from member names /var/lib/zope/ /var/lib/zope/README.txt /var/lib/zope/etc/ /var/lib/zope/etc/zope.conf /var/lib/zope/etc/logrotate.conf /var/lib/zope/log/ /var/lib/zope/log/README.txt /var/lib/zope/log/Z2.log /var/lib/zope/log/Z2.log.1.gz /var/lib/zope/log/event.log /var/lib/zope/log/event.log.1.gz /var/lib/zope/bin/ ・ ・ ・ /var/lib/zope/import/ /var/lib/zope/import/README.txt --------------------------------------------------------------- /var/lib/zope以下を削除する [root@plone2 lib]# rm -Rf /var/lib/zope/ [root@plone2 lib]# |
その後リストアを行うと、/var/libディレクトリからラベル情報を継承しているだけの状態で、バックアップ前に設定してあったラベル情報が欠落していることが分かります。
/に移動し、アーカイブしたファイルを展開する [root@plone2 lib]# cd / [root@plone2 /]# tar -xvf /root/zope.backup.tar var/lib/zope/ var/lib/zope/README.txt var/lib/zope/etc/ var/lib/zope/etc/zope.conf var/lib/zope/etc/logrotate.conf var/lib/zope/log/ var/lib/zope/log/README.txt ・ ・ ・ var/lib/zope/var/Data.fs.index var/lib/zope/var/Data.fs var/lib/zope/import/ var/lib/zope/import/README.txt --------------------------------------------------------------- SELinuxのラベル情報を確認する。親ディレクトリのラベルを引き継いでおり、バックアップしたときのラベル情報が欠落していることが分かる。 [root@plone2 /]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope root:object_r:var_lib_t bin drwxr-xr-x zope zope root:object_r:var_lib_t etc drwxr-xr-x zope zope root:object_r:var_lib_t Extensions drwxr-xr-x zope zope root:object_r:var_lib_t import drwxr-xr-x zope zope root:object_r:var_lib_t log drwxr-xr-x zope zope root:object_r:var_lib_t Products -rw-r--r-- zope zope root:object_r:var_lib_t README.txt drwxr-xr-x zope zope root:object_r:var_lib_t var |
b)SELinux有効→SELinux無効
SELinuxを有効にした状態で、tarでアーカイブを作成し、/var/lib/zope以下を削除するまではa)と同じです。その後、/etc/selinux/configを変更してSELinuxが無効な状態で起動してリストアを行います。
SELinuxが無効な状態でリストアを行う [root@plone2 /]# getenforce Disabled [root@plone2 lib]# cd / [root@plone2 /]# tar -xvf /root/zope.backup.tar var/lib/zope/ var/lib/zope/README.txt ・ ・ ・ var/lib/zope/var/Data.fs var/lib/zope/import/ var/lib/zope/import/README.txt --------------------------------------------------------------- SELinuxが無効になっているため、この時点ではラベル情報を確認することができない [root@plone2 /]# ls -lZ /var/lib/zope/ Sorry, this option can only be used on a SELinux kernel. |
その後SELinuxを有効にして起動し、確認を行うと、SELinuxのラベル情報が完全に欠落し、何もラベルされていない状態になっていることが分かります。
SELinux有効で起動して確認する。ラベル情報が完全に失われている状態になっている。 [root@plone2 ~]# getenforce Enforcing [root@plone2 ~]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope bin drwxr-xr-x zope zope etc drwxr-xr-x zope zope Extensions drwxr-xr-x zope zope import drwxr-xr-x zope zope log drwxr-xr-x zope zope Products -rw-r--r-- zope zope README.txt drwxr-xr-x zope zope var |
c)SELinux無効→SELinux有効
SELinuxが無効の状態で、tarでアーカイブを作成します。
SELinuxを無効にした状態でアーカイブを作成する [root@plone2 ~]# getenforce Disabled [root@plone2 ~]# ls -lZ /var/lib/zope/ Sorry, this option can only be used on a SELinux kernel. [root@plone2 ~]# tar -cvf /root/zope.disable.tar /var/lib/zope/ tar: Removing leading `/' from member names /var/lib/zope/ /var/lib/zope/README.txt /var/lib/zope/etc/ /var/lib/zope/etc/zope.conf ・ ・ ・ /var/lib/zope/import/ /var/lib/zope/import/README.txt --------------------------------------------------------------- /var/lib/zopeを削除する [root@plone2 ~]# rm -Rf /var/lib/zope/ [root@plone2 ~]# |
その後SELinuxを有効にして起動し、リストアを行うと、親ディレクトリの/var/libのラベル情報をそのまま継承しているだけの状態で、バックアップ前に設定してあったラベル情報が欠落していることが分かります。
SELinux有効な状態でリストアを行う [root@plone2 ~]# getenforce Enforcing [root@plone2 ~]# cd / [root@plone2 ~]# tar -xvf /root/zope.disable.tar var/lib/zope/ var/lib/zope/README.txt var/lib/zope/etc/ var/lib/zope/etc/zope.conf ・ ・ ・ var/lib/zope/import/ var/lib/zope/import/README.txt --------------------------------------------------------------- SELinuxのラベル情報を確認する。親ディレクトリのラベルを引き継いでおり、バックアップしたときのラベル情報が欠落していることが分かる。 [root@plone2 /]# ls -lZ /var/lib/zope/ drwxr-xr-x zope zope root:object_r:var_lib_t bin drwxr-xr-x zope zope root:object_r:var_lib_t etc drwxr-xr-x zope zope root:object_r:var_lib_t Extensions drwxr-xr-x zope zope root:object_r:var_lib_t import drwxr-xr-x zope zope root:object_r:var_lib_t log drwxr-xr-x zope zope root:object_r:var_lib_t Products -rw-r--r-- zope zope root:object_r:var_lib_t README.txt drwxr-xr-x zope zope root:object_r:var_lib_t var |
結果として、tarを用いたときにはSELinuxのラベル情報はバックアップされず、欠落してしまうことが分かります。ただしこれは、CentOS 4.4に同梱されているバージョン(GNU tar 1.14)での話ですので、将来的にtarでもラベル情報が取得されるようになるかもしれません。
starを利用してみる――オプションに注意
tarではSELinuxのラベル情報がアーカイブにしたときに欠落してしまうことが分かりました。しかし最近のLinuxでは、拡張属性を含めてアーカイブを作成してくれる“star”というコマンドがあります。SELinuxのラベル情報は拡張属性に入っていますので、このstarを用いることにより、ラベル情報を含めた形でバックアップを行うことが可能です。
# star H=exustar -xattr -c /var/lib/zope > /root/backup/zope.backup_star.tar |
でバックアップを取得します。リストアは、
# star -xattr -x < /root/backup/zope.backup_star.tar |
で行います。
【参考記事】 Linuxカーネル2.6で実現するACL(4/5) http://www.itmedia.co.jp/enterprise/0403/06/epn01_4.html |
注意として、starで取得したアーカイブは(新しいバージョンの)tarコマンドでも展開できますが、ラベル情報が欠落してしまいますので、SELinuxの情報をリストアするには必ずstarコマンドで展開する必要があります。
a)SELinux有効→SELinux有効
SELinuxを有効にした状態で、tarでアーカイブを作成し、/var/lib/zopeディレクトリを削除します。
SELinuxが有効な状態で、starでバックアップを行う [root@plone2 tmp]# getenforce Enforcing [root@plone2 tmp]# ls -lZ /var/tmp/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 [root@plone2 tmp]# star H=exustar -acl -c /var/lib/zope > /root/backup/zope.backup_star.tar star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). --------------------------------------------------------------- /var/lib/zopeディレクトリを削除する [root@plone2 tmp]# rm -Rf /var/lib/zope/ [root@plone2 tmp]# ls -l /var/lib/zope ls: /var/lib/zope: No such file or directory |
その後リストアを行うと、バックアップ前に設定してあったラベル情報がきちんと元に戻っていることが分かります。
starコマンドを使ってリストアする [root@plone2 /]# cd / [root@plone2 /]# star -xattr -x < /root/backup/zope.backup_star.tar star: WARNING: skipping leading '/' on filenames. star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). --------------------------------------------------------------- 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 |
ただし、ほかのディレクトリ(例では/var/tmp以下)にリストアを行った場合には、-Uオプションを付けて、
# star -xattr -Ux < /root/backup/zope.backup_star.tar |
として、無条件で展開しないとラベル情報が欠落してしまいますので注意が必要です。
-Uオプションをつけないと、ファイルの比較を行ってしまうためにラベル情報が戻らない [root@plone2 /]# cd /var/tmp [root@plone2 tmp]# star -xattr -x < /root/backup/zope.backup_star.tar star: WARNING: skipping leading '/' on filenames. star: current 'var/lib/zope/' newer. ・ ・ ・ star: current 'var/lib/zope/import/README.txt' newer. star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). [root@plone2 tmp]# ls -lZ /var/tmp/var/lib/zope/ drwxr-xr-x zope zope root:object_r:root_t bin drwxr-xr-x zope zope root:object_r:root_t etc drwxr-xr-x zope zope root:object_r:root_t Extensions drwxr-xr-x zope zope root:object_r:root_t import drwxr-xr-x zope zope root:object_r:root_t log drwxr-xr-x zope zope root:object_r:root_t Products -rw-r--r-- zope zope root:object_r:etc_runtime_t README.txt --------------------------------------------------------------- -Uオプションをつけると、無条件で展開されるためラベル情報も戻る [root@plone2 tmp]# rm -Rf /var/tmp/var [root@plone2 tmp]# star -xattr -Ux < /root/backup/zope.backup_star.tar star: WARNING: skipping leading '/' on filenames. star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). [root@plone2 tmp]# ls -lZ /var/tmp/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 |
b)SELinux有効→SELinux無効
SELinuxを有効にした状態で、tarでアーカイブを作成し、/var/lib/zope以下を削除するまではa)と同じです。その後、/etc/selinux/configを変更してSELinuxが無効な状態で起動してリストアを行います。
SELinux無効の状態でリストアを行う [root@plone2 lib]# getenforce Disabled [root@plone2 lib]# cd / [root@plone2 /]# star -xattr -x < /root/backup/zope.backup_star.tar star: WARNING: skipping leading '/' on filenames. star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). [root@plone2 /]# ls -lZ /var/tmp/zope/ Sorry, this option can only be used on a SELinux kernel. [root@plone2 /]# |
その後SELinuxを有効にして起動し、確認を行うと、SELinuxのラベル情報がきちんと元に戻っていることが分かります。
[root@plone2 ~]# getenforce Enforcing [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 |
c)SELinux無効→SELinux有効
SELinuxが無効な状態で、tarでアーカイブを作成し、/var/lib/zope以下を削除します。
SELinuxが無効な状態でバックアップを取得し、/var/lib/zopeを削除する [root@plone2 ~]# getenforce Disabled [root@plone2 ~]# star H=exustar -xattr -c /var/lib/zope/ > /root/backup/zope.backup_star_disabled.tar star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). [root@plone2 ~]# rm -Rf /var/lib/zope/ [root@plone2 ~]# ls /var/lib/zope ls: /var/lib/zope: No such file or directory |
その後、/etc/selinux/configを変更してSELinuxを有効にした状態で起動してリストアを行うと、SELinuxのラベル情報がきちんと元に戻っていることが分かります。
SELinux有効でリストアを行う [root@plone2 /]# getenforce Enforcing [root@plone2 /]# cd / [root@plone2 /]# star -xattr -x < /root/backup/zope.backup_star.tar star: WARNING: skipping leading '/' on filenames. star: 14 blocks + 0 bytes (total of 143360 bytes = 140.00k). --------------------------------------------------------------- ラベル情報がきちんとリストアされていることが分かる [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 |
結果として、starではSELinuxのラベル情報が完全にバックアップ/リストアできることが分かります。ただし、バックアップ時やリストア時のオプションに気を付けないと、情報が欠落してしまうので注意が必要です。
2/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)対策の観点から考える。
|
|