システム管理の基礎 syslogdの設定をマスターしよう:Linux管理者への道(3)(1/3 ページ)
syslogdによって記録されるログは、システムの運用・管理のための重要な手掛かりとなる。しかし、各環境固有の事情に合っていなければ、ログを取得する意味はない。syslogdやlogrotateの設定方法をマスターし、必要な情報を選別できるようにしよう。(編集局)
管理者にとって、サーバの正常性の確認とトラブルシューティングは、設定変更と同じかそれ以上に重要な作業です。それらの作業を行う際に役立つのが、各アプリケーションやOSが出力するログです。
一般的に、常にログを監視するという業務はあり得ないでしょう。何も起こらなければ退屈以外の何物でもなく、ログを監視していても異常かどうかは即座に判断できないことが多いかと思います。ログを確認するタイミングとしては、システムに何かが起こった場合あるいはこれから何か起こる可能性がある場合が考えられます。それ以外はログを見ないという管理者もいるでしょう。
何かが起こった場合とは、システムの監視装置がサーバの異常を知らせてきたり、システムの利用者から何かしら利用ができないと連絡を受けた場合であり、ログを見るためのトリガがはっきりしています。これに対して、何か起こる可能性が考えられる場合とは、例えば2000年問題に関係して大みそかから元旦に日が変わる瞬間や、サーバに負荷のかかる作業を行わせるときなどです。
ただし、サーバは常時稼働が要求されるコンピュータであり、サービスやハードウェアが止まる前にログの出力から予兆を見つけ、事前に対処できればベストであるに違いありません。では、常に眺めていることのできないログから必要な情報を取得するにはどうしたらよいのでしょうか? まずは、本当に必要な情報が簡単に取り出せることが1つの回答になるかと思います。
サーバのログを確認すれば、不正アクセスやサーバの状態、サービスの動作などを監視することができます。ただし、デフォルト設定のままでは必要な情報とそうではない情報が同じファイルに混在しています(注)。そこで、最低限必要な情報について少し考えてみましょう。
ログチェックの基礎(例:不正アクセスの監視)
不正アクセスが行われているかどうかを知るには、何が正常な状態と異なるのか、どのような情報が表示されたときにどのような攻撃あるいはそののための準備作業が行われているのかを知っておく必要があります。正常な状態を知るには、日ごろからログにどんなメッセージが表示されているかを確認するのが一番です。普段見たことのない情報が表示されていれば、「何かが起こっている」と認識できます。
実際におかしな情報が表示されている場合は、それがどういった種類の情報なのかを考えなければなりません。このようなセキュリティに関連する情報は、/var/log/messagesと/var/log/secureで確認できます。
ログの書式
ログの記述内容は大きく分けて次のようになっています。
日時 サーバ名(IPアドレス) 情報
いつ、どのサーバで、どのプログラムがどうなったかを確認できます。特定の期間内に必要以上に同じような情報が表示されていれば、何らかの攻撃や問題が発生していると考えられます。サーバ名は、複数のサーバのログを1台のサーバにまとめて管理する場合(後述)に必要になります。情報に関しては対象となるプログラムによって異なりますが、どのプログラムの情報で成功したのか失敗したのかを確認することができます。
以下は、/var/log/messagesの一部です。
Jul 27 09:49:38 itbsv1 su(pam_unix)[8061]: session opened for user root by root(uid=0)
「7月27日9時49分38秒に」「itbsv1サーバでsuコマンドが実行され」「認証に成功」という内容が読み取れます。成功した内容の情報は、不正アクセスを監視する際には意味のない場合がほとんどです(まったくないとはいいませんが)。多くの場合、失敗した内容の情報に意味があります。
1.以下のログは、「yamada」ユーザーでログインしようとしたが、認証に失敗したと記録されています。認証の失敗はユーザー側の操作ミスなども十分考えられることですが、同じユーザーで失敗が重なる場合は注意する必要があります。
Jul 27 10:51:22 itbsv1 login[8276]: FAILED LOGIN SESSION FROM (null) FOR yamada,Authentication failure
2.以下のログは、「root」ユーザーでssh接続を行い、パスワードの認証に失敗した場合の記録です。
Jul 27 11:21:35 itbsv1 sshd[8306]: Failed password for ROOT from 192.168.0.11 port 1027 ssh2
1.と2.を比較すると、大文字・小文字の違いはありますが「failed」の単語が両方に存在します。つまり、ログファイルから「failed」を含む行を抜き出せば、何かに失敗したメッセージだけを確認できます。grepにiオプションを指定すれば、大文字・小文字の区別なく抜き出すことが可能です。
# grep -i failed /var/log/messages
「failed」以外にも「reject」や「err」「bad」、プログラムによっては「attack」などの文字でも必要な行が抜き出せます。
特定のサービスに対する攻撃の場合は、同じあるいはほぼ同じメッセージが繰り返されます。以下は、xntpdに対してDoS攻撃が行われた場合のログの例です。
Jul 27 13:41:01 itbsv1 xntpd[8496]: [ID 866926 daemon.notice] xntpd exiting on signal 10
Jul 27 13:41:01 itbsv1 xntpd[8496]: [ID 866926 daemon.notice] xntpd exiting on signal 10
Jul 27 13:41:01 itbsv1 xntpd[8496]: [ID 866926 daemon.notice] xntpd exiting on signal 10
Jul 27 13:41:01 itbsv1 xntpd[8496]: [ID 866926 daemon.notice] xntpd exiting on signal 10
Jul 27 13:41:01 itbsv1 xntpd[8496]: [ID 866926 daemon.notice] xntpd exiting on signal 10
明らかにおかしいメッセージが記録された場合は、使用しているサービスのバージョンを調べてセキュリティに問題がないか確認し、必要であればバージョンアップを行うなどの作業を行います。
ログが出力されるファイル
デフォルトでは、/var/logディレクトリにさまざまなログファイルがあります。代表的な情報がどのファイルに出力されるのかを確認し、何に関する情報が必要であるかに応じて特定の単語を抜き出すファイルを指定します。
ファイル名 | 内容 |
---|---|
/var/log/messages | 一般的なシステムに関する情報 |
/var/log/cron | 定期的に実行される処理の結果に関する情報 |
/var/log/maillog | メールに関する情報 |
/var/log/secure | セキュリティに関する情報 |
/var/log/spooler | 印刷やニュースに関する情報 |
/var/log/boot.log | OS起動時に関する情報 |
注:ディストリビューションによってファイル名やディレクトリが異なる場合があります。 |
以上で、ログを確認する最低限の方法が分かったと思います。次に、ログの設定を変更してより見やすい状態にする方法を説明します。
Copyright © ITmedia, Inc. All Rights Reserved.