Skip to content

Ubuntu22.04.4LTS へ Samba AD をインストールする

UbuntuSamba を Active Directory のドメインコントローラとして構築する手順をメモしておきます。 現時点で Samba の最新バージョンは 4.19.6 ですが、今回は Ubuntu の標準リポジトリから 2:4.15.13 というバージョンを導入します。 「2:」部分の意味はわかりませんが、バージョン 4.15.13 だと解釈するとやや古いことになります。

尚、Samba 4.19.0 Available for Download には以下の記載があります。

An initial, partial implementation of Active Directory Functional Level 2012, 2012R2 and 2016 is available in this release.

今回の構築する環境 (バージョン) では AD の機能レベル 2012 〜 2016 は利用出来ず、結果として機能レベルは 2008 になります。

検証環境

対象 バージョン
Ubuntu 22.04.4LTS
Samba 2:4.15.13

今回は以下の環境を想定しています。

項目
LAN 側のアドレス帯 10.0.0.0/8
Samba ホストのアドレス 10.0.0.1
DNS フォワーダ 1.1.1.11.0.0.1
NTP 同期先 216.239.35.12216.239.35.8
Default Kerberos version 5 realm SAMBA.EXAMPLE.COM
Kerberos servers for your realm sv1.samba.example.com
Administrative server for your Kerberos realm sv1.samba.example.com

実行するコマンド一覧

このメモの中で実行しているコマンドの一覧です。 詳細は後述します。

hostnamectl set-hostname sv1.samba.example.com
sed -i -e '/  - update_etc_hosts/d' /etc/cloud/cloud.cfg

IP アドレスは読み替えます。

echo "10.0.0.1 sv1.samba.example.com sv1" >> /etc/hosts
systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service
unlink /etc/resolv.conf
cat << EOF > /etc/resolv.conf
nameserver 127.0.0.1
nameserver 1.1.1.1
nameserver 1.0.0.1
search samba.example.com
EOF
sed -i -e "s/^        addresses:/        addresses:\n          - 127.0.0.1/g" /etc/netplan/50-cloud-init.yaml
netplan apply

パッケージインストール時は対話的にパラメータを入力する必要があります。

apt -y install \
  acl \
  attr \
  dnsutils \
  krb5-config \
  krb5-user \
  libnss-winbind \
  libpam-winbind \
  net-tools \
  python3-setproctitle \
  samba \
  smbclient \
  winbind
systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
mv /etc/samba/smb.conf /etc/samba/smb.conf.org

samba-tool 実行時、パラメータは対話的に入力します。 DNS フォワーダには 1.1.1.1,1.0.0.1 を指定しました。

samba-tool domain provision --use-rfc2307 --interactive
mv /etc/krb5.conf /etc/krb5.conf.org
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
apt -y install chrony

allow するアドレス範囲は自身の環境に合わせて修正します。 また、bindcmdaddress は Samba AD 自身のインターフェイスアドレスへ書き換えます。

cat << EOF > /etc/chrony/chrony.conf
confdir /etc/chrony/conf.d
server 216.239.35.12 iburst
server 216.239.35.8 iburst
sourcedir /run/chrony-dhcp
sourcedir /etc/chrony/sources.d
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3
leapsectz right/UTC

allow 10.0.0.0/8
bindcmdaddress 10.0.0.1
ntpsigndsocket /var/lib/samba/ntp_signd
EOF
systemctl restart chrony.service
systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc

正常に Samba AD が構築されていれば、以下のファイルから外部 DNS 設定を削除します。

  • /etc/hosts
  • /etc/netplan/50-cloud-init.yaml

前提条件の確認

File System Support に記載されていますが、ファイルシステムで ACL がサポートされている必要があります。 以下のように確認出来ます。

# cat /boot/config-`uname -r`| grep -e CONFIG_EXT4_FS_SECURITY -e CONFIG_EXT4_FS_POSIX_ACL
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y

作業前のポート Listen 状態

Samba AD のインストール作業を行う前、ポート Listen 状態は以下でした。

1
2
3
# ss -nat --ipv4
State        Recv-Q       Send-Q             Local Address:Port                 Peer Address:Port        Process
LISTEN       0            128                      0.0.0.0:22                        0.0.0.0:*

ホスト名の修正

予めホスト名を適切に修正しておきます (後の手順で、このホスト名を /etc/hosts に登録します)。 hostnamectl set-hostname [HOSTNAME] でホスト名を設定します。

hostnamectl set-hostname sv1.samba.example.com

設定されたホスト名は hostnamectl で確認出来ます。

# hostnamectl
 Static hostname: sv1.samba.example.com
       Icon name: computer-vm
         Chassis: vm
      Machine ID: f8bf9021b5344be299331358a71128ca
         Boot ID: 0020a29693ab4e14aadb527b2d66d175
  Virtualization: kvm
Operating System: Ubuntu 22.04.4 LTS
          Kernel: Linux 5.15.0-105-generic
    Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC _i440FX + PIIX, 1996_

/etc/hosts の自動修正を無効化する

自身のホスト名を名前解決出来るよう、/etc/hosts を編集します。 但し、cloud-init で起動している環境であり、且つ /etc/cloud/cloud.cfg に以下のような update_etc_hosts の定義があると再起動するごとに /etc/hosts が書き換わってしまい、手動で加えた反映が破棄されてしまいます。

/etc/cloud/cloud.cfg
cloud_init_modules:
  - migrator
  - seed_random
  - bootcmd
  - write_files
  - growpart
  - resizefs
  - disk_setup
  - mounts
  - set_hostname
  - update_hostname
  - update_etc_hosts

この場合は update_etc_hosts 行を削除し、/etc/hosts が cloud-init で管理されないようにします。 これをワンライナーで処理するには以下を実行します。

sed -i -e '/  - update_etc_hosts/d' /etc/cloud/cloud.cfg

/etc/hosts へエントリーの追加

/etc/hosts に以下のようなエントリーを追記しておきます。

/etc/hosts
10.0.0.1 sv1.samba.example.com sv1

ワンライナーで設定したい場合は以下を実行します。

echo "10.0.0.1 sv1.samba.example.com sv1" >> /etc/hosts

名前解決の設定

名前解決関連の設定を行います。

Step.1

Ubuntu は起動時に systemd-resolved サービスが /etc/resolv.conf を上書きし、設定します。 その為、手動で /etc/resolv.conf を修正しても再起動すると変更が失われます。 今回は Ubuntu 自身を DNS リゾルバーとして (systemd-resolved を使わずに) 静的に登録したいので、systemd-resolved は停止します。

systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service

Step.2

/etc/resolv.conf/run/systemd/resolve/stub-resolv.conf へのシンボリックリンクになっています。

# ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Mar 16 02:35 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

unlink を実行してこのシンボリックリンクを解除します

unlink /etc/resolv.conf

Step.3

/etc/resolv.conf を以下の内容で新規作成します。 nameserver で DNS サーバを設定しますが、一番上を「自身のアドレス」にします。

/etc/resolv.conf
nameserver 127.0.0.1
nameserver 1.1.1.1
nameserver 1.0.0.1
search samba.example.com

以下を実行することでもファイルを新規作成することが出来ます。

cat << EOF > /etc/resolv.conf
nameserver 127.0.0.1
nameserver 1.1.1.1
nameserver 1.0.0.1
search samba.example.com
EOF

Step.4

インターフェイス設定の DNS サーバ指定部分も同様に修正しておきます。 /etc/netplan/ 配下の設定ファイルを修正します。 私の環境では /etc/netplan/50-cloud-init.yaml でした。 以下のように nameservers 部分を修正、「一番上が自分自身を示す 127.0.0.1」になるよう、修正します。

/etc/netplan/50-cloud-init.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
network:
  version: 2
  ethernets:
    ens2:
      addresses:
        - 10.0.0.1/24
      routes:
        - to: default
          via: 10.0.0.254
      dhcp4: false
      nameservers:
        addresses:
          - 127.0.0.1
          - 1.1.1.1
          - 1.0.0.1

修正した設定を反映しておきます。

netplan apply

環境によっては以下のエラーになるようです。

Permissions for /etc/netplan/50-cloud-init.yaml are too open. Netplan configuration should NOT be accessible by others.

この場合、OS ごと再起動して修正を反映します。

Samba のインストール

Samba をインストールします。 詳細は後述しますが、Samba のパッケージインストール時、以下のパラメータを指定します。

項目
Default Kerberos version 5 realm SAMBA.EXAMPLE.COM
Kerberos servers for your realm samba1.example.com
Administrative server for your Kerberos realm samba1.example.com

Step.1

apt install で標準リポジトリからインストールします。 依存関係の都合上、Samba AD だけをインストールすることは出来ず、関連のサービスもインストールされてしまう為、不要なものは後の手順で無効化します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
apt -y install \
  acl \
  attr \
  dnsutils \
  krb5-config \
  krb5-user \
  libnss-winbind \
  libpam-winbind \
  net-tools \
  python3-setproctitle \
  samba \
  smbclient \
  winbind

