FreeBSDのroot以外をzfsで構築している。
昨日(2009/07/05)のcsupでソースをアップデートした所、
make installworldでこけた。
理由はinstallコマンドでschgが設定される為エラーになった。
zfsはFreeBSDのファイルフラグに対応していない為。
make installworld -DNO_FSCHG
でファイルフラグが付くのを回避出来た。
(参照) /usr/share/mk/bsd.lib.mk と bsd.prog.mk
2009年7月5日日曜日
2009年1月26日月曜日
Rubyでファイルの暗号化(RSA)
rubyにて、opensslライブラリを用いて、文字列の暗号化。
公開鍵で暗号化して、秘密鍵で複合化。
webからはデータの入力だけにして、確認は人手で別途実施する場合などに使えるかと思います。
個人的には、南京錠で言うところの、錠(ジョウ)が公開鍵、
鍵(カギ)が秘密鍵だと理解しているので、それも追加しながらコメント
require 'openssl'
include OpenSSL::PKey
rsa = RSA.generate(2048)
これで、RSAを作成出来た。
rsa.public? # => true
rsa.private? #=> true
rsaには、公開鍵(錠)と暗号鍵(鍵)が含まれている。
公開鍵(錠)は、そのままテキストで取り出し。
public_key = rsa.public_key.to_s
暗号鍵(鍵)は、AESで暗号化し(パスワード付け)て取りだし。
private_key = rsa.export(OpenSSL::Cipher::Cipher.new('aes256'),
'password')
さて、ここで特定の文字列を暗号化してみる。対象はこれね。
target = 'hogehoge'
まずは、public_keyから公開鍵(錠)のrsaオブジェクト作成
pub = RSA.new(public_key)
pub.public? #=> true
pub.private? #=> fale
さあ、暗号化。
enc_target = pub.public_encrypt(target)
これで、targetを暗号化出来ました。
たしかに、’hogehoge’という文字列はみるかげもありません。
ちなみに、enc_targetはStringのようです。
enc_targe.class #=> string
では、次に複合化します。先程とは逆に秘密鍵(鍵)のrsaオブジェクト作成
private = RSA.new(private_key,'password')
こちらは、錠と鍵の両方を持っているようです。
private.public? #=> true
private.private? #=> ture
private.private_decrypt(enc_target) #=> 'hogehoge'
おおお、複合化出来ました。
公開鍵で暗号化して、秘密鍵で複合化。
webからはデータの入力だけにして、確認は人手で別途実施する場合などに使えるかと思います。
個人的には、南京錠で言うところの、錠(ジョウ)が公開鍵、
鍵(カギ)が秘密鍵だと理解しているので、それも追加しながらコメント
require 'openssl'
include OpenSSL::PKey
rsa = RSA.generate(2048)
これで、RSAを作成出来た。
rsa.public? # => true
rsa.private? #=> true
rsaには、公開鍵(錠)と暗号鍵(鍵)が含まれている。
公開鍵(錠)は、そのままテキストで取り出し。
public_key = rsa.public_key.to_s
暗号鍵(鍵)は、AESで暗号化し(パスワード付け)て取りだし。
private_key = rsa.export(OpenSSL::Cipher::Cipher.new('aes256'),
'password')
さて、ここで特定の文字列を暗号化してみる。対象はこれね。
target = 'hogehoge'
まずは、public_keyから公開鍵(錠)のrsaオブジェクト作成
pub = RSA.new(public_key)
pub.public? #=> true
pub.private? #=> fale
さあ、暗号化。
enc_target = pub.public_encrypt(target)
これで、targetを暗号化出来ました。
たしかに、’hogehoge’という文字列はみるかげもありません。
ちなみに、enc_targetはStringのようです。
enc_targe.class #=> string
では、次に複合化します。先程とは逆に秘密鍵(鍵)のrsaオブジェクト作成
private = RSA.new(private_key,'password')
こちらは、錠と鍵の両方を持っているようです。
private.public? #=> true
private.private? #=> ture
private.private_decrypt(enc_target) #=> 'hogehoge'
おおお、複合化出来ました。
2008年9月22日月曜日
auditを使用してみる。
結局は http://paranoid.dip.jp/kaworu/2007-06-04-2.html の情報の焼き直しかな。
あと、sunのページのauditの情報を見るのも役になったです。
auditを有効にするには、/etc/rc.conf で、auditd_enable="YES" を設定してやる。
/var/audit/も作成してあげないとダメだったかも(ディレクトリはaudit_controlで設定される)。
設定ファイルは、/etc/security/ 配下にある。
= auditとして監視するクラス(?)の記述ファイル
audit_class
audit_event
= audit対象の設定ファイル
audit_control
audit_user
= audit(デーモン?)に問題があった場合のログ出力先
audit_warn
多分、audit_eventにイベント一覧があって、各行の最後のコロン(:)以降にクラスを設定する。クラスは、audit_classに記載のある物でないとNG。
で、このクラスに対して、audit_controlやaudit_userで、監視する内容を設定する。
audit_controlはデフォルトの監視クラスや、auditとしての振舞を設定。audit_userには、各ユーザ毎の監視クラスを個別に設定。
ここで指定した監視クラスに引っかかった内容が、audit_controlのdirディレクトリ(デフォルト /var/audit/)配下のログファイルに出力される。
/var/audit/日付.not_terminatedが多分開かれているファイルで、auditを停止したり、ログがローテートされる(タイミングは不明。auditの停止だったっけ?)と、not_terminatedが削除されたファイルが作成される。
audit_warnは、よくわからないけど/var/auditのあるストレージがあふれたりしたら、この内容にそってログが出力されるのだと思われる。
で、ログを見るコマンドが、 praudit。 引数にファイルを指定してあげれば、監視によってログされた内容を見ることが出来る。
praudit /var/audit/20080921200406.not_terminated
あと、sunのページのauditの情報を見るのも役になったです。
auditを有効にするには、/etc/rc.conf で、auditd_enable="YES" を設定してやる。
/var/audit/も作成してあげないとダメだったかも(ディレクトリはaudit_controlで設定される)。
設定ファイルは、/etc/security/ 配下にある。
= auditとして監視するクラス(?)の記述ファイル
audit_class
audit_event
= audit対象の設定ファイル
audit_control
audit_user
= audit(デーモン?)に問題があった場合のログ出力先
audit_warn
多分、audit_eventにイベント一覧があって、各行の最後のコロン(:)以降にクラスを設定する。クラスは、audit_classに記載のある物でないとNG。
で、このクラスに対して、audit_controlやaudit_userで、監視する内容を設定する。
audit_controlはデフォルトの監視クラスや、auditとしての振舞を設定。audit_userには、各ユーザ毎の監視クラスを個別に設定。
ここで指定した監視クラスに引っかかった内容が、audit_controlのdirディレクトリ(デフォルト /var/audit/)配下のログファイルに出力される。
/var/audit/日付.not_terminatedが多分開かれているファイルで、auditを停止したり、ログがローテートされる(タイミングは不明。auditの停止だったっけ?)と、not_terminatedが削除されたファイルが作成される。
audit_warnは、よくわからないけど/var/auditのあるストレージがあふれたりしたら、この内容にそってログが出力されるのだと思われる。
で、ログを見るコマンドが、 praudit。 引数にファイルを指定してあげれば、監視によってログされた内容を見ることが出来る。
praudit /var/audit/20080921200406.not_terminated
zfsが遅かった問題
今回 buildworldをし直したらな、問題無いようす。
多分/usr/obj/配下を削除して、buildし直したからだと思われる。
もしかしたら、OSのソースの変更があったかもしれないけど、以前のOSのソースを残していないので、今と昔のソースの違いがわからない。時刻を手掛かりにcvswebなどを見ての変更されていないので、ビルドのしかたの問題なのでしょう。
現在のuname -a の内容は以下。
7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Mon Sep 22 04:14:43 JST 2008 root@:/usr/obj/usr/src/sys/GENERIC i386
多分/usr/obj/配下を削除して、buildし直したからだと思われる。
もしかしたら、OSのソースの変更があったかもしれないけど、以前のOSのソースを残していないので、今と昔のソースの違いがわからない。時刻を手掛かりにcvswebなどを見ての変更されていないので、ビルドのしかたの問題なのでしょう。
現在のuname -a の内容は以下。
7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Mon Sep 22 04:14:43 JST 2008 root@
2008年8月31日日曜日
FreeBSD-stable 20080830 でzfsが遅い
本日 2008/08/30 にFreeBSD 7-stableに挙げたら、システムがえらい遅くなった。
# DTraceを使ってみたくて、アップデートしたのです。
ZFS(IO)が遅いみたい。
自分の環境は/がUFS。/usr,/var,/homeがZFSという環境なのです。
ちょっと大きなファイルをコピーしたりすると、CPUが100%になって、loadaverageがえらく(8ぐらいまで)上昇する。もとに戻そうか検討中です。
# DTraceを使ってみたくて、アップデートしたのです。
ZFS(IO)が遅いみたい。
自分の環境は/がUFS。/usr,/var,/homeがZFSという環境なのです。
ちょっと大きなファイルをコピーしたりすると、CPUが100%になって、loadaverageがえらく(8ぐらいまで)上昇する。もとに戻そうか検討中です。
2008年8月27日水曜日
jail下準備用のzfs環境作成
jail配置用filesystemの作成
jailのおおもとの環境を/jail/0に作成
/jail/0は保存しておいて、/jail/1に実環境を構築
その為に/jail/0から/jail/1にsend/receive。
ちなみに、installworldでインストールされるファイルは、ハードリンクを使用している為、
普通にcpコマンドでファイルをコピーすると、使用容量はかなり大きくなります。
なので、zfsのsend/receiveを使用しています。
zfs create -o mountpoint=/jail zfspool/jail
zfs create zfspool/jail/0
jailのおおもとの環境を/jail/0に作成
cd /usr/src
make installworld DESTDIR=/jail/0
cd etc
make distribution DESTDIR=/jail/0
/jail/0は保存しておいて、/jail/1に実環境を構築
その為に/jail/0から/jail/1にsend/receive。
ちなみに、installworldでインストールされるファイルは、ハードリンクを使用している為、
普通にcpコマンドでファイルをコピーすると、使用容量はかなり大きくなります。
なので、zfsのsend/receiveを使用しています。
zfs snapshot /jail/0@today
zfs send /jail/0@today | zfs receive /jail/1
zfs destroy /jail/1@today
diff -qr /jail/0 /jail/1
zfs
zfsなんか便利なんだけど、いまひとつ用語がわからない。。。
(1) zfsのvolumeとfilesystemの違いが良くわからないので、manを確認。
どうもzfsのvolumeは、ブロックデバイスで管理された領域みたい。デバイスとして使いたいときに使うのかな? create -V で作成する。
普通にzfs createで作成されるのは、filesystemのようだ。
(2) snapshotやclone
jail用に環境を複製しようと思いcloneを使用してみた。cloneで作成される領域はsnapshotに引っついている為、snapshotを消そうとするとcloneも消してと言われる。で、勝手に誤解してpromoteで独立した領域になるのかなと思ったら、違う結果になった。manにそのまま書いてあるけど、promoteは、snapshotととったfilesystemとの交換とのこと。
同じ内容の領域を作成するには、send/receiveが必要みたい。
http://docs.sun.com/app/docs/doc/819-6260 に日本語の情報が一杯あった。
(1) zfsのvolumeとfilesystemの違いが良くわからないので、manを確認。
どうもzfsのvolumeは、ブロックデバイスで管理された領域みたい。デバイスとして使いたいときに使うのかな? create -V で作成する。
普通にzfs createで作成されるのは、filesystemのようだ。
(2) snapshotやclone
jail用に環境を複製しようと思いcloneを使用してみた。cloneで作成される領域はsnapshotに引っついている為、snapshotを消そうとするとcloneも消してと言われる。で、勝手に誤解してpromoteで独立した領域になるのかなと思ったら、違う結果になった。manにそのまま書いてあるけど、promoteは、snapshotととったfilesystemとの交換とのこと。
同じ内容の領域を作成するには、send/receiveが必要みたい。
http://docs.sun.com/app/docs/doc/819-6260 に日本語の情報が一杯あった。
登録:
投稿 (Atom)