サーバー設定 · 2 min read · Dec 29, 2025

Debian Lenny 5.0/ISPConfig 3でのSquirrelMailとfail2banの設定

Debian Lenny 5.0/ISPConfig 3でのSquirrelMailとfail2banの設定

この記事では、Squirrel Loggerプラグインを使用して、SquirrelMail Webログインに対するブルートフォース攻撃をFail2banで防ぐ方法を示します。

1. 要件

Debian Lenny/ISPConfig 3マシンにfail2banとSquirrelMailがインストールされていることを確認してください。
ISPConfig 3 + SquirrelMailをインストールするには、このガイドに従ってください。
fail2banをインストールするには、このガイドに従ってください。

2. Squirrel Logger

Squirrel Loggerをダウンロードしてインストールします:

cd /usr/share/squirrelmail/plugins  
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsquirrel_logger-2.3-1.2.7.tar.gz  
tar zxvf squirrel_logger-2.3-1.2.7.tar.gz  
cd squirrel_logger  
cp config_example.php config.php

Squirrel Loggerを設定します:

vi config.php

サーバーがGTMローカル時間を使用していない場合は、$sl_use_GMT = 1を$sl_use_GMT = 0に変更してください:

...  
// GMTでログの日付を記録しますか? これを行わないと、日付は  
// 各ユーザーがいるタイムゾーン(または  
// 個人設定で設定したもの)で記録されます  
//  
//    1 = はい  
//    0 = いいえ  
//  
$sl_use_GMT = 0;  
...

ログファイルの場所を$sl_logfile = $data_dir . ‘squirrelmail_access_log’;から$sl_logfile = ‘/var/log/squirrelmail.log’;に変更します:

...  
// ファイルにログを記録する際のログファイルの場所です。  
// ウェブサーバーが実行されているユーザーがこのファイルに書き込めることを確認してください。  
// ログファイルをSquirrelMailデータ  
// ディレクトリに配置したい場合は、$data_dir変数を使用してください。  
//  
// $sl_logsに"file"が含まれている場合にのみ適用されます。  
//  
// $sl_logfile = $data_dir . 'squirrelmail_access_log';  
$sl_logfile = '/var/log/squirrelmail.log';  
...

日付形式をfail2banの正規表現に合わせて$sl_dateformat = ‘m/d/Y H:i:s’;から$sl_dateformat = ‘M j H:i:s’;に変更します:

...  
// 希望する日付形式を指定します  
//  
// ヘルプについては、PHPマニュアルのdate関数を参照してください  
// http://www.php.net/manual/function.date.php  
//  
// 例:  
//  
//    'm/d/y H:i:s'     ==  03/10/2001 05:16:08  
//    'F j, Y, g:i a'   ==  2001年3月10日、午前5時16分  
//    'D M j Y H:i:s T' ==  2001年3月10日土曜日15:16:08 CDT  
//  
// $sl_dateformat = 'm/d/Y H:i:s';  
$sl_dateformat = 'M j H:i:s';  
... 

/var/log/に新しいsquirrelmail.logファイルを作成します:

touch /var/log/squirrelmail.log  
chown www-data:www-data /var/log/squirrelmail.log  
chmod 640 /var/log/squirrelmail.log

インストールをクリーンアップします:

cd ..  
rm squirrel_logger-2.3-1.2.7.tar.gz

SquirrelMailがSquirrel Loggerプラグインを使用するように設定します:

squirrelmail-configure
...  
7.  メッセージオブザデイ (MOTD)  
8.  プラグイン  
9.  データベース  
...

「プラグイン」を選択し、私の場合は番号8です。

...  
18. spamcop  
19. squirrel_logger  
20. squirrelspell  
21. test  
...

squirrel_loggerを選択し、私の場合は番号19です。

...  
インストール済みプラグイン  
1. delete_move_next  
2. squirrelspell  
3. newmail  
4. squirrel_logger  
...

これでsquirrel_loggerがインストール済みプラグインの一部になりました。
データを保存するには「S」を押し、終了するには「Q」を押します。

3. Fail2banの設定

SquirrelMailログを使用するようにfail2banを設定します:

cd /etc/fail2ban

jail.localファイルを開き、次の行を追加します。このファイルがない場合は、デフォルトのjail.confを使用してください。

vi jail.local
[squirrelmail]  
  
