【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


第3回 システム管理の基礎 syslogdの設定をマスターしよう

浅野史彦、小川典嗣
アイティーブースト(http://www.itboost.co.jp/
2002/9/7

システムのログをつかさどるsyslogd

 ログには、アプリケーションが独自に出力するものと、syslogdを利用して出力するものの2種類があります。

 独自のログを出力する代表的なアプリケーションにはApacheやSquid、Sambaなどがあります。独自のログ設定を持つアプリケーションに関してはアプリケーションのマニュアルなどを読んでいただくとして、ほとんどのアプリケーションはsyslogdを利用してログを出力しています。以後は、syslogdを利用したログについて説明します()。

注:LinuxおよびUNIXでsyslogdがインストールされていないことは考えにくいため、特にインストール方法については言及しません。また、後述するlogrotateに関しても同様です。

 Linuxでは、主なログの出力先は/var/logディレクトリです。ディレクトリ内を確認すると分かりますが、前述したようにここには複数のファイルが存在します。この設定を行うファイルが/etc/syslog.confです。

■syslog.confのフォーマット

 syslog.confの書式は、スペースあるいはタブで分けられた2つのフィールド「selector」と「action」で構成されています(フィールドを分けるための空白はOSによって異なります。マニュアルで確認してください)。

 
selector
action
  取得するログの指定 取得したログの出力先

■セレクタ(selector)

 selectorは「facility」と「priority」(label)を「.」(ピリオド)で接続します。特定のactionに対して複数のselectorを指定したい場合は、「;」(セミコロン)で接続します。

  facility.priority{;facility.priority}
  取得する情報の分類.どのレベルから出力

■ファシリティ(facility)

 facilityはログの分類に当たるものです。syslogdを利用するプログラムは、「このログはこのfacilityに所属している」という情報をsyslogdに渡しています。syslogdの設定を行うことで、facilityに応じて扱い方を変更できます。

 
facility
対象のログ
  auth(security) 認証サービスのメッセージ(現在はauthprivが推奨されている)
  authpriv 認証サービス(カテゴリはauthと同じ。authとは出力結果が異なる)
  cron cronのメッセージ
  daemon デーモンのメッセージ
  kern カーネルのメッセージ
  lpr プリンタサービスのメッセージ
  mail メールサービスのメッセージ
  news ニュースサービスのメッセージ
  syslog syslogのメッセージ
  user ユーザープロセスのメッセージ
  uucp uucp転送を行うプログラムのメッセージ
  local0〜7 アプリケーションに依存する
  facilityで指定できるキーワード

 複数のfacilityを指定したい場合は「,」(カンマ)で接続して、

mail,ftp.warn

のように書くこともできます。local0からlocal7は、特定のプログラムが所属するfacilityを既存のものと分けたいときに利用します。以下はRed Hat Linux7.3の/etc/xinetd.confの内容ですが、facilityがauthprivで設定されています。スーパーサーバ経由で動作するサービスはfacilityがauthprivということです。

defaults
{
    instances       = 60
    log_type            = SYSLOG authpriv
    log_og_success      = HOST PID
    loc_on_failure      = HOST
    cps         = 25 30
}

includedir /etc/xinetd.d

 例えば、特定のサービスをlocal0のfacilityにするには/etc/xinetd.d下の設定ファイルに以下の記述を追加します。telnetの例を挙げます。

service telnet
{
    disable     = no
    flags       = REUSE
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    log_type        = SYSLOG local0 ←追加
}

 設定ファイルの編集後、xinetdを再起動させればtelnetのログがlocal0のfacilityで出力されます。

 sshの場合、デフォルトでsshd_configに、

SyslogFacility AUTHPRIV

の記述があります。この「AUTHPRIV」の記述をほかのfacilityに変更すればよいのです。

■プライオリティ(priority)

 priorityは、プログラムが出力するメッセージのうち、ログのレベルの重要度を設定します。

 
priority
内容
  debug デバッグ情報
  info 情報
  notice 通知
  warn 警告
  err 一般的なエラー
  crit 致命的なエラー
  alert 緊急に対処すべきエラー
  emerg システムが落ちるような状態
  下になるほど重要度が高い

 通常の設定を行うと、指定したpriority以上のログが出力されます。例えば、「err」を指定すればcrit、alert、emergのレベルの出力もされます。すなわち、重要度の低いpriorityを選択すればするほど、出力されるメッセージは多くなります。逆に、指定したpriorityよりも重要度の低いメッセージのみを出力させたい場合は、

mail.*;mail.!warn

のように記述します。この設定では、メールに関するメッセージのdebugとinfoとnoticeが出力されます(ここでの「*」はすべてのメッセージの意味)。

 特定のpriorityのみを指定することも可能です。それには「=」を使用します。

kernel.=warn

のように記述すると、カーネルの警告メッセージだけが出力されます。これに「!」を合わせることで、特定のpriorityを除いたメッセージを出力することも可能です。

 これらのpriorityの指定以外に、「none」を利用するとそのfacirityの出力を行いません。

 
selector例
内容
  kernel.=warn facilityがkernelでpriorityがwarnのみ出力
  mail.*;mail.!=crit facilityがmailでpriorityがcrit以外のメッセージを出力
  .;daemon.none facilityがdaemon以外の全メッセージを出力

 どのfacilityをどのpriorityにするかは、何を監視したいかによります。重要なデータを見逃さないように、必要なデータが取得できるpriorityに変更しましょう。

■アクション(action)

 actionには、selectorで指定したメッセージをどこに、あるいはどのように出力するかを設定します。具体的には、

  • どのファイルに出力するか(ファイルのパスを記述する)
  • ほかのプログラムに渡す(「|」を利用)
  • 他ホストに渡す(「@ホスト名」)
  • ユーザーのコンソールに表示(システムに登録されているユーザー名)

になります。また、出力先のファイルとして/dev/consoleを指定することで、コンソールに表示させることも可能です。actionの設定例は以下のとおりです。

 
設定例
内容
  /var/log/samplelog /var/log/samplelogへログを出力
  | /usr/local/bin/*** ログをパイプでほかのプログラムへ渡す
  /dev/console ローカルのコンソールへ出力
  @remotehost リモートホストのsyslogdへ送信(
  root,user1 rootとuser1に通知
  * オンラインユーザーすべてに通知
  注:詳細は後述

 以上の内容を踏まえて、デフォルトのsyslog.conf()を見てみましょう。

*.info;mail.none;authpriv.none;cron.none        /var/log/messages
authpriv.*                                      /var/log/secure
mail.*                                          /var/log/maillog
cron.*                                          /var/log/cron
*.emerg                                         *
uucp,news.crit                                  /var/log/spooler
local7.*                                        /var/log/boot.log
注:Red Hat Linux7.3のsyslog.confです。コメント行は除いています。
   
  authprivとcronを除いたすべてのfacilityでinfo以上のメッセージを/var/log/messagesに出力
  authprivのfacilityはすべてのメッセージを/var/log/secureに出力
  mailのfacilityはすべてのメッセージを/var/log/maillogに出力
  cronのfacilityはすべてのメッセージを/var/log/cronに出力
  すべてのfacilityでemergのメッセージをオンラインユーザーのコンソールへ出力
  uucpとnewsのfacilityでcrit以上のメッセージを/var/log/spoolerへ出力
  local7のfacilityのすべてのメッセージを/var/log/boot.logへ出力

■ログサーバによるログの一元管理

 以前、ログを数カ月から数年間保存することを法制化しようという動きがありました。これは不正アクセスの情報を残すためでしたが、まだ実際の法律としては存在していません。

 しかし、ログを残すことがネットワーク管理者の重要な作業の1つであることは間違いありません。不正アクセスを行う者にとって、ログには自分を特定する手掛かりとなる情報が記録されます。当然、ログを削除しようとするでしょう。これに対処するために、異なるホストをログサーバとして運用する方法があります。

 前述したように、syslog.confの設定でactionに@ホスト名(あるいはIPアドレス)を入力すると、そのホストにログを転送することができます。ただし、ログを受け取るホスト側でも設定が必要です。ログサーバとしてホストを設定するには、syslogdに-rオプションを指定して起動します。syslogdを停止してから、

# /sbin/syslogd -r

で再実行します。Red Hat系であれば/etc/sysconfig/syslogに、

SYSLOGD_OPTIONS="-m 0 -r"

のように追記してsyslogdを再起動すれば、ログサーバとして使用できます。

図1 各サーバからログサーバにログを転送して一元的に管理する

 ログサーバへ転送されたログは、ログサーバのsyslog.confの内容に従って処理されます。ここで注意すべき点は、ログサーバのユーザーとパスワードをほかのサーバと同じにしないことと、複数のサーバからログの転送を行うのであれば容量的に十分余裕を持たせておくことです。

 以上で、syslogdの主な機能については網羅できているはずです。複数のサーバから必要な情報を洗い出す作業を少しでも減らそうとするなら、ログサーバを1台用意して、例えばpriorityがwarn以上のものを1つのファイルに出力するように設定することも可能です。

2/3

Index
Linux管理者への道
 第3回 システム管理の基礎 syslogdの設定をマスターしよう
  Page 1
ログチェックの基礎(例:不正アクセスの監視)
 ログの書式
 ログが出力されるファイル
  Page 2
システムのログをつかさどるsyslogd
 syslog.confのフォーマット
 セレクタ(selector)
 ファシリティ(facility)
 プライオリティ(priority)
 アクション(action)
 ログサーバによるログの一元管理
  Page 3
logrotateによるログローテーションの設定
 logrotate.conf
 /etc/logrotated.d

連載 Linux管理者への道


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています