Example Session with NBS
1 BIND 9 Logging-Configuration for Artificial Ignorance
For AI log analysis we don't want to have the time-stamp or severity in the log messages.
Below is a BIND 9 configuration fragment for an AI log file. It is recommended to write the same log messages also into other file or syslog channels:
channel ai {
file "ai-bind.log"
versions 1
size 100M;
print-time no;
print-severity no;
severity warning;
};
category default { default_syslog; named; ai; };
category general { default_syslog; named; ai; };
category security { security; ai; };
category dnssec { dnssec; ai; };
category database { capacity; };
category client { default_syslog; named; ai; };
category network { default_syslog; named; ai; };
2 Installation of NBS on Debian Linux
- Install Berkeley-DB including header file (and the Debian build tools)
apt install libdb-dev build-essential
- load and extract the NBS source code. Please note the License included in the NBS source. NBS is not free software!
cd ~/src wget http://www.ranum.com/security/computer_security/code/nbs.tar tar xvf nbs.tar cd nbs
- For the NBS source to compile on modern GCC/CLANG compiler, we need to patch the code a little
sed -i 's/.*extern\tint\terrno;.*/#include <errno.h>/' nbspreen.c
- Compile the NBS source and install the program binaries
make sudo cp nbs nbsmk nbspreen nbsdump /usr/local/bin
- Create a directory for the NBS database files
sudo mkdir /var/lib/nbs
- Create a new, empty NBS database for the BIND 9 log analysis
cd /var/lib/nbs nbsmk -d bind9.nbs
3 Using NBS on the BIND 9 log file
- Import the existing BIND 9 AI log-file into the database
nbs -d bind9.nbs -i /var/cache/bind/ai.log -s [...] managed-keys-zone: journal file is out of date: removing journal file managed-keys-zone: loaded serial 6 zone 0.in-addr.arpa/IN: loaded serial 1 zone 255.in-addr.arpa/IN: loaded serial 1 zone 127.in-addr.arpa/IN: loaded serial 1 zone localhost/IN: loaded serial 2 all zones loaded running managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted resolver priming query complete NBS completed run (0 sec) 10 never before seen entries 10 lines of input processed (100.00% NBS) 10 total entries in database
- Wait for new log entries
nbs -d bind9.nbs -i /var/cache/bind/ai-bind.log -s
- The output will list all new log entries, and a summary:
received control channel command 'stop' shutting down: flushing changes stopping command channel on 127.0.0.1#953 stopping command channel on ::1#953 no longer listening on ::#53 no longer listening on 127.0.0.1#53 no longer listening on 161.35.222.138#53 no longer listening on 10.19.0.7#53 no longer listening on 10.135.0.3#53 exiting managed-keys-zone: loaded serial 8 transfer of 'dnssec.works/IN' from 5.45.109.212#53: connected using 161.35.222.138#53105 NBS completed run (0 sec) 12 never before seen entries 170 lines of input processed (7.06% NBS) 150 total entries in database
- The NBS output can be appended to a log-file (here the file
/var/log/nbs-bind.log)
nbs -d bind9.nbs -i /var/cache/bind/ai-bind.log -a /var/log/nbs-bind.log