enabled = true  
port = http,https  
filter = squirrelmail  
logpath = /var/log/squirrelmail.log  
bantime = 300  
maxretry = 4 

bantime(秒単位)とmaxretryが要件に設定されていることを確認してください。

filter.dディレクトリ内にsquirrelmail.confファイルを作成し、次の内容を追加します:

cd filter.d  
vi squirrelmail.conf
# Fail2Ban設定ファイル  
#  
# 著者: Bill Landry ((email_protected))  
#  
# $Revision: 510 $  
  
[Definition]  
  
# オプション: failregex  
# 注意: ログファイル内のパスワード失敗メッセージに一致する正規表現。  
#         ホストは「host」という名前のグループで一致する必要があります。  
# タグ""は標準のIP/ホスト名の一致に使用でき、  
# これは単に(?:::f{4,6}:)?(?P\S+)のエイリアスです。  
# 値: テキスト  
  
failregex = \[LOGIN_ERROR\].*from : Unknown user or password incorrect  
  
# オプション:  ignoreregex  
# 注意: 無視する正規表現。  
# この正規表現に一致する場合、その行は無視されます。  
# 値: テキスト  
  
ignoreregex = 

重要: 英語以外の言語を使用している場合は、squirrelmail.logに表示されるテキストで「failregex」行を変更してください。

例: スペイン語の場合、ログファイルに次のように表示されます。

Aug 20 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto. 

したがって、次のように変更します:

failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto

…そしてfail2banを再起動します。

/etc/init.d/fail2ban restart

5. インストールのテスト

cd /var/log  
tail -f squirrelmail.log

「不正なパスワード」を使用してSquirrelMail Webインターフェースに「3」回ログインします。
この手順では、ターミナルウィンドウに失敗したログイン試行が表示されます:

Aug 19 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.  
Aug 19 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.  
Aug 19 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.

squirrelmail.logファイルを閉じます:

Ctrl-c

fail2ban-regexがこれらのエラーを捕捉できることを確認します:

fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.conf
テストを実行中  
=============  
  
正規表現ファイルを使用: /etc/fail2ban/filter.d/squirrelmail.conf  
ログファイルを使用: /var/log/squirrelmail.log  
  
  
結果  
=======  
  
Failregex  
|- 正規表現:  
|  [1] \[LOGIN_ERROR\].*from : Unknown user or password incorrect  
|  
`- 一致の数:  
   [1] 3 一致  
  
Ignoreregex  
|- 正規表現:  
|  
`- 一致の数:  
  
要約  
=======  
  
見つかったアドレス:  
[1]  
    200.113.105.235 (Wed Aug 19 13:57:20 2009)  
    200.113.105.235 (Wed Aug 19 13:57:34 2009)  
    200.113.105.235 (Wed Aug 19 13:57:46 2009)  
  
日付テンプレートのヒット:  
3 ヒット: 月 日 時:分:秒  
0 ヒット: 曜日 月 日 時:分:秒 年  
0 ヒット: 曜日 月 日 時:分:秒  
0 ヒット: 年/月/日 時:分:秒  
0 ヒット: 日/月/年 時:分:秒  
0 ヒット: 日/月/年:時:分:秒  
0 ヒット: 年-月-日 時:分:秒  
0 ヒット: 日-月-年 時:分:秒[.ミリ秒]  
0 ヒット: TAI64N  
0 ヒット: エポック  
0 ヒット: ISO 8601  
  
成功、合計一致数は3です  
  
ただし、上記の「テストを実行中」セクションには重要な情報が含まれている可能性があります。

この行が表示されていれば、すべて正常です: 成功、合計一致数は3です。

6. Fail2banをテストしましょう

SquirrelMail Webインターフェースに「不正なパスワード」を使用して「4」回(またはmaxretry設定に応じてそれ以上)ログインします。

ブロックされると、ログインページが表示されなくなりますので、次のコマンドを実行してください:

iptables -L

これで、iptablesの出力にブロックされたIP xxx-xxx-xxx-xxxが表示されます。

Chain fail2ban-squirrelmail (1 references)  
target     prot opt source               destination  
DROP       all  --  xxx-xxx-xxx-xxx.your.isp.info  anywhere  
RETURN     all  --  anywhere             anywhere 

頑張ってください;)

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。