はじめに Introduction
Windowsのイベントビューアーでセキュリティログを確認したところイベントID:4625が多発していました。
たぶんパスワードの総当たりのブルートフォースアタック(Brute-force attack)の痕跡かと思います。
今のところパスワードが解析され、パソコンに侵入された形跡は無いですが、このままではなんか嫌なので対策したいと思いました。
UTMやルーターで海外IPは全部ブロックすれば早いのですが、同じネットワーク内に本ブログの公開用ウェブサーバーがいたり、スマホのアプリが通信出来ないとかになったもダメなので、攻撃を受けているパソコン側で対策をまずはやっていきたいと思います。
対策概要 Measures Overview
Linuxサーバー(CentOS,Rocky Linux)では、SSH接続やFTP接続が発生する度にリアルタイムでログ監視をして、ログオン失敗が一定回数発生した場合に接続元IPをファイヤーウォールやiptablesに自動追加してブロックしてくれるツール「Swatch」があります。
Windows版は無く、代替ツールも見つからなかったので、近い物を自作してみようと思いました。
参考サイト:https://centossrv.com/swatch.shtml
ログオン失敗のイベントID:4625の発生を検知して、次の処理につなげる方法が分からないので、タスクスケジューラーで5分毎に処理が実行される様にしたいと思います。
処理フロー Flow
②イベントID:4625のログ詳細から接続元IPを抽出してリストを作成
③抽出したIPが直近30分で何回ログイン失敗しているかカウントする
④カウント数が閾値以上のIPをブラックリストIPとして抜粋する
⑤ブラックリストIPをファイヤーウォールで拒否する
⑥以上の処理をタスクスケジューラーで5分毎に自動実行する
フローの①~⑤まではPowerShellで便利なコマンドがたくさんあるみたいなのでPowerShellで書いていこうと思います。Windowsバッチファイルは以前にcurlでデータ送信する処理を書いた事があるだけで、PHPしか言語をまともに描けない私だと何日かかるのか考えただけでもゾッします。まぁ気長に頑張っていきましょう。
パソコン環境 PC environment
パソコン環境としてはこんな感じです。
OS : Windows10 Pro 64bit
PowerShell : Ver 5.1
各処理フローのスクリプト
各処理フローの具体的なスクリプトは記事を作成できしだいアップしていきます。
④カウント数が閾値以上のIPをブラックリストIPとして抜粋する
⑤ブラックリストIPをファイヤーウォールで拒否する
⑥以上の処理をタスクスケジューラーで5分毎に自動実行する
コメント