ウェブサイト検索

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


SSH サーバーへのログイン試行はそれぞれ 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 アドレスを特定したら、これらの攻撃を管理するためにシステムのファイアウォール ルールをfail2ban に更新する必要があります。