システム管理memo
目次 †
Log管理・監視 †
syslog †
システムに標準的に入っているログシステム。
syslog.confの記述形式は以下のようである。
- <facility.priority> <action>
では具体的にcronの記述を抜き出してみると、
このように記述されている。
facility | 解説 | facility | 解説 |
auth | 認証サービスのメッセージ | mail | メールのメッセージ |
auth-priv | 同上(出力が多少異なる) | news | ニュースメールのメッセージ |
cron | cronのメッセージ | syslog | syslogのメッセージ |
daemon | デーモンのメッセージ | user | ユーザプロセスのメッセージ |
kern | カーネルのメッセージ | uucp | UUCP転送を行うプログラム |
lpr | プリンタのメッセージ | local0--local7 | 汎用ファシリティ |
上にあるほど重要度は低く、下に行くほど重要度が高いメッセージが出力される。
priority | 解説 |
none | メッセージ出力はしない |
debug | デバッグ用のメッセージを出力 |
info | 各種情報メッセージを出力 |
notice | 通常だが要注意メッセージを出力 |
warning | 警告メッセージを出力 |
err | エラーメッセージを出力 |
crit | 致命的なエラーが発生したメッセージを出力 |
alert | 直ちに修復しなければならない重大なメッセージを出力 |
emerg | きわめて重要なメッセージを出力 |
* | すべてのメッセージを出力 |
action設定例 | 解説 |
/var/log/messages | /var/log/messagesに出力 |
@localhost | syslogサーバ(localhost)に出力 |
/dev/console | コンソールに出力 |
|/usr/local/bin/log_pope | ログをパイプで他のプログラムに渡す |
user1,user2 | user1とuser2に出力 |
* | ログインしているすべてのユーザに出力 |
syslog-ng †
TCPでログデータを転送できるのがsyslog-ngである。
libolのコンパイル
tar zxvf libol-0.3.14.tar.gz
cd libol-0.3.14
./configure
make
syslog-ngのコンパイルとインストール。
tar zxvf syslog-ng-1.6.5.tar.gz
cd syslog-ng-1.6.5
./configure --with-libol=../libol-0.3.14
make
make install
コンフィグのサンプルファイルをコピー
cp doc/syslog-ng.conf.sample /usr/local/etc/
filter(出力するログ設定) †
filterの記述形式
- filter <identifier> { expression; };
expression | 解説 |
facility | 指定したfacilityに合致するログメッセージが対象となる。 facility(faciliy[,facility])の形式で指定する。 |
level | 指定したpriorityに合致するログメッセージが対象となる。 priority()level(pri[,pri1..pri2[,pri3]])の形式で指定する。 |
program | 指定したプログラム名(正規表現による指定可)に合致するログメッセージが対象となる。 program(プログラム名)の形式で指定する。 |
host | 指定したホスト名(正規表現可)に合致するログメッセージが対象となる。 host(ホスト名)の形式で指定する。 |
match | 指定した正規表現そのものに合致するログメッセージが対象となる。 |
filter | 別のfilterルールを呼び出す。 |
source(ログを受信するための設定) †
sourceの記述形式
- source <identifier> { source-driver(params); source-driver(params); …… };
source-driver | 解説 |
internal | syslog-ng内部で生成されるメッセージを出力 |
unix-stream | SOCK_STREAMモードで指定したUNIXソケットを開き、ログメッセージを受信(Linux場合) |
unix-dgram | SOCK_DGRAM モードで指定したUNIXソケットを開き、ログメッセージを受信(BSD系UNIXの場合) |
file | 指定されたファイルを開き、メッセージを読む |
pipe、fifo | 指定した名前パイプをオープンして、ログメッセージを読む |
udp | UDPポートを待機しログメッセージを受信 |
tcp | TCPポートを待機しログメッセージを受信 |
sun-stream sun-streams | 指定したSTREAMSデバイスを開き、ログメッセージsun-streamsを受信(Solarisなど) |
destination(ログを転送するための設定) †
destinationの記述形式
- destination <identifier> { destination-driver(params); destination-driver(params); …… };
destination-driver | 解説 |
file | 指定したファイルにログを出力 |
fifo、pipe | 指定したFIFOやパイプにログを出力 |
unix-stream | UNIXドメインソケットのSOCK_STREAM形式でメッセージを送信(Linux syslog) |
unix-dgram | UNIXドメインソケットのSOCK_DGRAM形式でメッセージを送信(BSD syslog) |
host | udp指定したホストとUDPポートにログを送信 |
usertty | ログイン中のユーザーにログを出力 |
program | 外部プログラムにログを出力 |
log(source、destination、filterの対応付け) †
logの記述形式
- log { source(s1); source(s2); filter(f1); filter(f2); destination(d1); destination(d2); flags(flag1[, flag2]); };
flags | 解説 |
final | log文の終わりの場合に指定する。必ずしも必要ではない。 |
fallback | フォールバック形式でログを生成する。 |
catchall | sourceを無視して、filterに合致するメッセージのみを対象とする。 |
options(オプション) †
optionsの記述形式
- options { option1(params); option2(params); };
iplog †
iplogを展開・インストール
tar zxvf iplog-2.2.3.tar.gz
cd iplog-2.2.3
./configure
make
make install
と行きたいところだったが、FC3ではエラーが出てコンパイルが出来ない。
"iplog_options.c"に修正を加える必要がある
static void print_help(void) {
mysyslog(
"Usage: " PACKAGE " [options] (\"*\" Denotes enabled by default)
--user or -u <user|UID> Run as specified the user or UID.
--group or -g <group|GID> Run with specified the group or GID.
・・・・
--log-null-scan[=true|false|toggle] or -n %cLog null scans.",
となっているところを、
static void print_help(void) {
mysyslog(
"Usage: " PACKAGE " [options] (\"*\" Denotes enabled by default)\n"
"--user or -u <user|UID> Run as specified the user or UID.\n"
"--group or -g <group|GID> Run with specified the group or GID.\n"
・・・・
"--log-null-scan[=true|false|toggle] or -n %cLog null scans.\n",
という風に修正しましょう。タブンコンパイルできます。
バージョン2.2.3で修正した"iplog_options.c"を添付した。
groupadd nogroup
useradd -g nogroup -s /sbin/nologin iplog
mkdir /var/run/iplog
chown iplog:nogroup /var/run/iplog/
iplogを起動する。
iplog &
iplogを自動起動する。
echo "/usr/local/sbin/iplog &" >> /etc/rc.d/rc.local
logwatch/logcheck †
fwlogwatch †
iptablesやSnortのログを解析してくれる。
それほど多くの機能は持っていないが、使い慣れればそこそこ便利。
fwlogwatchの展開・インストール †
tar zxvf fwlogwatch-1.0.tar.gz
cd fwlogwatch-1.0
make
make install
実行ファイルは/usr/local/binに格納される。
コンフィグファイルを/etc/fwlogwatch.confという名前で保存する必要がある。
テンプレートがhologwatchのディレクトリにあるのでコピーする。
cp fwlogwatch.conf /etc/
また、アラートのテンプレートも置いておくといい(らしい)。
(まだこの機能を使ったことが無いんだよね)
cp fwlowatch.template /etc/
コンフィグファイルの編集 †
アクセスもとのIPアドレスや、サービス角逆引きを行うかどうかの指定である。
IPの逆引きは時間がかかるのでお勧めできないが、サービスの逆引きならやても時間的に差はほとんど無い。
resolve_hosts = no
resolve_services = yes
読み込むファイル名の指定。ここではIPTABLESのログを見たいので次のファイルを指定している。
input = /var/log/messages
どのようなログを解析したいのかを指定。IPTABLESの場合には"n"オプションだけあればよい。
記号 | 解析するログ | 記号 | 解析するログ | 記号 | 解析するログ |
i | ipchains | c | Cisco IOS | w | WindowsXP |
n | netfilter | p | Cisco PIX | l | Elsa Lancom |
f | ipfilter | e | Netscreen | s | Snort |
parser = n
出力結果として表示する内容。ONにした項目を表示させる。
src_ip = on
dst_ip = on
protocol = off
src_port = on
dst_port = on
tcp_opts = off
そのまま、対象とするIPやポート・除外するIPやポートの指定を行う。
何も指定しない場合は”すべて”を選択したことになる。
#exclude_src_host =
#exclude_src_port =
#exclude_dst_host =
#exclude_dst_port =
#include_src_host =
#include_src_port =
#include_dst_host =
#include_dst_port =
複数のホスト・ポートを指定したい場合は、複数行に渡って書かなければならない。
例えば、HTTPとSMTPのログを除外したい場合には以下のように記述する必要がある。
exclude_dst_port = 80
exclude_dst_port = 25
並び替える順番を記述する。一応最終記録の日付で表示させるために以下のようにする。
sort_order = ac
タイトルを指定できる。デフォルトでは"fwlogwatch summary"となる。
title = iptables output
時間指定をしたい場合に記述。
start_times = no
end_times = no
出力をHTML形式にすると見るのも楽である。
html = yes
出力先ファイル名。
output = /usr/local/apache2/htdocs/iptables.html
定期的に出力させるようにcronに記録をする。
crontab -e
=================================
0 5 * * * /usr/local/sbin/fwlogwatch -c /etc/fwlogwatch.config
=================================
これで毎日朝5時にログが更新される。
Apacheのログ解析(Analog) †
DNSTRANの入手 †
Analog自体はDNSの逆引きをする機能は付いていないので、DNSTRANを使って
アクセス元を調べるために逆引きリストを作成する。
wget http://summary.net/soft/dns-x86.tar.gz
tar zxvf dns-x86.tar.gz
cd dnstran1.5.2
./dnstrran /usr/local/apache2/logs/access_log
これでdnscacheというファイルで逆引きリストが作られる。
Analogの入手・コンパイル †
Analogの本体を入手しコンパイル。
wget http://www.analog.cx/analog-6.0.tar.gz
tar zxvf analog-6.0.tar.gz -C /usr/local/apache2/ssl-access/
cd /usr/local/apache2/ssl-access/analog-6.0
make
コンパイルエラーが出なければ次へ。
analog.cfgの編集 †
LOGFORMAT COMBINED
HOSTEXCLUDE hoge.jp
LANGUAGE JAPANESE
LOGFILE /usr/local/apache2/logs/access_log
HOSTNAME "[hoge-server]"
HOSTURL http://www.hoge.jp/
LANGFILE /usr/local/apache2/ssl-access/analog-6.0/lang/jps.lng
DESCFILE /usr/local/apache2/ssl-access//analog-6.0/lang/jpsdesc.txt
DOMAINSFILE /usr/local/apache2/ssl-access/analog-6.0/lang/jpsdom.tab
SUBDOMAIN *.*.*
DNSFILE /usr/local/apache2/ssl-access/analog-6.0/dnscache
DNS READ
DNSLOCKFILE dnslock.txt
OUTFILE result.html
項目 | 日本語訳 |
GENERAL | 全体の概要 |
MONTHLY | 月別レポート |
WEEKLY | 週別レポート |
DAILYSUM | 曜日別概要 |
DAILYREP | 日別概要 |
HOURLYSUM | 時間別概要 |
QUARTERREP | 15分間隔レポート |
DOMAIN | ドメインレポート |
ORGANISATION | 組織別レポート |
DIRECTORY | ディレクトリレポート |
FILETYPE | ファイル種類別レポート |
REQUEST | リクエストレポート |
SIZE | ファイルサイズレポート |
REFERRER | 参照元レポート |
SEARCHQUERY | 検索語句レポート |
SEARCHWORD | 検索後レポート |
HOST | ホストレポート |
BROWSERREP | ブラウザレポート |
BROWSERSUM | ブラウザの概要 |
OSREP | OSレポート |
STATUS | ステータスコードレポート |
Apacheのログの解析 †
analogを実行
/usr/local/apache2/ssl-access/analog-6.0/analog
これでresult.htmlというファイル名で解析結果が保存される。
当然HTML形式なので普通にアクセスしてみればよい。
https://www.hoge.jp/analog-6.0/result.html
結果が見えないようであれば、result.htmlが作成されたか?
パーミッション等の設定ミスが無いかということを調べて、見れるようになるまで試みる。
一応Analogに添付されているサンプルログを解析した結果を載せる。
Analog sample report
ちなみにすべてのオプションをONにはしていない。
それなりに必要な項目や、見てみたい項目のみをONにしてある。
cronを用いた自動解析 †
処理は一番CPUが空いている時間に行うのがよい。
下の例は毎日午前3時にログの解析を行う設定である。
crontab -e
--------------------------------------
0 3 * * * /usr/local/apache2/ssl-access/analog-6.0/analog
--------------------------------------
細かいことを書くのであれば、Analogのディレクトリを外部からアクセスできる場所におく必要は無い。(画像ファイルを除く)
解析結果のみをドキュメントルートまたはSSLアクセスで見れる場所に置けばよい。
この辺は慣れてきたら徐々に工夫してください。
※一部@ITでの記事を引用しています。
(問題があるようでしたら削除しますのでご連絡ください。すみません。ちょっと手を抜きました)
参考リンク †