Product SiteDocumentation Site

4.13. ログや警告の重要性

ログや警告がどう扱われるかは安全なシステムでは重要な問題です。システムが 完璧に設定されていて、たとえば 99% 安全だとしても、これを理解するのは 簡単です。もし残りの 1% が発生したとき、まずそれを検知し、次に警告を出すような セキュリティ対策があるべき場所になければ、そのシステムは全く安全でない ことになります。
Debian GNU/Linux provides some tools to perform log analysis, most notably swatch, [27] logcheck or log-analysis (all will need some customisation to remove unnecessary things from the report). It might also be useful, if the system is nearby, to have the system logs printed on a virtual console. This is useful since you can (from a distance) see if the system is behaving properly. Debian's /etc/syslog.conf comes with a commented default configuration; to enable it uncomment the lines and restart syslogd (/etc/init.d/syslogd restart):
  daemon,mail.*;\
        news.=crit;news.=err;news.=notice;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       /dev/tty8
To colorize the logs, you could take a look at colorize, ccze or glark. There is a lot to log analysis that cannot be fully covered here, so a good information resource would be books should as http://books.google.com/books?id=UyktqN6GnWEC. In any case, even automated tools are no match for the best analysis tool: your brain.

4.13.1. Using and customizing logcheck

The logcheck package in Debian is divided into the three packages logcheck (the main program), logcheck-database (a database of regular expressions for the program) and logtail (prints loglines that have not yet been read). The Debian default (in /etc/cron.d/logcheck) is that logcheck is run every hour and after reboots.
logcheck のようなサイト上のログ監査ツールもいくつか あります。このツールはもし管理者にローカルファイルシステムでの異常な できごとについて警告するように適切に設定されていればとても便利です。 Logcheck はログから回収された注目する価値のあるできごとに もとづいてメールを送るように完全に設定できます。デフォルトのインストールでは 3 種類 (workstation、server そして paranoid) の無視するできごとおよび ポリシー違反のファイルを含みます。logcheck の Debian パッケージは logcheck プログラムによって読みこまれる設定ファイル /etc/logcheck/logcheck.conf を含みます。 これはチェックの結果がどのユーザに送られるかを定義します。また logcheck の Debian パッケージはサービスを提供するパッケージが以下のディレクトリに 新しいポリシーを導入する方法を提供します: /etc/logcheck/hacking.d/_packagename_/etc/logcheck/violations.d/_packagename_/etc/logcheck/violations.ignore.d/_packagename_/etc/logcheck/ignore.d.paranoid/_packagename_/etc/logcheck/ignore.d.server/_packagename_ そして /etc/logcheck/ignore.d.workstation/_packagename_です。しかし、 現時点ではそれほど多くのパッケージがそうするわけではありません。他のユーザに とって便利なポリシーを持っているなら、適切なパッケージにバグ報告として 送ってください。くわしくは /usr/share/doc/logcheck/README.Debian をごらんください。
The best way to configure logcheck is to edit its main configuration file /etc/logcheck/logcheck.conf after installation. Change the default user (root) to whom reports should be mailed. You should set the reportlevel in there, too. logcheck-database has three report levels of increasing verbosity: workstation, server, paranoid. "server" being the default level, paranoid is only recommended for high-security machines running as few services as possible and workstation for relatively sheltered, non-critical machines. If you wish to add new log files just add them to /etc/logcheck/logcheck.logfiles. It is tuned for default syslog install.
Once this is done you might want to check the mails that are sent, for the first few days/weeks/months. If you find you are sent messages you do not wish to receive, just add the regular expressions (see regex(7) and egrep(1)) that correspond to these messages to the /etc/logcheck/ignore.d.reportlevel/local. Try to match the whole logline. Details on howto write rules are explained in /usr/share/doc/logcheck-database/README.logcheck-database.gz. It's an ongoing tuning process; once the messages that are sent are always relevant you can consider the tuning finished. Note that if logcheck does not find anything relevant in your system it will not mail you even if it does run (so you might get a mail only once a week, if you are lucky).

4.13.2. 警告の送り先を設定する

