엄청난 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
내가 하고 싶은 일은:
- 마지막 60초 동안의 로그를 얻으려면 로그 파일을 추적하세요.
- 요청 제한을 초과하는 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]
.
변경한 후에는 서비스를 다시 시작하거나 다시 로드하는 것을 잊지 마세요.