#author("2017-01-01T21:05:20+09:00","default:auth_user","auth_user") [[システム管理memo]] *目次 [#h14446dc] #contents *Log管理・監視 [#tfade246] **syslog [#k3245ef8] システムに標準的に入っているログシステム。 syslog.confの記述形式は以下のようである。 --''<facility.priority> <action>'' では具体的にcronの記述を抜き出してみると、 --''cron.* /var/log/cron'' このように記述されている。 |BGCOLOR(#FF6633):CENTER:facility|BGCOLOR(#FF6633):CENTER:解説|BGCOLOR(#FF6633):CENTER:facility|BGCOLOR(#FF6633):CENTER:解説| |BGCOLOR(#99FF66):auth|認証サービスのメッセージ|BGCOLOR(#99FF66):mail|メールのメッセージ| |BGCOLOR(#99FF66):auth-priv|同上(出力が多少異なる)|BGCOLOR(#99FF66):news|ニュースメールのメッセージ| |BGCOLOR(#99FF66):cron|cronのメッセージ|BGCOLOR(#99FF66):syslog|syslogのメッセージ| |BGCOLOR(#99FF66):daemon|デーモンのメッセージ|BGCOLOR(#99FF66):user|ユーザプロセスのメッセージ| |BGCOLOR(#99FF66):kern|カーネルのメッセージ|BGCOLOR(#99FF66):uucp|UUCP転送を行うプログラム| |BGCOLOR(#99FF66):lpr|プリンタのメッセージ|BGCOLOR(#99FF66):local0--local7|汎用ファシリティ| >上にあるほど重要度は低く、下に行くほど重要度が高いメッセージが出力される。 |BGCOLOR(#FF6633):CENTER:priority|BGCOLOR(#FF6633):CENTER:解説| |none|メッセージ出力はしない| |debug|デバッグ用のメッセージを出力| |info|各種情報メッセージを出力| |notice|通常だが要注意メッセージを出力| |warning|警告メッセージを出力| |err|エラーメッセージを出力| |crit|致命的なエラーが発生したメッセージを出力| |alert|直ちに修復しなければならない重大なメッセージを出力| |emerg|きわめて重要なメッセージを出力| |*|すべてのメッセージを出力| |BGCOLOR(#FF6633):CENTER:action設定例|BGCOLOR(#FF6633):CENTER:解説| |/var/log/messages|/var/log/messagesに出力| |@localhost|syslogサーバ(localhost)に出力| |/dev/console|コンソールに出力| ||/usr/local/bin/log_pope|ログをパイプで他のプログラムに渡す| |user1,user2|user1とuser2に出力| |*|ログインしているすべてのユーザに出力| **syslog-ng [#td2029f5] >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(出力するログ設定) [#xb91a940] filterの記述形式 --''filter <identifier> { expression; };'' #hr |BGCOLOR(#FF6633):CENTER:expression|BGCOLOR(#FF6633):CENTER:解説| |facility|指定したfacilityに合致するログメッセージが対象となる。&br;facility(faciliy[,facility])の形式で指定する。| |level|指定したpriorityに合致するログメッセージが対象となる。&br;priority()level(pri[,pri1..pri2[,pri3]])の形式で指定する。| |program|指定したプログラム名(正規表現による指定可)に合致するログメッセージが対象となる。&br;program(プログラム名)の形式で指定する。| |host| 指定したホスト名(正規表現可)に合致するログメッセージが対象となる。&br;host(ホスト名)の形式で指定する。| |match|指定した正規表現そのものに合致するログメッセージが対象となる。| |filter|別のfilterルールを呼び出す。| ***source(ログを受信するための設定) [#iada0446] sourceの記述形式 --''source <identifier> { source-driver(params); source-driver(params); …… };'' #hr |BGCOLOR(#FF6633):CENTER:source-driver|BGCOLOR(#FF6633):CENTER:解説| |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&br;sun-streams|指定したSTREAMSデバイスを開き、ログメッセージsun-streamsを受信(Solarisなど)| ***destination(ログを転送するための設定) [#d080d770] destinationの記述形式 --''destination <identifier> { destination-driver(params); destination-driver(params); …… };'' #hr |BGCOLOR(#FF6633):CENTER:destination-driver|BGCOLOR(#FF6633):CENTER:解説| |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の対応付け) [#d28f1163] logの記述形式 --''log { source(s1); source(s2); filter(f1); filter(f2); destination(d1); destination(d2); flags(flag1[, flag2]); };'' #hr |BGCOLOR(#FF6633):CENTER:flags|BGCOLOR(#FF6633):CENTER:解説| |final|log文の終わりの場合に指定する。必ずしも必要ではない。| |fallback|フォールバック形式でログを生成する。| |catchall|sourceを無視して、filterに合致するメッセージのみを対象とする。| ***options(オプション) [#c59a00ad] optionsの記述形式 --''options { option1(params); option2(params); };'' #hr **iplog [#q9309061] >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 [#p7d6495e] > **fwlogwatch [#abdbdbf5] >iptablesやSnortのログを解析してくれる。 それほど多くの機能は持っていないが、使い慣れればそこそこ便利。 ***fwlogwatchの展開・インストール [#lf49c43e] 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/ ***コンフィグファイルの編集 [#d7b6d52e] >アクセスもとのIPアドレスや、サービス角逆引きを行うかどうかの指定である。 IPの逆引きは時間がかかるのでお勧めできないが、サービスの逆引きならやても時間的に差はほとんど無い。 resolve_hosts = no resolve_services = yes >読み込むファイル名の指定。ここではIPTABLESのログを見たいので次のファイルを指定している。 input = /var/log/messages >どのようなログを解析したいのかを指定。IPTABLESの場合には"n"オプションだけあればよい。 |BGCOLOR(#FF6633):CENTER:記号|BGCOLOR(#FF6633):CENTER:解析するログ|BGCOLOR(#FF6633):CENTER:記号|BGCOLOR(#FF6633):CENTER:解析するログ|BGCOLOR(#FF6633):CENTER:記号|BGCOLOR(#FF6633):CENTER:解析するログ| |BGCOLOR(#99FF66):i|ipchains|BGCOLOR(#99FF66):c|Cisco IOS|BGCOLOR(#99FF66):w|WindowsXP| |BGCOLOR(#99FF66):n|netfilter|BGCOLOR(#99FF66):p|Cisco PIX|BGCOLOR(#99FF66):l|Elsa Lancom| |BGCOLOR(#99FF66):f|ipfilter|BGCOLOR(#99FF66):e|Netscreen|BGCOLOR(#99FF66):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) [#jd15da61] **DNSTRANの入手 [#z4607c92] Analog自体はDNSの逆引きをする機能は付いていないので、[[DNSTRAN:http://summary.net/soft/dnstran.html]]を使って アクセス元を調べるために逆引きリストを作成する。 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の入手・コンパイル [#hb3843ff] 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の編集 [#c269f4b2] 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 |BGCOLOR(#FF6633):CENTER:項目|BGCOLOR(#FF6633):CENTER:日本語訳| |GENERAL|全体の概要| |MONTHLY|月別レポート| |WEEKLY|週別レポート| |DAILYSUM|曜日別概要| |DAILYREP|日別概要| |HOURLYSUM|時間別概要| |QUARTERREP|15分間隔レポート| |DOMAIN|ドメインレポート| |ORGANISATION|組織別レポート| |DIRECTORY|ディレクトリレポート| |FILETYPE|ファイル種類別レポート| |REQUEST|リクエストレポート| |SIZE|ファイルサイズレポート| |REFERRER|参照元レポート| |SEARCHQUERY|検索語句レポート| |SEARCHWORD|検索後レポート| |HOST|ホストレポート| |BROWSERREP|ブラウザレポート| |BROWSERSUM|ブラウザの概要| |OSREP|OSレポート| |STATUS|ステータスコードレポート| **Apacheのログの解析 [#c280f73e] 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:http://www.hope-net.jp/pukiwiki/sample.html]] ちなみにすべてのオプションをONにはしていない。 それなりに必要な項目や、見てみたい項目のみをONにしてある。 **cronを用いた自動解析 [#y3730e9a] 処理は一番CPUが空いている時間に行うのがよい。 下の例は毎日午前3時にログの解析を行う設定である。 crontab -e -------------------------------------- 0 3 * * * /usr/local/apache2/ssl-access/analog-6.0/analog -------------------------------------- 細かいことを書くのであれば、Analogのディレクトリを外部からアクセスできる場所におく必要は無い。(画像ファイルを除く) 解析結果のみをドキュメントルートまたはSSLアクセスで見れる場所に置けばよい。 この辺は慣れてきたら徐々に工夫してください。 ※一部@ITでの記事を引用しています。 (問題があるようでしたら削除しますのでご連絡ください。すみません。ちょっと手を抜きました) *参考リンク [#p68d427e] -[[BalaBit IT KFT:http://www.balabit.com/products/syslog_ng/]] -[[iplog:http://ojnk.sourceforge.net/]] -[[logwatch:http://sourceforge.net/projects/logwatch/]] -[[fwlogwatch:http://fwlogwatch.inside-security.de/]] -[[日本Analogユーザ会:http://www.jp.analog.cx/]]