Step.2

Kerberos レルムを大文字で入力します。 今回は SAMBA.EXAMPLE.COM としました。

file

Step.3

Kerberos サーバのホスト名を小文字で入力します。 今回は samba1.example.com としました。

file

Step.3

Kerberos 認証のパスワード変更を管理するサーバのホスト名を小文字で入力します。 今回は samba1.example.com としました。

file

Step.4

Samba AD としては必要の無いサービスを停止しておきます。

systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind

Samba AD の設定

Samba AD の設定を行います。

Step.1

設定には samba-tool を使います。 設定ファイルは /etc/samba/smb.conf です。 しかし、このファイルが存在する状態で samba-tool を実行すると以下のようなエラーになってしまいます。

# samba-tool domain provision --use-rfc2307 --interactive
Realm [EXAMPLE.COM]:
Domain [EXAMPLE]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:  1.1.1.1
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: guess_names: 'realm =' was not specified in supplied /etc/samba/smb.conf.  Please remove the smb.conf file and let provision generate it
  File "/usr/lib/python3/dist-packages/samba/netcmd/domain.py", line 493, in run
    result = provision(self.logger,
  File "/usr/lib/python3/dist-packages/samba/provision/__init__.py", line 2231, in provision
    names = guess_names(lp=lp, hostname=hostname, domain=domain,
  File "/usr/lib/python3/dist-packages/samba/provision/__init__.py", line 625, in guess_names
    raise ProvisioningError("guess_names: 'realm =' was not specified in supplied %s.  Please remove the smb.conf file and let provision generate it" % lp.configfile)

その為、デフォルトで存在している設定ファイルは移動しておきます。

mv /etc/samba/smb.conf /etc/samba/smb.conf.org

Step.2

samba-tool domain provision --use-rfc2307 --interactive を実行して対話的に設定します。 DNS フォワーダは「,」(カンマ) で区切ることで複数指定出来ます。

# samba-tool domain provision --use-rfc2307 --interactive
Realm [EXAMPLE.COM]:
Domain [EXAMPLE]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:  1.1.1.1,1.0.0.1
Administrator password:
Retype password:
(snip)

自動生成された設定ファイルの中身は以下でした。

/etc/samba/smb.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Global parameters
[global]
    dns forwarder = 1.1.1.1 1.0.0.1
    netbios name = SAMBA1
    realm = EXAMPLE.COM
    server role = active directory domain controller
    workgroup = EXAMPLE
    idmap_ldb:use rfc2307 = yes

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No

[netlogon]
    path = /var/lib/samba/sysvol/example.com/scripts
    read only = No

Step.3

続いて Kerberos の設定を行います。 Kerberos の設定ファイルも自動生成されている為、適切な位置へ移動させるだけです。

mv /etc/krb5.conf /etc/krb5.conf.org
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

NTP サーバの設定

Step.1

Ubuntu ではデフォルトで systemd-timesyncd サービスが起動しており、NTP クライアントとして動作しています。 しかし、NTP サーバとしては機能していません。 そこで chrony をインストールして NTP クライアント&サーバ両方として機能させます。 chrony をインストールします。 chrony をインストールすると systemd-timesyncd は自動的に停止されます。 chrony をインストールすると起動&自動起動設定がされていました。

apt -y install chrony

Step.2

chrony は Google Public NTP を参照させます。 /etc/chrony/chrony.conf を以下のように書き換えます。

/etc/chrony/chrony.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
confdir /etc/chrony/conf.d
server 216.239.35.12 iburst
server 216.239.35.8 iburst
sourcedir /run/chrony-dhcp
sourcedir /etc/chrony/sources.d
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3
leapsectz right/UTC

allow 10.0.0.0/8
bindcmdaddress 10.0.0.1
ntpsigndsocket /var/lib/samba/ntp_signd

Step.3

設定が完了したら chrony を再起動して設定変更を反映します。

systemctl restart chrony.service

再起動後は念の為、systemctl status chrony.service を実行して chrony が起動していることを確認しておきます。 ログ上、MS-SNTP authentication enabled が表示されていることを確認しておきます (下記の出力例では 21 行目)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# systemctl status chrony.service
● chrony.service - chrony, an NTP client/server
     Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-04-28 07:12:41 JST; 8s ago
       Docs: man:chronyd(8)
             man:chronyc(1)
             man:chrony.conf(5)
    Process: 3817 ExecStart=/usr/lib/systemd/scripts/chronyd-starter.sh $DAEMON_OPTS (code=exited, status=0/SUCCESS)
   Main PID: 3826 (chronyd)
      Tasks: 2 (limit: 19139)
     Memory: 1.4M
        CPU: 47ms
     CGroup: /system.slice/chrony.service
             ├─3826 /usr/sbin/chronyd -F 1
             └─3827 /usr/sbin/chronyd -F 1

Apr 28 07:12:41 samba1.example.com systemd[1]: Starting chrony, an NTP client/server...
Apr 28 07:12:41 samba1.example.com chronyd[3826]: chronyd version 4.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASY>
Apr 28 07:12:41 samba1.example.com chronyd[3826]: Frequency -37.028 +/- 1000000.000 ppm read from /var/lib/chrony/chrony.drift
Apr 28 07:12:41 samba1.example.com chronyd[3826]: Using right/UTC timezone to obtain leap second data
Apr 28 07:12:41 samba1.example.com chronyd[3826]: MS-SNTP authentication enabled
Apr 28 07:12:41 samba1.example.com chronyd[3826]: Loaded seccomp filter (level 1)
Apr 28 07:12:41 samba1.example.com systemd[1]: Started chrony, an NTP client/server.
Apr 28 07:12:45 samba1.example.com chronyd[3826]: Selected source 216.239.35.8
Apr 28 07:12:45 samba1.example.com chronyd[3826]: System clock TAI offset set to 37 seconds

Step.4

NTP サーバとの同期状態は chronyc sources で確認出来ます。

# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^- time4.google.com              1   6    37     2   -424us[ -424us] +/-   20ms
^* time3.google.com              1   6    37     2    -92us[+1845us] +/-   20ms

Samba の起動

Samba AD はデフォルトで masked 状態のようで、起動することが出来ません。

# systemctl status samba-ad-dc.service
○ samba-ad-dc.service
     Loaded: masked (Reason: Unit samba-ad-dc.service is masked.)
     Active: inactive (dead)

unmask した上で起動&自動起動設定しておきます。

systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc

正常に起動していることを systemctl status samba-ad-dc で確認しておきます。

# systemctl status samba-ad-dc
● samba-ad-dc.service - Samba AD Daemon
     Loaded: loaded (/lib/systemd/system/samba-ad-dc.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-04-28 07:08:28 JST; 7s ago
       Docs: man:samba(8)
             man:samba(7)
             man:smb.conf(5)
   Main PID: 2979 (samba)
     Status: "samba: ready to serve connections..."

Samba AD の動作確認

Samba AD が正常に動作していることを確認します。

Listen しているポートの確認

ss -nat --ipv4 で Listen しているポートを確認したところ、以下になっていました (表示量が多くなってしまう為、IPv6 ポートは省略しています)。

# ss -nat --ipv4
State        Recv-Q       Send-Q             Local Address:Port                 Peer Address:Port        Process
LISTEN       0            10                       0.0.0.0:3269                      0.0.0.0:*
LISTEN       0            10                       0.0.0.0:3268                      0.0.0.0:*
LISTEN       0            50                       0.0.0.0:445                       0.0.0.0:*
LISTEN       0            10                       0.0.0.0:389                       0.0.0.0:*
LISTEN       0            10                       0.0.0.0:464                       0.0.0.0:*
LISTEN       0            10                       0.0.0.0:53                        0.0.0.0:*
LISTEN       0            10                       0.0.0.0:49154                     0.0.0.0:*
LISTEN       0            10                       0.0.0.0:49153                     0.0.0.0:*
LISTEN       0            10                       0.0.0.0:49152                     0.0.0.0:*
LISTEN       0            128                      0.0.0.0:22                        0.0.0.0:*
LISTEN       0            10                       0.0.0.0:88                        0.0.0.0:*
LISTEN       0            10                       0.0.0.0:135                       0.0.0.0:*
LISTEN       0            50                       0.0.0.0:139                       0.0.0.0:*
LISTEN       0            10                       0.0.0.0:636                       0.0.0.0:*

SRV レコードの確認

Kerberos の SRV レコードを解決出来ることを確認しておきます。

# host -t SRV _kerberos._udp.samba.example.com
_kerberos._udp.samba.example.com has SRV record 0 100 88 sv1.samba.example.com.

LDAP の SRV レコードを解決出来ることを確認しておきます。

# host -t SRV _ldap._tcp.samba.example.com
_ldap._tcp.samba.example.com has SRV record 0 100 389 sv1.samba.example.com.

共有リソースの確認

共有リソースを確認しておきます。

# smbclient -N -L samba.example.com
Anonymous login successful

    Sharename       Type      Comment
    ---------       ----      -------
    sysvol          Disk
    netlogon        Disk
    IPC$            IPC       IPC Service (Samba 4.15.13-Ubuntu)
SMB1 disabled -- no workgroup available

Kerberos 認証の確認

Kerberos 認証で administrator のチケットを取得出来ることを確認します。

# kinit administrator
Password for administrator@SAMBA.EXAMPLE.COM:
Warning: Your password will expire in 41 days on Sun Jun  9 11:17:47 2024
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SAMBA.EXAMPLE.COM

Valid starting     Expires            Service principal
04/28/24 11:59:08  04/28/24 21:59:08  krbtgt/SAMBA.EXAMPLE.COM@SAMBA.EXAMPLE.COM
 renew until 04/29/24 11:59:06

機能レベルの確認

機能レベルが表示されることを確認します。 冒頭に記載した通り、機能レベルは 2008 になります。

# samba-tool domain level show
Domain and forest function level for domain 'DC=samba,DC=example,DC=com'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2

名前解決設定の修正

ここまでの設定で Samba AD の DNS フォワーダ設定により、名前解決出来るようになっています。 その為、/etc/resolv.conf とインターフェイス設定からインターネット上の名前解決を実施させている DNS サーバ設定を削除します。

/etc/resolv.conf

以下の例であれば 2 〜 3 行目を削除します。

/etc/resolv.conf
1
2
3
4
nameserver 127.0.0.1
nameserver 1.1.1.1
nameserver 1.0.0.1
search samba.example.com

/etc/netplan/50-cloud-init.yaml

今回の検証環境ではインターフェイス設定は /etc/netplan/50-cloud-init.yaml で実施されていますので、このファイルの 14 〜 15 行目を削除します。

/etc/netplan/50-cloud-init.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
network:
  version: 2
  ethernets:
    ens2:
      addresses:
        - 172.29.0.81/24
      routes:
        - to: default
          via: 172.29.0.254
      dhcp4: false
      nameservers:
        addresses:
          - 127.0.0.1
          - 1.1.1.1
          - 1.0.0.1

設定変更が完了したら netplan apply を実行して修正を反映します。

netplan apply

参考

/etc/chrony/chrony.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Welcome to the chrony configuration file. See chrony.conf(5) for more
# information about usable directives.

# Include configuration files found in /etc/chrony/conf.d.
confdir /etc/chrony/conf.d

# This will use (up to):
# - 4 sources from ntp.ubuntu.com which some are ipv6 enabled
# - 2 sources from 2.ubuntu.pool.ntp.org which is ipv6 enabled as well
# - 1 source from [01].ubuntu.pool.ntp.org each (ipv4 only atm)
# This means by default, up to 6 dual-stack and up to 2 additional IPv4-only
# sources will be used.
# At the same time it retains some protection against one of the entries being
# down (compare to just using one of the lines). See (LP: #1754358) for the
# discussion.
#
# About using servers from the NTP Pool Project in general see (LP: #104525).
# Approved by Ubuntu Technical Board on 2011-02-08.
# See http://www.pool.ntp.org/join.html for more information.
pool ntp.ubuntu.com        iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2

# Use time sources from DHCP.
sourcedir /run/chrony-dhcp

# Use NTP sources found in /etc/chrony/sources.d.
sourcedir /etc/chrony/sources.d

# This directive specify the location of the file containing ID/key pairs for
# NTP authentication.
keyfile /etc/chrony/chrony.keys

# This directive specify the file into which chronyd will store the rate
# information.
driftfile /var/lib/chrony/chrony.drift

# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony

# Uncomment the following line to turn logging on.
#log tracking measurements statistics

# Log files location.
logdir /var/log/chrony

# Stop bad estimates upsetting machine clock.
maxupdateskew 100.0

# This directive enables kernel synchronisation (every 11 minutes) of the
# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
rtcsync

# Step the system clock instead of slewing it if the adjustment is larger than
# one second, but only in the first three clock updates.
makestep 1 3

# Get TAI-UTC offset and leap seconds from the system tz database.
# This directive must be commented out when using time sources serving
# leap-smeared time.
leapsectz right/UTC