Debian 7を実行している私のVPSでは、デフォルトのポート22でsshが有効になっており、秘密鍵認証のみが有効になっています。他のすべてのポートはiptablesでフィルタリングされています。 「plesk」や「r00t」などの偽のユーザー名で中国からログインが頻繁に試行され、/ var/log /auth.logに表示されます。
唯一の問題は、秘密鍵を提示せず、有効なユーザー名でログインを試みる認証試行の場合です。ログに表示される唯一の行は次のとおりです。
sshd [4364]:接続は123.45.67.89によって閉じられました[事前認証]
SshdログレベルがVERBOSEに設定されている場合、ユーザーが接続したこととユーザーが接続したポートを示す追加の行が出力されます。
秘密鍵がないためにユーザーを切断したことをsshdログに記録する方法はありますか?
「チート」を使用できます。authセクションの/etc/pam.d/ssh(d)で、pam_unixまたは@include common-authステートメントの前にログステートメント(pam_log)を追加できます。このステートメントがヒットした場合、パスワード認証が試行されています。
あなたの質問への答えはいいえです。少なくとも、いくつかの賢明な代替手段よりもはるかに難しい英雄的な手段(たとえば、DEBUGレベルを実行してスクリプトで処理する)を実行しない限りではありません。同じ[preauth]
キーがないか、キーが無効な場合、エラーが報告されます。
一方、実際に接続している場合は、ログに明示的に表示されます
Jul 7 15:59:38 ws6 sshd[9578]: Accepted password for robohacker...
または
Jul 7 15:59:38 ws6 sshd[9578]: Accepted publickey for robohacker...
便利にできることは、構成をさらに強化することです。すでにキーが必要です。AllowUsers
およびAllowGroups
コマンドを使用して、特別に許可されていない人による接続を防ぐこともできます。
個人的には、DenyHostsを常にインストールしていますが、最近の更新はないようです。 Fail2Banも良いと聞きました
詳細モードの場合、sshdは実際に切断ステートメントをすでにログに記録します。
より多くの情報が必要な場合は、究極のDEBUGロギングモードを使用することもできますが、適切なログローテーションポリシーがないとログが急速に増加するため、これには十分注意してください;-)
Sshdが実行できるロギングは、man sshd_config
に文書化されます。それを「ログ」で検索してみてください。しかし、そこに特定の情報はありません。主にLogLevelとSyslogFacilityだけですが、MaxAuthTriesが役立つかもしれません。