Info: Version 1.8.x is available.

English Page

Last modified: $Date: 2024-03-30 11:25:00 +0000 (Sat, 30 Mar 2024) $

第4章:ポリシーのチューニング

このページでは、 TOMOYO Linux のポリシーをチューニングする方法について説明します。


ステップ1:ファイルのパス名をパターン化する

WWW サーバがアクセスするコンテンツのように、学習モードでは必ずしもアクセスされないファイルに対するアクセス許可を追加します。

修正前修正後
<kernel> /usr/sbin/httpd

allow_read /var/www/html/index.html
allow_read /var/www/html/blog/index.html
allow_read /var/www/html/blog/page1.html
allow_read /var/www/html/blog/page2.html
allow_read /var/www/html/blog/page3.html
allow_read /var/www/html/blog/image1.jpg
allow_read /var/www/html/blog/image2.jpg
<kernel> /usr/sbin/httpd

allow_read /var/www/html/\*.html
allow_read /var/www/html/\{\*\}/\*.html
allow_read /var/www/html/\{\*\}/\*.jpg




上記の指定は

path_group WEB-CONTENTS /var/www/html/\*.html
path_group WEB-CONTENTS /var/www/html/\{\*\}/\*.html
path_group WEB-CONTENTS /var/www/html/\{\*\}/\*.jpg

という path_group を例外ポリシーで定義しておくことにより、

<kernel> /usr/sbin/httpd

allow_read @WEB-CONTENTS

のように指定することもできます。


ステップ2:テンポラリファイルに対処する

テンポラリファイルのように毎回異なるファイル名を持つ場合や、クライアントプログラムが利用するテンポラリなポート番号については、学習モードと確認モードでは対処できません。ポリシーエディタのパターン化支援機能を用いて対話的に対処する必要があります。
ただし、テンポラリファイルのパス名をパターン化する処理は、以下のように非対話的に行うこともできます。

テンポラリファイルの可能性があるパス名を抽出します。

[root@tomoyo ~]# /usr/sbin/ccs-findtemp < /proc/ccs/domain_policy
/etc/mtab.tmp
/etc/mtab~
/etc/mtab~2302
/etc/mtab~2328
/etc/mtab~2329
/etc/mtab~2330
/etc/mtab~2331
/etc/mtab~2332
/etc/mtab~2339
/etc/mtab~2383
/halt
/selinux/disable
/selinux/enforce
/selinux/policyvers
/tmp/sh-thd-1163110572
/tmp/sh-thd-1163113704
/var/cache/samba/browse.dat.
/var/lib/nfs/etab.tmp
/var/lib/nfs/xtab.tmp
/var/lock/mrtg/mrtg_l

「 /etc/mtab~数値 」および「 /tmp/sh-thd-数値」がテンポラリファイルであると考えられるので、これらのパターン化を行います。まず、どのようにパターン化するかを決めます。この例では10進数数値であると考えられることから、1桁以上の10進数数値一致する \$ を使います。

例外ポリシーにパターンを追加します。

[root@tomoyo ~]# echo 'file_pattern /etc/mtab~\$' | /usr/sbin/ccs-loadpolicy -e
[root@tomoyo ~]# echo 'file_pattern /tmp/sh-thd-\$' | /usr/sbin/ccs-loadpolicy -e

ドメインポリシーの中の「 /etc/mtab~数値 」および「 /tmp/sh-thd-数値」を「 /etc/mtab~\$ 」および「 /tmp/sh-thd-\$ 」に置換します。

[root@tomoyo ~]# /usr/sbin/ccs-savepolicy -d | /usr/sbin/ccs-patternize '/etc/mtab~\$' '/tmp/sh-thd-\$' | /usr/sbin/ccs-loadpolicy -d

ステップ3:数値パラメータをパターン化する

ファイル作成時のパーミッションやネットワークに関するアクセス許可のポート番号のような数値で指定するパラメータのパターン化を行います。
以下の例では、 /usr/sbin/httpd に対してポート 1024 ~ 65535 からの接続要求を許可しています。

修正前修正後
<kernel> /usr/sbin/httpd

allow_network TCP accept 0:0:0:0:0:ffff:c0a8:801 3810
allow_network TCP accept 0:0:0:0:0:ffff:c0a8:801 3829
allow_network TCP accept 0:0:0:0:0:ffff:c0a8:801 3829
<kernel> /usr/sbin/httpd

allow_network TCP accept 0:0:0:0:0:ffff:c0a8:801 1024-65535


上記の指定は

number_group WEB-CLIENT-PORTS 1024-65535

という number_group を例外ポリシーで定義しておくことにより、

<kernel> /usr/sbin/httpd

allow_network TCP accept 0:0:0:0:0:ffff:c0a8:801 @WEB-CLIENT-PORTS

のように指定することもできます。


ステップ4:ネットワークのアドレスをパターン化する

同様にIPアドレスについてもパターン化を行います。以下の設定をそのままコピーしないようにしてください。

修正前修正後
<kernel> /usr/sbin/httpd

