不正アクセス対策(swatch&ipfw)

2017年6月19日FreeBSD

(2017/06/19)
 以下の記事は未更新の為、こちらを参照ください。


 個人的に FreeBSD で postfix メールサーバを建てて使用していますが、smtpd への不正接続アクセスが結構来ます。当然踏み台防止や不正中継防止、コネクション制限などの設定は入れいますが、毎回接続トライされたり、エラーログが大量に出ます。メールログを調べてしつこく接続しに来るところはfwでオミットするようにしていたのですが、後手にまわるのと面倒なので、swatch を使って自動化しました。

 swatch を使ってメールログを監視し、接続してきたIPを ipfw へ突込みフィルターします。ipfw のインスト及び設定は完了している前提です。また、リジェクトIPはテーブルで管理するので、ipfw に以下の様なルールが必要です。

ウチではtable(1)はドメイン単位のリジェクトに使っているため2を使用します。

1.swatch のインストールと設定
 今回も pkg を使ってらくらくインストールです。インストールしたのは、swatch-3.2.3_3 で必要な以下の perl ライブラリも一緒にインストールされます。
  p5-Carp-Clan-6.04_1
  p5-Bit-Vector-7.4
  p5-File-Tail-1.3
  p5-Date-Manip-6.50
  p5-TimeDate-2.30_2,1
  p5-Date-Calc-6.4

 起動用に /etc/rc.conf へ以下を追加します。

swatch_1_flags 等長いですが改行は入れずにすべて一行で記載します。
今回は、メールログの監視のみなので、rules は 1 、監視ログは、/var/log/maillog 、設定ファイルは、/usr/local/etc/swatch_mail.conf としました。
複数のログを監視するときは、swatch_rules=”1 2 3 …”とスペース区切りで必要数分入れ、swatch_?_* もそれぞれ用意します。

設定ファイルの内容は、以下の様なものを用意します。

watchfor /<監視する文字列>/
  pipe <マッチした時の実行コマンド(該当ログをパイプで渡す)>
  mail=<マッチした時のメール送信先>,subject=<メール表題>
です。
 監視内容は、最初の watchfor が smtpd への不正接続監視。次が pop ログイン時の pam エラー監視。最後が pop ログインアクセスでのエラー監視で、ここのみ60秒以内に3回失敗した場合に拒否します。マッチした時に実行するコマンドとして以下に述べるシェルスクリプリト(postfix_dovecot_chk.sh)を引数付きで指定します。
 postfix_dovecot_chk.shはメールログからIPを抽出して ipfw のリジェクトテーブルへセットするシェルスクリプトを拙速でこんな感じで用意します。/etc/rejectip.fw2 はipfw テーブル初期登録用のIPの入るテキストファイルで、事前に空で良いので作成しておきます。

(1)起動されたら、現在のリジェクトリストをバックアップします。
(2)swatch がら検知ログを読み込み該当のIPを抽出します。現在のリジェクトリストをチェックし既登録であればログのみ出力します。
(3)新規のIPであれば、リジェクトテーブルとリジェクトファイルに追加します。リジェクトファイルは一応ソート、重複削除を行い、ログ出力します。
(4)ipfw へのテーブル登録時、重複IPは ipfw が削除してくれます。リブート等の初期登録の際に、このリジェクトファイルを読込む様に指定しています。

2.実行と動作確認
 準備できたらswatchを実行します。下記の start/stop で複数監視指定している場合でも指定分起動/停止してくれます。

 引っ掛かって来るとこんな感じでログ出力とメールが来ます。

 因みに今回の27.254.112.70はタイのバンコクからですね。DNS Blacklist にも複数登録されています。セッション途中でファイアウォールにより切ってしまうので、timeout しちゃうところがいまいちですが、「まあ、拙速なので」と言い訳してみます。
 一日分のログからなので7箇所と少ないですが、依然としてアクセスが来ている大陸のIPはドメインごと拒否っているのでこんなもんかなと。
 WEBサーバの不正アクセス検知等応用範囲が広いですね。

【参考にさせて頂いたサイト】
サーバのログを監視するSwatchの導入方法と使い方を解説
今回は使用しませんでしたが、一定時間後に自動解除する仕組みなどもご紹介されており、参考になります。


2016/6/4 初出
2016/6/8 改定 smtpd,pop,pam 監視を追加した版へ変更

FreeBSD

Posted by null-a