ログとれた

OSQuery で process_eventsをゲットしようとしてみたところ、どうもうまくいってない。

具体的には、audit.logにはどんどんログたまってるのに select * from process_events; しても1件も取れず。 osqueryd 動かしていても result.logが全く記録されない感じ。

環境

Process

[vagrant@localhost ~]$ ps aux | grep osquer[y]
root     18816  0.0  1.7 217572  8516 ?        SNsl 01:41   0:00 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
root     18819  0.0  1.8 357320  9432 ?        SNl  01:41   0:00 osqueryd: worker

config

[vagrant@localhost ~]$ cat /etc/osquery/osquery.conf
{
  "schedule": {
    "process_events": {
      "query": "select * from process_events;",
      "interval": 60
    },
    "user_events": {
      "query": "select * from user_events;",
      "interval": 60
    }
  }
}

flag

[vagrant@localhost ~]$ cat /etc/osquery/osquery.flags
--disable_events=false
--disable_audit=false
--audit_allow_config=true
--audit_persist=true

INFO

[vagrant@localhost ~]$ cat /var/log/osquery/osqueryd.INFO
Log file created at: 2017/08/07 01:41:22
Running on machine: localhost.localdomain
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0807 01:41:22.665422 18819 events.cpp:824] Event publisher failed setup: kernel: Cannot access /dev/osquery
I0807 01:41:22.665441 18819 events.cpp:824] Event publisher failed setup: syslog: Publisher disabled via configuration

追記

よくわからないけれど、再起動で拾えるようになった。

FileBeats Auditd module

Audit log をいい感じにParseするやつとして、 FileBeatsに Auditd module あるし、今ならきっとそれ使ってると思う。

というような発表をBuildersCon 2017 で聞いてきたのですが、前に触ったとき、いい感じに扱えなかった記憶があったので、再度見てみました。

Auditd module

まずダッシュボードを見ると、SYSCALL PATH CWD EXECVE が分かれているパイチャートが見える、この時点で すでにつらそう。

実際にログ吐き出させてみると、やはり行指向に、audit.log 1行が1レコードとして吐き出されるので、 何か検索した後、 msg=audit(xxxx.xxx:yyyy) みたいなところのyyyyが一致するもの…… として調べて回らないといけない感じです。

{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=SYSCALL msg=audit(1501996733.927:1232): arch=c000003e syscall=59 success=yes exit=0 0=26bcb40 a1=26b0220 a2=26afad0 a3=7fff295001e0 items=2 ppid=809 pid=68498 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm=\"sleep\" exe=\"/usr/bin/sleep\" ubj=system_u:system_r:ksmtuned_t:s0 key=(null)","offset":993081,"source":"/var/log/audit/audit.log","type":"log"}
{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=EXECVE msg=audit(1501996733.927:1232): argc=2 a0=\"sleep\" a1=\"60\"","offset":993151,"source":"/var/log/audit/audit.log","type":"log"}
{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=CWD msg=audit(1501996733.927:1232):  cwd=\"/\"","offset":993201,"source":"/var/log/audit/audit.log","type":"log"}
{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=PATH msg=audit(1501996733.927:1232): item=0 name=\"/usr/bin/sleep\" inode=34113796 dev=08:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:bin_t:s0 objtype=NORMAL","offset":993381,"source":"/var/log/audit/audit.log","type":"log"}

いや、それが面倒だから1レコードにしてほしいんだけど。。

状態です。

やっぱり OSQuery がよさげなんですかね

BuildersCon 2017 へ行ってきた。

前夜祭

大人のBuildersConということで、アルコールありの撤退シリーズでした。

どれもなるほどなぁ、と思いつつ聞いてました。

  • 良かれと思ってやったことが結果的に失敗することもある。
  • 当時はそうするのがまぁ普通だったけど、サービスが普通じゃなかったから方向転換した。
  • 要望に応えるべく内製してたけど、想像を超える使われ方をしちゃってつらかった。
  • 採用する際はちゃんとサポートが受けられる(意思の疎通とかも)ことはとても重要。

みたいな。

データセンターからの撤退

とあるサービスがデータセンターから撤退してクラウドに移行した話

データストアからの撤退

とあるサービス基盤がオレオレデータストアから撤退してMySQLに移行した話

PaaS完全撤退の歴史

とあるPaaSサービスが完全撤退した話。

