• Japanese

共用作業領域向けバーチャルウェブホスティングサービスについて

概要

共用作業領域名を仮想ホスト名として利用できるバーチャルウェブホスティングサービスです。

URLhttps://仮想ホスト名.sfc.keio.ac.jp/

Webページを設置するには

  • 指定の公開用ディレクトリに公開したいファイルをサーバ上のエディタ(Emacs,viなど)で編集するかSFTPソフトウェアを使ってアップロードします。
    
    アップロード先サーバwebedit.sfc.keio.ac.jp
    公開用ディレクトリ(アップロード先)/pub/WWW/仮想ホスト名/
    ユーザ名CNSログイン名
    パスワードCNSログインパスワード

CGI/PHP について

CGIの動作仕様

項目 説明
CGIの実行ユーザ CGIスクリプトのファイルオーナー
CGIスクリプトの保護モード確認 group および other に書き込み権限がないこと
CGIスクリプトがあるディレクトリの保護モード確認 other に書き込み権限がないこと

PHPの動作仕様

項目 説明
PHPバージョン 8.2系
PHP動作モード CGI + suPHP
PHPの実行ユーザ other に書き込み権限がないこと
PHPスクリプトの保護モード確認 group および other に書き込み権限がないこと
PHPスクリプトがあるディレクトリの保護モード確認 other に書き込み権限がないこと

注意事項

管理グループについて

  • 管理グループメンバー内でファイルやディレクトリ操作を行えるようにするためには、ファイルやディレクトリのグループに対して書き込み権限を設定してください。
  • ただし、group もしくは other に write を許可している実行ファイルは、CGI/PHPによる実行をすることはできませんのでご注意ください。
  • CGI/PHPの実行ファイルをコピーして共用作業領域内に設置する際には、ファイルの所有者の権限(ファイルコピーを実施した利用者の権限)で動作することになります。実行ファイルの内容を良く確認した上で、コピーを実施してください。

共用作業領域向けWebサーバでのホームディレクトリマウント

  • 共用作業領域向けWebサーバでは、各利用者のホームディレクトリはマウントしていません。
  • したがって、共用作業領域向けWebサーバを通してホームディレクトリ以下のデータを参照することはできません。

CGI/PHP の実行ファイルの保護モード

  • CGI/PHPの実行ファイルは次の保護モードとすることをお勧めします。
    • 必要に応じて group に対する read 権限を追加して設定してください。
      種別 保護モード
      CGI 700 or 740
      PHP 600 or 640
      CGI/PHPを格納するディレクトリ 701 or 771
  • CMSなどのインストール時には自動的に上記の設定とはなりません。
    • インストール後に各自保護モードの変更をお願いします。
  • CMSによっては、画像ファイルのアップロードディレクトリを Webサーバの実行ユーザである www から読み出せるようにしておく必要がある場合があります。

テンポラリファイルの使用について

  • テンポラリファイルを再利用したい場合は各領域の指定されたディレクトリ以下に作成してください。

WikiやBlogの設置について

  • 設置後も定期的に配布元を確認し、脆弱性が発見された時は速やかにバージョンアップするなどしてください。
  • 特にトラックバックスパムやコメントスパムはサーバ資源を浪費し、共用作業領域全体に影響が及びますので対策を確実に行なってください。

Return-Pathの設定

  • CGIなどからsendmail によりメール送信を行なう場合は、エラーメールの返送先である Return-Path: を設定してください。
    • perlでの例
      • $from にはエラーメールの送信先のメールアドレスを指定します。
        $from = 'z00000tk@sfc.keio.ac.jp'
        open(MAIL,/usr/sbin/sendmail -f $from -t $to)
        
    • PHPでの例
      • PHPスクリプト内で mb_send_mail()関数を使用してメール送信を行なう場合は、エラーメールの宛先である Return-Path: を設定してください。 5番目の引数として、-fのあとに続けてメールアドレスを書きます。
        mb_send_mail($to,$subject,$msg,$from,"-fz00000tk@sfc.keio.ac.jp"); 
        

PHPでのfopen()に使用について

  • fopenする対象のファイルポインタの参照先が存在することを確認するようにコーディングしてください。

PHPのセーフモードについて

  • セーフモード は PHP 5.4 以降で機能が削除されており、新サーバでは設定していません。共用作業領域以外へのアクセスについては PHP の open_basedir で制限しています。アクセスを許可しているディレクトリは下記の通りです
    /usr/bin, /usr/local/bin, /tmp
    

メール

  • メールプログラムのパスは /usr/sbin/sendmail です。

利用するソフトウェアについて

  • 利用するソフトウェアの利用規約を確認し、ライセンス違反にならないようご注意ください。
  • 例えば、Movable Type のバージョン6以降はオープンソースソフトウェアではなくなっており、個人無償版をCNSの個人領域・共用作業領域で利用することはできません。

データベースの連携について

概要

  • 仮想ホスト名を用いたWWW空間提供サービスからデータベースが利用できるようになりました。
  • PostgreSQL と MySQL が利用可能です。

利用方法

データベース情報

データベースサーバ名webpubdb.sfc.keio.ac.jp
接続ポートPostgreSQL5432
MySQL3306
  • データベースに接続できるのはwebedit.sfc.keio.ac.jpからのみです。

