sshd "Received Disconnect/Disconnected ... [preauth]" 로그에 fall2ban을 적용하는 것이 안전합니까?

sshd "Received Disconnect/Disconnected ... [preauth]" 로그에 fall2ban을 적용하는 것이 안전합니까?

/var/log/auth.log(Debian Buster) 에서 다음과 같은 로그를 많이 볼 수 있습니다 .

Jan  2 17:10:17 mybox sshd[16304]: Received disconnect from 1.2.3.4 port 37792:11: Bye Bye [preauth]
Jan  2 17:10:17 mybox sshd[16304]: Disconnected from authenticating user root 1.2.3.4 port 37792 [preauth]
Jan  2 17:10:20 mybox sshd[16306]: Received disconnect from 5.6.7.8 port 63061:11: Bye Bye [preauth]
Jan  2 17:10:20 mybox sshd[16306]: Disconnected from authenticating user root 5.6.7.8 port 63061 [preauth]
Jan  2 17:12:38 mybox sshd[16380]: Received disconnect from 9.10.11.12 port 55224:11: Normal Shutdown, Thank you for playing [preauth]
Jan  2 17:12:38 mybox sshd[16380]: Disconnected from authenticating user root 9.10.11.12 port 55224 [preauth]

나 이외의 누구도 해당 컴퓨터에 로그인을 시도해서는 안 되기 때문에 이것이 침입 시도라는 것을 알고 있습니다.

에는 해당 규칙이 없으므로 /etc/fail2ban/filter.d/sshd.conf이러한 시도로 인해 Fail2ban이 문제가 되는 IP 주소를 금지하지는 않습니다.

비밀번호 로그인을 비활성화했기 때문에 여기서 발생하는 현상은 이러한 시도가 인증을 시도하기도 전에 삭제되고 그 이유로 Fail2ban이 해당 시도를 포착하지 못하는 것 같습니다.

그러나 이것이 침입 시도라는 것을 알고 있기 때문에 여전히 IP를 금지하고 그들이 다른 작업을 시도하고 내 로그를 채우는 것을 막고 싶습니다.

해당 행 중 일부와 일치하는 Regexp를 추가하는 것이 안전합니까, 아니면 합법적인(키 기반) 로그인 시도와 일치할 위험이 있습니까? 어떤 부분이 안전한 조합을 만들까요? "Disconnected"라는 단어와 "[preauth]" 태그가 일치하면 반드시 비밀번호 기반 무차별 대입 실패를 의미합니까?

답변1

/etc/fail2ban/filter.d/sshd.conf에는 해당 규칙이 없으므로 이러한 시도로 인해 FAIL2BAN이 문제가 되는 IP 주소를 금지하지 않습니다.

어떤 버전을 사용하고 있나요? Fail2Ban에는 모든 모드에서 사용되는 공통 Failregex에 포함된 사전 정의된 규칙이 함께 제공됩니다.

내 시스템 중 하나의 Fail2Ban v0.10.2에는 다음 규칙이 포함되어 있습니다.

^<F-NOFAIL>Received <F-MLFFORGET>disconnect</F-MLFFORGET></F-NOFAIL> from <HOST>: 11:

그리고 Fail2Ban v0.11.2에는 다음이 포함되어 있습니다(더 좋습니다):

^<F-NOFAIL>Received <F-MLFFORGET>disconnect</F-MLFFORGET></F-NOFAIL> from <HOST>%(__on_port_opt)s:\s*11:

분명히 개발자는 다음 줄 중 하나가 있다고 생각했습니다.

Received disconnect from <HOST>: 11:
Received disconnect from <HOST> port XXXXX:11:

충분할 것입니다. 관련 키워드인 존재 Received disconnect from: 11:부분(접미사 대신 [preauth]).

이는 <F-NOFAIL>이 줄이 실패가 아니며 <F-NOFAIL>IP를 금지하지 않고 다른 일치가 예상되므로 주변 태그를 제거해야 함을 의미합니다.

답변2

해당 행 중 일부와 일치하는 Regexp를 추가하는 것이 안전합니까, 아니면 합법적인(키 기반) 로그인 시도와 일치할 위험이 있습니까? 어떤 부분이 안전한 조합을 만들까요? "Disconnected"라는 단어와 "[preauth]" 태그가 일치하면 반드시 비밀번호 기반 무차별 대입 실패를 의미합니까?

합법적인 성공적인 연결 및 인증은 이러한 로그 줄을 트리거하지 않습니다. 이러한 항목은 해를 끼치지 않지만 차단될 수도 있는 스캐너에서 올 수 있습니다. preauth는 해당 클라이언트가 아직 인증을 시작하지 않았음을 의미합니다.

잘못된 키를 사용하거나 비밀번호를 잘못 입력하여 로그인에 실패한 경우에도 Fail2ban을 사용하는 것은 괜찮습니다. fall2ban은 구성 가능한 수의 일치하는 로그 줄 이후에만 특정 시간 동안만 차단합니다.

데비안 버스터에서 이 코드 조각(예: cmdfailre)을 사용할 수 있습니다:

^Received disconnect from <HOST>%(__on_port_opt)s:11: \s* %(__suff)s$
^Disconnected from authenticating user <F-USER>.*?</F-USER> <HOST>%(__on_port_opt)s %(__suff)s$

답변3

Jail.local 파일의 [sshd]에서 mode =aggressive를 설정하여 이 기능을 활성화했습니다.

관련 정보