고쳐 쓰다

고쳐 쓰다

엄청난 IP 공격을 받고 있는 것으로 보이는 애플리케이션이 있습니다.

  • 로그 파일:/root/kitty/nohup.out
  • 공예: 새끼 고양이
  • 포트: 8888
[2021-08-31 10:02:20] [ALL] 168.138.142.22:50384 incoming connection
[2021-08-31 10:02:21] [ALL] 168.138.78.185:57728 incoming connection
[2021-08-31 10:02:21] [ALL] 168.138.78.185:57614 incoming connection
[2021-08-31 10:02:21] [ALL] 168.138.146.133:59078 incoming connection
[2021-08-31 10:02:22] [ALL] 140.238.152.56:32884 incoming connection
[2021-08-31 10:02:22] [ALL] 168.138.146.133:57606 tunnel established
[2021-08-31 10:02:22] [ALL] 168.138.146.133:57606 SSL session reused
[2021-08-31 10:02:22] [ALL] 140.238.152.56:32976 incoming connection
[2021-08-31 10:02:22] [ALL] 140.238.152.56:48210 incoming connection
[2021-08-31 10:02:22] [ALL] 168.138.78.185:52390 tunnel established

내가 하고 싶은 일은:

  1. 마지막 60초 동안의 로그를 얻으려면 로그 파일을 추적하세요.
  2. 요청 제한을 초과하는 IP 차단(예: 초당 2개 요청)

Fail2ban을 통해 이를 수행하는 방법은 무엇입니까?

고쳐 쓰다

구성할 파일과 실행할 명령을 알려주실 수 있나요?

수정 /etc/fail2ban/jail.conf하고 내용을 추가했어요

[DEFAULT]

maxretry = 5 
findtime = 300 
bantime = 3600
bantime.increment = true
bantime.factor = 2 

Fail2ban 서비스를 다시 시작했지만 아무 일도 일어나지 않았습니다.

/etc/fail2ban/filter.d/kitty.conf콘텐츠가 포함된 새 필터를 만들었습니다 .

[INCLUDES]
before = common.conf

[DEFAULT]
_daemon = kitty

이 콘텐츠도 추가하세요./etc/fail2ban/jail.conf

[kitty]
enabled = true
maxretry = 1000
findtime = 100
bantime = 3600
bantime.increment = true
bantime.factor = 2
logpath = /root/kitty/nohup.out

그런 다음 Fail2ban 서비스를 다시 시작하면 이제 kitty목록에 표시됩니다.

# fail2ban-client status kitty
Status for the jail: kitty
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list:    /root/kitty/nohup.out
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list:   

그래도 차단된 IP는 없습니다(악성 IP가 엄청나게 나오는 걸 보니...)

구성할 파일과 실행할 명령을 알려주실 수 있나요?

답변1

기술적으로, 당신이 요구하는 것은 감옥 파일의 DEFAULT 섹션에 있는 이 두 매개변수를 통해 달성될 수 있습니다.

[DEFAULT]
maxretry = 2
findtime = 1

그러나 이는 비실용적이며 너무 엄격하여 정상적인 액세스를 시도하는 동안 합법적인 IP를 차단할 가능성이 높습니다.

[DEFAULT]
maxretry = 5
findtime = 300

이제 이 로그에서 "공격자"가 일부 IP 순환 스크립트를 사용하고 있음을 확인할 수 있으므로 금지 시간을 늘리는 등(반복 위반자에 대해) 더 효과적인 작업을 수행할 수 있습니다. 다음과 같이 시도해 보세요:

[DEFAULT]
maxretry = 5
findtime = 300
bantime = 3600
bantime.increment = true
bantime.factor = 2

위 차단 시간은 상습 위반자일 경우 2배가 되며 IP가 적발될 때마다 2배로 늘어납니다. 스크립트가 실패하고 중지될 만큼 충분합니다.

특정 서비스에 대해 이러한 작업을 수행하려면 . 대신 특정 서비스에 대한 감옥 파일에 옵션을 포함하면 됩니다 [DEFAULT].

변경한 후에는 서비스를 다시 시작하거나 다시 로드하는 것을 잊지 마세요.

관련 정보