Debian ではシステムの機能に応じて適切なファイルにメッセージを記録する 標準的な syslog の設定が (/etc/syslog.conf で) 行われています。これらに 詳しくなるべきです。ファイル syslog.conf を見るか、そうしないなら 文書を見てください。もし安全なシステムを維持したいならばメッセージを 見のがさないようそれがどこに送られるかについて知っておくべきです。
たとえば、メッセージをコンソールにも送ることは多くの実用レベルのシステムで 役立つ興味深い設定です。しかしそのような多くのシステムではログホスト (すなわち、他のすべてのシステムからログを受けとるマシン) として働く 新しいマシンを追加することも重要です。
root へのメールも検討するべきです。(snort のような) 多くのセキュリティ制御ソフトは警告を root のメールボックスに送ります。 このメールボックスはふつうシステムで最初に作られたユーザを指しています (/etc/aliases を調べてください)。root のメールをちゃんと読まれる場所 (ローカルでもリモートでも) に送るように注意してください。
他にも役割のあるアカウントやエイリアスがシステムにはあります。小さな システムでは、これらのエイリアス全てが root アカウントをさすようにし、 root へのメールがシステム管理者の個人メールボックスに転送されるように するのがたぶん最も簡単でしょう。
FIXME: Debian システムがセキュリティ問題に関する SNMP トラップを送ったり 受けとったりする方法を述べるのは興味深いだろう (jfs)。 snmptraglogdsnmp そして snmpd 参照。

4.13.3. ログホストを使う

A loghost is a host which collects syslog data remotely over the network. If one of your machines is cracked, the intruder is not able to cover the tracks, unless hacking the loghost as well. So, the loghost should be especially secure. Making a machine a loghost is simple. Just start the syslogd with
syslogd -r
and a new loghost is born. In order to do this permanently in Debian, edit /etc/default/syslogd and change the line
SYSLOGD=""
to
SYSLOGD="-r"
に変えてください。 次に、他のマシンをログホストにデータを送るように設定します。 /etc/syslog.conf に以下のような項目を加えます:
  facility.level            @your_loghost
facilitylevel のかわりに何を使うべきかは文書を 見てください (これらを文字どおりこのまま入力するべきではありません。) 何もかもリモートで記録したいならば、単に syslog.conf にこう書くだけです:
  *.*                       @your_loghost
into your syslog.conf. Logging remotely as well as locally is the best solution (the attacker might presume to have covered his tracks after deleting the local log files). See the syslog(3), syslogd(8) and syslog.conf(5) manpages for additional information.

4.13.4. ログファイルのパーミッション

It is not only important to decide how alerts are used, but also who has read/modify access to the log files (if not using a remote loghost). Security alerts which the attacker can change or disable are not worth much in the event of an intrusion. Also, you have to take into account that log files might reveal quite a lot of information about your system to an intruder who has access to them.
ログファイルの中にはインストール後にパーミッションが完璧ではないものが あります。最初に /var/log/lastlog/var/log/faillog が一般ユーザに読める必要はありません。 lastlog ファイルではだれが最近ログインしたかわかります。そして faillog では 失敗したログインの要約を見ることができます。このマニュアルの著者はこの両方を 660 に chmod することを推奨します。ログファイルをすこしながめて、 どのログファイルを UID が 0 でないユーザや「adm」でも「root」でもない グループが読んだり書きこんだりできるようにするか非常に注意深く決めてください。
  #  find /var/log -type f -exec ls -l {} \; | cut -c 17-35 |sort -u
  (see to what users do files in /var/log belong)
  #  find /var/log -type f -exec ls -l {} \; | cut -c 26-34 |sort -u
  (see to what groups do files in /var/log belong)
  # find /var/log -perm +004
  (files which are readable by any user)
  #  find /var/log \! -group root \! -group adm -exec ls -ld {} \;
  (files which belong to groups not root or adm)
To customize how log files are created you will probably have to customize the program that generates them. If the log file gets rotated, however, you can customize the behavior of creation and rotation.


[27] there's a very good article on it written by http://www.spitzner.net/swatch.html