Fail2ban은 계속해서 금지되었다고 말하지만 실제로는 금지되지 않습니다.

Fail2ban은 계속해서 금지되었다고 말하지만 실제로는 금지되지 않습니다.

방금 새 서버를 구성하고 Fail2ban을 설치했는데 잘못된 비밀번호로 계속 연결을 시도해도 차단되지 않습니다.

실패 2ban.log:

2018-03-23 12:46:29,363 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:46:30,747 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:46:33,346 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:46:35,515 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:46:36,372 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:47:45,471 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:47:46,820 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:47:49,503 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:47:50,458 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:47:51,893 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:49,699 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:51,835 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:52,531 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:48:54,477 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:57,056 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:50:53,240 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:50:53,677 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:50:55,065 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:50:58,253 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:51:00,494 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:51:00,685 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:52:06,119 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:52:08,300 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:52:11,583 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:52:11,773 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:52:13,498 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:07,823 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:09,712 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:09,842 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:53:11,718 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:13,696 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:37,181 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:37,949 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:54:39,092 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:40,906 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:42,616 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:42,955 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:54:52,074 fail2ban.action         [9756]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- stdout: ''
2018-03-23 12:54:52,075 fail2ban.action         [9756]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- stderr: ''
2018-03-23 12:54:52,075 fail2ban.action         [9756]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- returned 1
2018-03-23 12:54:52,075 fail2ban.CommandAction  [9756]: ERROR   Invariant check failed. Trying to restore a sane environment
2018-03-23 12:54:52,180 fail2ban.action         [9756]: ERROR   iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
iptables -w -F f2b-sshd
iptables -w -X f2b-sshd -- stdout: ''
2018-03-23 12:54:52,181 fail2ban.action         [9756]: ERROR   iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
iptables -w -F f2b-sshd
iptables -w -X f2b-sshd -- stderr: "iptables v1.4.21: Couldn't load target `f2b-sshd':No such file or directory\n\nTry `iptables -h' or 'iptables --help' for more information.\niptables: No chain/target/match by that name.\niptables: No chain/target/match by that name.\n"
2018-03-23 12:54:52,181 fail2ban.action         [9756]: ERROR   iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
iptables -w -F f2b-sshd
iptables -w -X f2b-sshd -- returned 1
2018-03-23 12:54:52,181 fail2ban.actions        [9756]: ERROR   Failed to execute unban jail 'sshd' action 'iptables-multiport' info '{'matches': '2018-03-23T11:53:46.707058149-210-194-176.colo.transip.net sshd[27676]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=ip-[my ip].ip.prioritytelecom.net  user=root2018-03-23T11:53:48.733188149-210-194-176.colo.transip.net sshd[27676]: Failed password for root from [my ip] port 31224 ssh22018-03-23T11:54:51.709842149-210-194-176.colo.transip.net sshd[27676]: Failed password for root from [my ip] port 31224 ssh2', 'ip': '[my ip]', 'time': 1521802491.930057, 'failures': 3}': Error stopping action

로그 파일을 추적하면 ssh 로그인 시도가 기록된 것을 볼 수 있지만 세 번째 시도 후에는 계속 시도할 수 있습니다. 예를 들어 열 번째 시도 후에 올바른 비밀번호를 사용하면 로그인할 수 있습니다.

또한 때때로 로그 파일 끝에 오류가 표시됩니다.

내 지역 감옥:

[DEFAULT]
#ban n hosts for one hour:
bantime = 3600

#maxtrys
maxretry = 3

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true

왜 이런 일이 일어나는지 아는 사람이 있나요?

답변1

iptables구성에 이름이 인 필터 체인이 없는 것 같습니다 f2b-sshd.

먼저 에 대한 간략한 소개입니다 iptables.

iptablesLinux 방화벽 하위 시스템의 명령이자 이름입니다. 이 명령은 RAM에 방화벽 규칙을 설정하는 데 사용됩니다. 방화벽 iptables규칙은 먼저 테이블로 정렬됩니다. 기본 테이블이 있지만 다양한 목적을 위한 , 및 테이블 도 filter있습니다 . 에서는 트래픽 필터링을 수행하므로 테이블을 사용합니다.natmanglerawsecurityfail2banfilter

