泥棒は「玄関の鍵」だけを見ているわけじゃない!Webサーバーログから読み解く攻撃の予兆
こんにちは!セキュリティの世界へようこそ。
皆さんは「家を守る」と言われたら何を思い浮かべますか?頑丈な玄関ドアや、窓の補助錠を想像しますよね。でも、プロの泥棒はもっと巧妙です。誰も見ていない裏口の勝手口を調べたり、郵便受けから中の様子を伺ったりして、じわじわと侵入のチャンスを探っています。
Webサーバーもこれと全く同じです。今回は、サーバーという「家」に近づく怪しい影を、ログという「防犯カメラの映像」から見つけ出す方法を、一緒に学んでいきましょう!
—
そもそも「ログ」って何?
Webサーバーのログは、お店の「入店記録」のようなものです。
「誰が」「いつ」「どのページに」「どんな方法で」来たのかが全て記録されています。
通常のお客さんは、正面玄関(トップページ)から入って、商品棚(商品ページ)を見ますよね。でも、泥棒は違います。いきなり屋根裏の点検口を探したり、無理やり鍵穴に針金を突っ込んで「開かないかな?」と試したりします。
ログを眺めていると、そんな「普通じゃない動き」が浮かび上がってくるんです。
—
狙われやすい「怪しい動き」の正体
攻撃者がよく使う手口には、大きく分けて2つのパターンがあります。
1. SQLインジェクション(家の合鍵を勝手に作る)
データベース(顧客リストなどが保管されている場所)に対して、わざと変な命令を送って「合鍵」を作らせようとする手法です。
例えば、ユーザー名を入力する欄に ' OR '1'='1 なんていう文字列を入れるのが有名です。これは「誰でもいいから通して!」と叫んでいるようなものですね。
2. ディレクトリトラバーサル(勝手口から侵入して家の図面を盗む)
本来見せてはいけないサーバーの裏側のファイル(パスワード設定ファイルなど)を、URLを細工して覗き見ようとする手法です。../../etc/passwd のように、階層を遡るような文字列が特徴です。
—
防犯カメラ(SIEM)の設定と「検知ルール」
さて、ここからが本題です。SIEM(シーム:ログを一括管理して分析するツール)を使って、これらの泥棒を自動で見つけるための「ルール」を作ってみましょう。
ログの中に、以下のような特徴がないかを正規表現(パターンマッチング)で監視します。
検知用正規表現のサンプル
# SQLインジェクションの兆候(' 記号や -- コメントアウト記号の連続)
(?i)(UNION|SELECT|INSERT|DELETE|DROP|--|' OR '1'='1')
# ディレクトリトラバーサルの兆候(.. や /etc/ のような階層移動の試行)
(?i)(\.\./\.\./|\.\./etc/passwd|/proc/self/environ)
閾値(しきい値)設定の考え方
1回アクセスがあっただけで「泥棒だ!」と叫ぶと、誤検知で大変なことになります。そこで「閾値」を設けます。
- 1分間に同じIPアドレスから、上記パターンが5回以上発生した場合にアラートを出す
このように設定することで、「うっかりミス」と「悪意ある攻撃」を切り分けることができるんです。
—
現場で役立つ!Webサーバーの設定Tips
ログを監視するだけでなく、サーバー側でも「防御」を固めておきましょう。最近のWebサーバー(NginxやApache)には、怪しいリクエストを弾く機能が備わっています。
# Nginxの設定例:怪しい文字列を含むリクエストを403エラーで拒否する
location / {
# .. が含まれるリクエストは拒否
if ($request_uri ~* "\.\.") {
return 403;
}
# SQLのキーワードが含まれるリクエストも拒否
if ($query_string ~* "union|select|insert|delete") {
return 403;
}
}
—
一歩ずつ対策を積み重ねていきましょう
「こんなにたくさんのパターン、全部覚えるの?」と不安になった方もいるかもしれません。でも大丈夫です。セキュリティは一度で完璧にするものではなく、「怪しいログを見つける→ルールを調整する」という改善の積み重ねです。
まずは、自分のサーバーのアクセスログを開いてみてください。
「あれ?ここ、変な文字列が入っているな?」と気づくこと。その小さな気づきが、一番の防犯になります。
もしログの中に、見慣れない記号やURLの羅列を見つけたら、それは攻撃者があなたの家の鍵穴を覗いている証拠かもしれません。恐れる必要はありません。その「防犯カメラ」をしっかり使いこなして、安全なWebライフを守っていきましょうね!
それでは、また次回の記事でお会いしましょう。ハッピー・セキュア・ライフを!
コメント