ウェブサイト検索

Linuxで全ての失敗したSSHログイン試行を見つける方法


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

Linuxで失敗したSSHログインのリストを表示するには、このガイドに示されたコマンドのいくつかを実行してください。これらのコマンドはルート権限で実行されることを確認してください。

失敗したすべての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ディストリビューションでは、Systemdデーモンが管理するランタイムログファイルをjournalctlコマンドを使って照会できます。すべての失敗した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アドレスをブロックするために、システムのファイアウォールルールを更新するか、fail2banのような専門のソフトウェアを使用してこれらの攻撃を管理するべきです。

関連記事: