6.1 port scan 遮断(portsentry) の設定

2018年4月24日

 以前、訳あって(実は手抜きだったりします)お家の安鯖へはルータから全ポートスルーで流し、サーバ側のF/Wでブロックしてたのですが、まあポートスキャンの多いこと。開ける必要のあるポートは、ここで記載した様に swatch のログ監視で ipfw へ該当IPを突込みブロックしていたのですが、port scan を検知してブロック処理を行ってくれる portsentry を入れて見ました。

1.portsentry のインストール
 FreeBSD も pkg, ports 共に用意されていますので、お好きな方でインストールします。今回はまた、pkg で入れました。

2.portsentry の設定
 /usr/local/etc/portsentry.conf を編集します。今回は、ipfw でブロックテーブルを使用してブロックするので、以下の部分を追加しました。

KILL_ROUTE でスキャン検知時の実行処理を記載します。ここでは、ipfw の table2 へ該当IP($TARGET$) を追加し、更にリブート時にも継続ブロックするため、/etc/rejectip.fw2 へも追加出力します。(rejectip.fw2 はリブート等のipfw設定の際に読み込む様に設定しています。)
 次に、ローカル内のアクセスは無視するように、/usr/local/etc/portsentry.ignore にローカルセグメントを追加します。(ただし、設定はテストが終わったあとで)

3.起動とテスト
 起動は /usr/local/etc/rc.d/portsentry.sh start
 停止は /usr/local/etc/rc.d/portsentry.sh stop
です。起動すると、/var/log/messages にTCP,UDP の監視ポートと共に以下の様なメッセージが出力されます。

また、以下の2プロセスが起動します。
/usr/local/bin/portsentry -tcp
/usr/local/bin/portsentry -udp

 portsentry.sh は、FreeBSD のスタートアップシェルのお作法にしたがっていないので、/etc/rc.conf に設定を行わなくても、リブート時に自動起動してしまいます。
 さて、テストは、LAN 内の別 PC から nmap を使ってスキャンを掛けてみます。

 こんなふうに検知し、ipfw でブロックされます。
 ポートスキャン遮断の有用性は、賛否両論あるようで、結局私も以下の理由から現状では未使用と同じ状態となっています。
(1)IP偽装してスキャンする場合があり、クラック時のIPが異なる事がある。
(2)個別IP毎になるので、F/W登録IPが膨大になりメンテが結構手間。
(3)人様のお家を嗅ぎまわっているところを突然鼻先でシャッターを叩き閉められるので、「ム!」とするのか、連続スキャンをかけてくる幼稚で残念な輩が非常に多い。
(4)必要ポートのみ開け、当該ポートのみ検知対象にしたほうが、手間がなく、iplog 等のログ量も激減する。
 ので、全ポートスルーの必要性が無くなった現在は、必要ポートのみ開ける事に変更しています。

【参考にさせて頂いたサイト様】
  PortSentry/README 日本語訳
  FreeBSD あれこれ FreeBSD10.3-RELEASE 13.ポート遮断プログラム (portsentry)
  FreeBSD 10.0 – ポートスキャン遮断 PortSentry インストール!
  FreeBSDサーバー構築マニュアル ポートスキャン遮断 PortSentry インストール


FreeBSDへ  サイトTOPへ

Posted by null-a