接続方法

  • PostgreSQL
    • 例1: webeditでcommandでPostgreSQLに接続する
      webedit% psql -h webpubdb -U PostgreSQL用ユーザ名 -W -d データベース名
      
    • 例2: PHPでPostgreSQLに接続する
      $con = pg_connect("host=webpubdb.sfc.keio.ac.jp port=5432 dbname=DB名 user=DBユーザ名 password=DBパスワード");
  • MySQL
    • 例1: webedit でcommandで MySQL に接続する
      webedit% mysql -h webpubdb -u MySQL用ユーザ名 -p
      
    • 例2: PHPでMySQLに接続する
      $con = mysql_connect("webpubdb:3306","DBユーザ名","DBパスワード");

常時SSL化について【2019年6月提供開始】

以下のページをご覧ください。

共用作業領域Webサイトの常時SSL化について

応用

アクセス制限

1. パスワードによる制限(Digest認証)

  • https://仮想ホスト名.sfc.keio.ac.jp/secret/ というディレクトリ内のコンテンツをパスワードが知っている人のみアクセスできるようにします。Digest認証はBasic認証よりも安全性の高い仕組みです。
  1. webedit.sfc.keio.ac.jp にリモートログインします。
    リモートログインの方法については リモートログインについて をご覧ください。
  2. パスワードファイル用ディレクトリ(secdir)を作成し、アクセス権を変更します。
    % cd /pub/WWW/仮想ホスト名
    % mkdir secdir
    % chmod o-r secdir
    
  3. パスワードファイルを作成します。ここにアクセスできるユーザ名は taro とし、領域名をsecret 1としています。
    % htdigest -c /pub/WWW/仮想ホスト名/secdir/.htdigest "secret 1" taro
    New password:  (パスワードを入力する)
    Re-type new password: (再度パスワードを入力する)
    Adding password for user taro
    
  4. /pub/WWW/仮想ホスト名/secret/ に次のような内容のファイルを .htaccess という名前で設置します。AuthNameにはパスワードファイルを作成した時の領域名を指定して一致させます。
    AuthName "secret 1"
    AuthType Digest
    AuthUserFile /pub/WWW/仮想ホスト名/secdir/.htdigest
    require user taro
    
  5. ブラウザで https://仮想ホスト名.sfc.keio.ac.jp/secret/ を開くとユーザ名とパスワードの入力を促すダイアログが表示されます。

2. パスワードによる制限(Basic認証)

  • https://仮想ホスト名.sfc.keio.ac.jp/secret/ というディレクトリ内のコンテンツをパスワードが知っている人のみアクセスできるようにします。
  1. webedit.sfc.keio.ac.jp にリモートログインします。
    リモートログインの方法については リモートログインについて をご覧ください。
  2. パスワードファイル用ディレクトリ(secdir)を作成し、アクセス権を変更します。
    % cd /pub/WWW/仮想ホスト名
    % mkdir secdir
    % chmod o-r secdir
    
  3. パスワードファイルを作成します。ここにアクセスできるユーザ名は taro としています。
    % htpasswd -c /pub/WWW/仮想ホスト名/secdir/.htpasswd taro
    New password:  (パスワードを入力する)
    Re-type new password: (再度パスワードを入力する)
    Adding password for user taro
    
  4. /pub/WWW/仮想ホスト名/secret/ に次のような内容のファイルを .htaccess という名前で設置します。
    AuthUserFile /pub/WWW/仮想ホスト名/secdir/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Members Only"
    AuthType Basic
    require user taro
    
  5. ブラウザで https://仮想ホスト名.sfc.keio.ac.jp/secret/ を開くとユーザ名とパスワードの入力を促すダイアログが表示されます。

3. 指定したホスト/IPアドレスで制限

  • 制限したいコンテンツを保存しているディレクトリに以下を書いた .htaccess というファイルを設置します。
    • 例1: 特定のホストとSFC内からのアクセスのみ許可 (IPアドレスの場合)
      order deny,allow
      deny from all
      allow from hoge.example.com
      allow from 133.27.0.0/16
      
    • 例2: SFC内からのアクセスのみ許可。(サーバの処理が増えるため例1のIPアドレスでの制限を推奨)
      order deny,allow
      deny from all
      allow from .sfc.keio.ac.jp
      

1.と3.の組み合わせ

AuthDigestFile /pub/WWW/仮想ホスト名/secdir/.htdigest
AuthName "secret 1"
AuthType Digest
order deny,allow
deny from all
require user himitsu
allow from 133.27.0.0/16
Satisfy any

2.と3.の組み合わせ

AuthUserFile /pub/WWW/仮想ホスト名/secdir/.htpasswd
AuthName "Members Only"
AuthType Basic
order deny,allow
deny from all
require user himitsu
allow from 133.27.0.0/16
Satisfy any

サーバ仕様


OS構成
OS Ubuntu 20.04 LTS
CGI利用可能言語
Perl, Ruby, PHP, Python, C/C++*1
実行パス
Perl 5.30.0 /usr/local/bin/perl
Ruby 3.2.2 /usr/local/bin/ruby
Python 3.8系 /usr/local/bin/python
PHP 8.2系 + suPHP CGI: /usr/local/bin/php5
C/C++ 9.4.0 /usr/local/bin/gcc
sendmail /usr/sbin/sendmail
nkf /usr/local/bin/nkf
利用可能データベース
PostgreSQL, MySQL
HTTPサーバ仕様
HTTPサーバ Apache 2.4.41
セキュリティ CGI/SSI: SuEXEC有効
PHP: suPHP有効

変更履歴


2024年5月8日 OSをUbuntu 20.04 LTSに更新しました
2020年3月16日 OSをUbuntu 18.04 LTSに更新しました
2014年8月6日 運用開始
*1 webedit でコンパイルしてください

最終更新日: 2024年5月8日

内容はここまでです。