아래와 같이 fail2ban을 구성했습니다.
- 3 번의 시도 실패 후 IP 차단
- 300 초 타임 아웃 후 IP 해제
이것은 완벽하게 작동하며 유효한 사용자가 시간 초과 후 로그인을 다시 시도 할 수있는 방식으로 유지하고 싶습니다. 이제 동일한 IP가 공격으로 탐지되어 차단 된 경우 5 회 차단 해제하고 IP를 영구적으로 차단하고 다시 차단 해제하지 않는 규칙을 구현하려고합니다. fail2ban 만으로이 작업을 수행 할 수 있습니까? 아니면 직접 스크립트를 작성해야합니까?
나는 이것을 센 토스에서하고 있습니다.
답변
0.11 이전에는 fail2ban 내에 기본 기능이나 설정 이 없었습니다 . 그러나 다가오는 0.11 릴리스부터는 금지 시간이 자동으로 계산 되어 장기적으로 다소 영구적 인 차단을 의미하는 새로운 각 위반으로 기하 급수적으로 증가합니다.
그때까지 가장 좋은 방법은 fail2ban을 설정 하여 자체 로그 파일을 모니터링하는 것 입니다. 2 단계 프로세스입니다 …
1 단계
로그 파일 (fail2ban의 로그 파일)에서 BAN 을 확인 하는 필터 를 만들어야 할 수 있습니다.
2 단계
다음과 같이 감옥 을 정의 해야합니다 …
[fail2ban] 활성화 됨 = true 필터 = fail2ban 액션 = iptables-allports [이름 = fail2ban] logpath = /path/to/fail2ban.log # 검색 시간 : 1 일 찾기 시간 = 86400 # 금지 시간 : 1 년 금지 시간 = 31536000
기술적으로, 그것은 영구적 인 블록 이 아니라 1 년 동안 만 블록됩니다 (우리도 늘릴 수 있습니다).
어쨌든, 귀하의 질문에 대해 (이것은 fail2ban만으로 달성 할 수 있습니까? 아니면 직접 스크립트를 작성해야합니까?) … 자신의 스크립트를 작성하는 것이 효과적 일 수 있습니다. 자주 금지 된 IP 를 추출하도록 스크립트를 설정 한 다음에 넣는 /etc/hosts.deny
것이 좋습니다.
답변
bantime = -1
해당 구성 섹션에 넣으면 영구 블록 이라고 생각합니다 .
답변
Phil Hagen은이 주제에 대해 훌륭한 기사를 썼습니다. ” fail2ban을 사용하여 반복 위반자를 영구적으로 금지 “.
그의 제안은 Pothi와 동일하지만 단계별 가이드를 제공합니다.
여기에는 다음이 포함됩니다.
- 교도소별로 별도의 금지 목록 (ip.blocklist.ssh, ip.blocklist.xxx)
- 서비스가 다시 시작되면 금지 목록이 자동으로로드됩니다 (이 방법의 주요 이점 imho).
- 리피터가 작동하면 이메일 알림.
답변
Chin의 답변을 확장하기 위해 이것은 매우 간단합니다. 원하는대로 2 개의 설정을 편집하면 /etc/fail2ban/jail.local
됩니다.
# ban time in seconds. Use -1 for forever. Example is 1 week.
bantime = 604800
# number of failures before banning
maxretry = 5
답변
fail2ban은 이미 수감을 금지하는 감옥을 가지고 있습니다. 를 /etc/fail2ban/jail.conf
보면 다음을 발견 할 수 있습니다.
# Jail for more extended banning of persistent abusers
# !!! WARNING !!!
# Make sure that your loglevel specified in fail2ban.conf/.local
# is not at DEBUG level -- which might then cause fail2ban to fall into
# an infinite loop constantly feeding itself with non-informative lines
[recidive]
enabled = false
filter = recidive
logpath = /var/log/fail2ban.log
action = iptables-allports[name=recidive]
sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime = 604800 ; 1 week
findtime = 86400 ; 1 day
maxretry = 5
jail.local에 추가하는 방법?
[recidive]
enabled = true
bantime = 31536000 ; 1 year
findtime = 18144000 ; 1 month
maxretry = 2
로그 수준을 확인하려면 다음을 수행하십시오 fail2ban-client get loglevel
.
fail2ban의 이전 버전을 사용하면 이 버그를 얻을 수 있습니다 .
답변
vim으로 이동하여 /etc/fail2ban/jail.conf를 엽니 다.
다음 후에 수정하십시오 fail2ban service restart
.
# "bantime" is the number of seconds that a host is banned.
bantime = ***1296000***
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = ***60000***
# "maxretry" is the number of failures before a host get banned.
maxretry = ***3***