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 に移行したっぽい。

感想とか

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

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

あとごはん美味しい。

RT-AC1200HP 使ってみました。

モニターに当選したのでRT-AC1200HP で遊んでみた。

ゲストネットワーク機能を試したいと言いながら、モニタリング機能のほうが興味深々だったので主にそちらを。

f:id:paihu:20170625221849j:plainf:id:paihu:20170625221901j:plain 青く×字に光るのがかっこいい。

使用感、普通に使う分には全く問題ない感じです。ロフトがあるのですが、床に置いておいても ロフト上でも問題なく使えています。

機能とか

個人的に便利だなぁと思ったところだけ。

  • ゲストネットワークが2.4G、5Gともに3つも作れる。個々にイントラネットへのアクセス許可/拒否設定を行ったり、個々に有効期限を決めたりできる。
    有効期限を決められるのが便利で、来客後、消し忘れるみたいなことがないです。 f:id:paihu:20170712211542p:plain
  • Firewall 機能として、一般的なIPaddress,portによるもののほか、HTTPに限ってはURLやキーワードでフィルタリングできる
  • ルータから ping,traceroute,nslookupが実行できる。
    何気に時々これは便利で、PC側の問題なのか、そもそもNW側が悪いのか、みたいな切り分けがしやすいです。

トラフィックモニタリング(本題)

まず、管理画面に複数個所からログインすると、 先行ログインした方のセッションが切れます。

一般家庭向けだし、それが安全だよねという気はしますが、こっちで(全画面で)グラフ表示させつつ、 別のところでちょっと設定いじろうとするとグラフが…… となるのが悲しいところ。

今回、主にトラフィックモニタリング機能を見てみたくて触っていたのですが、

  • リアルタイムデータはホントにリアルタイムに取得してきたデータを表示するもので、 開いた時点以降のデータしか表示されません。
  • 時間、日データについては、ルータの電源off/on でデータが消えてしまいます。 内部に静的に保持する仕組みではないみたい。
  • WANトラフィックと有線+無線 トラフィックの合計が一致しない。 有線接続PCでWebアクセスすると、WANトラフィックにどーんと出ますが、有線のほうには全然でない。 これは理由がよくわからない。f:id:paihu:20170712205635p:plainf:id:paihu:20170712205640p:plain なお、無線ではちゃんと想定した感じに出ている。 f:id:paihu:20170712230745p:plainf:id:paihu:20170712230753p:plain
  • トラフィックグラフ中をクリックするとクリックした時点での時間とか数値がポイントできるんですが、 時間とともにグラフは動いていきますが、クリックした点の物理的なx軸位置は変わらないので、なんだか微妙な感じに。 (y軸方向は、スケールが変わるとちゃんと移動する) それが良いみたいなときもあるのかもしれませんが、残念な感じでした。 f:id:paihu:20170712205857p:plain

リアルタイムデータを取得している部分から、定期的にデータを拾って手元PCとかに静的ファイルとして貯めればいいかなと思いましたが、 前述の、複数個所からログインすると先行ログインした方のセッションが切れる。という問題があって辛い感じです。

トラフィックモニタリングは、ついでにSNMPに対応してくれればなぁという感じでした。 中身linuxなのでsnmpデーモン入れて設定画面作ればなんとかなりそうな感じですし。