FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Splunk その4

15. リモート syslog の受信設定

今回は Cisco の Firewall アプライアンスである ASA の syslog を Splunk サーバで受信するよう設定を行っていきます。

【Splunk サーバ側の設定】

iptables の syslog 受信設定は前々回に実施済みですので、今回は rsyslogd の設定からです。

ここではリモート syslog の管理要件として、以下の 3 点を満たすこととします。

・リモートデバイスからの syslog メッセージは /var/log/remote ディレクトの下に「<ホスト名>.log」というファイルを作成して書き込む。
・メッセージには、facility と severity を書き込む。
・メッセージのタイムスタンプは、リモートとローカルの両方を書き込む。

/etc/rsyslog.conf に赤字の行を追記します。

# Use traditional timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog
# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock
# Provides support for remote system logging (514/udp)
$ModLoad imudp
$UDPServerRun 514


# Templates
$template RemoteFile,"/var/log/remote/%fromhost%.log"
$template RemoteFormat,"%timegenerated% %fromhost% %syslogfacility-text%.%syslogseverity-text%: %rawmsg:::drop-last-lf%\n"


# Rules for remote messages
:fromhost-ip, !isequal, "127.0.0.1" -?RemoteFile;RemoteFormat
& ~
# Rules for local messages



# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console


# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages


# The authpriv file has restricted access.
authpriv.* /var/log/secure


# Log all the mail messages in one place.
mail.* -/var/log/maillog


# Log cron stuff
cron.* /var/log/cron


# Everybody gets emergency messages
*.emerg *


# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler


# Save boot messages also to boot.log
local7.* /var/log/boot.log

追加した行についての簡単な説明です。


$template RemoteFile,"/var/log/remote/%fromhost%.log"
RemoteFile という名前の動的ファイル名テンプレートを作成します。今回の例では %fromhost% の部分がメッセージの送信元ホスト名に置き換えられます。

$template RemoteFormat,"%timegenerated% %fromhost% %syslogfacility-text%.%syslogseverity-text%: %rawmsg:::drop-last-lf%\n"
RemoteFormat という名前の出力フォーマットテンプレートを作成します。今回の例では、%timegenerated% が rsyslogd がログを受け取った時間、%fromhost% が送信元ホスト名、%syslogfacility-text%.%syslogseverity-text% が local0.warn のような PRI のテキスト出力、%rawmsg:::drop-last-lf%\n が生ログの末尾の改行コードを \n に置き換えたものになります。

:fromhost-ip, !isequal, "127.0.0.1" -?RemoteFile;RemoteFormat
fromhost-ip が 127.0.0.1 以外のログを RemoteFormat の書式で RemoteFile に書き込みます。また、その際バッファリングを有効にします("-" オプション)。

& ~
「:fromhost-ip, !isequal, "127.0.0.1" ~」と同じ。条件にマッチするログ(=リモートデバイスから受け取ったログ)を破棄することで、続くローカルログのマッチング条件の適用対象外とします。

rsyslog.conf の書式についてもっと詳しく知りたい方は、rsyslog.conf の man ページや rpm パッケージインストール時に併せてインストールされる HTML マニュアル(パスは rpm -ql rsyslog で確認できます)を参照してください。

なお、ASA のログを監視する場合、rsyslog のバージョンや ASA 側の設定によっては %hostname% の置き換えが上手くいかなかったり、%msg% に含まれるタイムスタンプが中途半端だったりするため、テンプレートでのこれらのプロパティの使用は控えたほうがよいと思います。

ファイルを変更したら、rsyslogd の再起動を行います。
[root@splunk ~]# service rsyslog restart
システムロガーを停止中: [ OK ]
システムロガーを起動中: [ OK ]

/etc/logrotate.d/syslog を編集して、新たに作成するログファイルを logrotate によるローテートの対象に追加します。

