CentOS のログイン履歴をセキュリティログで確認する方法

サーバー設定

Linux OS で記録されるセキュリティログ・セキュアログについて解説します。

サーバーへの SSH 接続、ログイン操作が記録されるファイルです。
過去に遡って履歴を調べることで、不正ログインの有無などが調査できます。



Linux のセキュリティログ・セキュアログとは

/var/log/secure に格納されているテキストファイルです。
ログローテーションが設定されていると、複数ファイルに分かれている場合もあります。

認証に関するログが記録されており、初期状態では root ユーザーでしか開けません。
以下の操作が行われると、時刻と合わせてファイルに書き込まれます。

  • サーバーにログインしたとき
  • su コマンドで root に昇格したとき
  • sudo コマンドを使用したとき
  • SSH デーモンが起動・停止したとき
  • パスワード入力を間違えたとき
  • SSH 接続を切断したとき

 
基本的にはシステムが書き込むためのファイルです。
自分の操作で編集してしまわないように、注意しましょう。

secure ログで不正アクセスを確認する

前述の通り、SSH やログインに関する捜査が記録されているため、
不正アクセスの有無を確認する用途でも活用できます。

secure ログに対して grep 検索を掛けることで、SSH ログイン履歴を抽出します。
以下の例では、2時間ほどサーバーにログインしていたことが分かります。

$ cat /var/log/secure | grep "sshd" | grep "from"
Sep 23 14:04:26 centos sshd[2544]: Accepted password for hoge from 10.0.0.20 port 56661 ssh2
Sep 23 16:02:23 centos sshd[2545]: Received disconnect from 10.0.0.20 port 56661:11: disconnected by server request
Sep 23 16:02:23 centos sshd[2545]: Disconnected from 10.0.0.20 port 56661

ログローテートされた過去ファイルも一括で検索できます。

$ cat /var/log/secure* | grep "sshd" | grep "from"

ローテート時に gzip で圧縮している場合は、zcat コマンドで展開できます。

$ zcat /var/log/secure-* | grep "sshd" | grep "from"

サーバーへの不正ログインを防ぐための SSH 対策

サーバーへの不正ログインを防ぐためには様々な方法があります。

一つは、SSH ログイン時に公開鍵暗号を使って認証することです。
パスワード認証よりも安全性が高く、破られる可能性が低くなります。

 
効果は薄いものの、SSH のポート番号を22番以外にする対策もあります。
ポートスキャンをされると意味がありませんが、22番を狙い撃ちしてくる攻撃は避けられます。

 
サーバーが多く存在する場合は、踏み台サーバーを用意しましょう。
各サーバーでは、踏み台からの SSH のみを許可するように制限をかけておきます。

SSH するための入口を踏み台サーバーに限定し、ログイン履歴の管理が楽になります。
インターネットから各サーバーに直接入れないため、セキュリティレベルが向上します。

まとめ

Linux OS で記録されるセキュリティログ(セキュアログ)を解説しました。
サーバーへのログインや root に関する操作が記録されています。

ログイン履歴の調査にも使えるため、トラブル発生時などに重要な情報となります。

【関連記事】