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

サーバー設定

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

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



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

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

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

secure ログに記録される操作

  • サーバーにログインしたとき
  • 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 ポート番号を変える

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

踏み台サーバーを利用する

サーバーが多数存在する場合は、SSH を中継する踏み台サーバーを用意しましょう。
各サーバーでは、踏み台経由のログインのみを許可するように設定します。

SSH の入口を踏み台サーバーに限定することで、ログイン経路の絞り込みが可能です。
インターネットから各サーバーに直接入れないため、各種アタックも防ぎやすくなります。

まとめ

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

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

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