forked from disco-v8/Ban4ip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README_ban4ip.ja_jp.utf8
181 lines (115 loc) · 6.67 KB
/
README_ban4ip.ja_jp.utf8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<<< BAN for IP address >>>
このソフトは、fail情報が含まれたログファイルを読み込みながら、iptablesでIPアドレスをBANするツールです。
"ban4ip"はIPv4とIPv6アドレスに対応しています。
fail2banがIPv6に対応してくれないので、作りました。みんな待ってたでしょ?
全てのサーバー管理者とIPv4&IPv6ユーザーのために。:-)
必要なパッケージ:
php
php-devel
php-pear
php-mbstring
php-pdo (SQLite3)
php-process
PECL inotify
procps
#CentOS6でテストしていますが、他のディストリビューションでも同じようなパッケージを入れれば動くと思います。
使い方:
Step0. インストールしてください(例. CentOS6の場合)
yum -y install php php-devel php-pear php-mbstring php-pdo php-process
pecl install channel://pecl.php.net/inotify-0.x.x
wget 'https://github.com/disco-v8/Ban4ip/archive/master.zip' -O Ban4ip-master.zip
unzip ./Ban4ip-master.zip
cd ./Ban4ip-master/
chmod 700 ./ban4ipd
chmod 700 ./ban4ipc
chmod 755 ./init.d/ban4ip
mkdir /etc/ban4ip/
mkdir /var/lib/ban4ip/
cp ./ban4ipd.conf /etc/
cp ./ban4ip/* /etc/ban4ip/
cp ./ban4ipc /usr/bin/
cp ./ban4ipd /usr/bin/
cp ./ban4ipd_*.php /usr/bin/
cp ./logrotate.d/ban4ip /etc/logrotate.d/
cp ./init.d/ban4ip /etc/init.d/
chkconfig --add ban4ip
Step1. メインの設定ファイル「ban4ipd.conf」とサブ設定ファイル(/etc/ban4ip/*.conf)を設定しましょう
メイン設定ファイル...
このツールを必要としている人なら、設定ファイルを見れば理解できると思います。
サブ設定ファイル...
-------------------------------
:
:
target_service = 'apache-error' ... ログ出力にのみ関係します(後述)
target_log = '/var/log/httpd/error_log' ... 監視対象ログファイル名(フルパスで記述すること)
target_protcol = tcp ... BANするプロトコル(tcp, udp, all)
target_port = 80 ... BANするポート(nnn or all)
target_rule = 'DROP' ... BANする際のパケットの扱い(DROP, REJECT, LOG)
target_str[] = '/error\] \[client (.*)\] client /' ... (.)はBANするIPアドレスが書いてある場所
:
:
-------------------------------
target_str[]は配列変数です。
ここに正規表現でfailの場合のログの文字列と、BAN対象アドレスが書いてある場所を(.)で指定してください。
target_portとtarget_ruleを'all'にすると、対象IPアドレスからのすべてのアクセスをBANします。
Step2. ban4ipdを起動しましよう
ban4ipc start
もしサブ設定ファイルを変更したら
ban4ipc reload
または、メインの設定ファイルを変更したなら
ban4ipc restart
もしBANしているIPアドレスの一覧を見たいなら
ban4ipc list
その他のオプション(手動のBANやUNBAN)については
ban4ipc -h
それではよい睡眠を。:-)
技術メモ:
"Inotify extension not loaded!?", but PECL inotify installed.
「extension=inotify.so」を/etc/php.d/inotify.iniなどに記述してください。
"PHP Fatal error: Class 'SQLite3' not found in /root/ban4ip/ban4ipd.php on line 330"
php-pdo (SQLite3)をインストールしてください。
"ban4ipd ... Found other process : /var/run/ban4ip.pid!?"
前回の起動時に何らかの原因でプロセスが異常終了し、PIDファイルが残ったままです。
原因を取り除いて「/var/run/ban4ip.pid」を削除してから起動してください。
"PHP Warning: SQLite3::exec(): database is locked in ..."
SQLite3のデータベースのロックが他のプロセスでかかったまま一定時間を経過してしまった場合に発生。
db_timeoutの値を伸ばしてみるといいかも。(デフォルトは500ms…これでも結構長いと思うんだけど)
"The user limit on the total number of inotify instances has been reached"
"Failed to obtain an inotify instance!?"
申し訳ありませんが、監視対象ログが多すぎるので減らしてください。(つまり、.confを減らす)
#以下日本語だけの技術メモ
・ban4ipdは、PHPで記述されていて、プロセスのフォークによりデーモンとして動作します。
・logrotateによる監視対象ファイルの切り詰めに対応しています。(inotifyでIN_MOVE_SELFを監視)
・一つのtcpポートに対して複数の設定ファイルを置くことはできますが、iptablesの設定はポート単位となります。
(fail2banは、一つの設定ファイルごとにチェインを作る感じだった(確実にそうではない)が、ban4ipではそこまで求めていない)
・バージョンアップの際には、以下のPHPスクリプトのみ
cp ./ban4ipc /usr/bin/
cp ./ban4ipd /usr/bin/
cp ./ban4ipd_*.php /usr/bin/
コピーして、必要に応じて設定(conf)ファイルを修正すればOK
・PHPのポリシーによりsystemd配下ではUTCによる処理になっていたので、サーバーのローカルタイム(local_time())を取得する処理を追加した
ライセンス:
Copyright (c) 2016, Future Versatile Group
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of "Future Versatile Group" nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
T.Kabu/MyDNS.JP