FreeBSD 10.4 RELEASE/ポート遮断プログラム (portsentry)

 
1. 能書き
2. ports
3. 構成ファイルの編集
4. 起動
5. 試験

1. 能書き

 ファイアウォール機能は「IP Firewall」にありますが、それとは別途に「ポートスキャン」による攻撃を受けたときに、ポートが開いているように見せかけて、実際の通信は行わないように見せかけるのが portsentry です。

2. ports

/usr/ports/security/portsentry

3. 構成ファイルの編集

/usr/local/etc/portsentry.conf
/usr/local/etc/portsentry.ignore
 この2つを編集します。  /usr/local/etc/portsentry.conf は、おそらく 217行目あたり

#KILL_ROUTE="/bin/echo 'block in log on external_interface from $TARGET$/32 to any' | /sbin/ipf -f -"
 の先頭の # を削除して生かします。これで、攻撃してきた IP を遮断します。  ただこの行のコメントが「For those running ipfilt (OpenBSD, etc.)」となっていて上の方に「FreeBSD」というコメントのある行があるのが気になりますわなぁ。  /usr/local/etc/portsentry.ignore は末尾(おそらく 21行目)の

0.0.0.0
 の行を削除して、遮断しない IPアドレス (つまり自分のローカルやワールドの IP アドレス) を記述します。/ を使うことによってネットマスクでの記述ができます。

4. 起動

 起動スクリプトが作成されています。
/usr/local/etc/rc.d/portsentry.sh
 起動は

> /usr/local/etc/rc.d/portsentry.sh start
 停止は

> /usr/local/etc/rc.d/portsentry.sh stop
 です。

5. 試験

 portsentry を実行している状態でポートスキャンをかけて /var/log/message を見てみます。

Aug 26 14:50:23 vm portsentry[1200]: attackalert: Connect from host: 192.168.174.1/192.168.174.1 to TCP port: 1
Aug 26 14:50:23 vm portsentry[1200]: attackalert: Host 192.168.174.1 has been blocked via wrappers with string: "ALL: 192.168.174.1"
Aug 26 14:50:23 vm portsentry[1200]: attackalert: Host 192.168.174.1 has been blocked via dropped route using command: "/bin/echo
'block in log on external_interface from 192.168.174.1/32 to any' | /sbin/ipf -f -"
Aug 26 14:50:25 vm portsentry[1200]: attackalert: Connect from host: 192.168.174.1/192.168.174.1 to TCP port: 11
Aug 26 14:50:25 vm portsentry[1200]: attackalert: Host: 192.168.174.1 is already blocked. Ignoring
Aug 26 14:50:26 vm portsentry[1200]: attackalert: Connect from host: 192.168.174.1/192.168.174.1 to TCP port: 15
Aug 26 14:50:26 vm portsentry[1200]: attackalert: Host: 192.168.174.1 is already blocked. Ignoring
Aug 26 14:50:38 vm portsentry[1200]: attackalert: Connect from host: 192.168.174.1/192.168.174.1 to TCP port: 79
Aug 26 14:50:38 vm portsentry[1200]: attackalert: Host: 192.168.174.1 is already blocked. Ignoring

		・・・
 おお、出てる出てる。  /usr/local/etc/portsentry.ignore を編集して 192.168.174.1 を遮断しないようにすると、ログが出てこなくなったのでうまく動作しているようです。