WAFとは何か具体的に何をやっているのか見てみた!

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約8分で読めます。
広告

私のブログはお名前.com レンタルサーバーを使っています。
WAFが検知して防いだログが見れます。
WAFについて調べたのでまとめました。
内容に関しては私の勘違いもあると思うのでご了承ください。

広告

WAFとはBingに聞いた

Bingに聞いた文章です。
まず、WAFとは「Web Application Firewall」の略で、Webアプリケーションへの不正なサイバー攻撃を防ぐために開発された専用防御ツールのことです。例えば、SQLインジェクションという攻撃では、ユーザーからの入力をそのままデータベースに渡すことで、データベースの内容を書き換えたり盗み出したりすることができます。また、クロスサイトスクリプティング(XSS)という攻撃では、ユーザーからの入力をそのままWebページに表示することで、悪意のあるスクリプトを実行させたり、ユーザーの情報を奪ったりすることができます。これらの攻撃は、Webアプリケーションの脆弱性を突いたものであり、一般的なファイアウォールやIPS/IDSでは防ぐことができません。そこで登場するのがWAFです。WAFはWebアプリケーションの前面やネットワークに配置して、不正なリクエストやレスポンスを検出・遮断することで、脆弱性を悪用した攻撃を低減する対策です。WAFはWebアプリケーション内に直接実装するものではなく、別途導入するものです。WAFには大きく分けて3種類あります。ハードウェア型WAF、ソフトウェア型WAF、クラウド型WAF。

読んでもよくわかりませんが一言でまとめると
ユーザーからのアクセス内容を見てwordpressなどに渡すか止めるかしているものだと思います。

具体例でWAFの役目を解説

WordPressの管理画面で設定を変更したとき保存できないときがある。
その場合は自分のアクセスが攻撃とみなされブロックされています。
サイトシールをブログに貼るためウィジェットで追加して保存しようとしたとき
WAFをOFFにしないと保存できませんでした。(詳細は下記記事)

検知ログを見ると攻撃元IPアドレスが私のIPアドレスになっていました。
(「自分IPアドレス」で検索すると調べられるサイトが出てきます。)

保存操作をしたときのHTTPリクエストをブラウザ側で確認してみました。
やり方はedgeの場合どこかで右クリック→「開発者ツールで調査する」→ネットワークタブ→Ø(ネットワークログのクリア)した状態で該当処理をすると見れます。
下はそのHTTPリクエストを右クリックしてfetch(Javascriptのコマンド)でコピーしたものです。
やっていることは赤色のURLに本文の内容をリクエストしてます。(送りつけています)

fetch("https://kikuichige.com/wp-admin/admin-ajax.php", {
  "headers": {
略
    "x-requested-with": "XMLHttpRequest"
  },
  "referrer": "https://kikuichige.com/wp-admin/widgets.php",
  "referrerPolicy": "strict-origin-when-cross-origin",
  "body": "本文 略ここのコードが攻撃とみなされた",
  "method": "POST",
  "mode": "cors",
  "credentials": "include"
}); 
ということでWordPressのウィジェットで保存した操作が以下に該当すると判断されました。
攻撃対象URL「http://kikuichige.com/wp-admin/admin-ajax.php」
攻撃内容「クロスサイトスクリプティング(イベントハンドラ追加9)からの防御(oncontextmenu=...)」
恐らくカスタムHTMLに貼り付けたサイトシールのコード(リクエストの本文)には
Javascriptの<script>タグがあるので、
その中に書かれている処理が攻撃と判断されたと思います。

ちなみにこんなhtmlだとWAFをOFFにしなくても保存できます。
<a id="abc">テスト</a>
この部分が本文(body)になるが、この場合は攻撃とはみなされないようです。

このようにアプリケーションに送られてきたHTTPリクエストの本文等を監視し
WordPressなどのアプリケーションに渡るのをブロックするのがWAFの役目です。
目次へ

ブロックされた例

攻撃検知ログの他の例も見てみます。

お名前.com ネットde診断実施中のログ

すごい数の攻撃されていると思ったら、お名前.com ネットde診断実施したときだった。
診断のために疑似的に攻撃されたのがブロックされていたようです。
12/11/2023 16:19:11から3分で200件ぐらいブロックされていた。
下は、その中の抜粋です。