allow_network TCP accept 0:0:0:0:0:0:0:1 @WEB-CLIENT-PORTS
allow_network TCP accept 0:0:0:0:0:ffff:a00:1 @WEB-CLIENT-PORTS
allow_network TCP accept 0:0:0:0:0:ffff:a00:a1 @WEB-CLIENT-PORTS
allow_network TCP accept 10.0.0.10 @WEB-CLIENT-PORTS
allow_network TCP accept 10.0.0.200 @WEB-CLIENT-PORTS
<kernel> /usr/sbin/httpd

allow_network TCP accept 0:0:0:0:0:0:0:1 @WEB-CLIENT-PORTS
allow_network TCP accept 0:0:0:0:0:ffff:a00:1-0:0:0:0:0:ffff:a00:ff @WEB-CLIENT-PORTS
allow_network TCP accept 10.0.0.1-10.0.0.255 @WEB-CLIENT-PORTS


上記の指定は

address_group WEB-CLIENT-ADDRESS 0:0:0:0:0:0:0:1
address_group WEB-CLIENT-ADDRESS 0:0:0:0:0:ffff:a00:1-0:0:0:0:0:ffff:a00:ff
address_group WEB-CLIENT-ADDRESS 10.0.0.1-10.0.0.255

という address_group を例外ポリシーで定義しておくことにより、

<kernel> /usr/sbin/httpd

allow_network TCP accept @WEB-CLIENT-ADDRESS @WEB-CLIENT-PORTS

のように指定することができます。


ステップ5:アクセス許可に条件を付与(省略可)

個々のアクセス許可に対して必要に応じて条件を付けることができます。これにより、システムアカウントのユーザIDに基づくアクセス制御が可能です。

例外ポリシーで以下のように path_group が定義されていると仮定します。

path_group HOME-FTP-FILE /home/\*/ftp/\*
path_group HOME-FTP-FILE /home/\*/ftp/\*/\*
path_group HOME-FTP-FILE /home/\*/ftp/\*/\*/\*
path_group HOME-FTP-FILE /home/\*/ftp/\*/\*/\*/\*
path_group HOME-FTP-DIR /home/\*/ftp/\*/
path_group HOME-FTP-DIR /home/\*/ftp/\*/\*/
path_group HOME-FTP-DIR /home/\*/ftp/\*/\*/\*/
path_group HOME-SMB-FILE /home/\*/samba/\*
path_group HOME-SMB-FILE /home/\*/samba/\*/\*
path_group HOME-SMB-FILE /home/\*/samba/\*/\*/\*
path_group HOME-SMB-FILE /home/\*/samba/\*/\*/\*/\*
path_group HOME-SMB-DIR /home/\*/samba/\*/
path_group HOME-SMB-DIR /home/\*/samba/\*/\*/
path_group HOME-SMB-DIR /home/\*/samba/\*/\*/\*/

匿名ではない FTP サーバを保護する場合、以下のように条件を付けることで、当該ユーザのホームディレクトリ以外へのアクセスを禁止することができるようになります。ホームディレクトリ以下全部を FTP でアクセス可能にすることは、侵入された場合に被害が大きくなるため、自分のホームディレクトリにある ftp ディレクトリ以下だけのアクセスを認めます。 vsftpd を用いる場合、例えば以下のように許可を与えます。

修正前修正後
<kernel> /usr/sbin/vsftpd

allow_read/write @HOME-FTP-FILE
allow_mkdir @HOME-FTP-DIR 0755
allow_rmdir @HOME-FTP-DIR
allow_create @HOME-FTP-FILE 0644
allow_truncate @HOME-FTP-FILE
allow_unlink @HOME-FTP-FILE
allow_rename @HOME-FTP-FILE @HOME-FTP-FILE
allow_rename @HOME-FTP-DIR @HOME-FTP-DIR
<kernel> /usr/sbin/vsftpd

allow_read/write @HOME-FTP-FILE if task.uid=path1.uid
allow_mkdir @HOME-FTP-DIR 0755 if task.uid=path1.parent.uid
allow_rmdir @HOME-FTP-DIR if task.uid=path1.uid
allow_create @HOME-FTP-FILE 0644 if task.uid=path1.parent.uid
allow_truncate @HOME-FTP-FILE if task.uid=path1.uid
allow_unlink @HOME-FTP-FILE if task.uid=path1.uid
allow_rename @HOME-FTP-FILE @HOME-FTP-FILE if task.uid=path1.parent.uid task.uid=path2.parent.uid
allow_rename @HOME-FTP-DIR @HOME-FTP-DIR if task.uid=path1.parent.uid task.uid=path2.parent.uid

Samba サーバを保護する場合、以下のように条件を付けることで、当該ユーザのホームディレクトリ以外へのアクセスを禁止することができるようになります。ホームディレクトリ以下全部を Samba でアクセス可能にすることは、侵入された場合に被害が大きくなるため、自分のホームディレクトリにある samba ディレクトリ以下だけのアクセスを認めます。

修正前修正後
<kernel> /usr/sbin/smbd

