fail2banですべての禁止IPを表示する方法は?


36

このコマンドを実行すると、次のようfail2ban-client status sshdになります。

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     81
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     8
   `- Banned IP list:   218.65.30.61 116.31.116.7

Total Bannedが言うように、禁止IPリストには8つではなく2つのIPしか表示されません。

私がいる間tail -f /var/log/auth.log、私はこれを得ました:

Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:08:44 DBSERVER sshd[29165]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:46 DBSERVER sshd[29165]: Failed password for root from 218.65.30.61 port 11857 ssh2
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:01 DBSERVER CRON[29226]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:10:02 DBSERVER CRON[29226]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:18 DBSERVER sshd[29238]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:20 DBSERVER sshd[29238]: Failed password for root from 113.122.43.185 port 46017 ssh2
Mar 29 11:10:33 DBSERVER sshd[29238]: message repeated 5 times: [ Failed password for root from 113.122.43.185 port 46017 ssh2]
Mar 29 11:10:33 DBSERVER sshd[29238]: error: maximum authentication attempts exceeded for root from 113.122.43.185 port 46017 ssh2 [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:11:36 DBSERVER sshd[29245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:11:38 DBSERVER sshd[29245]: Failed password for root from 116.31.116.7 port 24892 ssh2
Mar 29 11:11:43 DBSERVER sshd[29245]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 24892 ssh2]
Mar 29 11:11:43 DBSERVER sshd[29245]: Received disconnect from 116.31.116.7 port 24892:11:  [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: Disconnected from 116.31.116.7 port 24892 [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:39 DBSERVER sshd[29247]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:41 DBSERVER sshd[29247]: Failed password for root from 116.31.116.7 port 26739 ssh2
Mar 29 11:12:45 DBSERVER sshd[29247]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 26739 ssh2]
Mar 29 11:12:45 DBSERVER sshd[29247]: Received disconnect from 116.31.116.7 port 26739:11:  [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: Disconnected from 116.31.116.7 port 26739 [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:41 DBSERVER sshd[29249]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:43 DBSERVER sshd[29249]: Failed password for root from 116.31.116.7 port 27040 ssh2

禁止されているIPはまだ試行中です。

しかし、私が確認したとき、sudo iptables -L INPUT -v -n私はこれを得ました:

Chain INPUT (policy ACCEPT 228 packets, 18000 bytes)
 pkts bytes target     prot opt in     out     source               destination
 6050  435K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22

ここで何が間違っていますか?

すべての禁止IPリストを表示するにはどうすればよいですか?

前もって感謝します。


「合計」とは、現在禁止されている合計ではなく、これまでに禁止された合計を意味します。以前に禁止されたアドレスを見つける唯一の場所は、ログにあります(それらを保持している場合)。
停止ハーミングモニカ

jail.localまたはjail.confでは、小さなbantime。それ200m以上にするか、さらに高くしsudo service fail2ban restartてからfail2ban-client status sshd
アレンキング

回答:


19

IPのfail2ban禁止は本質的に一時的なものであることに注意してください。

ブロックされたIPの完全なリストを確認する最良の方法は、ログファイルを確認することです。

sudo zgrep 'Ban:' /var/log/fail2ban.log*

次のコマンドは、入力ルールのクリーンなリストを提供することもできます。

sudo iptables -L INPUT -v -n | less

3
私のログファイルにはコロンがありません(grepを調整するために必要です)。ただし、これがどの程度広まっているのか/これが最近の変更であるかどうかはわかりませんので、編集ではなくコメントとして残してください。
クワ

iptablesルールのリストは、iptablesが禁止アクションである場合にのみ機能することに注意してください。場合によってはそうではありません。
ジラッドマヤニ

@kwah私にとっても同じで、ログファイルにコロンはありません。おそらく出力の最近の変更、またはタイプミス。
デビッドモルディガル

「:」はログファイルに書き込まれないため、検索語「Ban」の後にある「:」を削除します。したがって、上記のコマンドを使用して、ブロックされたIPを再度確認できます。
マリオノイバウアー

9

iptablesの完全な行を表示するには:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'

IPアドレスのみを表示するには:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0" {print $4}'

ケースに応じて、「ドロップ」で「拒否」を変更できます。


6

上記のNA AEkwaaのコメントが含まれているのと同様に、すべてのIPがリストされます。

sudo zgrep 'Ban' /var/log/fail2ban.log*

しかし、その出力には非常に多くの行があります。これは、ログに記録されたすべての禁止された(およびおそらく禁止されていない)IPの行をカウントします。

sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l

上記のコマンドの出力(行数付き)は、fail2banのステータス出力の「合計禁止」数と一致する必要があります。

fail2ban-client status sshd

Ubuntu 18.04.1 LTSでテスト済み。

'wc -l'行からの私の出力:

7244

また、fail2banのステータスから、同じ7244番号が検証されます。

Status for the jail: sshd
|- Filter
|  |- Currently failed: 7
|  |- Total failed: 49457
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 9
   |- Total banned: 7244
   `- Banned IP list:   [...]

4

参考までに:

  • 「Total banned」は、その刑務所で禁止されている(そしておそらく禁止されていない)IPの合計です。
  • 「現在禁止されている」とは、その刑務所で現在禁止されている唯一のIPのことです(IPリストで確認されています)。

お役に立てば幸いです。


4

禁止IPのリストとそのタイムアウト(タイムアウトが期限切れになると、禁止プールから削除されます)を表示したい場合は、次を使用できます。

ipset list

2

これにより、iptablesのチェーンfail2ban-ssh部分で現在禁止されているもの(REJECT)が表示されます。

sudo iptables -L fail2ban-ssh -v -n

2

より一般的な回答を追加するには:

iptablesは正解ではない場合があり、関連する情報をまったく提供しない場合があることに注意してください(元のポスターの場合)。DEFAULTまたは特定のjail定義で使用しているbanaction = [action]の値によって異なります。

Linuxを実行している小さなARM搭載のボックスがたくさんありますが、カーネルには関連するすべてのiptablesモジュールが用意されていないため、その場合iptablesは機能しません。

* BSDにはiptablesがまったくない場合があり、代わりにpfのようなものを使用します。

私のARMボックスでは、ブロッキングにルートを使用しています。禁止されたIPに無効なルートが追加されるため、返信パケットは配信不能になり、IPは基本的にブロックされます。とてもうまくいきます。その場合、次を使用して禁止IPを確認できます。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
# normal routing entries
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
# banned IPs (no gateway, no iface)
223.96.95.85    -               255.255.255.255 !H    0      -        0 -

禁止には多くのオプションがあります。したがって、禁止リストをチェックする多くのオプション。どちらを使用するかは、プラットフォームと設定によって異なります。/etc/fail2ban/action.d/には、選択可能な構成済みの構成ファイルが多数あります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.