F5 Rules for AWS WAF Common Vulnerabilities and Exposures (CVE)を利用して脆弱性を突くアクセスをブロック

2018.10.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちはコカコーラ大好きカジです。 今回はAWS WAF Managed Ruleに追加されたF5のCVEルールを利用して、脆弱性攻撃のアクセスをブロックしてみたいと思います。

AWS WAF マネージドルールって何?

下記をご確認下さい。

【新機能】AWS WAFマネージドルールを使ってWordPressに対する攻撃を防いでみた

F5 Rules for AWS WAF - Common Vulnerabilities and Exposures とは?

F5 Rule for AWS WAFは、よくある脆弱性と暴露 (CVE) から保護してくれます。次のシステムをターゲットとするよく知られた CVE に対する保護をします: Apache、Apache Struts、Bash、Elasticsearch、IIS、JBoss、JSP、Java、Joomla、MySQL、Node.js、PHP、PHPMyAdmin、Perl、Ruby On Rails、WordPress

料金

料金は各マーケットプレイスのページをご確認下さい。2018/10/23 現在

AWS Marketplace: F5 Rules for AWS WAF - Common Vulnerabilities and Exposures (CVE)

  • 1ヶ月あたり1リージョン毎 $20 (1時間毎で分割して計算)
  • 100万リクエストあたり1リージョン毎 $1.2

導入手順

マネージドルールのSubscribe

マネージドルールはMarketplaceで公開されているものをSubscribeして利用します。

ACLの作成と適用

事前に保護対象のCloudfrontを作成してあります。 Web ACLsの画面から「Configure web ACL」で作成します。名前やターゲット等を設定して「Next」を押します。

コンディションの作成画面は何も必要無いのでそのまま「Next」を押します。

ルールを選択するところで「Subscribe rules」から先程登録したマネージドルールを選択して「Add rule to web ACL」を押します。

マネージドルールを追加するとActionが「No override」がデフォルトで選択されていますのでそのままにします。 ちなみに通常のルールだと「Allow, Count, Block」が選択できますが、現状では「No override」でBlockと同じような動き、「Override to count」でCountと同じような動きになります。

Default actionはルールに引っかからない場合の動作なので「Allow ...」を選択して、「Review and create」を押します。

確認画面が出るので「Confirm and Create」を押してACLの作成を完了します。

これでACLが作成され、保護対象に適用されました。

CVE Protection Rules テスト

Blockされる通信の実施

curlを使ってShellshockを突くアクセスを実施します。 AWS WAF はF5 RuleにマッチしたためブロックされてHTTP ステータスコード 403 (Forbidden) を返します。

テストコマンド

curl -H "User-Agent: () { :; }; /bin/cat /etc/passwd" <AWS WAFで保護しているURL>

実施結果の例

$ curl -H "User-Agent: () { :; }; /bin/cat /etc/passwd" http://hogehoge.info
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>403 ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
Request blocked.

<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: d0Md0ltIVPBjc3gAxYobKDGW0pCt60a0WIc_EgZ1rnjWtkVSL6Zcow==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>
$

AWS WAF サンプルログの確認

ブロックされていることが確認できます。

その他参考情報

AWS WAF ログ保存

AWS WAFのログをFirehoseでS3に出力しブロックログをS3Selectで確認してみた

他のF5のAWS WAFマネージドルール

F5 Bot Detection Signatures For AWS WAFを利用してWebサーバーストレスツールのアクセスをブロック

【機能追加】F5のAWS WAFマネージドルールがリリースされたのでXSS/SQLiを検知してみた

AWS WAF Managed Ruleを停止する場合

AWS WAF Managed Ruleにおけるサブスクリプションのキャンセル手順のブログを参照ください。

まとめ

公開サーバを運用していると、外部からの不正アクセスは日常的にありますよね。 不要なアクセスをマネージドルールでフィルタしていきましょう。