Laravel:不正アクセスを撃退するLOG&Redirectの仕組みを作ってみた

Laravel:不正アクセスを撃退するLOG&Redirectの仕組みを作ってみた

不正アクセスを撃退するLOG&Redirectの仕組み

システムを組んでいるとマジでムカついてくる不正アクセス。
なぜこうも不正アクセスが多いのかホント腹立たしく感じています。
と言う事で、以前の記事で攻撃を受けるURLを書いたりLogに残ったIPから地域調べてみたりしましたが今回は撃退偏です。

まずは仕組みを考える

  1. アクセスlogでIPとアクセスURLの記録をする
  2. 攻撃対象となっている存在しないURLをブラックURLとして管理する
  3. ブラックURLに対してアクセスしてきたIPをブラックIPとして管理する
  4. ブラックIPでも、ブラックURLアクセス5回までは許してやる(出来心的な?許容範囲)
  5. ブラックIPがアクセスしたURLはブラックURLに登録する
  6. 許容範囲を超えたブラックIPは別の場所に勝手に飛んでもらう

はい、こんな感じで行きましょう。

必要となるテーブルを作る

欲しいテーブルは3つです。

  1. 基本的なアクセスログ(アクションログ) ⇒ table名:actlogs
  2. ブラックURLリスト ⇒ table名:blackurllists
  3. ブラックIPリスト ⇒ table名:blackiplists

MigrationとModel、Controllerの箱を作ります。

マイグレーションファイルを編集します。

マイグレーションを実行します。

これでテーブルが出来ました。

Modelを修正する

■モデル:Actlog

テーブル:actlogsにはjsonがそのまま入る可能性があります。
protected $casts = [‘meta’ => ‘json’]; はその為の設定です。

BlackurllistとBlackiplist はartisanで作ったものそのままでOK。

Controllerの修正

Viewへつなげる設定だけ行って後はお好みでOK。

Log記載ミドルウェアを作成

作成したミドルウェアをkernelに登録します。

場所:Project >> app >> Http >> Middleware >> Kernel.php

さぁ、これでした準備は整いました。
いよいよ不正アクセス締め出しシステムの本丸『ミドルウェア:Actlog』の造作です。

ActlogMiddleware.phpを作る

こんな感じにしました。

不正アクセス野郎だったら勝手にRedirect!

$input = array(‘https://google.co.jp’,’https://www.rakuten.ne.jp’,’https://amazon.cn’);
return redirect(array_rand($input,1));

まとめ

これ作ってモニタリングしてると、500回越えの不正アクセスがざらにある事がわかります。

それもACCESS元調べれば大体が中国。セキュリティしっかりしないとですね。