- Home
- » よくある質問(FAQ)
- » 技術情報
- » サーバーのロックダウンについての参考情報
※本ページは、メーカーサイトのWebページや資料を部分的に抜粋して紹介していますが、参考情報としてのご紹介であり、内容の正確さや最新さ、推奨を保証するものではありません。また、本ページの内容とオリジナルのメーカーサイトのWebページ・資料との間に齟齬や矛盾があった場合は、オリジナルのメーカーサイトのWebページ・資料の情報を優先して下さい。
アドビでは、ColdFusion セキュリティ ページに概要が記載されているセキュリティ構成設定を適用するとともに、該当するロックダウンガイドを確認することを推奨しています。
ロックガイドダウン(PDF)は英語のみの提供されています。日本語については、ダウンロードしたPDFを「google翻訳」のドキュメント翻訳などを使用して自動翻訳するなどが参考になると思います
https://translate.google.co.jp/?hl=ja&sl=en&tl=ja&op=docs
記事中の「サーバー自動ロックダウン」インストーラーについては、強力なセキュリティ設定をインストール・ウィザード形式でステップで行っていける半面、「ColdFusionの実行ユーザー」の変更や「ファイルシステムのアクセス許可の変更によりwebルート以下の書き込みの制限」、「Webサーバー設定」の変更など、既存の運用に影響を生じることが考えられます。そのため、実稼働環境に導入する前に、すべての推奨事項を分離されたテスト環境でテストすることが強く推奨されています。
「サーバーの自動ロックダウン」
https://helpx.adobe.com/jp/coldfusion/using/server-lockdown.html
以下の設定は、手動でロックダウンの設定を行う際に、優先して行っておくべき事項となります。(注:設定を行ったからといってUpdateを当てなくて良い訳では決してありません。あくまでも未知なる脆弱性に対して備えておくべき事項となります。※※すでにそのシステムへの侵入が行われた場合など既知の問題に対しては下記の設定だけでは不十分です※※)
- IIS/Apache の設定で、「CFIDE」のアクセスを遮断する
- cf_scriptsの新しいエイリアスを構成し、さらに、IIS/Apache の設定で「cf_scripts」のアクセスを遮断する
- リクエストフィルタリングを設定して、過去に問題の生じた「クエリ文字列」をブロックする
- 運用するアプリケーションに応じてIP制限などを行う
- JVMをサポートする最新のリビジョンに更新する
- その他
- IIS/Apache の設定で、「CFIDE」のアクセスを遮断する
- ColdFusion 2016以降、デフォルトで内部Webサーバー(既定ポート:8500)からのアクセスのみに制限していますが、IIS/Apacheの設定を追加することで、それらの制限が回避(バイパス)された場合の備えとなります。
- (参考)ColFusion 2023 Lockdown Guide 38ページ
- IIS の場合、「インターネット インフォメーション サービス(IIS)マネージャー」の『要求フィルタ』機能を使用します
- IISの「ノード(左メニュー一番上のサーバーをクリック)」→「IIS」の「要求フィルター」をクリックします
- [URL]タブを選択し、右側の「操作」から『拒否するシーケンス』をクリックします
- 「URLシーケンス」に『CFIDE』と入力します
(デフォルトでは大文字小文字は区別されないようです。何らかの設定や追加コンポーネントで大文字小文字を区別している場合は、大文字小文字を区別しないように設定してください)
2023/8/24追記 それまでの記載方法ではブロックできないパターンの報告がされていたため、パターンを変更しました
- 動作を確認します。
- Apacheの場合、「httpd.conf(設定を別ファイルに分離している場合は該当サイトの設定ファイル)」に『RedirectMatch』を追加します
- RedirectMatch 404 (?i).*CFIDE.*
2023/8/24追記 それまでの記載方法ではブロックできないパターンの報告がされていたため、パターンを変更しました
- 大文字と小文字を区別しない(?i)を付けるのを忘れないでください。
- Apacheを再起動して設定を反映させて動作を確認してください
- その他 WAF でアクセスを制御できるのであれば、CFIDE(大文字小文字を区別しない)を含むアクセスをブロックしてください
- cf_scriptsの新しいエイリアスを構成し、さらに、IIS/Apache の設定で「cf_scripts」のアクセスを遮断する
2023/8/24追記 それまでの記載方法ではブロックできないパターンの報告がされていたため、パターンを変更しました
- cf_scripts内には cfform用のJavaScript や ajaxパーツが置かれ、その中には.cfmや.cfcファイルが含まれます。これらのライブラリのパスをデフォルトから変更しておくことで、URLを決め打ちしたアクセスを回避し、それら.cfmや.cfcの不要なアクセスを起こりにくくします(デフォルトのURLを遮断するだけなので、攻撃者が変更後のパスを確認できた場合は防ぐことができません)。
- (参考)ColFusion 2023 Lockdown Guide 20ページ、他
- まず、cf_scriptsのcf_scriptsの仮想ディレクトリ・エイリアスを変更します。変更方法は、別FAQ記事にて紹介していますので、そちらに沿って作業を行ってください(一見してColdFusionだ(cf_scriptsだ)と分からない仮想ディレクトリ・エイリアスに変更してください)
- 変更作業が終わったら、IIS/Apache の設定で、「cf_scripts」のアクセスを遮断します。遮断方法は、1.の「CFIDE」のアクセスの遮断と同じです
- 作業を終える前に、アクセスを遮断してしまうと、cf_scripts内のファイルを使用する機能で障害が発生しますのでa.の作業を終えてから行ってください。
- 障害が発生する機能については、ColdFusion 2023 Lockdown Guide のP.59に一覧があります
- こちらも、WAF でアクセスを制御できるのであれば、cf_scripts(大文字小文字を区別しない)を含むアクセスをブロックしてください
- リクエストフィルタリングを設定して、過去に問題の生じたクエリ文字列「_cfclient」をブロックする
- 2023年3月のUpdateでの問題として、非公式な情報ですがIIS/Apacheに特定のクエリ文字列をブロックすることをブログで紹介されています(あまり検索に引っかからないようここでは詳細は記載しません)。
- IISの場合は、「要求フィルタ」の『クエリ文字列』に拒否するクエリ文字列を追加します
- さらに追加で、特定のコマンドをファイアウォールでブロックするなどの紹介もあるようです(こちらでは未確認ですが blocking the Windows ________ command (一部伏せ字)のリンク先を確認してください)
- Apacheの場合は、RewriteCond・RewriteRule で拒否するクエリ文字列を追加します
- 運用するアプリケーションに対し、必要に応じてIP制限を行ってください。
- 例えば、ColdFusion AdministratorへのアクセスもIP制限を行います。ColdFusionをインストールする際「ColdFusion サーバープロファイルを選択」で『許可されるIPアドレス』にIPアドレスを指定するか、あるいは、後からAdministratorの「セキュリティ > 使用できる IP アドレス」で、『ColdFusion Administrator および ColdFusion Internal Directories にアクセスするために使用できる IP アドレス』にIPアドレスを指定して、それ以外からのAdministratorへのログインをブロックします。
- 運用中のアプリケーションにおいても、例えば、「portal」と「admin」とのフォルダがあり、管理者用の機能が「admin」にある場合は、「admin」フォルダに対してWebサーバー(IIS/Apache)側でIP制限を追加することで、管理者用の機能へのアクセスをブロックします。
- JVMをサポートする最新のリビジョンに更新する
- ColdFusionは Java側の脆弱性を含む問題には対応できません。またUpdateではJVMは更新されません。そのため、サポートする最新のリビジョンへの更新は、Updateとは別に作業を行ってください。
- 以下の、FAQを確認してください
- その他
- 大丈夫だとは思いますが、開発用Webサーバーのポート(既定8500ポート)を外部からアクセス可能な状態にしていないかを確認してください。開発用Webサーバーのポートは外部からアクセスさせないようにしてください。
- せっかく、上記1.や2.でIIS/Apache経由のリクエストを制限しても、開発用Webサーバーのポートが開いていて外部からアクセス可能な状態になっていると意味がありません。
- そのサーバーにすでに不審なバックドアファイルなどが設置されていないかを確認してください。怪しいファイルがあったときはそのファイルをWebルート外の違う場所に移動してください。
- Webサーバー(IIS/Apache)のWebルート内以外に、[cf_root]/{インスタンス(cfusion他)}/wwwroot 内も調べてください
- CFIDEフォルダ、cf_scriptsフォルダ(いずれもサブディレクトリも含む)など、あらかじめ設置されているファイル・フォルダも同様に調べてください
- 別の環境に評価版のColdFusionを入れて同じUpdateを適用し、ファイルの比較をするなども行ってください。
- ColdFusionにはOSの実行ファイルを起動するcfexecuteタグもあります。すでにバックドアを仕掛けられていると、cfexecuteタグを利用してwebルート外に置かれたファイルも実行される恐れがありますので、怪しいファイルがあったときはファイルを違う場所(違うサーバー等)に移動してください
- IIS/Apacheのアクセスログや、coldfusionのcoldfusion-out.log、coldfusion-error.log、exception.logなどに見慣れないアクセスやエラーメッセージが無いかを確認してください
- 攻撃手段によっては、わざとエラーを起こすことで、渡されてきた悪意のあるデータや実行プログラムを処理させる、または、ログファイル等に書き出させることが考えられます。
- ログファイルをデフォルトの場所に置き続けない
- ログファイルは定期的(メンテナンス等でColdFusionを停止する際など)に違う場所に移動してください。特に見慣れない情報が書き込まれている場合は、ColdFusionをとめて、ログファイルを別の場所に移動してください
- ログファイルに書き込まれる情報は、エラーが発生した際などにユーザーから送信される値も含まれる場合があるためです。
- IIS/Apacheを経由した.cfcファイルへのアクセスが無い場合は、IIS/Apacheの設定で.cfc拡張子のリクエストをブロックする
- .cfcファイルを外部からリクエストしている場合(例えば、SOAP、REST呼び出しや、URLで.cfcファイルとメソッドをリモートから呼び出す、cfajax等のCFCをJavaScriptから呼び出している場合など)は、この設定を行うと、それらサービスが実行できなくなりますので、.cfc拡張子のリクエストはブロックしないでください。
- そのサーバーに不要なソフトウェアが含まれている場合は、それをアンインストールすることを検討してください
- 例えば、データベースへの接続でType4ドライバを使用していれば、データベースクライアントをそのサーバーにインストールしなくて済む場合があります。万が一システムに不正にアクセスされた場合、データベースクライアントのダンプツール等で情報が取得される恐れがあります。
- データソースに指定するDBへの接続ユーザーに不要な権限はつけている場合、適切な権限に制限することも検討してください
- ColdFusionのプログラムが送り込まれた場合にそのデータソースを利用して多くのデータが取得される恐れが出てきます。不要なDBコマンドが実行されないように権限等が設定されていれば、その障害が軽減できます。
- Webルート内のファイル・フォルダの書き込みを制限することを検討してください
- 自動ロックダウンツールを使用することで、Webルート以下のフォルダへのファイルの書き込みが制限されます。これで、予期しない攻撃コードを含むファイルを設置を防ぐこともできます。
- 制限を行うには、ColdFusionのプロセスに実行ユーザーを設定する必要が出てきます。また、運用するシステムでWebルート内の任意の場所にファイルを書き込むことを想定している場合は、その場所は書き込みを許可するなどが必要となります。また、ColdFusion AdministratorからのUpdate適用が行えず、手動でのUpdateに限定されることも考えられます。これらはテスト環境にて十分に影響がないことを事前に確認する必要があります。