fluentdを利用してsshログインを通知する
December 12, 2014
sshを利用していると招かれざる客の来訪が多い。
また、サーバに不必要にログインしている関係者がいないか
把握しつづけるのも難しい。
今回はfluentdを利用して簡単にログイン周りの通知をSlackに流してみる。
準備
/var/log/secure
はパーミッションが厳しいので
y-kenさんのブログを参考にパーミッションを変更する必要があります。
SlackのAPIがバージョンアップしてリアルタイム性を持つようになった。
個人的にはリアルタイム性よりも
private roomでもhubotが利用できるようになったのいうのがアツい。
これで色々遊べるようになる。
手元でendpoint
を変更して動くようになった。みんな普通に動いているのかな
private
def endpoint
# URI.parse "https://#{@team}.slack.com/services/hooks/incoming-webhook?token=#{@api_key}"
URI.parse "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"
end
Real Time Messagingを利用するためには
https://slack.com/api/chat.postMessage?token=xoxp-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXXXXX&channel=XXXXXXXXX&text=XXXXX&username=XXXXX'
のようにリクエストを送る必要がある。
時間があればpull requestしたい。(あと20分で書き終えなければ…)
2014/12/16 追記
sowawaさんにmergeして頂いた。感謝
設定
- /etc/td-agent/td-agent.conf
<source>
type tail
path /var/log/secure
format syslog
tag secure_log
pos_file /var/log/td-agent/syslog_secure.pos
</source>
<match secure_log.**>
type grep
input_key message
regexp Accepted|failure|Invalid
add_tag_prefix greped
</match>
<match greped.**>
type buffered_slack
rtm true
token API_KEY
team TEAMNAME
channel %23general # You should use %23 in return for #
username fluentd
color danger
icon_emoji :shit:
buffer_path /var/log/td-agent/buffer/
flush_interval 5s
</match>
こんな感じでAccepted
、failure
、Invalid
の文字列を
sonotsさんがつくったfluent-plugin-grepを利用して抽出。
そうすると
こんな感じで通知されてくる。セキュリティを気にする環境では
このような設定を入れておくと良いのではないでしょうか。