「刑務所の名前」を見つけて指定せずにFail2banでIPアドレスをバインド/禁止解除するUnixコマンド(およびbashエイリアス)またはスクリプト

「刑務所の名前」を見つけて指定せずにFail2banでIPアドレスをバインド/禁止解除するUnixコマンド(およびbashエイリアス)またはスクリプト

Ubuntu 20.04では、fall2banを使用してIPアドレスを禁止および禁止解除するためのbashエイリアス(またはスクリプト)を作成しています。

飼育剤通事論慣れています。禁止解除IP アドレスは次のとおりです。

fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE

そして通事論私は慣れている禁止するIP アドレスは次のとおりです。

fail2ban-client set YOURJAILNAMEHERE banip IPADDRESSHERE

だから私の bashエイリアス構文~のため禁止令を解除IP アドレスは次のとおりです。

alias unbanip='sudo fail2ban-client set YOURJAILNAMEHERE unbanip'

そして私の bashエイリアス構文~のため禁止するIP アドレスは次のとおりです。

alias banip='sudo fail2ban-client set YOURJAILNAMEHERE banip'

次に、実際強く打つニックネーム~のため禁止令を解除IP アドレスは次のとおりです。

alias unbanip='sudo fail2ban-client set sshd unbanip'

そして実際強く打つニックネーム構文は次のとおりです。禁止するIP アドレスは次のとおりです。

alias banip='sudo fail2ban-client set sshd banip'

エイリアスを使用して生成された実際のbashコマンドは次のとおりです。

# Unban a specific IP
unbanip 123.456.78.90

# Ban a specific IP
banip 123.456.78.90

これらすべての問題は、次の理由で指定されたIPを直接禁止する実際のコマンドまたはbashエイリアスを実際に作成できないことです。

1)ブロックを解除するときは、まず禁止IPの刑務所を見つけて、bashコマンドに刑務所を入力してください。

2)ブロックするには、すべての刑務所のIPをブロックするには、1つのコマンドですべての刑務所を指定する必要があります。

私がしたいことは

1)すべての刑務所でIPを自動的に禁止するIP禁止命令(刑務所を指定せず)を提案します。

2)IP禁止が属する刑務所を見つける必要なしにIP禁止を解除するコマンドを実行します。デフォルトでは、unban コマンドは特定の IP が属する刑務所を検索し、自動的に構文の YOURJAILNAMEHERE 部分に入力して 1 つ以上の刑務所を検索します。

bash技術を持っている人なら誰でもこのタスクを実行するためのコマンド(対応するbashエイリアスを含む)またはスクリプトを作成できますか?どんな助けでも大変感謝します!

答え1

最新バージョンのfailure2ban(v0.11.2など)の場合は、次のことができます。禁止解除1つ以上のIPがありますが、どの刑務所で禁止が発生したのかわかりません。

fail2ban-client unban <IP> ... <IP>

Fail2ban自体は不可能です。禁止措置の開始すべての刑務所のIP数。これは通常望ましくないためです(つまり、すべての刑務所がすべてのポートをブロックするIP禁止で動作していると仮定すると、単一の禁止で十分です)。ただし、次のようにループを使用してこれを行う小さなbashスクリプトを作成できます。

#!/bin/bash
# Fail2ban All-Jail IP Banner
if [[ -z $1 || $1 == "-h" ]]; then
  echo "$(basename "$0"): Fail2ban All-Jail IP Banner"
  echo "Usage: $(basename "$0") <IP> ... <IP>"
  echo "Advisory: this immediately bans the specified IPs across all fail2ban jails - use with care!"
  exit 0
fi
while read -r JAIL; do
  echo -n "$JAIL banning IP(s): "
  fail2ban-client set $JAIL banip $*
done < <(fail2ban-client status|sed -n '/Jail list:/{s/^.*list:\s*//;s/, /\n/g;p}')

関連情報