allow_read/write @HOME-SMB-FILE
allow_mkdir @HOME-SMB-DIR 0755
allow_rmdir @HOME-SMB-DIR
allow_create @HOME-SMB-FILE 0644
allow_truncate @HOME-SMB-FILE
allow_unlink @HOME-SMB-FILE
allow_rename @HOME-SMB-FILE @HOME-SMB-FILE
allow_rename @HOME-SMB-DIR @HOME-SMB-DIR
<kernel> /usr/sbin/smbd

allow_read/write @HOME-SMB-FILE if task.euid=path1.uid
allow_mkdir @HOME-SMB-DIR 0755 if task.euid=path1.parent.uid
allow_rmdir @HOME-SMB-DIR if task.euid=path1.uid
allow_create @HOME-SMB-FILE 0644 if task.euid=path1.parent.uid
allow_truncate @HOME-SMB-FILE if task.euid=path1.uid
allow_unlink @HOME-SMB-FILE if task.euid=path1.uid
allow_rename @HOME-SMB-FILE @HOME-SMB-FILE if task.euid=path1.parent.uid task.euid=path2.parent.uid
allow_rename @HOME-SMB-DIR @HOME-SMB-DIR if task.euid=path1.parent.uid task.euid=path2.parent.uid

SSH サーバを保護する場合、以下のように条件を付けることで、 root ユーザとしてログインすることを禁止できます。

修正前修正後
<kernel> /usr/sbin/sshd

allow_execute /bin/bash if exec.realpath="/bin/bash" exec.argv[0]="-bash"
<kernel> /usr/sbin/sshd

allow_execute /bin/bash if exec.realpath="/bin/bash" exec.argv[0]="-bash" task.uid!=0 task.euid!=0

その他にも様々な条件を指定することができます。詳しくは条件付きアクセス許可の指定を参照ください。

もしアクセスログの設定を第2章: TOMOYO Linux の初期化で行っていた場合は、アクセスログを ccs-sortpolicy に通す前に convert-audit-log に通すことにより、条件付きのアクセス許可を生成することができます。ただし、このようにして生成されたアクセス許可は厳密すぎて使えない(例えばプロセスIDやiノード番号などは毎回変わるため、指定しない方が良い)ので、必要に応じて条件を緩めてから利用してください。

# grep -A 3 -F 'profile=2 mode=permissive' /var/log/tomoyo/reject_log.conf | /usr/lib/ccs/convert-audit-log | /usr/sbin/ccs-sortpolicy
<kernel> /usr/sbin/httpd

allow_network TCP accept 0:0:0:0:0:ffff:c0a8:801 1507 if task.pid=3039 task.ppid=3034 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler

<kernel> /usr/sbin/httpd /bin/sh

allow_execute /usr/bin/id if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"

<kernel> /usr/sbin/httpd /bin/sh /usr/bin/id

allow_env LANG if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_env LANGUAGE if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_env PATH if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_env PWD if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_env SHLVL if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_env TERM if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_env _ if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=603159 path1.major=8 path1.minor=1 path1.perm=0755 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589834 path1.parent.perm=0755 exec.realpath="/usr/bin/id" exec.argc=1 exec.envc=7 exec.argv[0]="id" exec.envp["TERM"]="linux" exec.envp["PATH"]="/sbin:/usr/sbin:/bin:/usr/bin" exec.envp["PWD"]="/usr/share/horde/admin" exec.envp["LANG"]="en_US.UTF-8" exec.envp["SHLVL"]="3" exec.envp["LANGUAGE"]="en_US.UTF-8" exec.envp["_"]="/usr/bin/id"
allow_read /etc/group if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=330196 path1.major=8 path1.minor=1 path1.perm=0644 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=327681 path1.parent.perm=0755
allow_read /etc/nsswitch.conf if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=329303 path1.major=8 path1.minor=1 path1.perm=0644 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=327681 path1.parent.perm=0755
allow_read /etc/passwd if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=330197 path1.major=8 path1.minor=1 path1.perm=0644 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=327681 path1.parent.perm=0755
allow_read /etc/selinux/config if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=328251 path1.major=8 path1.minor=1 path1.perm=0644 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=327965 path1.parent.perm=0755
allow_read /proc/filesystems if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=4026531844 path1.major=0 path1.minor=3 path1.perm=0444 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=1 path1.parent.perm=0555
allow_read /selinux/mls if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=12 path1.major=0 path1.minor=15 path1.perm=0444 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=463 path1.parent.perm=0755
allow_read /usr/lib/locale/locale-archive if task.pid=4641 task.ppid=4637 task.uid=48 task.gid=48 task.euid=48 task.egid=48 task.suid=48 task.sgid=48 task.fsuid=48 task.fsgid=48 task.state[0]=0 task.state[1]=0 task.state[2]=0 task.type!=execute_handler path1.uid=0 path1.gid=0 path1.ino=605586 path1.major=8 path1.minor=1 path1.perm=0644 path1.type=file path1.parent.uid=0 path1.parent.gid=0 path1.parent.ino=589842 path1.parent.perm=0755

目次へ戻る

sflogo.php