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 に関する操作が記録されています。

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

【関連記事】
Webサイトの不正アクセス対策
AWS WAF で DoS 攻撃をブロックする
エックスサーバーのセキュリティを強化