====== Networking - DNS - Bind - Enable Logging ====== The **rndc** command controls the operation of a name server. If rndc is invoked with no command line options or arguments, it prints a short summary of the supported commands and the available options and their arguments. rndc communicates with the name server over a TCP connection, sending commands authenticated with digital signatures. In the current versions of rndc and bind the only supported authentication algorithm is HMAC-MD5, which uses a shared secret on each end of the connection. This provides TSIG-style authentication for the command request and the name server's response. All commands sent over the channel must be signed by a key_id known to the server. ---- ===== Turn on logging ===== Type the following command as root to toggle query logging: rndc querylog ---- ===== View bind sever query log ===== Once this is done, you can view all logged queries usimg /var/log/messages file. To view those queries, type: tail -f /var/log/messages You might need to tail /var/log/syslog instead of /var/log/messages. ---- ===== Turn off logging ===== Type the following command as root to toggle query logging: rndc querylog **NOTE**: It is important to place all log files into **/var/log/named**. The reason for this is that AppArmor by default only allows this location in /var/log. If you for instance used an alternative path, say /var/log/bind for the log files then you need to update AppArmor. vi /etc/apparmor.d/usr.sbin.named ---- Create the logging master file. vi /etc/bind/named.conf.logging and populate as: logging { channel default_file { file "/var/log/named/default.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel general_file { file "/var/log/named/general.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel database_file { file "/var/log/named/database.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel security_file { file "/var/log/named/security.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel config_file { file "/var/log/named/config.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel resolver_file { file "/var/log/named/resolver.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel xfer-in_file { file "/var/log/named/xfer-in.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel xfer-out_file { file "/var/log/named/xfer-out.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel notify_file { file "/var/log/named/notify.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel client_file { file "/var/log/named/client.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel unmatched_file { file "/var/log/named/unmatched.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel queries_file { file "/var/log/named/queries.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel network_file { file "/var/log/named/network.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel update_file { file "/var/log/named/update.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel dispatch_file { file "/var/log/named/dispatch.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel dnssec_file { file "/var/log/named/dnssec.log" versions 3 size 5m; severity dynamic; print-time yes; }; channel lame-servers_file { file "/var/log/named/lame-servers.log" versions 3 size 5m; severity dynamic; print-time yes; }; category default { default_file; }; category general { general_file; }; category database { database_file; }; category security { security_file; }; category config { config_file; }; category resolver { resolver_file; }; category xfer-in { xfer-in_file; }; category xfer-out { xfer-out_file; }; category notify { notify_file; }; category client { client_file; }; category unmatched { unmatched_file; }; category queries { queries_file; }; category network { network_file; }; category update { update_file; }; category dispatch { dispatch_file; }; category dnssec { dnssec_file; }; category lame-servers { lame-servers_file; }; }; ---- Make the logging master file accessible to bind: chown root.bind /etc/bind/named.conf.logging and set the permissions on the file: chmod 640 /etc/bind/named.conf.logging Add the logging master file into the bind config. vi /etc/bind/named.conf> and modify as: include "/etc/bind/named.conf.logging"; include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; ---- It is advisable to create the log files manually: touch /var/log/named/querylog.log touch /var/log/named/general.log touch /var/log/named/database.log touch /var/log/named/security.log touch /var/log/named/config.log touch /var/log/named/resolver.log touch /var/log/named/xfer-in.log touch /var/log/named/xfer-out.log touch /var/log/named/notify.log touch /var/log/named/client.log touch /var/log/named/unmatched.log touch /var/log/named/queries.log touch /var/log/named/network.log touch /var/log/named/update.log touch /var/log/named/dispatch.log touch /var/log/named/dnssec.log touch /var/log/named/lame-servers.log Make the files accessible to bind: chown bind.bind /var/log/named/* Make the log files writeable: chmod 600 /var/log/named/* Restart bind server to apply changes systemctl restart bind.service Check that bind is running okay systemctl status bind.service