BIND9 DLZ AppArmorとSELinux統合

提供: 雑廉堂Wiki

AppArmorまたはSELinuxとの相互作用

samba_dnsupdateとnsupdateが'return dns_tkey_negotiategss: TKEY is unacceptable'を返してきた場合は、次を試してみてください:

AppArmorまたはSELinuxを使用している場合は、BINDプロセスが次のファイルへの読み取りアクセス権を持っていることを確認する必要がありま す。

  • /usr/local/samba/private/dns.keytab
  • /usr/local/samba/private/named.conf

同様に読み書き可能なアクセス権として

  • /usr/local/samba/private/dns/

ディレクトリとそれ自身のゾーンファイルです。

Sambaのプロビジョニングでは、これらのファイルのアクセス権を正しく設定しようとしていますが、いずれかを実行している場合は、AppArmor またはSELinuxの設定を変更する必要があります。 AppArmorを使用している場合は、 'aa-logprof'コマンドを使用して、SambaとBINDを設定した後初めて追加する必要がある不足しているアクセス権を追加できます。

パーミッション、SELinuxラベリングとポリシー

これらの手順はRHEL6を対象としていますが、他のディストリビューション/バージョンのガイドとしても役立つかもしれません。

Samba4固有のSELinuxポリシーの作成に関してはまだまだ多くの作業が必要ですが、SELinuxを無効にしなくてもすべての作業を実行できるはずです。

以下のすべてのコマンドについて、次の環境変数を設定していることを確認してください。

MYREALM="samdom.example.com"

パーミッションをセット(SELinux):

chown named:named /usr/local/samba/private/dns
chgrp named /usr/local/samba/private/dns.keytab
chmod g+r /usr/local/samba/private/dns.keytab
chmod 775 /usr/local/samba/private/dns

ファイルにラベルをつける(SELinux):

chcon -t named_conf_t /usr/local/samba/private/dns.keytab
chcon -t named_conf_t /usr/local/samba/private/named.conf.update
chcon -t named_var_run_t /usr/local/samba/private/dns
chcon -t named_var_run_t /usr/local/samba/private/dns/${MYREALM}.zone

永続的なラベルをつける(SELinux):

semanage fcontext -a -t named_conf_t /usr/local/samba/private/dns.keytab
semanage fcontext -a -t named_conf_t /usr/local/samba/private/named.conf
semanage fcontext -a -t named_conf_t /usr/local/samba/private/named.conf.update
semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns
semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns/${MYREALM}.zone
semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns/${MYREALM}.zone.jnl

AppArmorの設定:

/etc/apparmor.d/local/usr.sbin.named(もしファイルがない場合は作成してください)に以下を追加

# Samba4 DLZ and Active Directory Zones (default source installation)
/usr/local/samba/lib/** rm,
/usr/local/samba/private/dns.keytab r,
/usr/local/samba/private/named.conf r,
/usr/local/samba/private/dns/** rwk,
/usr/local/samba/etc/smb.conf r,

加えて、一部のディストリビューションでは、追加のパスが必要になる場合があります。詳細については、AppArmorのログを確認して下さい。

例えば:

Ubuntu14.04.1 LTSでは、BINDが/var/tmp/DNS_110などのファイルを作成しようとしていたので、さらにエントリが必要でした:

/var/tmp/** rwmk,

Ubuntu 16.04 LTSでは、 /dev/urandom が使用されていることが判明したため、更にエントリが必要です。

/dev/urandom rw,