サーバー設定 · 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.phpSquirrel 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.gzSquirrelMailが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/fail2banjail.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 restart5. インストールのテスト
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-cfail2ban-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 頑張ってください;)
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。