CentOS のデフォルトの設定では、syslog 関連のファイルは週時でローテートされ、過去4世代分のファイルがディスク上に保存されます。過去のログについては Splunk 側でも生データとして保持しているため、保存期間については基本的に Splunk 側のリテンションポリシーで指定することとして、ここでは過去 1 世代分のみをディスクに保存するよう設定します。

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
/var/log/remote/*\.log {
rotate 1
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

また、/etc/hosts に ASA の名前解決のためのエントリを追加します。

192.168.100.254 asa.example.jp asa


以上で Splunk サーバ側での準備は完了です。

【ASA 側の設定】

次は ASA 側の設定です。今回は informational 以上の重要度を持つ全てのログを splunk サーバ(IPアドレス:192.168.100.100)に転送し、自身のバッファログにも書き込むため、以下のようなコマンドを投入します。

logging enable
logging timestamp
logging buffer-size 128000
logging buffered informational
logging trap informational
logging host inside 192.168.100.100


重要度が informational のログは不要ということで、logging trap コマンドで notifications 以上の重要度を指定する場合、トラフィックの permit / deny ログを監視するためには指定したものと同等かそれ以上の重要度をアクセスリストの log オプションの後に付加する必要がある点に注意してください(トラフィックログのデフォルトの重要度が informational のため)。

通知対象メッセージの重要度を notifications 以上に設定する場合の例です。

access-list outside extended deny ip any any log notifications

logging trap notifications


なお、ASA 側で特に指定しなかった場合、メッセージの facility は local4 になります。この値は logging facility コマンドで変更できますが、IOS ベースのルータやスイッチと異なり、コマンドで指定する引数は local0 ~ local8 の facility に割り当てられた code の値であるため、実際に設定を行うコマンドとしては以下のいずれかになります。

logging facility 16   ! facility = local0
logging facility 17   ! facility = local1
logging facility 18   ! facility = local2
logging facility 19   ! facility = local3
logging facility 20   ! facility = local4 (default)
logging facility 21   ! facility = local5
logging facility 22   ! facility = local6
logging facility 23   ! facility = local7
logging facility 24   ! facility = local8


ASA で上記コマンドを投入したら、show logging コマンドで動作確認を行い、設定を保存して下さい。

【Splunk サーバでの確認】

設定が完了したら、Splunk サーバ側でログが出力されていることを確認しましょう。

ログの出力例はこんな感じです。

[root@splunk ~]# tail /var/log/remote/asa.log
Jan 30 06:40:03 asa local4.info: <166>Jun 30 2011 06:39:58: %ASA-6-106100: access-list inside denied tcp inside/192.168.100.1(54442) -> outside/172.16.0.1(8000) hit-cnt 1 first hit [0xd820e56a, 0x0]


ちなみに、今回の例で作成されるログファイルの所有者は root、パーミッションはディレクトリ(remote)が 700、ファイル(asa.log)が 600 になります。Splunk を一般ユーザで起動している場合には権限不足で読み取りができませんので、ログファイルの読み取り権限を与えるよう rsyslog.conf に設定追加が必要となります。

なお、rsyslog を RPM でインストールしている場合の注意事項として、/etc/sysconfig/rsyslog に SYSLOG_UMASK 環境変数が設定されていない場合、起動スクリプトの中で自動的に「077」が設定されるため、rsyslog.conf の中で「$FileCreateMode 0644」と指定しても実際のパーミッションが 600 になってしまいます。この問題を回避するには、$FileOwner / $FileGroup でファイルの所有者を変更するか、/etc/sysconfig/rsyslog に「SYSLOG_UMASK=022」を追加した上で rsyslog.conf 内でパーミッションを適切に設定するといった方法があります(誤って既存のファイルの所有者/パーミッションまで変更してしまわないように十分に注意してください)。
関連記事

テーマ : おすすめソフトウェア
ジャンル : コンピュータ

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

-

管理人の承認後に表示されます

コメントの投稿

非公開コメント

プロフィール

米麹

筆者: 米麹
某社に勤務する SE です。
ここでは本職とは関係のない趣味的な検証情報などを書いていきます。

注意事項とお願い
記事の内容は掲載時点のもので、現在は異なる可能性があります。情報に誤りや不適切な事項があった場合には、コメントやメールフォームでご指摘下さい。
また、本サイトの情報を利用することによって生じたいかなる損害についても、筆者は責任を負いかねますのでご了承下さい。
カレンダー
09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
最新記事
月別アーカイブ
カテゴリ
全記事表示リンク

全ての記事を表示する

検索フォーム
メールフォーム

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。