仁義なきログ監視の戦い:システムのログをつかさどるsyslogd(シスログ)

07-S-09

システム管理の基礎 syslogdの設定について

syslogdによって記録されるシスログ管理は、システムの運用・管理のための重要な手掛かりとなります。しかし、役に立つシスログを取得するためには、各環境固有の事情に合っていなければなりません。

ここではsyslogdで不正アクセスを確認する方法をご説明します。

一般的に、ログ管理は常に実施しているものではなく、確認するタイミングとしては、システムの異常を検知した場合か、あるいは、サーバに負荷のかかる作業を行わせるなど、これから何か起こる可能性が想定される場合が考えられます。

ただし、サーバは常時稼働が要求されるコンピュータであり、サービスやハードウェアが止まる前にシスログの出力から予兆を見つけ、ログ管理で事前に対処できるようにしたいものです。

常に眺めていることのできないシスログから必要なログ管理情報を取得するにはどうすればよいのでしょうか?
まずは、本当に必要な情報が簡単に取り出せること、が条件になるかと思います。

サーバのシスログのログ管理で、不正アクセスやサーバの状態、サービスの動作などを監視することができます。
しかし、デフォルト設定のままでは、自社にとって必要な情報とそうではない情報が1つのファイルに混在しています。
ここでは、最低限必要な情報として、不正アクセス監視のためシスログ管理について確認しておきましょう。

ログ管理の基礎(例:不正アクセスの監視)

不正アクセスが行われているかどうかを知るには、正常な状態とは異なる状況を検知する必要があります。
日常のログ管理でどんなメッセージが表示されているかを把握しておくことで、正常な状態の把握ができていれば、日常とは異なる情報が表示されたときに「異常」として認識することができます。

そして、ログ管理で異常を検知した場合、それがどんな種類の情報なのかを考えなければなりません。このようなセキュリティに関連する情報は、シスログでは/var/log/messagesと/var/log/secureで確認できます。

シスログの書式

シスログの記述内容は大きく分けて次のようになっています。

日時 サーバ名(IPアドレス) 情報
いつ、どのサーバで、どのプログラムがどうなったかを確認できます。
ログ管理情報の中で、特定の期間内に、必要以上に同じような情報が表示されていれば、何らかの攻撃や問題が発生していると考えられます。

情報に関しては対象となるプログラムによって異なりますが、どのプログラムの情報で成功したのか失敗したのかを確認することができます。

例として、/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. 以下のログは、「yamamoto」ユーザーでログインしようとしたが、認証に失敗したと記録されています。認証の失敗は操作ミスなどありますが、同じユーザーで何度も失敗している場合は注意する必要があります。

Jul 27 10:51:22 itbsv1 login[8276]: FAILED LOGIN SESSION FROM (null) FOR yamamoto,Authentication failure

2.以下のログは、「root」ユーザーでssh接続を行い、パスワードの認証に失敗した場合の記録です。

Jul 20 11:21:35 itbsv1 sshd[8306]: Failed password for ROOT from 192.168.0.11 port 1027 ssh2
1.と2.を比較すると、failedの単語が両方に存在します。つまり、ログファイルから「failed」を含む行を抜き出せば、何かに失敗したメッセージだけを確認できます。

特定のサービスに対する攻撃の場合は、同じあるいはほぼ同じメッセージが繰り返されます。参考として、xntpdに対してDoS攻撃が行われた場合のログの例を示します。

Jul 20 15:41:01 itbsv1 xntpd[8496]: [ID 866936 daemon.notice] xntpd exiting on signal 10
Jul 20 15:41:01 itbsv1 xntpd[8496]: [ID 866936 daemon.notice] xntpd exiting on signal 10
Jul 20 15:41:01 itbsv1 xntpd[8496]: [ID 866936 daemon.notice] xntpd exiting on signal 10
Jul 20 15:41:01 itbsv1 xntpd[8496]: [ID 866936 daemon.notice] xntpd exiting on signal 10
Jul 20 15:41:01 itbsv1 xntpd[8496]: [ID 866936 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起動時に関する情報

今回は、不正アクセスの監視を例として、シスログを確認する方法をご説明しました。