Tetsuo Handa
from-****@I-lov*****
2011年 11月 20日 (日) 10:46:14 JST
早間義博さんは書きました: > ネットワークファイルシステムを経由しているものは <kernel> ドメイン > でアクセスを拒否できるのですか。 <kernel> ドメインで観測できるファイルシステムであれば、 <kernel> ドメインでアクセスを拒否することができます。 > 別の言い方で、ネットワークファイルシステムを経由しているファイルへ > のアクセスは次のいずれでしょう。 > (1) <kernel> ドメインでのアクセス許可とアクセスするドメインの双方 > (AND)の許可が必要 今回の環境の場合には (1) です。 ただし、以下のように (1) 〜 (3) ではなく (4) アクセスするドメインで双方 (AND)の許可が必要 になる場合もあります。 以下のようにマウントされた Ubuntu 10.04 LiveCD (カーネル 2.6.32 ) # cat /proc/mounts rootfs / rootfs rw 0 0 none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 none /proc proc rw,nosuid,nodev,noexec,relatime 0 0 none /dev devtmpfs rw,relatime,size=507908k,nr_inodes=126977,mode=755 0 0 none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 /dev/sr0 /cdrom iso9660 ro,noatime 0 0 /dev/loop0 /rofs squashfs ro,noatime 0 0 tmpfs /cow tmpfs rw,noatime,mode=755 0 0 aufs / aufs rw,noatime,si=c3ed868a 0 0 none /sys/fs/fuse/connections fusectl rw,relatime 0 0 none /sys/kernel/debug debugfs rw,relatime 0 0 none /sys/kernel/security securityfs rw,relatime 0 0 none /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev,relatime 0 0 none /var/run tmpfs rw,nosuid,relatime,mode=755 0 0 none /var/lock tmpfs rw,nosuid,nodev,noexec,relatime 0 0 none /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0 binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0 none /var/log/tomoyo tmpfs rw,relatime,size=65536k 0 0 gvfs-fuse-daemon /home/ubuntu/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=999,group_id=999 0 0 で /bin/ls を実行すると、 TOMOYO 2.2 では <kernel> /sbin/init /usr/sbin/sshd /usr/sbin/sshd /bin/bash /bin/ls use_profile 1 allow_read /etc/ld.so.cache allow_read /rofs/etc/ld.so.cache allow_read /lib/tls/i686/cmov/librt-2.11.1.so allow_read /rofs/lib/tls/i686/cmov/librt-2.11.1.so allow_read /lib/libselinux.so.1 allow_read /rofs/lib/libselinux.so.1 allow_read /lib/libacl.so.1.1.0 allow_read /rofs/lib/libacl.so.1.1.0 allow_read /lib/tls/i686/cmov/libc-2.11.1.so allow_read /rofs/lib/tls/i686/cmov/libc-2.11.1.so allow_read /lib/tls/i686/cmov/libpthread-2.11.1.so allow_read /rofs/lib/tls/i686/cmov/libpthread-2.11.1.so allow_read /lib/tls/i686/cmov/libdl-2.11.1.so allow_read /rofs/lib/tls/i686/cmov/libdl-2.11.1.so allow_read /lib/libattr.so.1.1.0 allow_read /rofs/lib/libattr.so.1.1.0 allow_read /proc/filesystems allow_read /etc/locale.alias allow_read /rofs/etc/locale.alias allow_read /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION allow_read /cow/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION allow_read /usr/lib/gconv/gconv-modules.cache allow_read /rofs/usr/lib/gconv/gconv-modules.cache allow_read /usr/lib/locale/en_US.utf8/LC_MEASUREMENT allow_read /cow/usr/lib/locale/en_US.utf8/LC_MEASUREMENT allow_read /usr/lib/locale/en_US.utf8/LC_TELEPHONE allow_read /cow/usr/lib/locale/en_US.utf8/LC_TELEPHONE allow_read /usr/lib/locale/en_US.utf8/LC_ADDRESS allow_read /cow/usr/lib/locale/en_US.utf8/LC_ADDRESS allow_read /usr/lib/locale/en_US.utf8/LC_NAME allow_read /cow/usr/lib/locale/en_US.utf8/LC_NAME allow_read /usr/lib/locale/en_US.utf8/LC_PAPER allow_read /cow/usr/lib/locale/en_US.utf8/LC_PAPER allow_read /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES allow_read /cow/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES allow_read /usr/lib/locale/en_US.utf8/LC_MONETARY allow_read /cow/usr/lib/locale/en_US.utf8/LC_MONETARY allow_read /usr/lib/locale/en_US.utf8/LC_COLLATE allow_read /cow/usr/lib/locale/en_US.utf8/LC_COLLATE allow_read /usr/lib/locale/en_US.utf8/LC_TIME allow_read /cow/usr/lib/locale/en_US.utf8/LC_TIME allow_read /usr/lib/locale/en_US.utf8/LC_NUMERIC allow_read /cow/usr/lib/locale/en_US.utf8/LC_NUMERIC allow_read /usr/lib/locale/en_US.utf8/LC_CTYPE allow_read /cow/usr/lib/locale/en_US.utf8/LC_CTYPE のように、 /bin/ls が要求していない /rofs/ や /cow/ などへの open 要求も観測されています。それに対して TOMOYO 1.8 では <kernel> /sbin/init /usr/sbin/sshd /usr/sbin/sshd /bin/bash /bin/ls use_profile 1 use_group 0 misc env TERM misc env SHELL misc env XDG_SESSION_COOKIE misc env SSH_CLIENT misc env SSH_TTY misc env USER misc env LS_COLORS misc env MAIL misc env PATH misc env PWD misc env LANG misc env SPEECHD_PORT misc env SHLVL misc env HOME misc env LOGNAME misc env SSH_CONNECTION misc env LESSOPEN misc env LESSCLOSE misc env RUNNING_UNDER_GDM misc env _ file read/getattr proc:/filesystems file read/getattr /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION file read/getattr /usr/lib/locale/en_US.utf8/LC_MEASUREMENT file read/getattr /usr/lib/locale/en_US.utf8/LC_TELEPHONE file read/getattr /usr/lib/locale/en_US.utf8/LC_ADDRESS file read/getattr /usr/lib/locale/en_US.utf8/LC_NAME file read/getattr /usr/lib/locale/en_US.utf8/LC_PAPER file read/getattr /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES file read/getattr /usr/lib/locale/en_US.utf8/LC_MONETARY file read/getattr /usr/lib/locale/en_US.utf8/LC_COLLATE file read/getattr /usr/lib/locale/en_US.utf8/LC_TIME file read/getattr /usr/lib/locale/en_US.utf8/LC_NUMERIC file read/getattr /usr/lib/locale/en_US.utf8/LC_CTYPE file ioctl devpts:/1 0x5413 file ioctl devpts:/1 0x540F file read /lib/ld-2.11.1.so file read/getattr /etc/ld.so.cache file getattr squashfs:/etc/ld.so.cache file read/getattr /lib/tls/i686/cmov/librt-2.11.1.so file getattr squashfs:/lib/tls/i686/cmov/librt-2.11.1.so file read/getattr /lib/libselinux.so.1 file getattr squashfs:/lib/libselinux.so.1 file read/getattr /lib/libacl.so.1.1.0 file getattr squashfs:/lib/libacl.so.1.1.0 file read/getattr /lib/tls/i686/cmov/libc-2.11.1.so file getattr squashfs:/lib/tls/i686/cmov/libc-2.11.1.so file read/getattr /lib/tls/i686/cmov/libpthread-2.11.1.so file getattr squashfs:/lib/tls/i686/cmov/libpthread-2.11.1.so file read/getattr /lib/tls/i686/cmov/libdl-2.11.1.so file getattr squashfs:/lib/tls/i686/cmov/libdl-2.11.1.so file read/getattr /lib/libattr.so.1.1.0 file getattr squashfs:/lib/libattr.so.1.1.0 file read/getattr /etc/locale.alias file getattr squashfs:/etc/locale.alias file getattr /cow/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION file read/getattr /usr/lib/gconv/gconv-modules.cache file getattr squashfs:/usr/lib/gconv/gconv-modules.cache file getattr /cow/usr/lib/locale/en_US.utf8/LC_MEASUREMENT file getattr /cow/usr/lib/locale/en_US.utf8/LC_TELEPHONE file getattr /cow/usr/lib/locale/en_US.utf8/LC_ADDRESS file getattr /cow/usr/lib/locale/en_US.utf8/LC_NAME file getattr /cow/usr/lib/locale/en_US.utf8/LC_PAPER file read/getattr /usr/lib/locale/en_US.utf8/LC_MESSAGES/ file getattr /cow/usr/lib/locale/en_US.utf8/LC_MESSAGES/ file getattr /cow/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES file getattr /cow/usr/lib/locale/en_US.utf8/LC_MONETARY file getattr /cow/usr/lib/locale/en_US.utf8/LC_COLLATE file getattr /cow/usr/lib/locale/en_US.utf8/LC_TIME file getattr /cow/usr/lib/locale/en_US.utf8/LC_NUMERIC file getattr /cow/usr/lib/locale/en_US.utf8/LC_CTYPE file ioctl devpts:/1 0x5401 file read /root/ のように、 /bin/ls が要求していない /rofs/ や /cow/ などへの open 要求は観測されていません。これは、 LSM フックは /bin/ls が open を要求した場合だけでなくファイルシステムの 都合により open が要求された場合にも呼ばれているためです。 なお、 TOMOYO 1.x でもカーネル 2.6.33 からは open のフックを LSM フック内に追加するようになったため、 Ubuntu 11.10 などで 実験すると TOMOYO 2.x と 同様の結果が観測できることでしょう。