[Opendnssec-user] Dropping exec perms -- running daemons as == ods USER/GROUP, !root ?

PGNet Dev pgnet.dev at gmail.com
Thu Dec 22 02:53:54 UTC 2016


On 12/21/2016 02:27 PM, Yuri Schaeffer wrote:
> Indeed. It might be useful to start ods-signerd (and then drop) as root
> in case you want it to serve XFRs on low ports.
> 
...

> ODS should run fine as a normal user. But beware that binding port
> numbers < 1024 might not work of you don't use the permission dropping
> functionality. This is only relevant for the signer and when using DNS
> adapters.

took a bit of doing, but finally for ods2 + softhsm2 here,

	/usr/local/opendnssec/sbin/ods-signerd -V
		opendnssec version 2.1.0-dev

	/usr/local/softhsm/bin/softhsm2-util --version
		2.3.0rc1

with one pending 'gotcha'; dropped back to botan 1.11.33

	/usr/local/botan/bin/botan version --full
		Botan 1.11.33 (released, dated 20161026, revision git:560c0e5623cd9ef704b06c56b7e827e7431ae1a8, distribution unspecified)

until this gets sorted

	https://github.com/opendnssec/SoftHSMv2/issues/276 Botan 1.11.34

now,

ods-{signerd,enforcerd} are managed by systemd

	systemctl status ods-signer
		● ods-signer.service - OpenDNSSEC Signer
		   Loaded: loaded (/etc/systemd/system/ods-signer.service; enabled; vendor preset: disabled)
		   Active: active (running) since Wed 2016-12-21 18:11:25 PST; 20min ago
		  Process: 1564 ExecStart=/bin/sh -c /usr/local/opendnssec/sbin/ods-signerd -d & (code=exited, status=0/SUCCESS)
		 Main PID: 1565 (ods-signerd)
		    Tasks: 12 (limit: 512)
		   CGroup: /system.slice/ods-signer.service
		           └─1565 /usr/local/opendnssec/sbin/ods-signerd -d

	systemctl status ods-enforcer
		● ods-enforcer.service - OpenDNSSEC Enforcer
		   Loaded: loaded (/etc/systemd/system/ods-enforcer.service; enabled; vendor preset: disabled)
		   Active: active (running) since Wed 2016-12-21 18:11:25 PST; 21min ago
		  Process: 1598 ExecStart=/bin/sh -c /usr/local/opendnssec/sbin/ods-enforcerd -d & (code=exited, status=0/SUCCESS)
		 Main PID: 1599 (ods-enforcerd)
		    Tasks: 6 (limit: 512)
		   CGroup: /system.slice/ods-enforcer.service
		           └─1599 /usr/local/opendnssec/sbin/ods-enforcerd -d


launched as root, with non-root/user priveleges specified in conf.xml

	cat conf.xml
		...
		<Enforcer>
		    <Privileges>
		        <User>opendnssec</User>
		        <Group>opendnssec</Group>
		    </Privileges>
			...
		</Enforcer>

		<Signer>
		    <Privileges>
		        <User>opendnssec</User>
		        <Group>opendnssec</Group>
		    </Privileges>
			...
		</Signer>
		...

where UID/GID are <1024

	id opendnssec
		uid=227(opendnssec) gid=227(opendnssec) groups=227(opendnssec)

and correctly dropped on exec

	ps aux | grep ods
		opendns+  1565  3.8  3.8 1032016 109832 ?      Sl   18:11   0:47 /usr/local/opendnssec/sbin/ods-signerd -d
		opendns+  1599  0.6  3.4 583412 97984 ?        Sl   18:11   0:07 /usr/local/opendnssec/sbin/ods-enforcerd -d

	tree /var/run/opendnssec/
		/var/run/opendnssec/
		├── [opendnssec           5]  enforcerd.pid
		├── [opendnssec           0]  enforcer.sock
		├── [opendnssec           0]  engine.sock
		└── [opendnssec           5]  signerd.pid

after adding a zone (under 'lab' policy), and waiting a bit for 'ds-seen'

	/usr/local/opendnssec/sbin/ods-enforcer key list --debug
		Keys:
		Zone:                           Keytype: State:    Date of next transition: Size: Algorithm: CKA_ID:                          Repository: KeyTag:
		example.info                    KSK      ready     waiting for ds-seen      256   14         17e8878380c62e242def6bf0f690927f SoftHSM     48442
		example.info                    ZSK      active    2016-12-21 22:11:57      256   14         7e5c6b64da291b04aea7480ec45eb2d6 SoftHSM     65522
		Keys:
		Zone:                           Key role:     DS:          DNSKEY:      RRSIGDNSKEY: RRSIG:       Pub: Act: Id:
		example.info                    KSK           rumoured     omnipresent  omnipresent  NA           1    1    17e8878380c62e242def6bf0f690927f
		example.info                    ZSK           NA           omnipresent  NA           omnipresent  1    1    7e5c6b64da291b04aea7480ec45eb2d6

for a very simple specified submit action

	<DelegationSignerSubmitCommand>/usr/local/etc/opendnssec/scripts/dnskey-mailer.sh</DelegationSignerSubmitCommand>

	cat dnskey-mailer.sh
		#!/bin/bash
		RECIPIENT="adm+ods at example.com"
		if [ -n "$RECIPIENT" ]
		then
			cat | mail -s "New keys from OpenDNSSEC" $RECIPIENT
		fi

mail is now sent/delivered on submit

	...
	Date: Wed, 21 Dec 2016 18:27:58 -0800
	From: adm+ods-dnskey-mailer at example.net
	To: adm+ods at example.com
	Subject: New keys from OpenDNSSEC
	Message-ID: <585b3a2e.QB+wG9zDnHst/Xyk%adm+ods-dnskey-mailer at example.net>
	User-Agent: Heirloom mailx 12.5 7/5/10
	MIME-Version: 1.0
	Content-Type: text/plain; charset=us-ascii
	Content-Transfer-Encoding: 7bit

	example.info. 300 IN DNSKEY 257 3 14 QUx...WSc/ 

Thanks for the help in getting this cleared up.

Next, setting up a production policy ...



More information about the Opendnssec-user mailing list