그런 다음 이러한 테이블은 필터 체인으로 더 나뉩니다. 각 테이블에는 특정 표준 체인이 있습니다. filter테이블의 경우 표준 체인은 INPUT, FORWARD및 입니다 OUTPUT. FORWARD이 체인은 시스템이 다른 시스템에 대한 트래픽을 라우팅하도록 구성된 경우에만 사용됩니다. 이 INPUT체인은 시스템으로 들어오는 트래픽을 처리합니다.

fail2ban해당 규칙이 체인에 직접 추가되고 모든 INPUT금지가 만료되면 체인이 완전히 지워지는 경우 방화벽 입력 규칙에 대한 모든 제어권을 넘겨야 합니다. fail2ban사용자 정의 방화벽 규칙을 쉽게 가질 수 없습니다.또한fail2ban효과 는 무엇입니까 ? 이는 분명히 바람직하지 않으므로 fail2ban수행되지 않습니다.

대신, fail2ban완전히 자체 관리할 수 있는 자체 필터 체인을 만들고 시작 시 체인에 단일 규칙을 추가하여 INPUT처리를 위해 체인을 통해 일치하는 트래픽을 보냅니다.fail2ban

예를 들어 protected로 구성한 경우 sshd시작 fail2ban시 다음 명령을 실행해야 합니다.

iptables -N f2b-sshd
iptables -A f2b-sshd -j RETURN
iptables -I INPUT -p tcp -m multiport --dports <TCP ports configured for sshd protection> -j f2b-sshd

이러한 명령은 f2b-sshd필터 체인을 생성하고 마지막 규칙으로 설정됩니다 RETURN. 따라서 fail2ban규칙이 처리되면 INPUT 규칙의 정상적인 처리가 마치 없는 것처럼 계속되고 fail2ban마지막으로 테이블 시작 부분에 규칙을 추가하여 INPUT캡처합니다. 모든 SSH 트래픽을 처리하고 먼저 f2b-sshd체인 으로 보냅니다 .

이제 fail2banSSH에 대해 IP 주소를 금지해야 할 때 f2b-sshd체인에 새 규칙을 삽입하기만 하면 됩니다.

iptables 또는 방화벽 규칙을 관리하는 다른 시스템을 사용하거나 firewalld모든 규칙을 수동으로 지우는 경우 iptables이러한 초기 규칙과 전체 f2b-sshd필터 체인이 지워질 수 있습니다. 사용하는 모든 방화벽 관리 도구가 INPUT 체인의 초기 규칙을 유지하고 f2b-sshd이 체인을 전혀 건드리지 않도록 해야 합니다 .

코드 조각 끝에 있는 오류 메시지는 fail2ban초기 규칙이 여전히 존재하는지 확인하는 중("불변성 검사")이 존재하지 않는 것으로 확인되었음을 나타냅니다.

답변2

문제는 차단이 작동하고 있지만 공격자가 지속적인 연결을 사용하고 있으므로 차단이 여전히 연결되어 있고 새로운 연결이 없기 때문에 차단이 즉시 적용되지 않는다는 것입니다. 이런 일이 발생하는 유일한 방법은 메일 서버를 다시 시작하는 것입니다.

답변3

난 그냥 이 문제를 처리해야 했어요. 이 문제는 exim4 failure2ban 튜토리얼을 따르는 것과 관련이 있습니다. Jail.d/exim4.conf 파일에는 다음 내용이 포함되어 있습니다.

[exim-spam]
port = smtp,ssmtp

exim4가 포트 25, 464에서 실행되기 때문에 실제로 필요한 경우그리고587은 다음과 같습니다.

[exim-spam]
port = smtp,ssmtp,587

그게 다야.

기본적으로 모든 필터가 올바르게 설정되어 있으며 모든 것이 잘 작동합니다. 하지만 다음과 같습니다.

  • 공격은 포트 587에서 발생합니다.
  • 구성 파일은 Fail2ban에 포트 25 및 465만 차단하도록 지시합니다.

물론 공격은 계속될 것입니다! 따라서 사용 중인 프로토콜(이 경우 sshd)에 맞게 조정하세요.

"netstat -an | more", "iptables -L -n" 및 "lsof -i :587"은 친구입니다.

관련 정보