ConoHa WINGでSSHからログを読みたい
webサイトのセキュリティを考えるうえで、ログを定期的に読んでおくことは大事なことです。
以前にも一度紹介したことがありますが、当サイトのようなアクセス数のそれほど多くないサイトでも、定期的に不審なアクセスが観測されています。
(とくに、WordPressのような動的サイトならなおさらです)
今回は、ConoHa WINGというレンタルサーバーで、SSH接続でログを確認する手順をまとめました。
1. コントロールパネルから秘密鍵を作成する
SSH接続をする場合、パスワードで認証する方法もあるようですが、一般的には秘密鍵を生成します。
今回接続するレンタルサーバーのConoHa WINGは、コントロールパネルから秘密鍵を生成できます。
詳しくは、ConoHaのヘルプ記事をご覧ください。
なお、秘密鍵(プライベートキー)は、絶対に流出させてはいけないものです。
また、誤って消してしまわないように、大切に保管できるディレクトリに移してください。
2. ~/.ssh/configファイルを作成する
次に、~/.ssh/ フォルダに、configファイルを作成します。
configファイルについても、作り方がネットにはたくさん載っているのですが、たとえば以下のような記事が参考になるかもしれません。
ConoHaで作る場合は、次のようなものになると思います。
Host 【覚えやすい名前】
HostName 【ConoHaのホスト名】
User 【ConoHaのユーザー名】
IdentityFile 【秘密鍵のディレクトリとファイル名】
Port 【ポート番号】
ホスト名やユーザー名、ポート番号などは、コントロールパネルに書いてあります。
3. ターミナルからSSH接続する
SSH接続のできるターミナルから、接続します。
わたしの事務所PCはWindowsなので、Windowsターミナルを使っています。
(以前、PowerShellを使っていたこともあるのですが、文字色が読みにくく、やめました)
ターミナルを立ち上げると、コマンドが打てるようになるので、以下を入力してエンターを押します。
ssh 【先ほど決めた覚えやすい名前】
ssh接続をするとき、最初の1回は「本当に接続して大丈夫?」というようなことが聞かれるので、yesを押します。
無事、ConoHaアカウントに接続できれば成功です。
4. linuxコマンドでログを読む
ConoHa WINGの場合(もしかしたらほかのサーバーも同様なのかもしれませんが)、~/logs/【独自ドメイン】/accesslog.【日付】.gz
というファイルに、過去数日分のアクセスログが格納されています。
(※ エラーログやPHPのログも、その周囲にありますので、lsコマンドなどで探してください。)
gzファイルで、圧縮されているので、このままでは読みにくいです。
以下のような zcat
コマンドで、展開してから使うと良いようです。
$ zcat ./logs/【独自ドメイン】/accesslog.【日付】.gz
わたしの場合は、grep "404" などで絞り込んでから、wc -l や、less コマンドで行数や一覧を表示させることが多いです。
具体例:
$ zcat ./logs/【独自ドメイン】/accesslog.【日付】.gz | grep "404" | wc -l
$ zcat ./logs/【独自ドメイン】/accesslog.【日付】.gz | grep "404" | less
定期的に知っておきたい情報は、cronで自動化して、抽出した情報を蓄積し、グラフにするようなこともできるかもしれません。(わたしはそこまではやっていませんが。)
まとめ
今回ご紹介した内容は、簡単なコマンドだけで利用できるので、おすすめです。
「PCを立ち上げるのすら面倒」という方には、あまりおすすめできない方法かもしれませんが、毎日PCを使う方であれば、最初に秘密鍵とconfigファイルさえ作ってしまえば、次の日からの作業は、コマンドを打つだけで済みます。
もちろん、コマンドを用いずに、ログを自動的に分析してくれるツールもあるとは思います。
けれども、だいたいの場合、お金もかかりますし、生のログ情報ではないので、見るときの切り口がある程度限られます。
今回ご紹介した方法なら、いくつかのコマンドを覚えておけば、あとは自分の好みによって、いろいろと変えられるので自由度が高いです。
お時間のある方は、お試しください。