第2回 SELinuxでいろいろバックアップ/リストアしてみた
面 和毅
サイオステクノロジー株式会社
OSSテクノロジーセンター
開発支援グループ
グループマネージャー
2007/6/20
cpを利用してみる――SELinuxの状態に気を付けよ
cpコマンドでのバックアップもよく行われています。cpコマンドにはたくさんのオプションがあり、すべての情報をコピーしてくれる“cp -a”でバックアップを行っている方も多いでしょう。しかし、“cp -a”オプションだけですと、残念ながらSELinuxのラベル情報はコピーされません。
ラベルなどのコンテキスト情報をコピーする場合には、“-c”オプションを使用します。従って、コンテキスト情報を含むすべてのコピーを行うために、
# cp -ac /var/lib/zope /root/backup |
でコピーを行い、削除を行った後に、
# cp -ac /root/backup/zope /var/lib/zope |
でリストアを行いたいと思います。
a)SELinux有効→SELinux有効
SELinuxが有効なときに“cp -ac”コマンドで/root/backup以下にコピーを行い、/var/lib/zopeディレクトリを削除します。その後、/root/backup/zopeから/var/lib/zopeに、同様に“cp -ac”でコピーすることにより、コンテキスト情報が変化しないことが分かります。
SELinuxが有効な状態で/root/backup以下にコピーし、/var/lib/zopeを削除する [root@plone2 ~]# getenforce Enforcing [root@plone2 ~]# cp -ac /var/lib/zope /root/backup/zope [root@plone2 ~]# ls -lZ /root/backup/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 ~]# rm -Rf /var/lib/zope/ [root@plone2 ~]# ls /var/lib/zope ls: /var/lib/zope: No such file or directory --------------------------------------------------------------- SELinuxが有効な状態で、/var/lib/zopeにコピーしなおすことにより、ラベルが元に戻る [root@plone2 ~]# cp -ac /root/backup/zope /var/lib/zope [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 |
b)SELinux有効→SELinux無効
SELinuxを有効にした状態で、“cp -ac”コマンドでコピーを行い、/var/lib/zope以下を削除するまではa)と同じです。その後、/etc/selinux/configを変更してSELinuxが無効な状態で起動してリストアを行います。
SELinuxが無効な状態でリストアを行う [root@plone2 lib]# getenforce Disabled [root@plone2 lib]# cp -ac /root/backup/zope /var/lib/zope [root@plone2 lib]# ls -lZ /var/lib/zope/ Sorry, this option can only be used on a SELinux kernel. |
その後SELinuxを有効にして起動し、確認を行うと、SELinuxのラベル情報が欠落してしまっていることが分かります。
[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 |
c)SELinux無効→SELinux有効
SELinuxが無効な状態で、“cp -ac”コマンドでコピーを行い、/var/lib/zope以下を削除します。
SELinuxが無効な状態でバックアップを行い、/var/lib/zopeを削除する [root@plone2 ~]# getenforce Disabled [root@plone2 ~]# cp -ac /var/lib/zope/ /root/backup/zope.disabled [root@plone2 ~]# ls -lZ /root/backup/zope.disabled/ Sorry, this option can only be used on a SELinux kernel. [root@plone2 ~]# rm -Rf /var/lib/zope/ |
その後SELinuxを有効にして起動し、“cp -ac”コマンドでリストアを行うと、SELinuxのラベル情報が欠落してしまっている(親ディレクトリである/var/libディレクトリのラベル情報を継承している)ことが分かります。
SELinux有効な状態でリストアをすると、コンテキスト情報が元に戻らない(親ディレクトリから継承している) [root@plone2 ~]# getenforce Enforcing [root@plone2 ~]# cp -ac /root/backup/zope.disabled/ /var/lib/zope [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 |
結果として、“cp -ac”でSELinuxのラベル情報をコピーできるが、SELinuxが無効になっている場合には情報が欠落してしまうことが分かりました。そのため、cpコマンドを用いてバックアップを作成する際には、SELinuxの状態が有効だったのか、無効だったのかということに十分気を付ける必要があります。
rsyncを利用してみる――残念ながら……
rsyncを用いてバックアップを行っているユーザーも多いのではないかと思います。rsyncでバックアップを、
rsync -avz -e ssh /var/lib/zope root@x.x.x.x:/root/backup |
としてリモートにバックアップしたところ、SELinuxのラベル情報はバックアップされませんでした。そのため、a)、b)、c)のどのパターンでも、SELinuxのラベル情報を復元することはできなくなります。
rsyncを用いてSELinux有効にしたシステムをバックアップする際には、別途“ls -laZ”コマンドなどでラベル情報をあらかじめリモートにバックアップしておき、リストアするためにはそのrsyncされているデータとラベル情報とをうまく組み合わせてリストアするしか方法がないようです。
SELinuxバックアップの極意!
以下がSELinuxのバックアップに関するTipsのまとめになります。ぜひ、活用してください。
- dump/restoreではきちんと取れる
- tarではSELinuxのラベル情報を取れない。starを使おう
- cpでコピーする際には“-c”オプションでコンテキストごとコピーできる。ただし、SELinux無効の状態ではコピーされないのでSELinuxの状態に注意する
- rsyncでは、SELinuxのラベル情報をバックアップすることはできない。別途、“ls -laZ”などの出力結果と組み合わせて対応する
次回は、第1回でインストールしたシステムを例として、SELinuxを用いたシステムを監視する際に必要なTipsを紹介します。
3/3 |
Index | |
SELinuxでいろいろバックアップ/リストアしてみた | |
Page1 SELinuxのバックアップにこだわる理由 dumpを利用してみる――ばっちりOK |
|
Page2 tarを利用してみる――ラベル情報が欠落 starを利用してみる――オプションに注意 |
|
Page3 cpを利用してみる――SELinuxの状態に気を付けよ rsyncを利用してみる――残念ながら…… SELinuxバックアップの極意! |
Profile |
面 和毅(おも かずき) サイオステクノロジー株式会社 OSSテクノロジーセンター 開発支援グループ グループマネージャー 学生時代よりUNIXに親しむ。1997年からサーバ構築およびセキュリティ全般を扱う仕事に従事、Linuxを使い始める。 現在はLIDSの普及活動に注力。LIDSユーザ会(LIDS-JP)の立ち上げやLIDS関連文書の日本語化、LIDSを用いたシステム構築の紹介などを行っている。また、サイオステクノロジーでビジネス面でのLIDSの普及活動に注力している。 2005年12月より、LIDS Teamに参加し、LIDSの公式な開発チームの一員として活動している。 |
スイッチ・オン! 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)対策の観点から考える。
|
|