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
내 로그 파일에 콜론이 없습니다 (그래프를 조정해야합니다). 비록 이것이 최근의 변화인지 / 이것이 널리 퍼져 있는지 알지 못하기 때문에 편집보다는 주석으로 남겨 둡니다.
kwah

iptables 규칙을 나열하는 것이 iptables가 금지 조치 인 경우에만 작동한다는 점을 명심하십시오. 때로는 그렇지 않습니다.
gilad mayani

@kwah 나에게 동일합니다. 로그 파일에 콜론이 없습니다. 아마도 최근의 출력 변화 또는 오타 일 것입니다.
David Mordigal

':'이 더 이상 로그 파일에 기록되지 않으므로 검색어 '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}'

경우에 따라 "DROP"로 "REJECT"를 변경할 수 있습니다.


6

kwaa 의 의견이 포함 된 위의 NA AE 와 유사하게 모든 IP가 나열됩니다.

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

그러나 그 출력에는 너무 많은 줄이 있습니다. 이것은 기록 된 모든 금지 된 (그리고 금지되지 않은) IP의 행을 계산합니다.

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

위 명령의 출력 (행 수 포함)은 fail2ban 상태 출력의 'Total Banned'수와 일치해야합니다.

fail2ban-client status sshd

우분투 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

참고로

  • "총 금지"는 해당 감옥에 대해 금지 된 (그리고 금지되지 않은) 총 IP입니다.
  • "현재 금지됨"은 현재 해당 감옥에 대해 금지 된 유일한 IP입니다 (IP 목록에서이를 확인합니다).

희망이 도움이됩니다.


4

시간 제한이있는 금지 된 IP 목록 (시간 제한이 만료되면 금지 된 풀에서 제거됨)을 보려면 다음을 사용할 수 있습니다.

ipset list

2

iptables의 Chain fail2ban-ssh 부분에서 현재 금지 된 항목 (REJECT)이 표시됩니다.

sudo iptables -L fail2ban-ssh -v -n

2

보다 일반적인 답변을 추가하려면 :

있습니다 iptables에가 정답을하지 않을 수 있으며 (원래 포스터가있다) 당신에게 전혀 관련 정보를 제공하지 않을 수 있습니다. DEFAULT 또는 특정 교도소 정의에서 사용 중인 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.