PHPプログラマーの松永です。
今回はサーバーログイン時のアラート通知設定の方法を紹介します。
目次
目的
サーバーログイン時のアラート通知設定は、主にセキュリティーを高めるために設定します。
AWSではCloudWatchを使用した方法もあり、物理・クラウドなど環境に左右されずに設定を行うことができます。
このような自動監視の設定は、設定が複雑になりがちですが、
今回はアラート通知する条件を広範囲にすることで実用的かつ簡単にアラート通知設定を行うことができます。
設定方法
/etc
配下を操作するため、root権限が必要になります。
mailコマンドのインストール
既にmailコマンドが使用できる場合は、インストールする必要はありません。
sudo yum install mailx
上記コマンドを実行後、[y/n]
が表示されたらy
を入力します。
/etc/ssh/sshrc
の作成
既にsshrc
がある場合は、作成する必要はありません。
現状あるsshrcを使用してください。
/etc/ssh
配下にsshrc
というファイルがない場合は、新規に作成します。
pwd
でカレントディレクトリが/etc/ssh
であることを確認し、ファイルを作成します。
touch sshrc
通知設定
通知設定を/etc/ssh/sshrc
に記述していきます。
echo "$USER logged in from $SSH_CLIENT at `date +"%Y/%m/%d %p %I:%M:%S"`" | mail -s "[server login alert] logged in server" -r from@mail.co.jp to@mail.co.jp
確認
一度サーバーからログアウトし、再度ログインすることで確認することができます。
正常に設定できているとメールが送信されます。
仕組み
sshrc
SSHでサーバーログインを行うと、サーバーはsshrc
というファイルを読み込んでからログインするようになっています。
そのため、「sshrc
が読み込まれた」=「サーバーにログインした」ということになるため、このsshrcに「mailコマンドでメールを送信する」という記述をしています。
$USER、$SSH_CLIENT
$USER
や$SSH_CLIENT
は、サーバー環境変数です。
$USER
には、サーバーログイン時のユーザー名が格納されています。
$SSH_CLIENT
には、サーバーログインしたアクセス元のIPアドレスが格納されています。
以上でございます。
まとめ
今回の設定は、「SSHでサーバーログインしたら」という広範囲でのアラート通知する条件のため、
MySQL WorkbenchやFileZillaを使用したサーバーログインでもアラート通知があります。
MySQL WorkbenchやFileZillaであってもサーバーへログインしていることには変わりないので、
今回のアラート通知でサーバーへのログインをしっかり把握することをおすすめいたします。
「簡単にサーバーログイン時のアラート通知がほしい」という方の参考になれば幸いです。