ウェブサイト検索

Linux で失敗したすべての SSH ログイン試行を検索する方法


SSH サーバーへのログイン試行は、Linux の rsyslog デーモンによって追跡され、ログ ファイルに記録されます。 Linux で失敗したすべての SSH ログイン試行を一覧表示する最も基本的なメカニズムは、cat コマンドまたは grep コマンドを使用してログ ファイルの表示とフィルタリングを組み合わせることです。

Linux で失敗した SSH ログインのリストを表示するには、このガイドで説明されているいくつかのコマンドを実行します。これらのコマンドは必ず root 権限で実行してください。

失敗したすべての SSH ログインを一覧表示する最も簡単なコマンドは、以下に示すコマンドです。

grep "Failed password" /var/log/auth.log

cat コマンドを発行しても同じ結果が得られます。

cat /var/log/auth.log | grep "Failed password"

失敗した SSH ログインに関する追加情報を表示するには、次の例に示すコマンドを発行します。

egrep "Failed|Failure" /var/log/auth.log

CentOS または RHEL では、失敗した SSH セッションは /var/log/secure ファイルに記録されます。このログ ファイルに対して上記のコマンドを発行して、失敗した SSH ログインを特定します。

egrep "Failed|Failure" /var/log/secure

CentOS または RHEL で失敗した SSH ログインを表示するために上記のコマンドを少し変更したバージョンは次のとおりです。

grep "Failed" /var/log/secure
grep "authentication failure" /var/log/secure

SSH サーバーへのログインを試行して失敗したすべての IP アドレスのリストと、各 IP アドレスの失敗した試行回数を表示するには、以下のコマンドを実行します。

grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr

新しい Linux ディストリビューションでは、journalctl コマンドを使用して、Systemd デーモンによって維持されているランタイム ログ ファイルをクエリできます。失敗した SSH ログイン試行をすべて表示するには、以下のコマンド例に示すように、grep フィルターを介して結果をパイプする必要があります。

journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"
journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure"  #In RHEL, CentOS 

CentOS または RHEL では、以下のコマンド例に示すように、SSH デーモン ユニットを sshd.service に置き換えます。

journalctl _SYSTEMD_UNIT=sshd.service | grep "failure"
journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"

疑わしいユーザー アカウントまたは無効なユーザー アカウントでシステムにログインするために SSH サーバーに頻繁にアクセスする IP アドレスを特定したら、失敗した SSH 試行の IP アドレスをブロックするようにシステム ファイアウォール ルールを更新するか、特殊な IP アドレスを使用する必要があります。これらの攻撃を管理するには、fail2ban などのソフトウェアを使用します。