Wednesday, January 8, 2014

DNS server installation

DNS server installation in itself is a rather ordinary sysadmin task.
Nevertheless a simple but important measures are frequently disregarded.
The problem is that these oversights or omissions leads to security issues.
As a consequence, everything that relies on DNS is affected as well.
As such, it's not difficult to see that impacts can be disastrous.

As a good practice:
Start right from the very beginning.
As the British say: Don't make a rod for your own back.

So here's a few important measures to running a DNS server:

Assume a NGZ, not yet (of course) immutable.
Suppose the following interface configuration is present:

dns-1# dladm show-link
LINK    CLASS     MTU     STATE   OVER
net7    phys      1500    up      --

 

dns-1# dladm show-phys
LINK    MEDIA     STATE   SPEED   DUPLEX  DEVICE
net7    Ethernet  up      1000    full    e1000g11


dns-1# dladm show-phys -m
LINK    SLOT      ADDRESS         INUSE   CLIENT
net7    primary   8:0:27:ad:65:e  yes     net7


dns-1# dladm show-linkprop -p allowed-ips,protection
LINK  PROPERTY     PERM  VALUE         DEFAULT  POSSIBLE
net7  allowed-ips  rw    192.168.0.17  --       --
net7  protection   rw    ip-nospoof    --       mac-nospoof,
                                                restricted,
                                                ip-nospoof,
                                                dhcp-nospoof

NOTE
For the examples I'm using VirtualBox 4.3.6 on a Solaris 11 host.
On the host, there are several vnics over a single etherstub.
Such vnics are being provided to VirtualBox guests.
Guests' non-global zones can't use the anet resource.
The only choice in this particulare case is the net resource.
In this scenario it seems impossible to set the mac-nospoof.
On a real world scenario anet resources would fill the gap.
  
Check for a reasonably up-to-date software.
If available, update the IPS repository to the latest SRU.

# pkg info -r service/network/dns/bind | egrep '(State|Ver)'
         State: Not installed
       Version: 9.6.3.8.0 (9.6-ESV-R8)

 
Check the respective ISC-BIND resources on the Internet:

For instance, for BIND 9.6-ESV-R8 there exists vulnerability #56.
562013-6320A Winsock API Bug can cause a side-effect affecting BIND ACLs


After assessing all the information, the conclusion is that it's safe to proceed as the environment is comprised only of Unix hosts which aren't affected.

# pkg install -nv service/network/dns/bind
           Packages to install:        1
     Estimated space available: 13.98 GB
Estimated space to be consumed: 19.20 MB
       Create boot environment:       No 

Create backup boot environment:       No
            Services to change:        1
          Rebuild boot archive:       No

Changed packages:
solaris
  service/network/dns/bind
    None -> 9.6.3.8.0,...
Services:
  restart_fmri:
    svc:/system/manifest-import:default


# svcs '*dns*'
STATE          STIME    FMRI
disabled       14:01:15 svc:/network/dns/client:default
disabled       14:01:18 svc:/network/dns/multicast:default


# pkg install service/network/dns/bind
           Packages to install:  1
       Create boot environment: No
Create backup boot environment: No
            Services to change:  1

DOWNLOAD          PKGS        FILES    XFER (MB)   SPEED
Completed          1/1        14/14      0.4/0.4  778k/s

PHASE                                        ITEMS
Installing new actions                       44/44
Updating package state database               Done
Updating image state                          Done
Creating fast lookup database                 Done

  
# pkg info service/network/dns/bind | egrep '(State|Ver)'        
         State: Installed
       Version: 9.6.3.8.0 (9.6-ESV-R8)


# svcs '*dns*'
STATE          STIME    FMRI
disabled       14:01:15 svc:/network/dns/client:default
disabled       14:01:18 svc:/network/dns/multicast:default
disabled       15:04:12 svc:/network/dns/server:default


 
The next step is to perform the DNS server configuration.