"감옥 이름"을 찾아 지정하지 않고도 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)모든 감옥에서 IP를 자동으로 금지하는 IP 금지 명령(감옥을 지정하지 않고)을 제안합니다.

2)IP 금지가 속한 감옥을 찾을 필요 없이 IP 금지를 해제하는 명령을 실행합니다. 기본적으로 unban 명령은 특정 IP가 속한 감옥을 찾은 다음 자동으로 구문의 YOURJAILNAMEHERE 부분에 입력하여 하나 이상의 감옥을 찾습니다.

bash 기술이 있는 사람이라면 누구나 이 작업을 수행하기 위한 명령(해당 bash 별칭 포함)이나 스크립트를 만들 수 있을까요? 어떤 도움이라도 대단히 감사하겠습니다!

답변1

최신 버전의 failure2ban(예: v0.11.2)의 경우 다음을 수행할 수 있습니다.금지 해제하나 이상의 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}')

관련 정보