initializing DST: openssl failure

bindをchrootした際にエラーに遭遇

# tail -f /var/log/syslog
ubuntu named[929]: initializing DST: openssl failure
ubuntu named[929]: exiting (due to fatal error)

(ちなみにOSはubuntu12.04、bindは9.8.1-P1)

ググってみると以下のモジュールが必要らしいのでコピー

$ cp /usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so  /var/chroot/bind//usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so 

これでbindを起動してみると更にこんなエラーが

# tail -f /var/log/syslog
ubuntu kernel: [21660.629321] type=1400 audit(1391613398.790:29): apparmor="STATUS" operation="profile_replace" name=
"/var/chroot/bind/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so" pid=9787 comm="apparmor_parser"

調べてみるとapparmorというアクセス制御を行うプログラムの制限に引っかかっているらしいことがわかる
chrootしない状態で必要な設定は/etc/apparmor.d/usr.sbin.namedに書かれている
どのファイル・ディレクトリをread, writeを許可するかを並べて書いていく感じ
このファイル内で/etc/apparmor.d/local/usr.sbin.namedが読み込まれているのでこちらにchroot用の設定を書いておく

# vim etc/apparmor.d/local/usr.sbin.named
/var/chroot/bind/etc/bind/** r,
/var/chroot/bind/usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so rm,

これでbindが起動するようになった


apparmorについて参考ページ
http://www.usupi.org/sysad/221.html
http://opensuse-man-ja.berlios.de/opensuse-html/part.apparmor.html

プロのための Linuxシステム構築・運用技術 (Software Design plus)

プロのための Linuxシステム構築・運用技術 (Software Design plus)