存在しないユーザーの失敗した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を使用しています。

おすすめ記事