VNC 인증 실패 오류가 너무 많음 - Fail2ban

VNC 인증 실패 오류가 너무 많음 - Fail2ban

Xtightvnc가 설치된 Debian 11 서버에서 "인증 실패가 너무 많습니다"라는 메시지가 많이 나타납니다. 나는 VNC를 통해 내 서버에 로그인하려는 무단 사용자를 차단하기 위해 Fail2ban을 사용하고 싶습니다. 하지만 유효한 규칙을 찾을 수 없습니다. 내가 찾은 규칙은 매우 오래되었으며 로그에는 적용되지 않습니다.

14/10/21 20:37:43 Got connection from client 209.141.49.123
14/10/21 20:37:43 Using protocol version 3.3
14/10/21 20:37:43 Too many authentication failures - client rejected
14/10/21 20:37:43 Client 209.141.49.123 gone
14/10/21 20:37:43 Statistics:
14/10/21 20:37:43   framebuffer updates 0, rectangles 0, bytes 0

나는 내 액세스 IP를 해제하기 위해서만 iptables를 사용하지만 이 솔루션을 원하지 않습니다.

답변1

불행하게도 이 VNC 로깅의 로그 형식은 fall2ban에 적합하지 않습니다. 실패한 메시지에는 IP 주소가 포함되어 있지 않으며, IP가 있는 항목과 실패한 시도에는 이 ID로 그룹화할 수 있는 일부 식별자가 포함되어 있지 않습니다.

기본적으로 FAIL2BAN은 이러한 종류의 여러 줄 로그(IP가 포함된 한 줄과 오류가 포함된 다른 줄)를 두 가지 방법으로 처리할 수 있습니다.

  • 감옥/필터 maxlines>= 2 롤링 로그, 메시지 창에는 1개 이상의 메시지가 포함되어 있습니다.
  • 새로운 다중 행 처리에서는 <F-MLFID>...</F-MLFID>동일한 클라이언트의 메시지 2개를 고려하기 위해 태그를 사용하여 각 행의 세션 관련 ID를 캡처합니다.

여기서는 두 가지 접근 방식 모두 적절하지 않습니다.

곧 다음과 같이 합법적인 시도와 실패한 시도가 동시에 발생하면 이를 구별할 수 없게 됩니다.

Got connection from client 192.0.2.111
Got connection from client 192.0.2.222
Too many authentication failures - client rejected
Client successfully connected ~artificial log-entry (I don't know ~

여기서는 2개의 클라이언트가 연결되어 있지만 하나는 실패하고 다른 하나는 성공했습니다. 어느 것이 성공했고 어느 것이 실패했나요?

거부된 메시지 뒤에는 여전히 암묵적으로 로그 항목(IP 및 )이 있으므로 gone연결 성공 후 클라이언트가 사라질 가능성이 거의 없다고 생각한다면 근처의 메시지를 다음에서 오는 메시지 client rejected로 처리하겠다고 말할 수 있습니다. gone동일한 클라이언트(이것은 약간 "위험"합니다. 특히 한 순간에 성공하고 나중에 사라지는 사이에 추가 메시지가 없는 경우에는 더욱 그렇습니다만...).

그런 다음 다음 구성을 사용할 수 있습니다.

# increasing the value of `maxlines` would make that the filter works more precise (can consider failures also in case of some flood in log between `client rejected` and `gone`),
# but it would make it more unsafe at the same time (because it can cause false positives on `gone` messages from legitimate clients occurring after `client rejected` logged from evildoers):

maxlines = 2

failregex = ^\s*Too many authentication failures - client rejected<SKIPLINES>\s*Client <ADDR> gone

(fail2ban 버전이 0.10보다 오래된 경우 다음 <ADDR>으로 교체하세요)<HOST>

그러나 어쨌든 VNC 사이트에서 수정하는 것이 더 좋습니다. 예를 들어 client rejectedIP 주소를 메시지에 직접 추가하거나 세션 관련 ID를 도입하여 클라이언트를 명확하게 식별하는 것입니다.

관련 정보