diff mbox

[OpenWrt-Devel] package/utils/busybox: Jail sysntpd

Message ID 1450305242-3806-1-git-send-email-openwrt@daniel.thecshore.com
State Changes Requested
Headers show

Commit Message

Daniel Dickinson Dec. 16, 2015, 10:34 p.m. UTC
From: Daniel Dickinson <openwrt@daniel.thecshore.com>

Note that not all of procfs sysfs log and ubus may be required for actual
operation, they are just what strace reveals attempting to make accesses.

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
---
 package/utils/busybox/files/sysntpd | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Etienne Champetier Dec. 17, 2015, 8:15 a.m. UTC | #1
adding openwrt-devel

2015-12-17 9:14 GMT+01:00 Etienne Champetier <champetier.etienne@gmail.com>:

> Hi,
>
> 2015-12-16 23:34 GMT+01:00 <openwrt@daniel.thecshore.com>:
>
>> From: Daniel Dickinson <openwrt@daniel.thecshore.com>
>>
>> Note that not all of procfs sysfs log and ubus may be required for actual
>> operation, they are just what strace reveals attempting to make accesses.
>>
>> Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
>> ---
>>  package/utils/busybox/files/sysntpd | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/package/utils/busybox/files/sysntpd
>> b/package/utils/busybox/files/sysntpd
>> index f73bb83..e61c9fc 100755
>> --- a/package/utils/busybox/files/sysntpd
>> +++ b/package/utils/busybox/files/sysntpd
>> @@ -31,7 +31,11 @@ start_service() {
>>         for peer in $server; do
>>                 procd_append_param command -p $peer
>>         done
>> +       touch /var/run/ntpd.pid
>>         procd_set_param respawn
>> +       procd_add_jail sysntpd procfs sysfs log ubus
>> +       procd_add_jail_mount "$HOTPLUG_SCRIPT" /etc/resolv.conf
>> /tmp/resolv.conf /etc/hosts /etc/TZ
>> +       procd_add_jail_mount_rw /var/run/ntpd.pid
>>         procd_close_instance
>>  }
>>
>>
> Nice to see people jailing daemon.
> I've added some feature to ujail recently but it lack proper documentation
> https://dev.openwrt.org/changeset/47862/trunk
>
> Keep in mind that root inside the jail is the same as root outside it (we
> don't use user namespace for now),
> so sysntpd is still root and has access to /proc and /sys, so he can do
> lots of things
>
> Can you try to add capabilities restrictions ?
> procd_set_param capabilities <json file>
> for the syntax see
>
> http://nbd.name/gitweb.cgi?p=luci2/procd.git;a=commit;h=51201235db9dad9fe1823d9de46ed90f5e160fd0
>
> maybe you can also add
> procd_set_param no_new_privs 1
> which prevent the process to gain new privileges (this disable suid ...)
>
> Etienne
>
>
Daniel Dickinson Dec. 17, 2015, 8:20 a.m. UTC | #2
Hi,

Speaking of jails, is it possible yet to automagically detect the 
dependencies for multiple binaries yet (there is package I've got a pull 
request to add to the packages feed that I haven't jailed because of a 
dependency on another program; if that other program can be included in 
the jail without having to manually figure out library dependencies I'll 
move it as well).

I'll do some additional testing etc with sysntpd to see about narrowing 
it's privileges.

Regards,

Daniel

On 17/12/15 03:14 AM, Etienne Champetier wrote:
> Hi,
>
> 2015-12-16 23:34 GMT+01:00 <openwrt@daniel.thecshore.com
> <mailto:openwrt@daniel.thecshore.com>>:
>
>     From: Daniel Dickinson <openwrt@daniel.thecshore.com
>     <mailto:openwrt@daniel.thecshore.com>>
>
>     Note that not all of procfs sysfs log and ubus may be required for
>     actual
>     operation, they are just what strace reveals attempting to make
>     accesses.
>
>     Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com
>     <mailto:openwrt@daniel.thecshore.com>>
>     ---
>       package/utils/busybox/files/sysntpd | 4 ++++
>       1 file changed, 4 insertions(+)
>
>     diff --git a/package/utils/busybox/files/sysntpd
>     b/package/utils/busybox/files/sysntpd
>     index f73bb83..e61c9fc 100755
>     --- a/package/utils/busybox/files/sysntpd
>     +++ b/package/utils/busybox/files/sysntpd
>     @@ -31,7 +31,11 @@ start_service() {
>              for peer in $server; do
>                      procd_append_param command -p $peer
>              done
>     +       touch /var/run/ntpd.pid
>              procd_set_param respawn
>     +       procd_add_jail sysntpd procfs sysfs log ubus
>     +       procd_add_jail_mount "$HOTPLUG_SCRIPT" /etc/resolv.conf
>     /tmp/resolv.conf /etc/hosts /etc/TZ
>     +       procd_add_jail_mount_rw /var/run/ntpd.pid
>              procd_close_instance
>       }
>
>
> Nice to see people jailing daemon.
> I've added some feature to ujail recently but it lack proper documentation
> https://dev.openwrt.org/changeset/47862/trunk
>
> Keep in mind that root inside the jail is the same as root outside it
> (we don't use user namespace for now),
> so sysntpd is still root and has access to /proc and /sys, so he can do
> lots of things
>
> Can you try to add capabilities restrictions ?
> procd_set_param capabilities <json file>
> for the syntax see
> http://nbd.name/gitweb.cgi?p=luci2/procd.git;a=commit;h=51201235db9dad9fe1823d9de46ed90f5e160fd0
>
> maybe you can also add
> procd_set_param no_new_privs 1
> which prevent the process to gain new privileges (this disable suid ...)
>
> Etienne
>
Etienne Champetier Dec. 17, 2015, 8:27 a.m. UTC | #3
Hi,

2015-12-17 9:20 GMT+01:00 Daniel Dickinson <openwrt@daniel.thecshore.com>:

> Hi,
>
> Speaking of jails, is it possible yet to automagically detect the
> dependencies for multiple binaries yet (there is package I've got a pull
> request to add to the packages feed that I haven't jailed because of a
> dependency on another program; if that other program can be included in the
> jail without having to manually figure out library dependencies I'll move
> it as well).
>

yes, i've recently added that, each file that you add to the jail are now
"parsed", if it's an ELF, all needed lib (.so) are added, if it's a script
(#!), the interpreter is added
http://nbd.name/gitweb.cgi?p=luci2/procd.git;a=commit;h=15ff8b1d09187c11b1331f811cc75b0dd2076827


> I'll do some additional testing etc with sysntpd to see about narrowing
> it's privileges.
>
> Regards,
>
> Daniel
>
> On 17/12/15 03:14 AM, Etienne Champetier wrote:
>
>> Hi,
>>
>> 2015-12-16 23:34 GMT+01:00 <openwrt@daniel.thecshore.com
>> <mailto:openwrt@daniel.thecshore.com>>:
>>
>>     From: Daniel Dickinson <openwrt@daniel.thecshore.com
>>     <mailto:openwrt@daniel.thecshore.com>>
>>
>>     Note that not all of procfs sysfs log and ubus may be required for
>>     actual
>>     operation, they are just what strace reveals attempting to make
>>     accesses.
>>
>>     Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com
>>     <mailto:openwrt@daniel.thecshore.com>>
>>
>>     ---
>>       package/utils/busybox/files/sysntpd | 4 ++++
>>       1 file changed, 4 insertions(+)
>>
>>     diff --git a/package/utils/busybox/files/sysntpd
>>     b/package/utils/busybox/files/sysntpd
>>     index f73bb83..e61c9fc 100755
>>     --- a/package/utils/busybox/files/sysntpd
>>     +++ b/package/utils/busybox/files/sysntpd
>>     @@ -31,7 +31,11 @@ start_service() {
>>              for peer in $server; do
>>                      procd_append_param command -p $peer
>>              done
>>     +       touch /var/run/ntpd.pid
>>              procd_set_param respawn
>>     +       procd_add_jail sysntpd procfs sysfs log ubus
>>     +       procd_add_jail_mount "$HOTPLUG_SCRIPT" /etc/resolv.conf
>>     /tmp/resolv.conf /etc/hosts /etc/TZ
>>     +       procd_add_jail_mount_rw /var/run/ntpd.pid
>>              procd_close_instance
>>       }
>>
>>
>> Nice to see people jailing daemon.
>> I've added some feature to ujail recently but it lack proper documentation
>> https://dev.openwrt.org/changeset/47862/trunk
>>
>> Keep in mind that root inside the jail is the same as root outside it
>> (we don't use user namespace for now),
>> so sysntpd is still root and has access to /proc and /sys, so he can do
>> lots of things
>>
>> Can you try to add capabilities restrictions ?
>> procd_set_param capabilities <json file>
>> for the syntax see
>>
>> http://nbd.name/gitweb.cgi?p=luci2/procd.git;a=commit;h=51201235db9dad9fe1823d9de46ed90f5e160fd0
>>
>> maybe you can also add
>> procd_set_param no_new_privs 1
>> which prevent the process to gain new privileges (this disable suid ...)
>>
>> Etienne
>>
>>
diff mbox

Patch

diff --git a/package/utils/busybox/files/sysntpd b/package/utils/busybox/files/sysntpd
index f73bb83..e61c9fc 100755
--- a/package/utils/busybox/files/sysntpd
+++ b/package/utils/busybox/files/sysntpd
@@ -31,7 +31,11 @@  start_service() {
 	for peer in $server; do
 		procd_append_param command -p $peer
 	done
+	touch /var/run/ntpd.pid
 	procd_set_param respawn
+	procd_add_jail sysntpd procfs sysfs log ubus
+	procd_add_jail_mount "$HOTPLUG_SCRIPT" /etc/resolv.conf /tmp/resolv.conf /etc/hosts /etc/TZ
+	procd_add_jail_mount_rw /var/run/ntpd.pid
 	procd_close_instance
 }