ブロックストレージとの闘い

とあるサービスがとある大規模ブロックストレージから撤退してたくさんの中小規模ブロックストレージに移行した話。

初日

初めてのMySQLチューニング -データベースは怖くない!-

MySQLの基本的なチューニングとか、また向き合い方、姿勢みたいなことを話されてました。

知識としては人通り持っていますが、実際自分の手を動かして行うみたいな経験はないので いまいち感覚がわからないなーという感じでしたが、

怖いからって逃げていてはダメ。とか、きちんと向き合うためにはどうしていけばいいのか。

みたいなところはためになりました。

また、分かりやすいしゃべり方でよかったです。

真のコンポーネント粒度を求めて

HTML + CSS でのコンポーネント粒度はどうあるべきか、という話でした。

理想と現実のギャップをどうしていくのが良いか。みたいな話で、やっぱりその姿勢とかが参考になりました。

というのを紹介されていました。

前者は、設計・構築・運用まで含めて理想とする形はどうなのか。という内容。

後者は、現実的な運用を考えるとこうすべきだろう。というような内容。

実際はいろいろ折り合いをつけながらその中間点を探るのが良いのではないかというようなことをおっしゃっていました。

フレームなき道を拓くPHP

フレームワークを使わずになんかPHPでいい感じに作ろう。

みたいな内容だったのでしょうか。。

1日通して一番わかりにくい感じでした。PHPわかりません。

  • htmlspecialchars 使わないとXSSとか怖いよね、でも長いしつらいよね。
  • page.php?id=xxx とかいけてないよね、 /id/xxx みたいなのあこがれるよね、 Router どうよ。

という内容だったのかなぁと記憶してます。

Building high performance push notification server in Go

以前も聞いたことがあったGaurun の話。

特に新しいこともなく。

LT

  • QRコードは16分割とかできる
  • 電子工作とかおもしろいよ
  • Validation クッソつらい
  • Parser向け正規表現を作成する正規表現書いた
  • カンファレンスアプリを作った
  • Adがウザくてすまん、これから良くなるはず!
  • Scketch で Vueコンポーネント(内容わすれました)
  • バリアブル印刷すごい!画像取得結構つらい
  • scheme.org を JSON-LDで書くときれい!

懇親会

スタッフの方に、スタッフTシャツ着てると、話しかけてもあぁスタッフかって思ってもらえて割と気軽に話せる。一人でいるような人には積極的に話しかけていくようにしてる。 というようなことを伺い、なるほどなぁ、と思いました。

一人でいて話しかけられる方なので。

2日目

ここまで出来るmruby

mRubyはまだまだ若いので、今からでも頑張ってモジュール作るとみんなに使ってもらえるかも!

mRubyはCとか使って開発するし、低レイヤーに親しめる!

という感じでした。

小さく始めて育てるコンパイラ

難しかった。

  • 既存言語のサブセットとして動くものを作る
  • 欲しい機能を追加する
  • 構文を考える みたいな手順でオレオレ言語を作ると、割と作りやすいらしい。

既存言語なので、"動くものが作れること"は保証されているから、とりあえず作ってみるには適しているとか。

OSSで始めるセキュリティログ収集

Auditd のログを見やすくするのにOSQueryが良いよという話。

他にも go-audit や FileBeatsもあるらしく。

ちょうどAuditdのログを見やすくしたくて fluentdのmulti-line parserで無理やり何とかしようとしてたので すごく、いいタイミングでいい話がきけました。

OSQueryはいろいろできてすごく便利そう。

Factory Class

キーボードを作って世に出した人の話。

プロダクトを(たくさん)作るということについて。

工場選びとかいろいろ難しいらしい。

国によって文化とかも違うし、大変なんだろうなぁ……

The Evolution of PHP at Slack HQ

PHP は悪い言語だと言われているが、本当か?みたいな話。

SlackはPHPを使っている

と言っても 今は HHVM Hack に移行したっぽい。

感想とか

頑張って行った甲斐がありました。 自分がフロントエンドの人間ではないので、あんまりわかる話がない中、適当に面白そうな話をちょろちょろ聞きに行って、新しいものに出会えればなぁという気持ちだったので、 そこはすごく達成できたかなと。

人と出会って話すのも重要なんだということでしたが、いかんせんそういうの苦手なのでそっちは全然でしたが。

あとごはん美味しい。