私は最近Fail2Ban(Debian Jessieのv0.9.4)を設定しました。 SSHでのみ使用してください。
デフォルトでは、私のメイン刑務所は1日10分以内に5回の試みが失敗した場合に禁止されています。この設定は私に適していますが、一部のボットは禁止解除後も機能し続けます。
そのため、検索時間が長く、最大試行回数が多い刑務所をさらに2つ設定し、IPをさらに長く禁止していました。 2番目の階層図(を使用して)に電子メールを送信し、3番目とaction = %(action_mwl)s
最後の階層はレポートIPを使用しますaction = %(action_xarf)s
。構成自体が機能しており、Fail2banは最終層の候補をいくつか見つけました。
しかし、時々(約50%の場合)、次のエラーメッセージで失敗します(レイヤ3はsshd-botと呼ばれます)。
2016-03-31 10:59:44,849 fail2ban.actions [30358]: NOTICE [sshd-bot] Ban 95.59.143.167
2016-03-31 10:59:44,979 fail2ban.action [30358]: ERROR oifs=${IFS}; IFS=.;SEP_IP=( 95.59.143.167 ); set -- ${SEP_IP}; ADDRESSES=$(dig +short -t txt -q $4.$3.$2.$1.abuse-contacts.abusix.org); IFS=${oifs}
2016-03-31 10:59:44,980 fail2ban.action [30358]: ERROR oifs=${IFS}; IFS=.;SEP_IP=( 95.59.143.167 ); set -- ${SEP_IP}; ADDRESSES=$(dig +short -t txt -q $4.$3.$2.$1.abuse-contacts.abusix.org); IFS=${oifs}
2016-03-31 10:59:44,980 fail2ban.action [30358]: ERROR oifs=${IFS}; IFS=.;SEP_IP=( 95.59.143.167 ); set -- ${SEP_IP}; ADDRESSES=$(dig +short -t txt -q $4.$3.$2.$1.abuse-contacts.abusix.org); IFS=${oifs}
2016-03-31 10:59:44,981 fail2ban.actions [30358]: ERROR Failed to execute ban jail 'sshd-bot' action 'xarf-login-attack' info 'CallingMap({'ipfailures': <function Actions.__checkBan.<locals>.<lambda> at 0x6a07f4acc268>, 'ipmatches': <function Actions.__checkBan.<locals>.<lambda> at 0x6a07f4acc158>, 'failures': 1588, 'ipjailmatches': <function Actions.__checkBan.<locals>.<lambda> at 0x6a07f4acc1e0>, 'time': 1459414784.8492236, 'matches': ' Long string containing all matches ', 'ipjailfailures': <function Actions.__checkBan.<locals>.<lambda> at 0x6a07f4acc2f0>, 'ip': '95.59.143.167'})': local variable 'popen' referenced before assignment
他のエラーメッセージもありますが、これは最も一般的なエラーメッセージです。
編集する:
以下は刑務所の3つすべての構成です。
[sshd]
enabled = true
bantime = 86400 ; 1 day
findtime = 600 ; 10 minutes
maxretry = 5
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
action = %(action_)s
[sshd-repeat]
enabled = true
bantime = 2628000 ; 1 month
findtime = 604800 ; 1 week
maxretry = 20
filter = sshd
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
action = %(action_mwl)s
[sshd-bot]
enabled = true
bantime = 315400000 ; 10 years
findtime = 31540000 ; 1 year
maxretry = 200
filter = sshd
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
action = %(action_xarf)s