今回は、ブログを開設して1ヶ月で、私のブログに攻撃された内容を話します。
私は、Macを主に販売する会社で15年システムエンジニアとして働いているので、その観点で書いていきます。
2022年4月1日からブログを初めて1ヶ月。仕事柄、顧客にセキュリティに関する重要性を話しますが、今回は私が実感したので、その想いを綴っていきます。
私は、仕事で、ルータやUTMといった、ネットワーク機器を設置することがあります。設置前、以前使用していたルータのログを確認することがあります。その際、あきらかに不信なIPアドレスからネットワークの入り口であるルータにリモート接続を試みているログを見ることがあり、インターネットにいるということは、いつもどこからかの攻撃に備えないといけないということを思い知らされます。

今回は、私が受けた攻撃とその種類、そして、対策方法について、自分なりに調べた結果を綴っていきます。
まずは、今回私が1ヶ月で受けた攻撃は、下記になります。

- ディレクトリトラバーサル
- ローカルファイルインクルード
- クロスサイトスクリプティング
- SQLインジェクション
1.ディレクトリトラバーサル
概要
ディレクトリトラーバサルは、ディレクトリ(フォルダ)をトラーバサル(横断する)をいう意味で、ディレクトリを横断して、サーバ上にあるファイル等を盗み出す攻撃です。
簡単に言うと、農家の畑から、野菜を盗むようなものです。

説明
例えば、「https://hajimenoit.com/mac-setup-os12/」というURLがあった場合、他にも「https://hajimenoit.com/XXXXXXX/」というURLもあるはずなので、そこに任意の項目を入れて、サーバの中の他のディレクトリにアクセスする手法になります。
当然ながら、通常のWebサーバ等は、どのような構造になっているかわからないので、上記「XXXXXXX」の部分を特定することは難しいですが、私が使用しているWordPressの場合は、ディレクトリ構造が一緒なので、それを加味してアクセスします。
上記、畑で例えると、ビニールハウスから、ここにも何かあるだろうと想像して、他のビニールハウスの野菜も盗むようなものです。
対策
WAFを導入する。
これが、私の最適解です。
WAFとは、Web Application Firewallの略で、Webアプリケーションの前面に配置する門番です。Webアプリケショーンは、FacebookやInstagra、Twitter等のWeb上のアプリケーションです。WAFは、そういったWeb上のアプリケーションの門番の役割で、不審なアクション、例えば家で例えると、警備員が不法侵入やサギ営業等から、守ってくれる機能です。

ITに詳しくない人にWAFを導入するのは難しいですが、私が使用しているレンタルサーバ「ConoHaWing」は、あらかじめその機能が備わっているので、ブログやホームページを初めて運営する人には是非オススメのサービスです。
2.ローカルファイルインクルード
概要
ファイルインクルードとは、ファイルが別のファイルを参照するブログラムの命令で、その命令を不正に使用され、本来参照するはずのファイルとは別のファイル、例えば、個人情報ファイル等を参照して不正に情報を盗み取る攻撃。
例えて言うと、ホテルのマスターキーを持っている泥棒が、客の部屋に入って、金品などを盗み取るようなものです。

説明
例えば、「https://hajimenoit.com/code1/」のURLに「code2」のファイルを参照するブログラムの命令があった場合、本来の「code2」のファイルではなく、「address」という別のファイルを読み込ませるよう命令を改ざんすることで、ブログのサーバに保存されている個人情報等をダウンロードしたりする攻撃。
対策
- サーバへログインするパスワードを強力にする(部屋の鍵を簡単に開かないものに変える)
- ウィルス対策を導入する(部屋の中に警備員を配置する)
- WAFを導入する(部屋の前にボディーガードを配置する)
- サーバのセキュリティパッチやアプリのバージョンを常に最新に保つ(定期的に部屋の鍵を変える)

3.クロスサイトスクリプティング
概要
クロスサイトスクリプティングは、ブログ等のWebアプリケーションの脆弱性を狙って、悪意のあるプログラムを埋め込み、ユーザの個人情報等を盗む攻撃です。
例えて言うと、家の壊れている窓から侵入して、家の中にある金品などを盗む行為です。

説明
例えば、第三者がブログのコメント欄に、ホームページを更新できるJavaScriptのコードを埋め込み、閲覧者がうっかり、そのボタンを押すと、amazonによく似たサイトに誘導し、個人情報等を盗んだりする攻撃です。
対策
・スクリプトの無害化(サニタイジング)
→サニタイジングとは、上記で記載したJavaScriptのコードをボタンに埋め込む場合、「<script>コード</script>」と記述します。これ以外にJavascriptのコードでは、「&(アンド)」「'(シングルクォーテーション)」「”(ダブルクォーテーション)」が使用されます。この「<」「>」「&」「’」「”」が入力された場合、JavaScriptのコードとは認識せず、そのまま文字列として表示(出力)するよう置換するよう設定することをサニタイジング言います。

・入力値の制限
→上記のようなコードを入力できないよう文字制限等を設定する。
・WAFを導入する
4.SQLインジェクション
概要
SQLの脆弱性を狙って、Webサイトに登録されている個人情報などを盗み取る攻撃。
例えていうと、金庫の不備を狙ってそこから金品を盗むようなものです。

説明
SQLとは、データベースから情報を操作することを言います。例えていうと、「本棚に並んでいる本から、作者があ行の本を別の棚にしまう」というのがSQLです。SQLインジェクションは、Webサイト(amazon、楽天市場、Facebook、Twitter等)に登録されている情報を、Webサイトの脆弱性を突いて盗み取る攻撃のことをいいます。

対策
1.エスケープ処理
→エスケープ処理とは、SQLで使用される「’(シングルクォーテーション)」等をそのまま使用するのではなく、別の文字として認識することで、悪意のあるSQLを実行させない処理です。つまり、あるものを他の違うものに変えて処理をすることです。

2.プレースホルダの使用
→プレースホルダとは、SQL文を無効化する機能です。例えば、検索ボックスにSQL文を入力して検索することで、SQL文を実行できます。そういった場合、SQL文で使用される文字列を他の文字列に変更してSQL文を変更できないようにします。要は、悪口をアラビア語等に変換して、日本人が理解できないようするようなものです。
上記のエスケープ処理とよく似ていますが、プレースホルダは、SQLに限定して、特定の文字を変換してSQLを実行させない処理を言います。
3.入力値の制限
4.WAFを導入する
まとめ
今回、私がブログ開設をしてから攻撃された手法について説明いたしました。全ての手法に対して有効な対策が「WAF」です。よって、これからブログやHPを開設する方は、「WAF」が標準機能として備わっているサーバを使用することをオススメします。
私がこのブログで使用している「ConoHa WING」は、「WAF」が標準装備されております。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!