cf_scriptsの仮想ディレクトリ・エイリアスを変更する

ColdFusion 2016以降、Webサーバーとの接続設定を行った際、デフォルトで cf_scripts というフォルダ名の仮想ディレクトリ/エイリアスが生成されます。名前が固定化されているためデフォルトの状態では、悪意のあるユーザーからcf_scripts フォルダ内のJavaScriptなどのファイルへのアクセスを試みられる場合があります。

セキュリティ性を高めるため、以下に紹介する手順に沿ってcf_scripts の仮想ディレクトリ(エイリアス)を変更し、安易にアクセスされないようにする事が推奨されています。

ColdFusion 2018 では 5. の手順を行わないとAdministrator のアクセスに支障が生じることを確認しています。ColdFusion の再起動が必要となりますので、本番環境で変更を行われる際は、変更するタイミングに注意してください。


[手順](今回の例は、ColdFusion2021 の cf_scripts を app_scripts246 に変更します)

2021.10.14 更新(補足)
ColdFusion 2021 Update 2~4では、この記事で紹介した仮想ディレクトリの設定方法では、起動時にajaxパッケージの起動に問題が発生し「ajaxパッケージが見つからない」エラーが発生していました。この問題に該当する場合は、以下のように『仮想ディレクトリ』と『デフォルト ScriptSrcディレクトリ』のパスを変更して設定してください。
①仮想ディレクトリのパスを変更します
(変更前)
 仮想パス app_scripts246 に対して→ 物理パス[cf_root]/cfusion/wwwroot/cf_scripts
(変更後)
 仮想パス app_scripts246 に対して→ 物理パス[cf_root]/cfusion/wwwroot/cf_scripts/scripts
②「サーバーの設定 > 設定」の『デフォルト ScriptSrcディレクトリ』を変更します
(変更前)
 /app_scripts246/scripts/
(変更後)
 /app_scripts246/

  1. Web サーバーの (IIS)仮想ディレクトリを追加、(Apache)エイリアスを変更します
    • IIS では、既存のcf_scripts を削除して仮想ディレクトリを追加するか、cf_scripts を変更します。エイリアスは「app_scripts246」、物理パスは[cf_root]/cfusion/wwwroot/cf_scripts(例:C:\ColdFusion2021\cfusion\wwwroot\cf_scripts)にします
    • Apacheでは、コネクタ追加時に追加された設定ファイルのエイリアスを変更します。コネクタ追加時に httpd.conf の末尾に追加されたmod_jk_vhost.conf ファイルのパスを確認します
      • 【例】/etc/httpd/conf/httpd.conf 内
        ...
        Include "/etc/httpd/conf/mod_jk.conf"
        Include "/opt/Coldfusion2021/config/wsconfig/1/mod_jk_vhost.conf" ←こちらのファイル

        mod_jk_vhost.conf ファイルをエディタやvi 等で開き、cf_scripts エイリアスを変更します。さらにディレクトリの一覧を非表示にする(→参考FAQ)ため「Options Indexes FollowSymLinks」からIndexesを削除します。

        【例】
        Alias /app_scripts246 "/opt/ColdFusion2021/cfusion/wwwroot/cf_scripts"
        <Directory "/opt/ColdFusion2021/cfusion/wwwroot/cf_scripts">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
        </Directory>
  2. ColdFusion Administrator にログインし、「サーバーの設定 > 設定」の『デフォルト ScriptSrcディレクトリ』のパスを/app_scripts246/scripts/に変更します

     
  3. [変更の送信]ボタンを押して変更を反映します。この変更によって、ColdFusion 2018 の Administrator へのアクセスに支障が生じます。これは、『デフォルト ScriptSrc ディレクトリ』のパスの変更の影響が、内部Web サーバーで動作するAdministrator にもするためです(ColdFusion 2021も同様ですが、エラーは回避されている模様です)。
    そのため、2. のパスを変更した後、続いてserver.xml ファイルを変更します
     
  4. ColdFusionを停止します
     
  5. [cf_root]/cfusion/runtime/conf/server.xml ファイルをエディタやvi等で開き以下の設定を行います。
    1. <Context ...> ~ </Context> に付けられているコメントを外します
    2. <Context ...> のdocBase とWorkDir の「<cf_home>」を ”ColdFusion2021 のインストール先の
      パスとインスタンス名(デフォルト cfusion)” に変更します
      • <Context path="" docBase="/opt/ColdFusion2021/cfusion/wwwroot"
          WorkDir="/opt/ColdFusion2021/cfusion/runtime/conf/Catalina/localhost/tmp">
    3. 2つある<PreResources ...> の、1つ目の base とwebAppMount に” 対象のパス” と” 仮想ディレクトリ” の名前を
      指定します
      <PreResources base="/opt/ColdFusion2021/cfusion/wwwroot/cf_scripts"
        className="org.apache.catalina.webresources.DirResourceSet"
        webAppMount="/app_scripts246"/>
    4. 2つ目のPreResources は不要のため削除します
       
  6. server.xml を保存し、ColdFusion を再び起動します

    ColdFusionの起動に失敗した場合は、server.xmlファイルの変更内容に誤りがあります(XML形式で作成されているので間違った指定などをしていると構文が正しく解釈できなくなります)
    ・タグの前後に不要な全角スペースなどが入っていないか
    ・"の閉じ忘れ、>の閉じ忘れなどがないか
    などを確認してください。元の状態に戻したい場合は、とりあえず<Context ...> ~ </Context> をカットするか、再びコメントアウトして、ColdFusionが起動できるようになるかを確認してください

  7. Web サーバーに変更を反映させます
    • IIS の再起動は必要ありませんが、cf_scripts の仮想ディレクトリが残っていないことを確認します
    • Apache の場合は、変更したエイリアスを反映するためApache を再起動してください
       
  8. 変更が反映されたかを確認してください。Administartor にログインして正常にページが遷移で
    きるかを確認します。
    • ColdFusion 2018で手順5.を行わずにログインすると、虫眼鏡の検索アイコンが画面手前
      に表示され、先に進めることができなくなります。
    • 変更の確認が分かり辛いのですが、ブラウザの「デベロッパーツール」や「検証」で、『ネットワーク』タブでリクエストされたURLの一覧が表示されますので、そこで javascriptファイルなどのリクエストが app_scripts246になっていることや、404エラーではなく200 OK になっていることを確認してください


※さらにセキュリティを高めるために、IIS / Apache の設定で /cf_scripts/ に対するアクセスの拒否も行ってください(/cf_scripts/ フォルダ内に、いくつかの.cfm ファイルが存在するためです)。

(参考FAQ)サーバーのロックダウンについての参考情報
https://cfassociates.samuraiz.co.jp/index.cfm/faq/cftech/cf-lockdown/

 


記事公開日:2021年09月07日
最終更新日:2023年10月24日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.