早間義博
yossi****@yedo*****
2011年 11月 20日 (日) 11:41:59 JST
早間です。 詳しく、説明していただき感謝しています。 見えないところでの働きが、思わぬ結果を招くようです。 要約は事実を歪めるので好きではありませんが <kernel>のアクセス制御が (profile)・kernel・mount方法 によって予期しない動きになりうる、 一般的には profile を 0 (Disabled Mode) で運用するのが安全である とは言えるのですね。 -- 早間 > 早間義博さんは書きました: > > ネットワークファイルシステムを経由しているものは <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 と 同様の結果が観測できることでしょう。 > > _______________________________________________ > tomoyo-users mailing list > tomoy****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/tomoyo-users >