ログや警告がどう扱われるかは安全なシステムでは重要な問題です。システムが 完璧に設定されていて、たとえば 99% 安全だとしても、これを理解するのは 簡単です。もし残りの 1% が発生したとき、まずそれを検知し、次に警告を出すような セキュリティ対策があるべき場所になければ、そのシステムは全く安全でない ことになります。
Debian GNU/Linux provides some tools to perform log analysis, most notably
swatch,
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).
Debian ではシステムの機能に応じて適切なファイルにメッセージを記録する 標準的な syslog の設定が (/etc/syslog.conf で) 行われています。これらに 詳しくなるべきです。ファイル syslog.conf
を見るか、そうしないなら 文書を見てください。もし安全なシステムを維持したいならばメッセージを 見のがさないようそれがどこに送られるかについて知っておくべきです。
たとえば、メッセージをコンソールにも送ることは多くの実用レベルのシステムで 役立つ興味深い設定です。しかしそのような多くのシステムではログホスト (すなわち、他のすべてのシステムからログを受けとるマシン) として働く 新しいマシンを追加することも重要です。
root へのメールも検討するべきです。(snort のような) 多くのセキュリティ制御ソフトは警告を root のメールボックスに送ります。 このメールボックスはふつうシステムで最初に作られたユーザを指しています (/etc/aliases を調べてください)。root のメールをちゃんと読まれる場所 (ローカルでもリモートでも) に送るように注意してください。
他にも役割のあるアカウントやエイリアスがシステムにはあります。小さな システムでは、これらのエイリアス全てが root アカウントをさすようにし、 root へのメールがシステム管理者の個人メールボックスに転送されるように するのがたぶん最も簡単でしょう。
FIXME: Debian システムがセキュリティ問題に関する SNMP トラップを送ったり 受けとったりする方法を述べるのは興味深いだろう (jfs)。 snmptraglogd、snmp そして snmpd 参照。
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
facility や
level のかわりに何を使うべきかは文書を 見てください (これらを文字どおりこのまま入力するべきではありません。) 何もかもリモートで記録したいならば、単に 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.
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.