Linux(GSS-TSIG)からのWindowsドメインのDNSレコードの安全な動的更新

この状況では、そのような更新の必要性が生じました。openvpnサーバーはLinux上で発生し、リモートクライアントはそれに接続します。 Openvpnサーバー自体がクライアントに動的にアドレスを発行します。ActiveDirectoryに統合されているDNSサーバー上の証明書の共通名からDNSレコードを作成したいと思います。 ここでは、簡単な方法で「動的更新」ゾーンのプロパティに「安全ではない」オプションを設定できますが、DNSサーバーにアクセスできるユーザーは誰でもゾーンレコードを変更できます。 「安全のみ」を設定すると、DNSサーバーは必ずGSS-TSIGプロトコルを使用した認証を要求します。 次に、すべての設定方法について説明します。





最初に、ddnsなどの最小限の権限を持つドメインユーザーを作成し、複雑なパスワードとオプション「パスワードの有効期限が切れていない」を与えます。 このユーザーには、DNSゾーンエントリを変更するための十分な権限が必要です。 DNSゾーンのプロパティで、[安全な更新のみ]オプションを選択する必要があります。



Kerberosクライアントをインストールします。

sudo apt-get install krb5-user
      
      







/etc/krb5.confを編集します。

 [libdefaults] default_realm = DOMAIN.LOCAL [realms] DOMAIN.LOCAL = { kdc = 192.168.2.200 kdc = 192.168.2.202 default_domain = domain.local admin_server = 192.168.2.200 } [domain_realm] .domain.local = DOMAIN.LOCAL domain.local = DOMAIN.LOCAL
      
      







クライアントはこの構成でも動作しますが:

 [libdefaults] default_realm = DOMAIN.LOCAL
      
      







Kerberosの場合、重要なポイントは北とクライアントクロックの同期です。 ntpdサービスをインストールできます-正しい時間を維持します:

 sudo apt-get install ntp
      
      







ktutilを使用して、ddnsユーザーの認証用のデータが保存されるkeytabファイルを作成します。

 sudo ktutil ktutil: addent -password -p ddns@DOMAIN.LOCAL -k 1 -e rc4-hmac ktutil: write_kt krb5.keytab ktutil: quit
      
      







これで、すべてが正しく行われていることを確認できます。

 kinit -k -t krb5.keytab ddns
      
      







結論はないはずです。 受け取ったチケットを見ることができます:

 klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: ddns@DOMAIN.LOCAL Valid starting Expires Service principal 29.04.2014 14:50:39 30.04.2014 00:50:39 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL renew until 30.04.2014 14:50:39
      
      







デフォルトでkeytab(etc / krb5.keytab)を配置する場合、コマンドを短縮できます。

 kinit -k ddns
      
      







現在は、openvpnを設定するだけです。 これを行うには、openvpnサーバー構成ファイルにオプションが必要です。

 learn-address /etc/openvpn/learn-address.sh
      
      







learn-address.shスクリプト自体:

 #!/bin/bash dnsserver=192.168.2.200 fwdzone=domain.local revzone=7.168.192.in-addr.arpa ttl=300 op=$1 addr=$2 revaddr=`echo $addr | sed -re 's:([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+):\4.\3.\2.\1.in-addr.arpa:'` cn=$3 fqdn=$cn.$fwdzone dir=/etc/openvpn/dns addfile=$dir/add_$addr delfile=$dir/del_$addr keytab_file=/etc/openvpn/krb5.keytab user=ddns addRecord() { kinit -k -t $keytab_file $user cat > $addfile << EOF gsstsig server $dnsserver zone $fwdzone update delete $fqdn a update add $fqdn $ttl a $addr send zone $revzone update delete $revaddr ptr update add $revaddr $ttl ptr $fqdn send EOF cat > $delfile << EOF gsstsig server $dnsserver zone $fwdzone update delete $fqdn a send zone $revzone update delete $revaddr ptr send EOF nsupdate -v $addfile rm -f $addfile } delRecord() { kinit -k -t $keytab_file $user nsupdate -v $delfile rm -f $delfile } case $op in add|update) addRecord ;; delete) delRecord ;; *) echo "Unable to handle operation $op. Exiting" exit 1 esac
      
      







要約すると、重要なポイントは、 nsupdateユーティリティに渡されるファイル内のgsstsigオプションです。 この場合、 kinit <user>を使用してドメインコントローラーからチケットを受信する必要があります。



All Articles