#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/]]


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS