世界中でCMSサイトのハッキングが頻発している昨今。WordPressサイトへのブルート・フォース・アタックによる侵入が問題になってますね(ユーザー名「admin」のWordPressサイトが狙われている!←詳細はこちら)。
私の管理しているサイトでも、WordPressではなくjoomla!のものですが、ちょっと前に不正侵入がされました。
joomla!が最新バージョンじゃなかったんですね。で、セキュリティーホールから侵入されてしまったんです。調べると.htaccessがいじられていたので、慌ててサイト全体を消去し、不正侵入されたと思われる時期以前のバックアップデーからサイトを作り直しましたわ。
新サイトに移行し、消す予定だった古いサイトなので大きな被害は出なかったんですが、簡単に侵入されたもんで、今まで以上にセキュリティーに気を使う様になりました。
そこで今日の本題、「WAF」なんですね。
「WAF」とは何か?と言えば、Webアプリケーションのぜい弱性を突く攻撃に対からサイトを防御するための仕組みで、Web Application Firewallの略です。
悪意ある攻撃者からサイトを守る仕組みとしては、「ファイアーウォール(Firewall)」とか「IDS/IPS」などが広く使われているんですが、これらでは、最近のCMSサイトへの攻撃には対処出来ないんですよね。
最近のWebサイトへの攻撃は、SQLインジェクション(サイトへのリクエストにデータベースへの命令をくっつけて送り、データベースを不正操作するやつ)やクロスサイトスクリプティング(フォームや検索から不正なスクリプトをサイトに挿入し、なりすましメールを送ったりも出来るやつ)といった、サイトのWebアプリの脆弱性を突いたものが多くなっているんですね。
ちょっとややこしくなるんですが、ネットワークの基本でよく言われるOSI参照モデルの、サイトを置いているサーバのコンピュータ部分のみ切り出して、外部のネットワークから攻撃を受けた時、どの層でどう防ぐのかを図にしてみました。
「ファイアーウォール(Firewall)」の場合、送られてきた通信データパケットの、ネットワーク層とトランスポート層をチェックします。送信元IPアドレスや宛先のIPアドレス、(使うmailサーバやhttpサーバの)ポート番号をチェックし、許可されていない通信データは遮断する事で、不正アクセスから保護します。
「IDS/IPS」は、パケットのネットワーク層からアプリケーション層までチェックするんですが、攻撃の特徴などをデータベース化したものをを元に検知(IDS)して、管理者へ通知し、通信の遮断やパケットの破棄を行い、攻撃を防御(IPS)します。
SQLインジェクションやクロスサイトスクリプティングなどは、通信としては普通のアクセスと同じですから、これらの防御方法ではチェックできず、すり抜けてサイトへアクセスされてしまいます。
「WAF(Wab Application Firewall)」はこれらとは違い、Webアプリケーションとクライアントが行うやり取りを監視します。Webアプリケーションに送られてくる入力内容などを直接チェックし、不正な要求を遮断してしまう仕組みになっています。
ですから、SQLインジェクションやクロスサイトスクリプティングなどにも対処できるんですね。
(詳しい情報はこちら→ Wab Application Firewall読本 – 独立行政法人 情報処理推進機構)
これは、サーバーを管理・運営しているものにとって、とても助かる安心機能です。
私の管理しているサイトは、ロリポップ!とheteml(ヘテムル)を使っているものが多いんですが、昨年後半位から順次、WAFが無料で装備される様になりました。
もちろん、喜んで、すぐに使い始めました。
設定も簡単に出来、不正アクセスが有った場合、簡単なログチェックもできます。
ロリポップ!の場合、「ユーザー専用ページ」に入り、左の項目一覧から「Webツール」をクリックし、現れた項目から「WAF設定」をクリックすると設定ページに進めます。
ログチェックは、「WAF設定」ページに表示された各ドメインの「ログ参照」ボタンをクリックします。
heteml(ヘテムル)の場合、「コントロールパネル」に入り、右の項目一覧の「ウェブ関連」>「WAF設定」をクリックします。
サーバに設定している「ヘテムルドメイン」「独自ドメイン」の一覧が表示されますから、目的のドメインの「詳細をみる」ボタンをクリックします。
「サブドメイン」の一覧が表示されます。
各サブドメインの「WAF設定」ボタンをクリックすると、「WAF設定」の「ON」「OFF」ができます。
各サブドメインの「ログ参照」をクリックすると、「WAF検知ログ」を確認できます。
heteml(ヘテムル)の「WAF検知ログ」はロリポップ!のものより詳細で、「URL-Path」や「拒否理由」も表示されます。
しかし、喜んび、すぐに使い始めたのはいいんですが、ここでまた困った事が起きたんですね。
XMLパーサを使い、外部ファイルを解析して表示させていたものが、使えなくなったんですよ。
WordPressにplugin化してインストールしていたんですが、何も表示しなくなったんです。
エラーメッセージを表示させると、「403」。
英語で”Forbidden” 日本語で「禁止」って事ですか。
XMLパーサを使い、外部ファイルを解析して表示するのが、「WAF」に不正アクセスと判断されたんですね。
「WAF」にホワイトリスト(これは安全だからチェックしなくてよしとするリスト)が使えたらいいんですけど、そこまで出来ないのが残念です。
せっかく「WAF」が使える様になったので、ちょっと面倒な方法ですが、外部ファイルの解析は別の方法に切り替えました。