On 5 June 2016 at 19:12, Kyle Sallee <kyle.sal...@gmail.com> wrote: > I would not normally respond, > however this request seems potentially similar > to my domain rules. > Domain automatic transition with program execution is disabled. > By a few domains ; various access levels are provided. > By writing to /sys/kernel/security/tomoyo/self_domain > a more restricted access domain can be selected. > However, for an embedded system, perhaps 2 domains would suffice?
This is what I'm trying to achieve: keep number of rules as minimal as possible. > Conceptually POSIX capabilities seem similar. > However, by Tomoyo rules adequate customization becomes possible. > Yet the following question seems solicited. > Could dropping some POSIX capabilities suffice? > Since I do not do that; I would not know. Not sure what you mean here. > Therefore, a potential Tomoyo solution will be discussed. > > By exception policy path_groups > for nearly each device node write access is individual provided. > However, for read access lines such as following two lines are used. > > path_group firm-read /dev/\*\-mapper/\* > path_group firm-read /dev/\*\-autofs\-btrfs-control\-dm\*\-hd\*\-kmem\-md > \*\-sd\*\-snapshot\-zram\* wow... how does this (second rule) work? is it everything in /dev/, except for autofs btrfs-control dm* hd* kmem md* sd* snapshot zram* am I guessing right? > In Roman Yeryomin's example the following line occurs. > > path_group ALMOST_ANY_FILE /\*/\*\-mtd\?\* > > At first something about that line looks odd. > But it looks okay. > More often rules contain /\{\*\}/ to match any directory depth. > When seeing /\*/ then a mistake is surmised. > But it seems adequate above. > > Would > path_group ALMOST_ANY_FILE /dev/\*\-mtd\* > suffice? > > Any device name which starts with mtd would be excluded. > Therefore, /dev/mtd15 and /dev/mtdr0 also would be excluded. > Do /dev/mtdr* devices become? > Should their content be hidden? Since there is only mtdX and mtdblockX using "/\*/\*\-mtd\?\*" is ok for me (I only wanted to exclude /proc/mtd from this match) But after I saw your rule above I think I can improve this. > Because a device node can be accessed by any process > mitigating /bin/dd only access might not suffice? > And only if within that domain the domain rules apply. > From bash for example: > read < /sys/kernel/security/tomoyo/self_domain; echo "$REPLY" > might be useful. > If the Tomoyo domain is added to the shell prompt > then that also can be useful. > > Even if the rules are tight, by the presence of a kernel command line > parameter > Tomoyo activation could be precluded, prevented, thwarted? > That may be worth consideration. > > To simply avert curious eyes, could device node deletion suffice? > > To all processes, except perhaps the hotplug process, > the ability to create device nodes can be denied. > For example, by a domain almost every action > except file mkblock and file mkchar can be approved. > That consideration might be prudent. > > # mknod /dev/alt-mtd0 b 90 0 > and the C equivalent mknod function are easily invoked. > > A hot plug implementation should be easy. > On an embedded system udev would not be used. > To write a hotplug program the following documentation may be useful. > > /usr/src/linux/Documentation/networking/netlink_mmap.txt > and > https://www.kernel.org/doc/pending/hotplug.txt > > However the hotplug.txt document is slightly old. > Therefore, by the kernel when hot plug events are reported > a bit more information such as MODALIAS= is provided. > > Using a netlink socket for handling hot plug events may be superior. > By the traditional method any environment variables could be set > and then /sbin/hotplug could be invoked. > Therefore, if the traditional method is used > a progenitor process ID check may be prudent. > Perhaps 0 or 1 would become? > Otherwise a hot plug event could be simulated. > Since the netlink socket method was used; > how to secure a traditional method is surmised and not tested. > > # ls -lah /sbin/hotplugd > -rwxr-xr-x 1 root root 7.0K May 27 16:38 /sbin/hotplugd > > # file /sbin/hotplugd > /sbin/hotplugd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), > dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux > 4.0.0, stripped > > To handle hot plug an incredibly large and complex program is not required. > > If uninterested in self coding: > by https://www.busybox.net/ > an excellent self decompressing embedded system tool kit is provided. > With uClibc; busybox can be statically linked. > A bootable glibc free embedded system is possible. > However, at least by me, uClibc statically linked tomoyo-tools has not been > attempted. > > Good luck with the embedded system design and implementation. I'm using OpenWrt as base, with busybox and musl, tomoyo-tools also work. > > On Sun, Jun 5, 2016 at 1:28 AM, Roman Yeryomin <leroi.li...@gmail.com> > wrote: >> >> Hello! >> >> I'm trying to build a minimal policy for my embedded system where all >> read/write requests to /dev/mtd* should be blocked except for several >> programs. > > _______________________________________________ tomoyo-users-en mailing list tomoyo-users-en@lists.osdn.me http://lists.osdn.me/mailman/listinfo/tomoyo-users-en