セキュリティ対策 - fail2ban - ipfw


 クラウディア


1. 概要
2. firewall.conf
3. ipfw.conf
4. 参考サイト

1. 概要

 実際に、プログラムのログの監視を行う前に・・・。  通常は、遮断するには、「PF (Packet Filter)」というパケット遮断プログラムを使うことが多いようですが。  わたしは、「FreeBSD」では、もともと「ipfw」を使っておりますでな。  「fail2ban」は、「ipfw」を使うこともできるようなので、「ipfw」を使用します。  「ipfw」で、「fail2ban」が登録したものを使えるように「ipfw」の設定を変更します。  「ipfw」自体に関しては、「セキュリティ対策 - ファイアウォール IP Firewall」をご参照ください。

2. firewall.conf

 「root」ユーザ権限で(「ipfw」のコンフィグレーションファイルのパスやファイル名が異なる場合は、適宜置き換え)。

vi /usr/local/etc/firewall.conf
 わたしの場合、下記のように書いておりますでな。

add 20001 allow tcp from 127.0.0.1      to me any
add 20002 allow tcp from 192.168.0.0/16 to me any
add 20003 allow tcp from 許可アドレス1  to me any
add 20004 allow tcp from 許可アドレス2  to me any
add 20005 allow tcp from 許可アドレス3  to me any
add 20006 allow tcp from 許可アドレス4  to me any

add 30001 deny tcp from any to me ssh,pop3,imap,imaps,pop3s

add 65000 allow ip from any to any
 下記を先頭に記述します。

add 10001 deny ip from table(10) to any
 この「table(10)」というのに、「fail2ban」がアドレスを詰め込むようにするのだそうです。  「table(10)」を作成します。

ipfw table 10 create
 コンフィグレーションファイルの内容をチェックして。

ipfw -n /usr/local/etc/firewall.conf
 「ipfw」を再起動。

service ipfw restart

3. ipfw.conf

 「fail2ban」が、「ipfw」のテーブルに書き込む際の設定が。

/usr/local/etc/fail2ban/action.d/ipfw.conf
 に書かれており。

# Fail2Ban configuration file
#
# Author: Nick Munger
# Modified by: Cyril Jaquier
#
#

[Definition]

# Option:  actionstart
# Notes.:  command executed on demand at the first ban (or at the start of Fail2Ban if actionstart_on_demand is set to false).
# Values:  CMD
#
actionstart =


# Option:  actionstop
# Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)
# Values:  CMD
#
actionstop =


# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
actioncheck =


# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionban = ipfw add <blocktype> tcp from <ip> to <localhost> <port>


# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    See jail.conf(5) man page
# Values:  CMD
#
actionunban = ipfw delete 'ipfw list | grep -i "[^0-9]<ip>[^0-9]" | awk '{print $1;}''

[Init]

# Option:  port
# Notes.:  specifies port to monitor
# Values:  [ NUM | STRING ]
#
port = ssh

# Option:  localhost
# Notes.:  the local IP address of the network interface
# Values:  IP
#
localhost = 127.0.0.1


# Option:  blocktype
# Notes.:  How to block the traffic. Use a action from man 5 ipfw
#          Common values: deny, unreach port, reset
# Values:  STRING
#
blocktype = unreach port
 これが、実際の「ipfw」の動作とあっていないので。  前項の「table 10」を使うように決め打ちするようにまるまる変えます。  一応、バックアップをとっておいて。

cp /usr/local/etc/fail2ban/action.d/ipfw.conf /usr/local/etc/fail2ban/action.d/ipfw.conf.bak

vi /usr/local/etc/fail2ban/action.d/ipfw.conf
 下記を記述します。

[Definition]
actionban = ipfw table 10 add <ip> || true
actionunban = ipfw table 10 delete <ip> || true

actionstart =
actionstop =
 2行目は、「IP」をテーブル「10」に追加するだけのシンプルなコマンドに変更します。  3行目は、「IP」をテーブル「10」から削除するコマンド。  2、3行の末尾は、「fail2ban」が、「ipfw」の終了コードをご認識するので、正常と判断させています。  5行目は、起動時にテーブルがなければ作成する(「FreeBSD」のバージョンにより不要な場合もありますが念のため)。  現在の「ipfw」は、「add」するテーブルがなければ、勝手に作ってくれるらしい。

4. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。

TikTok Shop 【リピート用プログラム】
AbemaTV 無料体験