12/11/2023 16:22:56	http://kikuichige.com/..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5cwindows%5cwin.ini	124.110.208.112	トラバーサルの試みの可能性(/./,/../等)

12/11/2023 16:22:53	http://kikuichige.com/file/filedl.php?file=/../../../../../../../../../../../../../../../../windows/win.ini	124.110.208.112	ディレクトリトラバーサルからの防御1(../../)
12/11/2023 16:21:53	http://kikuichige.com/wp-config.php%7e	124.110.208.112	意図しないファイルの公開の可能性(~)
ちなみに%5cというのは\のことです。
変換して書くとhttp://kikuichige.com/files/filedl.php?file=/..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\windows\win.ini
%になっているurlはURLエンコード(パーセントエンコーディング) されています。
詳しくは以下記事

WAFが入ってないと上のディレクトリトラバーサル(メカニズムはわからないが相対パスを利用した怪しいリクエスト)のような攻撃は素通りになるということです。
無料で使えるシンクラウド for Freeで不正アクセスされたのも、こういう攻撃だったのかも。

【シンクラウド for Free】「お客様のサーバーアカウントにおける不正なアクセスの検知および制限の実施について」というメールが来たので調べた
無料で使えるシンクラウド for Free、無料でここまで使わせていただけるのもありがたいです。しかしセキュリティについては自分で注意しないといけません。有料のシンレンタルサーバー にはWAF設定があるので完全に安全ではなくても全然違うと思

普段よく残っている攻撃

攻撃検知ログを見ていると以下のようなものが多かった。

11/14/2023 20:25:00	http://kikuichige.com/wp-config.php.orig	94.20.53.45	意図しないファイルの公開の可能性(.org)
11/03/2023 07:59:21	http://kikuichige.com/wp-config.conf	79.231.181.89	意図しないファイルの公開の可能性(.conf)

「意図しないファイルの公開の可能性(.org)」とは具体的に分からないが単純に、
そこにアクセスしているだけかもしれない。
そうならパーミッション設定(後述)で、その他は読み込めないようにすればいいが、
そのせいで正常動作しなくなる可能性もある。
そんなときWAFが「攻撃的なリクエスト」をブロックしてくれる。
何をもって「攻撃的なリクエスト」なのかは、
たくさんの実際の被害状況をもとにWAFのプログラムが作られていると思うが、
「必要なリクエスト」と「攻撃的なリクエスト」の判別は、そもそも不可能です。
なので動作がおかしいことがあったら、ログを見てIPが自分のだとか、
そういうことを判断材料に対応するしかないと思います。

また自分のブログにアクセスし、全部表示されるまでにどこにアクセスしているか
ブラウザの検証ツール、ネットワークタブで要求URLを確認すると
大体以下の2つのディレクトリの下しか見に行ってません。

https://kikuichige.com/wp-content
https://kikuichige.com/wp-includes

上に載せた攻撃対象URLのhttp://kikuichige.com/wp-config.confなんて
普通にブログを閲覧するときに 見に行くはずはないので完全に怪しいアクセスです。
しかも自分以外のIPとなればなおさらです。
目次へ

パーミッション

パーミッションの権限設定が、あまりしっくり理解できていなかった。
ユーザー(所有者)、グループ、その他が何を意味するのか?
この記事を読んで疑問点が解決しました。その他=Webサーバーソフトウェア(Apache)なのか!
Webサーバーのパーミッションの設定〜ユーザー権限の考え方
まだ、その他(Webサーバーソフトウェア)の「書き込み」「実行」のイメージが湧かないがだいぶすっきりしました。
その他=Apacheに限定された話ではなく、
その他に該当するのはphpのプログラムとかもそうだと思われるので、
「書き込み」「実行」に関してはその辺が対象か?

まとめ

WAFのログの見方を知っているとWordPressで動作がおかしかったとき、
WAFがリクエストを止めておかしくなっていないか確認できるようになります。
目次へ
イチゲをOFUSEで応援する(御質問でもOKです)Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)

コメント

タイトルとURLをコピーしました