존재하지 않는 사용자의 실패한 SSH 시도를 숨기는 방법은 무엇입니까?

존재하지 않는 사용자의 실패한 SSH 시도를 숨기는 방법은 무엇입니까?

질문

사소한 SSH 로그인 실패 문제를 해결하는 방법은 무엇입니까?

배경

환경에 대한 인식을 위해 저는 제가 관리하는 모든 GNU/Linux 시스템의 시스템 오류 로그를 표시하는 작은 배경 창을 갖고 싶습니다. 예전에는 xconsole을 사용하여 이 작업을 수행했지만 이제는 xterm running 을 사용합니다 journalctl -f.

불행하게도 서비스가 필요한 시스템에서 sshJournalctl 로그는 일반 이름/비밀번호 목록을 사용하여 ssh를 시도하는 크래커의 지속적인 혼란스러운 흐름입니다. ²존재하지도 않는 계정에 대해 매초마다 결함이 발생하는 것을 봅니다. 이로 인해 콘솔 로그에서 다른 내용을 보기가 어렵습니다.

해결책?

나는 systemd에 대해 내가 알아야 할 것보다 절반도 모르기 때문에 아마도 깔끔하고 간단한 대답이 있을 것입니다. 그러나 아직 찾지 못했습니다. ³ 어떤 솔루션이라도 환영합니다. 나는 이것이 pam, Journalctl 및/또는 grep -v.

기존 계정에 대한 시도를 계속 보여주는 솔루션을 찾고 있습니다. 하지만 이것이 너무 어렵다면 실패한 로그인 시도를 모두 숨기는 답변을 수락하겠습니다.

Journalctl 예

다음을 표시하지 마십시오.

Dec 12 17:19:21 gaia sshd[10146]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=139.59.90.40  user=root
Dec 12 17:19:21 gaia sshd[10148]: Invalid user git from 14.29.201.30
Dec 12 17:19:21 gaia sshd[10148]: input_userauth_request: invalid user git [preauth]
Dec 12 17:19:21 gaia sshd[10148]: pam_unix(sshd:auth): check pass; user unknown
Dec 12 17:19:21 gaia sshd[10148]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=14.29.201.30
Dec 12 17:19:22 gaia sshd[10150]: Invalid user molisoft from 5.135.152.97
Dec 12 17:19:22 gaia sshd[10150]: input_userauth_request: invalid user molisoft [preauth]
Dec 12 17:19:22 gaia sshd[10150]: pam_unix(sshd:auth): check pass; user unknown
Dec 12 17:19:22 gaia sshd[10150]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=5.135.152.97
Dec 12 17:19:23 gaia sshd[10146]: Failed password for root from 139.59.90.40 port 37752 ssh2
Dec 12 17:19:23 gaia sshd[10146]: Received disconnect from 139.59.90.40: 11: Bye Bye [preauth]
Dec 12 17:19:23 gaia sshd[10148]: Failed password for invalid user git from 14.29.201.30 port 41178 ssh2
Dec 12 17:19:23 gaia sshd[10148]: Received disconnect from 14.29.201.30: 11: Bye Bye [preauth]
Dec 12 17:19:24 gaia sshd[10150]: Failed password for invalid user molisoft from 5.135.152.97 port 50730 ssh2
Dec 12 17:19:24 gaia sshd[10150]: Received disconnect from 5.135.152.97: 11: Bye Bye [preauth]

하지만 유효한 로그인 정보를 표시해야 합니다.

Dec 10 08:56:16 gaia sshd[1414]: Accepted publickey for sophia from 24.22.130.192 port 41610 ssh2: RSA 6b:5f:aa:9c:d8:33:65:2c:c4:0c:88:12:ec:9b:ff:51
Dec 10 08:56:16 gaia sshd[1414]: pam_unix(sshd:session): session opened for user sophia by (uid=0)
Dec 10 21:06:37 gaia sshd[1414]: pam_unix(sshd:session): session closed for user sophia

유효한 계정(루트 제외)에 대한 실패한 시도도 표시됩니다.

Dec 12 00:46:28 gaia sshd[30924]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.9.134  user=sophia
Dec 12 00:46:30 gaia sshd[30924]: Failed password for sophia from 192.168.9.134 port 55888 ssh2
Dec 12 00:46:33 gaia sshd[30924]: Connection closed by authenticating user sophia 192.168.9.134 port 55888 [preauth]

물론 어떤 서비스든아니요sshd가 표시되어야 합니다.

Dec 10 08:56:16 gaia systemd[1]: Started User Manager for UID 3237.

1은 "사용자 이름이 존재하지 않습니다" 또는 "사용자 이름이 루트입니다"로 정의됩니다. 내 boxen에서 루트 SSH가 비활성화되었습니다.
² 나는 그것을 사용했다 fail2ban. 도움이 되지만 IP 주소가 너무 많아서 시도가 이루어지지 않습니다.
³ 예를 들어, Journalctl은 특정 조건을 허용 grep하지만 제외하지는 않습니다 grep -v.

답변1

사용

 journalctl -f | awk -f filter.awk

filter.awk 파일에는 다음이 포함되어 있습니다.

# get the non sshd stuff out the way
$5 !~ /^sshd\[[0-9]*\]:$/ { print ; next }
# show authentication errors for valid users which are not root
/authentication failure/ && $15 != "" && $15 != "user=root"
/Failed password for/ && !/invalid user/ && !/for root/
# Show valid logins
/Connection closed by authenticating user/
/Accepted publickey/
/pam_unix\(sshd:session):/

그다지 영리한 것은 없습니다. sshd 줄이 아니면 인쇄하고 다음 줄로 이동하세요. 그렇지 않으면 표현식과 일치하는 행을 인쇄합니다. 저는 GNU awk 버전 5.0.1을 사용하고 있습니다.

답변2

다음을 통해 로그 스팸을 크게 줄일 수 있습니다 /etc/ssh/sshd_config.

  • 비밀번호 인증을 비활성화하고 공개 키만 허용합니다.

    PasswordAuthentication no
    ChallengeResponseAuthentication no
    PermitRootLogin prohibit-password
    
  • 레벨 이하를 사용하십시오 INFO( INFOsshd 업스트림 기본값).

    LogLevel INFO
    

제거되지 않은 유일한 문제는 로그인 스팸 봇이 키 교환 방법을 사용하지 않는 경우입니다. 예를 들면 다음과 같습니다.

Unable to negotiate with 203.0.113.1 port 40442: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 [preauth]

나는 아직 그것에서 벗어날 방법을 찾지 못했습니다.

관련 정보