AWS WAF and AWS ShieldでWAFの設定をしてみる

求人
AWS WAF and AWS ShieldでWAFの設定をしてみる

AWSはWAFとかFirewallなども設定できるようです。ここではAWS WAFを設定してみたいと思います。

AWS WAF and AWS ShieldでWAFの設定をしてみる

「Go to AWS WAF」をクリックします。

ruleを作ろう

とりあえずruleを作ります。

AWS WAF and AWS ShieldでWAFの設定をしてみる

「Rules」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

「Create rule」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

5分間に許可される1つのIPアドレスからのリクエストは最低2000のようです。今回2000を設定しますが、5分間に2000以上リクエストがあればブロックされます。

「Create」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

これで、「Rate-based rule」が作成できました。

Web ACLsを作成する

AWS WAF and AWS ShieldでWAFの設定をしてみる

「Configure web ACL」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

「Next」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

「AWS resource to associate」はCloudFrontのDelivery MethodのIDを指定します。

「Next」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

AWS WAFだけあって、アプリケーション層のSQLインジェクションやクロスサイトスクリプティングなども防御できそうです。(多分)

が、今回は5分間に同一IPアドレスからの2000リクエスト以上をブロックしてくれるかを検証したいので、「Create condition」せずに、「Next」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

上記の設定にして、「Review and create」をクリックします。

AWS WAF and AWS ShieldでWAFの設定をしてみる

「Confirm and create」をクリックします。

これで設定完了です。

Apache Benchでリクエストを2000以上実行して検証する

ここはEC2にApacheインストールしてApache Benchを実行します。

結果はエラーでした。

ggrksということで、ググってみるとhttpsの場合はabコマンドのオプションに「-f SSL3」を付加するとのこと!

使い方は同じです。再度実行してみましょう。

結果は以下のとおりです。

SSL3.0が無効になっているので、これもまたエラーとなっています。汗

SSL3.0は脆弱性があるため、無効化するべきだそうです。参考サイト

ということでWindows版Apacheにabsコマンドがあるのでこのコマンドを使用します。使い方は同じです。

これでもエラーになるので、よく考えたら、SSLプロトコルにSSL3なんて指定していませんでした。

以下を実行します。

CloudFront + S3で構成している場合は、AWS WAFのダッシュボードにグラフが出力されますので確認してください。

403エラー確認方法

不正にDos・DDos攻撃されたとみなされたIPアドレス(今回は攻撃した私のIP)は表示されます。

AWS WAF and AWS ShieldでWAFの設定をしてみる

この状態でURLにアクセスすると、403エラーとなっているのがわかります。その他のIPからは通常通り表示されます。

1回curlでアクセスしたので、1回BlockされているのがWafのコンソールより確認できます。

AWS WAF and AWS ShieldでWAFの設定をしてみる

関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
Python3.6,Djangoを勉強中です,Javaは少し飽きてしまってます–;
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくば、我に七難八苦を与えたまえ」です^^

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA